graphile-build-pg 4.13.0 → 4.14.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. package/README.md +4 -13
  2. package/node8plus/GraphQLJSON.js +0 -11
  3. package/node8plus/GraphQLJSON.js.map +1 -1
  4. package/node8plus/PgLiveProvider.js +4 -11
  5. package/node8plus/PgLiveProvider.js.map +1 -1
  6. package/node8plus/QueryBuilder.js +42 -176
  7. package/node8plus/QueryBuilder.js.map +1 -1
  8. package/node8plus/index.js +8 -47
  9. package/node8plus/index.js.map +1 -1
  10. package/node8plus/inflections.js +9 -61
  11. package/node8plus/inflections.js.map +1 -1
  12. package/node8plus/omit.js +7 -22
  13. package/node8plus/omit.js.map +1 -1
  14. package/node8plus/parseIdentifier.js +0 -1
  15. package/node8plus/parseIdentifier.js.map +1 -1
  16. package/node8plus/pgPrepareAndRun.js +2 -14
  17. package/node8plus/pgPrepareAndRun.js.map +1 -1
  18. package/node8plus/plugins/PageInfoStartEndCursor.js +0 -4
  19. package/node8plus/plugins/PageInfoStartEndCursor.js.map +1 -1
  20. package/node8plus/plugins/PgAllRows.js +0 -29
  21. package/node8plus/plugins/PgAllRows.js.map +1 -1
  22. package/node8plus/plugins/PgBackwardRelationPlugin.js +2 -41
  23. package/node8plus/plugins/PgBackwardRelationPlugin.js.map +1 -1
  24. package/node8plus/plugins/PgBasicsPlugin.js +20 -147
  25. package/node8plus/plugins/PgBasicsPlugin.js.map +1 -1
  26. package/node8plus/plugins/PgColumnDeprecationPlugin.js +2 -5
  27. package/node8plus/plugins/PgColumnDeprecationPlugin.js.map +1 -1
  28. package/node8plus/plugins/PgColumnsPlugin.js +4 -17
  29. package/node8plus/plugins/PgColumnsPlugin.js.map +1 -1
  30. package/node8plus/plugins/PgComputedColumnsPlugin.js +4 -19
  31. package/node8plus/plugins/PgComputedColumnsPlugin.js.map +1 -1
  32. package/node8plus/plugins/PgConditionComputedColumnPlugin.js +12 -23
  33. package/node8plus/plugins/PgConditionComputedColumnPlugin.js.map +1 -1
  34. package/node8plus/plugins/PgConnectionArgCondition.js +1 -9
  35. package/node8plus/plugins/PgConnectionArgCondition.js.map +1 -1
  36. package/node8plus/plugins/PgConnectionArgFirstLastBeforeAfter.js +0 -12
  37. package/node8plus/plugins/PgConnectionArgFirstLastBeforeAfter.js.map +1 -1
  38. package/node8plus/plugins/PgConnectionArgOrderBy.js +2 -19
  39. package/node8plus/plugins/PgConnectionArgOrderBy.js.map +1 -1
  40. package/node8plus/plugins/PgConnectionArgOrderByDefaultValue.js +0 -6
  41. package/node8plus/plugins/PgConnectionArgOrderByDefaultValue.js.map +1 -1
  42. package/node8plus/plugins/PgConnectionTotalCount.js +0 -8
  43. package/node8plus/plugins/PgConnectionTotalCount.js.map +1 -1
  44. package/node8plus/plugins/PgForwardRelationPlugin.js +2 -25
  45. package/node8plus/plugins/PgForwardRelationPlugin.js.map +1 -1
  46. package/node8plus/plugins/PgIntrospectionPlugin.js +91 -180
  47. package/node8plus/plugins/PgIntrospectionPlugin.js.flow +30 -2
  48. package/node8plus/plugins/PgIntrospectionPlugin.js.map +1 -1
  49. package/node8plus/plugins/PgJWTPlugin.js +2 -18
  50. package/node8plus/plugins/PgJWTPlugin.js.map +1 -1
  51. package/node8plus/plugins/PgMutationCreatePlugin.js +0 -18
  52. package/node8plus/plugins/PgMutationCreatePlugin.js.map +1 -1
  53. package/node8plus/plugins/PgMutationPayloadEdgePlugin.js +4 -25
  54. package/node8plus/plugins/PgMutationPayloadEdgePlugin.js.map +1 -1
  55. package/node8plus/plugins/PgMutationProceduresPlugin.js +0 -6
  56. package/node8plus/plugins/PgMutationProceduresPlugin.js.map +1 -1
  57. package/node8plus/plugins/PgMutationUpdateDeletePlugin.js +14 -49
  58. package/node8plus/plugins/PgMutationUpdateDeletePlugin.js.flow +5 -2
  59. package/node8plus/plugins/PgMutationUpdateDeletePlugin.js.map +1 -1
  60. package/node8plus/plugins/PgNodeAliasPostGraphile.js +0 -6
  61. package/node8plus/plugins/PgNodeAliasPostGraphile.js.map +1 -1
  62. package/node8plus/plugins/PgOrderAllColumnsPlugin.js +0 -4
  63. package/node8plus/plugins/PgOrderAllColumnsPlugin.js.map +1 -1
  64. package/node8plus/plugins/PgOrderByPrimaryKeyPlugin.js +0 -6
  65. package/node8plus/plugins/PgOrderByPrimaryKeyPlugin.js.map +1 -1
  66. package/node8plus/plugins/PgOrderComputedColumnsPlugin.js +10 -14
  67. package/node8plus/plugins/PgOrderComputedColumnsPlugin.js.map +1 -1
  68. package/node8plus/plugins/PgQueryProceduresPlugin.js +4 -16
  69. package/node8plus/plugins/PgQueryProceduresPlugin.js.map +1 -1
  70. package/node8plus/plugins/PgRecordFunctionConnectionPlugin.js +3 -20
  71. package/node8plus/plugins/PgRecordFunctionConnectionPlugin.js.map +1 -1
  72. package/node8plus/plugins/PgRecordReturnTypesPlugin.js +11 -16
  73. package/node8plus/plugins/PgRecordReturnTypesPlugin.js.map +1 -1
  74. package/node8plus/plugins/PgRowByUniqueConstraint.js +4 -25
  75. package/node8plus/plugins/PgRowByUniqueConstraint.js.map +1 -1
  76. package/node8plus/plugins/PgRowNode.js +0 -32
  77. package/node8plus/plugins/PgRowNode.js.map +1 -1
  78. package/node8plus/plugins/PgScalarFunctionConnectionPlugin.js +3 -17
  79. package/node8plus/plugins/PgScalarFunctionConnectionPlugin.js.map +1 -1
  80. package/node8plus/plugins/PgTablesPlugin.js +7 -59
  81. package/node8plus/plugins/PgTablesPlugin.js.map +1 -1
  82. package/node8plus/plugins/PgTypesPlugin.js +140 -240
  83. package/node8plus/plugins/PgTypesPlugin.js.flow +76 -23
  84. package/node8plus/plugins/PgTypesPlugin.js.map +1 -1
  85. package/node8plus/plugins/addStartEndCursor.js +2 -5
  86. package/node8plus/plugins/addStartEndCursor.js.map +1 -1
  87. package/node8plus/plugins/debugSql.js +1 -16
  88. package/node8plus/plugins/debugSql.js.map +1 -1
  89. package/node8plus/plugins/introspectionQuery.js +3 -4
  90. package/node8plus/plugins/introspectionQuery.js.flow +11 -3
  91. package/node8plus/plugins/introspectionQuery.js.map +1 -1
  92. package/node8plus/plugins/makeProcField.js +40 -90
  93. package/node8plus/plugins/makeProcField.js.map +1 -1
  94. package/node8plus/plugins/pgField.js +2 -7
  95. package/node8plus/plugins/pgField.js.map +1 -1
  96. package/node8plus/plugins/viaTemporaryTable.js +6 -12
  97. package/node8plus/plugins/viaTemporaryTable.js.map +1 -1
  98. package/node8plus/postgresInterval.js +4 -4
  99. package/node8plus/postgresInterval.js.map +1 -1
  100. package/node8plus/queryFromResolveDataFactory.js +33 -77
  101. package/node8plus/queryFromResolveDataFactory.js.map +1 -1
  102. package/node8plus/utils.js +8 -9
  103. package/node8plus/utils.js.map +1 -1
  104. package/node8plus/withPgClient.js +4 -26
  105. package/node8plus/withPgClient.js.map +1 -1
  106. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/QueryBuilder.js"],"names":["isDev","process","env","POSTGRAPHILE_ENV","callIfNecessary","o","context","callIfNecessaryArray","Array","isArray","map","v","escapeLarge","sqlFragment","type","actualType","domainBaseType","category","includes","id","sql","fragment","QueryBuilder","constructor","options","rootValue","supportsJSONB","locks","cursorComparator","fixedSelectExpression","select","selectCursor","from","join","whereBound","where","orderBy","orderIsUnique","first","last","limit","offset","finalized","selectedIdentifiers","data","cursorPrefix","lower","upper","beforeLock","liveConditions","compiledData","_children","Map","lock","lockContext","Object","freeze","queryBuilder","jsonbBuildObject","fields","length","fieldsChunks","chunkToJson","fieldsChunk","expr","alias","literal","field","fn","checkLock","push","makeLiveCollection","table","cb","checkerGenerator","checkers","record","every","checker","parentQueryBuilder","Error","allRequirements","reduce","memo","_checkerGenerator","requirements","assign","value","keys","key","addLiveCondition","setCursorComparator","addCursorCondition","cursorValue","isAfter","exprGen","test","selectIdentifiers","primaryKey","primaryKeyConstraint","primaryKeys","keyAttributes","getTableAlias","identifier","name","Symbol","isLower","setOrderIsUnique","ascending","nullsFirst","limitGen","offsetGen","previous","isOrderUnique","getTableExpression","getSelectCursor","getOffset","getFinalLimitAndOffset","flip","Math","min","getFinalOffset","getFinalLimit","getOrderByExpressionsAndDirections","getSelectFieldsCount","lockEverything","buildSelectFields","buildSelectJson","addNullCase","addNotDistinctFromNullCase","buildObject","buildWhereBoundClause","clauses","buildWhereClause","includeLowerBound","includeUpperBound","build","asJson","asJsonAggregate","onlyJsonField","useAsterisk","Number","flipAlias","aggAlias","_finalize","i","l","stack","seenFields","selects","valueOrGenerator","columnName","a","b","c","f","replace","buildChild","child","buildNamedChildSelecting","selectExpression","has","toString","set","getNamedChild","get"],"mappings":"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","sourcesContent":["// @flow\nimport * as sql from \"pg-sql2\";\nimport type { SQL } from \"pg-sql2\";\nimport isSafeInteger from \"lodash/isSafeInteger\";\nimport chunk from \"lodash/chunk\";\nimport type { PgClass, PgType } from \"./plugins/PgIntrospectionPlugin\";\n\n// eslint-disable-next-line flowtype/no-weak-types\ntype GraphQLContext = any;\n\nconst isDev = process.env.POSTGRAPHILE_ENV === \"development\";\n\ntype GenContext = {\n queryBuilder: QueryBuilder,\n};\ntype Gen<T> = (context: GenContext) => T;\n\n// Importantly, this cannot include a function\ntype CallResult = null | string | number | boolean | SQL;\n\nfunction callIfNecessary<T: CallResult>(o: Gen<T> | T, context: GenContext): T {\n if (typeof o === \"function\") {\n return o(context);\n } else {\n return o;\n }\n}\n\nfunction callIfNecessaryArray<T: CallResult>(\n o: Array<Gen<T> | T>,\n context: GenContext\n): Array<T> {\n if (Array.isArray(o)) {\n return o.map(v => callIfNecessary(v, context));\n } else {\n return o;\n }\n}\n\nexport type RawAlias = Symbol | string;\ntype SQLAlias = SQL;\ntype SQLGen = Gen<SQL> | SQL;\ntype NumberGen = Gen<number> | number;\ntype CursorValue = Array<mixed>;\ntype CursorComparator = (val: CursorValue, isAfter: boolean) => void;\n\nexport type QueryBuilderOptions = {\n supportsJSONB?: boolean, // Defaults to true\n};\n\nfunction escapeLarge(sqlFragment: SQL, type: PgType) {\n const actualType = type.domainBaseType || type;\n if (actualType.category === \"N\") {\n if (\n [\n \"21\" /* int2 */,\n \"23\" /* int4 */,\n \"700\" /* float4 */,\n \"701\" /* float8 */,\n \"24\" /* regproc */,\n \"2202\" /* regprocedure */,\n \"2203\" /* regoper */,\n \"2204\" /* regoperator */,\n \"2205\" /* regclass */,\n \"2206\" /* regtype */,\n \"4096\" /* regrole */,\n \"4089\" /* regnamespace */,\n \"3734\" /* regconfig */,\n \"3769\" /* regdictionary */,\n ].includes(actualType.id)\n ) {\n // No need for special handling\n return sqlFragment;\n }\n // Otherwise force the id to be a string\n return sql.fragment`((${sqlFragment})::numeric)::text`;\n }\n return sqlFragment;\n}\n\nclass QueryBuilder {\n parentQueryBuilder: QueryBuilder | void;\n context: GraphQLContext;\n rootValue: any; // eslint-disable-line flowtype/no-weak-types\n supportsJSONB: boolean;\n locks: {\n [string]: false | true | string,\n };\n finalized: boolean;\n selectedIdentifiers: boolean;\n data: {\n cursorPrefix: Array<string>,\n fixedSelectExpression: ?SQLGen,\n select: Array<[SQLGen, RawAlias]>,\n selectCursor: ?SQLGen,\n from: ?[SQLGen, SQLAlias],\n join: Array<SQLGen>,\n where: Array<SQLGen>,\n whereBound: {\n lower: Array<SQLGen>,\n upper: Array<SQLGen>,\n },\n orderBy: Array<[SQLGen, boolean, boolean | null]>,\n orderIsUnique: boolean,\n limit: ?NumberGen,\n offset: ?NumberGen,\n first: ?number,\n last: ?number,\n beforeLock: {\n [string]: Array<() => void> | null,\n },\n cursorComparator: ?CursorComparator,\n liveConditions: Array<\n // eslint-disable-next-line flowtype/no-weak-types\n [(data: {}) => (record: any) => boolean, { [key: string]: SQL } | void]\n >,\n };\n compiledData: {\n cursorPrefix: Array<string>,\n fixedSelectExpression: ?SQL,\n select: Array<[SQL, RawAlias]>,\n selectCursor: ?SQL,\n from: ?[SQL, SQLAlias],\n join: Array<SQL>,\n where: Array<SQL>,\n whereBound: {\n lower: Array<SQL>,\n upper: Array<SQL>,\n },\n orderBy: Array<[SQL, boolean, boolean | null]>,\n orderIsUnique: boolean,\n limit: ?number,\n offset: ?number,\n first: ?number,\n last: ?number,\n cursorComparator: ?CursorComparator,\n };\n lockContext: {\n queryBuilder: QueryBuilder,\n };\n _children: Map<RawAlias, QueryBuilder>;\n\n constructor(\n options: QueryBuilderOptions = {},\n context: GraphQLContext = {},\n rootValue?: any // eslint-disable-line flowtype/no-weak-types\n ) {\n this.context = context || {};\n this.rootValue = rootValue;\n this.supportsJSONB =\n typeof options.supportsJSONB === \"undefined\" ||\n options.supportsJSONB === null\n ? true\n : !!options.supportsJSONB;\n\n this.locks = {\n // As a performance optimisation, we're going to list a number of lock\n // types so that V8 doesn't need to mutate the object too much\n cursorComparator: false,\n fixedSelectExpression: false,\n select: false,\n selectCursor: false,\n from: false,\n join: false,\n whereBound: false,\n where: false,\n orderBy: false,\n orderIsUnique: false,\n first: false,\n last: false,\n limit: false,\n offset: false,\n };\n this.finalized = false;\n this.selectedIdentifiers = false;\n this.data = {\n // TODO: refactor `cursorPrefix`, it shouldn't be here (or should at least have getters/setters)\n cursorPrefix: [\"natural\"],\n fixedSelectExpression: null,\n select: [],\n selectCursor: null,\n from: null,\n join: [],\n where: [],\n whereBound: {\n lower: [],\n upper: [],\n },\n orderBy: [],\n orderIsUnique: false,\n limit: null,\n offset: null,\n first: null,\n last: null,\n beforeLock: {\n // As a performance optimisation, we're going to list a number of lock\n // types so that V8 doesn't need to mutate the object too much\n cursorComparator: [],\n fixedSelectExpression: [],\n select: [],\n selectCursor: [],\n from: [],\n join: [],\n whereBound: [],\n where: [],\n orderBy: [],\n orderIsUnique: [],\n first: [],\n last: [],\n limit: [],\n offset: [],\n },\n cursorComparator: null,\n liveConditions: [],\n };\n this.compiledData = {\n cursorPrefix: [\"natural\"],\n fixedSelectExpression: null,\n select: [],\n selectCursor: null,\n from: null,\n join: [],\n where: [],\n whereBound: {\n lower: [],\n upper: [],\n },\n orderBy: [],\n orderIsUnique: false,\n limit: null,\n offset: null,\n first: null,\n last: null,\n cursorComparator: null,\n };\n this._children = new Map();\n this.beforeLock(\"select\", () => {\n this.lock(\"selectCursor\");\n if (this.compiledData.selectCursor) {\n this.select(this.compiledData.selectCursor, \"__cursor\");\n }\n });\n // 'whereBound' and 'natural' order might set offset/limit\n this.beforeLock(\"where\", () => {\n this.lock(\"whereBound\");\n });\n this.beforeLock(\"offset\", () => {\n this.lock(\"whereBound\");\n });\n this.beforeLock(\"limit\", () => {\n this.lock(\"whereBound\");\n });\n this.beforeLock(\"first\", () => {\n this.lock(\"limit\");\n this.lock(\"offset\");\n });\n this.beforeLock(\"last\", () => {\n this.lock(\"limit\");\n this.lock(\"offset\");\n });\n this.lockContext = Object.freeze({\n queryBuilder: this,\n });\n }\n\n // ----------------------------------------\n\n // Helper function\n jsonbBuildObject(fields: Array<[SQL, RawAlias]>) {\n if (this.supportsJSONB && fields.length > 50) {\n const fieldsChunks = chunk(fields, 50);\n const chunkToJson = fieldsChunk =>\n sql.fragment`jsonb_build_object(${sql.join(\n fieldsChunk.map(\n ([expr, alias]) =>\n sql.fragment`${sql.literal(alias)}::text, ${expr}`\n ),\n \", \"\n )})`;\n return sql.fragment`(${sql.join(\n fieldsChunks.map(chunkToJson),\n \" || \"\n )})::json`;\n } else {\n // PG9.4 will have issues with more than 100 parameters (50 keys)\n return sql.fragment`json_build_object(${sql.join(\n fields.map(\n ([expr, alias]) => sql.fragment`${sql.literal(alias)}::text, ${expr}`\n ),\n \", \"\n )})`;\n }\n }\n\n // ----------------------------------------\n\n beforeLock(field: string, fn: () => void) {\n this.checkLock(field);\n if (!this.data.beforeLock[field]) {\n this.data.beforeLock[field] = [];\n }\n // $FlowFixMe: this is guaranteed to be set, due to the if statement above\n this.data.beforeLock[field].push(fn);\n }\n\n makeLiveCollection(\n table: PgClass,\n // eslint-disable-next-line flowtype/no-weak-types\n cb?: (checker: (data: any) => (record: any) => boolean) => void\n ) {\n /* the actual condition doesn't matter hugely, 'select' should work */\n if (!this.rootValue || !this.rootValue.liveConditions) return;\n const liveConditions = this.data.liveConditions;\n const checkerGenerator = data => {\n // Compute this once.\n const checkers = liveConditions.map(([checkerGenerator]) =>\n checkerGenerator(data)\n );\n return record => checkers.every(checker => checker(record));\n };\n if (this.parentQueryBuilder) {\n const parentQueryBuilder = this.parentQueryBuilder;\n if (cb) {\n throw new Error(\n \"Either use parentQueryBuilder or pass callback, not both.\"\n );\n }\n parentQueryBuilder.beforeLock(\"select\", () => {\n const id = this.rootValue.liveConditions.push(checkerGenerator) - 1;\n // BEWARE: it's easy to override others' conditions, and that will cause issues. Be sensible.\n const allRequirements = this.data.liveConditions.reduce(\n (memo, [_checkerGenerator, requirements]) =>\n requirements ? Object.assign(memo, requirements) : memo,\n {}\n );\n parentQueryBuilder.select(\n sql.fragment`\\\njson_build_object('__id', ${sql.value(id)}::int\n${sql.join(\n Object.keys(allRequirements).map(\n key => sql.fragment`, ${sql.literal(key)}::text, ${allRequirements[key]}`\n ),\n \"\"\n)})`,\n \"__live\"\n );\n });\n } else if (cb) {\n cb(checkerGenerator);\n } else {\n throw new Error(\n \"makeLiveCollection was called without parentQueryBuilder and without callback\"\n );\n }\n }\n\n addLiveCondition(\n // eslint-disable-next-line flowtype/no-weak-types\n checkerGenerator: (data: {}) => (record: any) => boolean,\n requirements?: { [key: string]: SQL }\n ) {\n if (requirements && !this.parentQueryBuilder) {\n throw new Error(\n \"There's no parentQueryBuilder, so there cannot be requirements\"\n );\n }\n this.data.liveConditions.push([checkerGenerator, requirements]);\n }\n\n setCursorComparator(fn: CursorComparator) {\n this.checkLock(\"cursorComparator\");\n this.data.cursorComparator = fn;\n this.lock(\"cursorComparator\");\n }\n addCursorCondition(cursorValue: CursorValue, isAfter: boolean) {\n this.beforeLock(\"whereBound\", () => {\n this.lock(\"cursorComparator\");\n if (!this.compiledData.cursorComparator) {\n throw new Error(\"No cursor comparator was set!\");\n }\n this.compiledData.cursorComparator(cursorValue, isAfter);\n });\n }\n /** this method is experimental */\n fixedSelectExpression(exprGen: SQLGen) {\n this.checkLock(\"fixedSelectExpression\");\n this.lock(\"select\");\n this.lock(\"selectCursor\");\n if (this.data.select.length > 0) {\n throw new Error(\"Cannot use .fixedSelectExpression() with .select()\");\n }\n if (this.data.selectCursor) {\n throw new Error(\n \"Cannot use .fixedSelectExpression() with .selectCursor()\"\n );\n }\n this.data.fixedSelectExpression = exprGen;\n }\n select(exprGen: SQLGen, alias: RawAlias) {\n this.checkLock(\"select\");\n this.lock(\"fixedSelectExpression\");\n if (typeof alias === \"string\") {\n // To protect against vulnerabilities such as\n //\n // https://github.com/brianc/node-postgres/issues/1408\n //\n // we need to ensure column names are safe. Turns out that GraphQL\n // aliases are fairly strict (`[_A-Za-z][_0-9A-Za-z]*`) anyway:\n //\n // https://github.com/graphql/graphql-js/blob/680685dd14bd52c6475305e150e5f295ead2aa7e/src/language/lexer.js#L551-L581\n //\n // so this should not cause any issues in practice.\n if (/^(\\$+|@+|[_A-Za-z])[_0-9A-Za-z]*$/.test(alias) !== true) {\n throw new Error(`Disallowed alias '${alias}'.`);\n }\n }\n this.data.select.push([exprGen, alias]);\n }\n selectIdentifiers(table: PgClass) {\n if (this.selectedIdentifiers) return;\n const primaryKey = table.primaryKeyConstraint;\n if (!primaryKey) return;\n const primaryKeys = primaryKey.keyAttributes;\n this.select(\n sql.fragment`json_build_array(${sql.join(\n primaryKeys.map(key =>\n escapeLarge(\n sql.fragment`${this.getTableAlias()}.${sql.identifier(key.name)}`,\n key.type\n )\n ),\n \", \"\n )})`,\n \"__identifiers\"\n );\n this.selectedIdentifiers = true;\n }\n selectCursor(exprGen: SQLGen) {\n this.checkLock(\"selectCursor\");\n this.lock(\"fixedSelectExpression\");\n this.data.selectCursor = exprGen;\n }\n from(expr: SQLGen, alias?: SQLAlias = sql.identifier(Symbol())) {\n this.checkLock(\"from\");\n if (!expr) {\n throw new Error(\"No from table source!\");\n }\n if (!alias) {\n throw new Error(\"No from alias!\");\n }\n this.data.from = [expr, alias];\n this.lock(\"from\");\n }\n // XXX: join\n where(exprGen: SQLGen) {\n this.checkLock(\"where\");\n this.data.where.push(exprGen);\n }\n whereBound(exprGen: SQLGen, isLower: boolean) {\n if (typeof isLower !== \"boolean\") {\n throw new Error(\"isLower must be specified as a boolean\");\n }\n this.checkLock(\"whereBound\");\n this.data.whereBound[isLower ? \"lower\" : \"upper\"].push(exprGen);\n }\n setOrderIsUnique() {\n this.data.orderIsUnique = true;\n }\n orderBy(\n exprGen: SQLGen,\n ascending: boolean = true,\n nullsFirst: boolean | null = null\n ) {\n this.checkLock(\"orderBy\");\n this.data.orderBy.push([exprGen, ascending, nullsFirst]);\n }\n limit(limitGen: NumberGen) {\n this.checkLock(\"limit\");\n\n if (this.data.limit != null) {\n throw new Error(\"Must only set limit once\");\n }\n this.data.limit = limitGen;\n }\n offset(offsetGen: NumberGen) {\n this.checkLock(\"offset\");\n if (this.data.offset != null) {\n // Add the offsets together (this should be able to recurse)\n const previous = this.data.offset;\n this.data.offset = context => {\n return (\n callIfNecessary(previous, context) +\n callIfNecessary(offsetGen, context)\n );\n };\n } else {\n this.data.offset = offsetGen;\n }\n }\n first(first: number) {\n this.checkLock(\"first\");\n if (this.data.first != null) {\n throw new Error(\"Must only set first once\");\n }\n this.data.first = first;\n }\n last(last: number) {\n this.checkLock(\"last\");\n if (this.data.last != null) {\n throw new Error(\"Must only set last once\");\n }\n this.data.last = last;\n }\n\n // ----------------------------------------\n\n isOrderUnique(lock?: boolean = true) {\n if (lock) {\n this.lock(\"orderBy\");\n this.lock(\"orderIsUnique\");\n return this.compiledData.orderIsUnique;\n } else {\n // This is useful inside `beforeLock(\"orderBy\", ...)` calls\n return this.data.orderIsUnique;\n }\n }\n getTableExpression(): SQL {\n this.lock(\"from\");\n if (!this.compiledData.from) {\n throw new Error(\"No from table has been supplied\");\n }\n return this.compiledData.from[0];\n }\n getTableAlias(): SQL {\n this.lock(\"from\");\n if (!this.compiledData.from) {\n throw new Error(\"No from table has been supplied\");\n }\n return this.compiledData.from[1];\n }\n getSelectCursor() {\n this.lock(\"selectCursor\");\n return this.compiledData.selectCursor;\n }\n getOffset() {\n this.lock(\"offset\");\n return this.compiledData.offset || 0;\n }\n getFinalLimitAndOffset() {\n this.lock(\"offset\");\n this.lock(\"limit\");\n this.lock(\"first\");\n this.lock(\"last\");\n let limit = this.compiledData.limit;\n let offset = this.compiledData.offset || 0;\n let flip = false;\n if (this.compiledData.first != null) {\n if (limit != null) {\n limit = Math.min(limit, this.compiledData.first);\n } else {\n limit = this.compiledData.first;\n }\n }\n if (this.compiledData.last != null) {\n if (offset > 0 && limit != null) {\n throw new Error(\n \"Issue within pagination, please report your query to graphile-build\"\n );\n }\n if (limit != null) {\n if (this.compiledData.last < limit) {\n offset = limit - this.compiledData.last;\n limit = this.compiledData.last;\n } else {\n // no need to change anything\n }\n } else if (offset > 0) {\n throw new Error(\"Cannot combine 'last' and 'offset'\");\n } else {\n if (this.compiledData.orderBy.length > 0) {\n flip = true;\n limit = this.compiledData.last;\n } else {\n throw new Error(\"Cannot do last of an unordered set\");\n }\n }\n }\n return {\n limit,\n offset,\n flip,\n };\n }\n getFinalOffset() {\n return this.getFinalLimitAndOffset().offset;\n }\n getFinalLimit() {\n return this.getFinalLimitAndOffset().limit;\n }\n getOrderByExpressionsAndDirections() {\n this.lock(\"orderBy\");\n return this.compiledData.orderBy;\n }\n getSelectFieldsCount() {\n this.lockEverything();\n return this.compiledData.select.length;\n }\n buildSelectFields() {\n this.lockEverything();\n if (this.compiledData.fixedSelectExpression) {\n return this.compiledData.fixedSelectExpression;\n }\n return sql.join(\n this.compiledData.select.map(\n ([sqlFragment, alias]) =>\n sql.fragment`to_json(${sqlFragment}) as ${sql.identifier(alias)}`\n ),\n \", \"\n );\n }\n buildSelectJson({\n addNullCase,\n addNotDistinctFromNullCase,\n }: {\n addNullCase?: boolean,\n addNotDistinctFromNullCase?: boolean,\n }) {\n this.lockEverything();\n let buildObject = this.compiledData.select.length\n ? this.jsonbBuildObject(this.compiledData.select)\n : sql.fragment`to_json(${this.getTableAlias()})`;\n if (addNotDistinctFromNullCase) {\n /*\n * `is null` is not sufficient here because the record might exist but\n * have null as each of its values; so we use `is not distinct from null`\n * to assert that the record itself doesn't exist. This is typically used\n * with column values.\n */\n buildObject = sql.fragment`(case when (${this.getTableAlias()} is not distinct from null) then null else ${buildObject} end)`;\n } else if (addNullCase) {\n /*\n * `is null` is probably used here because it's the result of a function;\n * functions seem to have trouble differentiating between `null::my_type`\n * and `(null,null,null)::my_type`, always opting for the latter which\n * then causes issues with the `GraphQLNonNull`s in the schema.\n */\n buildObject = sql.fragment`(case when (${this.getTableAlias()} is null) then null else ${buildObject} end)`;\n }\n return buildObject;\n }\n buildWhereBoundClause(isLower: boolean) {\n this.lock(\"whereBound\");\n const clauses = this.compiledData.whereBound[isLower ? \"lower\" : \"upper\"];\n if (clauses.length) {\n return sql.fragment`(${sql.join(clauses, \") and (\")})`;\n } else {\n return sql.literal(true);\n }\n }\n buildWhereClause(\n includeLowerBound: boolean,\n includeUpperBound: boolean,\n {\n addNullCase,\n addNotDistinctFromNullCase,\n }: { addNullCase?: boolean, addNotDistinctFromNullCase?: boolean }\n ) {\n this.lock(\"where\");\n const clauses = [\n /*\n * Okay... so this is quite interesting. When we're talking about\n * composite types, `(foo is not null)` and `not (foo is null)` are NOT\n * equivalent! Here's why:\n *\n * `(foo is null)`\n * true if every field of the row is null\n *\n * `(foo is not null)`\n * true if every field of the row is not null\n *\n * `not (foo is null)`\n * true if there's at least one field that is not null\n *\n * `is [not] distinct from null` does differentiate between these cases,\n * but when a function returns something like `select * from my_table\n * where false`, it actually returns `(null, null, null)::my_table`,\n * which will cause issues when we apply the `GraphQLNonNull` constraints\n * to the results - we want to treat this as null.\n *\n * So don't \"simplify\" the line below! We're probably checking if the\n * result of a function call returning a compound type was indeed null.\n */\n ...(addNotDistinctFromNullCase\n ? [sql.fragment`(${this.getTableAlias()} is distinct from null)`]\n : addNullCase\n ? [sql.fragment`not (${this.getTableAlias()} is null)`]\n : []),\n ...this.compiledData.where,\n ...(includeLowerBound ? [this.buildWhereBoundClause(true)] : []),\n ...(includeUpperBound ? [this.buildWhereBoundClause(false)] : []),\n ];\n return clauses.length\n ? sql.fragment`(${sql.join(clauses, \") and (\")})`\n : sql.fragment`1 = 1`;\n }\n build(\n options: {\n asJson?: boolean,\n asJsonAggregate?: boolean,\n onlyJsonField?: boolean,\n addNullCase?: boolean,\n addNotDistinctFromNullCase?: boolean,\n useAsterisk?: boolean,\n } = {}\n ) {\n this.lockEverything();\n\n if (this.compiledData.fixedSelectExpression) {\n if (Object.keys(options).length > 0) {\n throw new Error(\n \"Do not pass options to QueryBuilder.build() when using `buildNamedChildSelecting`\"\n );\n }\n }\n const {\n asJson = false,\n asJsonAggregate = false,\n onlyJsonField = false,\n addNullCase = false,\n addNotDistinctFromNullCase = false,\n useAsterisk = false,\n } = options;\n\n if (onlyJsonField) {\n return this.buildSelectJson({ addNullCase, addNotDistinctFromNullCase });\n }\n const { limit, offset, flip } = this.getFinalLimitAndOffset();\n const fields =\n asJson || asJsonAggregate\n ? sql.fragment`${this.buildSelectJson({\n addNullCase,\n addNotDistinctFromNullCase,\n })} as object`\n : this.buildSelectFields();\n\n let fragment = sql.fragment`\\\nselect ${useAsterisk ? sql.fragment`${this.getTableAlias()}.*` : fields}\n${\n this.compiledData.from &&\n sql.fragment`from ${this.compiledData.from[0]} as ${this.getTableAlias()}`\n}\n${this.compiledData.join.length && sql.join(this.compiledData.join, \" \")}\nwhere ${this.buildWhereClause(true, true, options)}\n${\n this.compiledData.orderBy.length\n ? sql.fragment`order by ${sql.join(\n this.compiledData.orderBy.map(\n ([expr, ascending, nullsFirst]) =>\n sql.fragment`${expr} ${\n Number(ascending) ^ Number(flip)\n ? sql.fragment`ASC`\n : sql.fragment`DESC`\n }${\n nullsFirst === true\n ? sql.fragment` NULLS FIRST`\n : nullsFirst === false\n ? sql.fragment` NULLS LAST`\n : null\n }`\n ),\n \",\"\n )}`\n : \"\"\n}\n${isSafeInteger(limit) && sql.fragment`limit ${sql.literal(limit)}`}\n${offset && sql.fragment`offset ${sql.literal(offset)}`}`;\n if (flip) {\n const flipAlias = Symbol();\n fragment = sql.fragment`\\\nwith ${sql.identifier(flipAlias)} as (\n ${fragment}\n)\nselect *\nfrom ${sql.identifier(flipAlias)}\norder by (row_number() over (partition by 1)) desc`; /* We don't need to factor useAsterisk into this row_number() usage */\n }\n if (useAsterisk) {\n /*\n * NOTE[useAsterisk/row_number]: since LIMIT/OFFSET is inside this\n * subquery, row_number() outside of this subquery WON'T include the\n * offset. We must add it back wherever row_number() is used.\n */\n fragment = sql.fragment`select ${fields} from (${fragment}) ${this.getTableAlias()}`;\n }\n if (asJsonAggregate) {\n const aggAlias = Symbol();\n fragment = sql.fragment`select json_agg(${sql.identifier(\n aggAlias,\n \"object\"\n )}) from (${fragment}) as ${sql.identifier(aggAlias)}`;\n fragment = sql.fragment`select coalesce((${fragment}), '[]'::json)`;\n }\n return fragment;\n }\n\n // ----------------------------------------\n\n _finalize() {\n this.finalized = true;\n }\n lock(type: string) {\n if (this.locks[type]) return;\n const context = this.lockContext;\n const { beforeLock } = this.data;\n let locks = beforeLock[type];\n if (locks) {\n beforeLock[type] = [];\n for (let i = 0, l = locks.length; i < l; i++) {\n locks[i]();\n }\n }\n if (type !== \"select\") {\n this.locks[type] = isDev ? new Error(\"Initally locked here\").stack : true;\n }\n if (type === \"cursorComparator\") {\n // It's meant to be a function\n this.compiledData[type] = this.data[type];\n } else if (type === \"whereBound\") {\n // Handle properties separately\n this.compiledData[type].lower = callIfNecessaryArray(\n this.data[type].lower,\n context\n );\n this.compiledData[type].upper = callIfNecessaryArray(\n this.data[type].upper,\n context\n );\n } else if (type === \"fixedSelectExpression\") {\n this.compiledData[type] = callIfNecessary(this.data[type], context);\n } else if (type === \"select\") {\n /*\n * NOTICE: locking select can cause additional selects to be added, so the\n * length of this.data[type] may increase during the operation. This is\n * why we handle this.locks[type] separately.\n */\n\n // Assume that duplicate fields must be identical, don't output the same\n // key multiple times\n const seenFields: { [key: string | Symbol]: true } = {};\n const data = [];\n const selects = this.data[type];\n\n // DELIBERATE slow loop, see NOTICE above\n for (let i = 0; i < selects.length; i++) {\n const [valueOrGenerator, columnName] = selects[i];\n if (!seenFields[columnName]) {\n seenFields[columnName] = true;\n data.push([callIfNecessary(valueOrGenerator, context), columnName]);\n locks = beforeLock[type];\n if (locks) {\n beforeLock[type] = [];\n for (let i = 0, l = locks.length; i < l; i++) {\n locks[i]();\n }\n }\n }\n }\n this.locks[type] = isDev ? new Error(\"Initally locked here\").stack : true;\n this.compiledData[type] = data;\n } else if (type === \"orderBy\") {\n this.compiledData[type] = this.data[type].map(([a, b, c]) => [\n callIfNecessary(a, context),\n b,\n c,\n ]);\n } else if (type === \"from\") {\n if (this.data.from) {\n const f = this.data.from;\n this.compiledData.from = [callIfNecessary(f[0], context), f[1]];\n }\n } else if (type === \"join\" || type === \"where\") {\n this.compiledData[type] = callIfNecessaryArray(this.data[type], context);\n } else if (type === \"selectCursor\") {\n this.compiledData[type] = callIfNecessary(this.data[type], context);\n } else if (type === \"cursorPrefix\") {\n this.compiledData[type] = this.data[type];\n } else if (type === \"orderIsUnique\") {\n this.compiledData[type] = this.data[type];\n } else if (type === \"limit\") {\n this.compiledData[type] = callIfNecessary(this.data[type], context);\n } else if (type === \"offset\") {\n this.compiledData[type] = callIfNecessary(this.data[type], context);\n } else if (type === \"first\") {\n this.compiledData[type] = this.data[type];\n } else if (type === \"last\") {\n this.compiledData[type] = this.data[type];\n } else {\n throw new Error(`Wasn't expecting to lock '${type}'`);\n }\n }\n checkLock(type: string) {\n if (this.locks[type]) {\n if (typeof this.locks[type] === \"string\") {\n throw new Error(\n `'${type}' has already been locked\\n ` +\n this.locks[type].replace(/\\n/g, \"\\n \") +\n \"\\n\"\n );\n }\n throw new Error(`'${type}' has already been locked`);\n }\n }\n lockEverything() {\n this._finalize();\n // We must execute everything after `from` so we have the alias to reference\n this.lock(\"from\");\n this.lock(\"join\");\n this.lock(\"orderBy\");\n // We must execute where after orderBy because cursor queries require all orderBy columns\n this.lock(\"cursorComparator\");\n this.lock(\"whereBound\");\n this.lock(\"where\");\n // 'where' -> 'whereBound' can affect 'offset'/'limit'\n this.lock(\"offset\");\n this.lock(\"limit\");\n this.lock(\"first\");\n this.lock(\"last\");\n // We must execute select after orderBy otherwise we cannot generate a cursor\n this.lock(\"fixedSelectExpression\");\n this.lock(\"selectCursor\");\n this.lock(\"select\");\n }\n /** this method is experimental */\n buildChild() {\n const options = { supportsJSONB: this.supportsJSONB };\n const child = new QueryBuilder(options, this.context, this.rootValue);\n child.parentQueryBuilder = this;\n return child;\n }\n /** this method is experimental */\n buildNamedChildSelecting(\n name: RawAlias,\n from: SQLGen,\n selectExpression: SQLGen,\n alias?: SQLAlias\n ) {\n if (this._children.has(name)) {\n throw new Error(\n `QueryBuilder already has a child named ${name.toString()}`\n );\n }\n const child = this.buildChild();\n child.from(from, alias);\n child.fixedSelectExpression(selectExpression);\n this._children.set(name, child);\n return child;\n }\n /** this method is experimental */\n getNamedChild(name: string) {\n return this._children.get(name);\n }\n}\n\nexport default QueryBuilder;\n"],"file":"QueryBuilder.js"}
1
+ {"version":3,"file":"QueryBuilder.js","names":["sql","_interopRequireWildcard","require","_isSafeInteger","_interopRequireDefault","_chunk","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","isDev","process","env","POSTGRAPHILE_ENV","callIfNecessary","o","context","callIfNecessaryArray","Array","isArray","map","v","escapeLarge","sqlFragment","type","actualType","domainBaseType","category","includes","id","fragment","QueryBuilder","constructor","options","rootValue","supportsJSONB","locks","cursorComparator","fixedSelectExpression","select","selectCursor","from","join","whereBound","where","orderBy","orderIsUnique","first","last","limit","offset","finalized","selectedIdentifiers","data","cursorPrefix","lower","upper","beforeLock","liveConditions","compiledData","_children","Map","lock","lockContext","freeze","queryBuilder","jsonbBuildObject","fields","length","fieldsChunks","chunk","chunkToJson","fieldsChunk","expr","alias","literal","field","fn","checkLock","push","makeLiveCollection","table","cb","checkerGenerator","checkers","record","every","checker","parentQueryBuilder","Error","allRequirements","reduce","memo","_checkerGenerator","requirements","assign","value","keys","addLiveCondition","setCursorComparator","addCursorCondition","cursorValue","isAfter","exprGen","test","selectIdentifiers","primaryKey","primaryKeyConstraint","primaryKeys","keyAttributes","getTableAlias","identifier","name","Symbol","isLower","setOrderIsUnique","ascending","nullsFirst","limitGen","offsetGen","previous","isOrderUnique","getTableExpression","getSelectCursor","getOffset","getFinalLimitAndOffset","flip","Math","min","getFinalOffset","getFinalLimit","getOrderByExpressionsAndDirections","getSelectFieldsCount","lockEverything","buildSelectFields","buildSelectJson","addNullCase","addNotDistinctFromNullCase","buildObject","buildWhereBoundClause","clauses","buildWhereClause","includeLowerBound","includeUpperBound","build","asJson","asJsonAggregate","onlyJsonField","useAsterisk","Number","isSafeInteger","flipAlias","aggAlias","_finalize","i","l","stack","seenFields","selects","valueOrGenerator","columnName","a","b","c","f","replace","buildChild","child","buildNamedChildSelecting","selectExpression","toString","getNamedChild","_default","exports"],"sources":["../src/QueryBuilder.js"],"sourcesContent":["// @flow\nimport * as sql from \"pg-sql2\";\nimport type { SQL } from \"pg-sql2\";\nimport isSafeInteger from \"lodash/isSafeInteger\";\nimport chunk from \"lodash/chunk\";\nimport type { PgClass, PgType } from \"./plugins/PgIntrospectionPlugin\";\n\n// eslint-disable-next-line flowtype/no-weak-types\ntype GraphQLContext = any;\n\nconst isDev = process.env.POSTGRAPHILE_ENV === \"development\";\n\ntype GenContext = {\n queryBuilder: QueryBuilder,\n};\ntype Gen<T> = (context: GenContext) => T;\n\n// Importantly, this cannot include a function\ntype CallResult = null | string | number | boolean | SQL;\n\nfunction callIfNecessary<T: CallResult>(o: Gen<T> | T, context: GenContext): T {\n if (typeof o === \"function\") {\n return o(context);\n } else {\n return o;\n }\n}\n\nfunction callIfNecessaryArray<T: CallResult>(\n o: Array<Gen<T> | T>,\n context: GenContext\n): Array<T> {\n if (Array.isArray(o)) {\n return o.map(v => callIfNecessary(v, context));\n } else {\n return o;\n }\n}\n\nexport type RawAlias = Symbol | string;\ntype SQLAlias = SQL;\ntype SQLGen = Gen<SQL> | SQL;\ntype NumberGen = Gen<number> | number;\ntype CursorValue = Array<mixed>;\ntype CursorComparator = (val: CursorValue, isAfter: boolean) => void;\n\nexport type QueryBuilderOptions = {\n supportsJSONB?: boolean, // Defaults to true\n};\n\nfunction escapeLarge(sqlFragment: SQL, type: PgType) {\n const actualType = type.domainBaseType || type;\n if (actualType.category === \"N\") {\n if (\n [\n \"21\" /* int2 */,\n \"23\" /* int4 */,\n \"700\" /* float4 */,\n \"701\" /* float8 */,\n \"24\" /* regproc */,\n \"2202\" /* regprocedure */,\n \"2203\" /* regoper */,\n \"2204\" /* regoperator */,\n \"2205\" /* regclass */,\n \"2206\" /* regtype */,\n \"4096\" /* regrole */,\n \"4089\" /* regnamespace */,\n \"3734\" /* regconfig */,\n \"3769\" /* regdictionary */,\n ].includes(actualType.id)\n ) {\n // No need for special handling\n return sqlFragment;\n }\n // Otherwise force the id to be a string\n return sql.fragment`((${sqlFragment})::numeric)::text`;\n }\n return sqlFragment;\n}\n\nclass QueryBuilder {\n parentQueryBuilder: QueryBuilder | void;\n context: GraphQLContext;\n rootValue: any; // eslint-disable-line flowtype/no-weak-types\n supportsJSONB: boolean;\n locks: {\n [string]: false | true | string,\n };\n finalized: boolean;\n selectedIdentifiers: boolean;\n data: {\n cursorPrefix: Array<string>,\n fixedSelectExpression: ?SQLGen,\n select: Array<[SQLGen, RawAlias]>,\n selectCursor: ?SQLGen,\n from: ?[SQLGen, SQLAlias],\n join: Array<SQLGen>,\n where: Array<SQLGen>,\n whereBound: {\n lower: Array<SQLGen>,\n upper: Array<SQLGen>,\n },\n orderBy: Array<[SQLGen, boolean, boolean | null]>,\n orderIsUnique: boolean,\n limit: ?NumberGen,\n offset: ?NumberGen,\n first: ?number,\n last: ?number,\n beforeLock: {\n [string]: Array<() => void> | null,\n },\n cursorComparator: ?CursorComparator,\n liveConditions: Array<\n // eslint-disable-next-line flowtype/no-weak-types\n [(data: {}) => (record: any) => boolean, { [key: string]: SQL } | void]\n >,\n };\n compiledData: {\n cursorPrefix: Array<string>,\n fixedSelectExpression: ?SQL,\n select: Array<[SQL, RawAlias]>,\n selectCursor: ?SQL,\n from: ?[SQL, SQLAlias],\n join: Array<SQL>,\n where: Array<SQL>,\n whereBound: {\n lower: Array<SQL>,\n upper: Array<SQL>,\n },\n orderBy: Array<[SQL, boolean, boolean | null]>,\n orderIsUnique: boolean,\n limit: ?number,\n offset: ?number,\n first: ?number,\n last: ?number,\n cursorComparator: ?CursorComparator,\n };\n lockContext: {\n queryBuilder: QueryBuilder,\n };\n _children: Map<RawAlias, QueryBuilder>;\n\n constructor(\n options: QueryBuilderOptions = {},\n context: GraphQLContext = {},\n rootValue?: any // eslint-disable-line flowtype/no-weak-types\n ) {\n this.context = context || {};\n this.rootValue = rootValue;\n this.supportsJSONB =\n typeof options.supportsJSONB === \"undefined\" ||\n options.supportsJSONB === null\n ? true\n : !!options.supportsJSONB;\n\n this.locks = {\n // As a performance optimisation, we're going to list a number of lock\n // types so that V8 doesn't need to mutate the object too much\n cursorComparator: false,\n fixedSelectExpression: false,\n select: false,\n selectCursor: false,\n from: false,\n join: false,\n whereBound: false,\n where: false,\n orderBy: false,\n orderIsUnique: false,\n first: false,\n last: false,\n limit: false,\n offset: false,\n };\n this.finalized = false;\n this.selectedIdentifiers = false;\n this.data = {\n // TODO: refactor `cursorPrefix`, it shouldn't be here (or should at least have getters/setters)\n cursorPrefix: [\"natural\"],\n fixedSelectExpression: null,\n select: [],\n selectCursor: null,\n from: null,\n join: [],\n where: [],\n whereBound: {\n lower: [],\n upper: [],\n },\n orderBy: [],\n orderIsUnique: false,\n limit: null,\n offset: null,\n first: null,\n last: null,\n beforeLock: {\n // As a performance optimisation, we're going to list a number of lock\n // types so that V8 doesn't need to mutate the object too much\n cursorComparator: [],\n fixedSelectExpression: [],\n select: [],\n selectCursor: [],\n from: [],\n join: [],\n whereBound: [],\n where: [],\n orderBy: [],\n orderIsUnique: [],\n first: [],\n last: [],\n limit: [],\n offset: [],\n },\n cursorComparator: null,\n liveConditions: [],\n };\n this.compiledData = {\n cursorPrefix: [\"natural\"],\n fixedSelectExpression: null,\n select: [],\n selectCursor: null,\n from: null,\n join: [],\n where: [],\n whereBound: {\n lower: [],\n upper: [],\n },\n orderBy: [],\n orderIsUnique: false,\n limit: null,\n offset: null,\n first: null,\n last: null,\n cursorComparator: null,\n };\n this._children = new Map();\n this.beforeLock(\"select\", () => {\n this.lock(\"selectCursor\");\n if (this.compiledData.selectCursor) {\n this.select(this.compiledData.selectCursor, \"__cursor\");\n }\n });\n // 'whereBound' and 'natural' order might set offset/limit\n this.beforeLock(\"where\", () => {\n this.lock(\"whereBound\");\n });\n this.beforeLock(\"offset\", () => {\n this.lock(\"whereBound\");\n });\n this.beforeLock(\"limit\", () => {\n this.lock(\"whereBound\");\n });\n this.beforeLock(\"first\", () => {\n this.lock(\"limit\");\n this.lock(\"offset\");\n });\n this.beforeLock(\"last\", () => {\n this.lock(\"limit\");\n this.lock(\"offset\");\n });\n this.lockContext = Object.freeze({\n queryBuilder: this,\n });\n }\n\n // ----------------------------------------\n\n // Helper function\n jsonbBuildObject(fields: Array<[SQL, RawAlias]>) {\n if (this.supportsJSONB && fields.length > 50) {\n const fieldsChunks = chunk(fields, 50);\n const chunkToJson = fieldsChunk =>\n sql.fragment`jsonb_build_object(${sql.join(\n fieldsChunk.map(\n ([expr, alias]) =>\n sql.fragment`${sql.literal(alias)}::text, ${expr}`\n ),\n \", \"\n )})`;\n return sql.fragment`(${sql.join(\n fieldsChunks.map(chunkToJson),\n \" || \"\n )})::json`;\n } else {\n // PG9.4 will have issues with more than 100 parameters (50 keys)\n return sql.fragment`json_build_object(${sql.join(\n fields.map(\n ([expr, alias]) => sql.fragment`${sql.literal(alias)}::text, ${expr}`\n ),\n \", \"\n )})`;\n }\n }\n\n // ----------------------------------------\n\n beforeLock(field: string, fn: () => void) {\n this.checkLock(field);\n if (!this.data.beforeLock[field]) {\n this.data.beforeLock[field] = [];\n }\n // $FlowFixMe: this is guaranteed to be set, due to the if statement above\n this.data.beforeLock[field].push(fn);\n }\n\n makeLiveCollection(\n table: PgClass,\n // eslint-disable-next-line flowtype/no-weak-types\n cb?: (checker: (data: any) => (record: any) => boolean) => void\n ) {\n /* the actual condition doesn't matter hugely, 'select' should work */\n if (!this.rootValue || !this.rootValue.liveConditions) return;\n const liveConditions = this.data.liveConditions;\n const checkerGenerator = data => {\n // Compute this once.\n const checkers = liveConditions.map(([checkerGenerator]) =>\n checkerGenerator(data)\n );\n return record => checkers.every(checker => checker(record));\n };\n if (this.parentQueryBuilder) {\n const parentQueryBuilder = this.parentQueryBuilder;\n if (cb) {\n throw new Error(\n \"Either use parentQueryBuilder or pass callback, not both.\"\n );\n }\n parentQueryBuilder.beforeLock(\"select\", () => {\n const id = this.rootValue.liveConditions.push(checkerGenerator) - 1;\n // BEWARE: it's easy to override others' conditions, and that will cause issues. Be sensible.\n const allRequirements = this.data.liveConditions.reduce(\n (memo, [_checkerGenerator, requirements]) =>\n requirements ? Object.assign(memo, requirements) : memo,\n {}\n );\n parentQueryBuilder.select(\n sql.fragment`\\\njson_build_object('__id', ${sql.value(id)}::int\n${sql.join(\n Object.keys(allRequirements).map(\n key => sql.fragment`, ${sql.literal(key)}::text, ${allRequirements[key]}`\n ),\n \"\"\n)})`,\n \"__live\"\n );\n });\n } else if (cb) {\n cb(checkerGenerator);\n } else {\n throw new Error(\n \"makeLiveCollection was called without parentQueryBuilder and without callback\"\n );\n }\n }\n\n addLiveCondition(\n // eslint-disable-next-line flowtype/no-weak-types\n checkerGenerator: (data: {}) => (record: any) => boolean,\n requirements?: { [key: string]: SQL }\n ) {\n if (requirements && !this.parentQueryBuilder) {\n throw new Error(\n \"There's no parentQueryBuilder, so there cannot be requirements\"\n );\n }\n this.data.liveConditions.push([checkerGenerator, requirements]);\n }\n\n setCursorComparator(fn: CursorComparator) {\n this.checkLock(\"cursorComparator\");\n this.data.cursorComparator = fn;\n this.lock(\"cursorComparator\");\n }\n addCursorCondition(cursorValue: CursorValue, isAfter: boolean) {\n this.beforeLock(\"whereBound\", () => {\n this.lock(\"cursorComparator\");\n if (!this.compiledData.cursorComparator) {\n throw new Error(\"No cursor comparator was set!\");\n }\n this.compiledData.cursorComparator(cursorValue, isAfter);\n });\n }\n /** this method is experimental */\n fixedSelectExpression(exprGen: SQLGen) {\n this.checkLock(\"fixedSelectExpression\");\n this.lock(\"select\");\n this.lock(\"selectCursor\");\n if (this.data.select.length > 0) {\n throw new Error(\"Cannot use .fixedSelectExpression() with .select()\");\n }\n if (this.data.selectCursor) {\n throw new Error(\n \"Cannot use .fixedSelectExpression() with .selectCursor()\"\n );\n }\n this.data.fixedSelectExpression = exprGen;\n }\n select(exprGen: SQLGen, alias: RawAlias) {\n this.checkLock(\"select\");\n this.lock(\"fixedSelectExpression\");\n if (typeof alias === \"string\") {\n // To protect against vulnerabilities such as\n //\n // https://github.com/brianc/node-postgres/issues/1408\n //\n // we need to ensure column names are safe. Turns out that GraphQL\n // aliases are fairly strict (`[_A-Za-z][_0-9A-Za-z]*`) anyway:\n //\n // https://github.com/graphql/graphql-js/blob/680685dd14bd52c6475305e150e5f295ead2aa7e/src/language/lexer.js#L551-L581\n //\n // so this should not cause any issues in practice.\n if (/^(\\$+|@+|[_A-Za-z])[_0-9A-Za-z]*$/.test(alias) !== true) {\n throw new Error(`Disallowed alias '${alias}'.`);\n }\n }\n this.data.select.push([exprGen, alias]);\n }\n selectIdentifiers(table: PgClass) {\n if (this.selectedIdentifiers) return;\n const primaryKey = table.primaryKeyConstraint;\n if (!primaryKey) return;\n const primaryKeys = primaryKey.keyAttributes;\n this.select(\n sql.fragment`json_build_array(${sql.join(\n primaryKeys.map(key =>\n escapeLarge(\n sql.fragment`${this.getTableAlias()}.${sql.identifier(key.name)}`,\n key.type\n )\n ),\n \", \"\n )})`,\n \"__identifiers\"\n );\n this.selectedIdentifiers = true;\n }\n selectCursor(exprGen: SQLGen) {\n this.checkLock(\"selectCursor\");\n this.lock(\"fixedSelectExpression\");\n this.data.selectCursor = exprGen;\n }\n from(expr: SQLGen, alias?: SQLAlias = sql.identifier(Symbol())) {\n this.checkLock(\"from\");\n if (!expr) {\n throw new Error(\"No from table source!\");\n }\n if (!alias) {\n throw new Error(\"No from alias!\");\n }\n this.data.from = [expr, alias];\n this.lock(\"from\");\n }\n // XXX: join\n where(exprGen: SQLGen) {\n this.checkLock(\"where\");\n this.data.where.push(exprGen);\n }\n whereBound(exprGen: SQLGen, isLower: boolean) {\n if (typeof isLower !== \"boolean\") {\n throw new Error(\"isLower must be specified as a boolean\");\n }\n this.checkLock(\"whereBound\");\n this.data.whereBound[isLower ? \"lower\" : \"upper\"].push(exprGen);\n }\n setOrderIsUnique() {\n this.data.orderIsUnique = true;\n }\n orderBy(\n exprGen: SQLGen,\n ascending: boolean = true,\n nullsFirst: boolean | null = null\n ) {\n this.checkLock(\"orderBy\");\n this.data.orderBy.push([exprGen, ascending, nullsFirst]);\n }\n limit(limitGen: NumberGen) {\n this.checkLock(\"limit\");\n\n if (this.data.limit != null) {\n throw new Error(\"Must only set limit once\");\n }\n this.data.limit = limitGen;\n }\n offset(offsetGen: NumberGen) {\n this.checkLock(\"offset\");\n if (this.data.offset != null) {\n // Add the offsets together (this should be able to recurse)\n const previous = this.data.offset;\n this.data.offset = context => {\n return (\n callIfNecessary(previous, context) +\n callIfNecessary(offsetGen, context)\n );\n };\n } else {\n this.data.offset = offsetGen;\n }\n }\n first(first: number) {\n this.checkLock(\"first\");\n if (this.data.first != null) {\n throw new Error(\"Must only set first once\");\n }\n this.data.first = first;\n }\n last(last: number) {\n this.checkLock(\"last\");\n if (this.data.last != null) {\n throw new Error(\"Must only set last once\");\n }\n this.data.last = last;\n }\n\n // ----------------------------------------\n\n isOrderUnique(lock?: boolean = true) {\n if (lock) {\n this.lock(\"orderBy\");\n this.lock(\"orderIsUnique\");\n return this.compiledData.orderIsUnique;\n } else {\n // This is useful inside `beforeLock(\"orderBy\", ...)` calls\n return this.data.orderIsUnique;\n }\n }\n getTableExpression(): SQL {\n this.lock(\"from\");\n if (!this.compiledData.from) {\n throw new Error(\"No from table has been supplied\");\n }\n return this.compiledData.from[0];\n }\n getTableAlias(): SQL {\n this.lock(\"from\");\n if (!this.compiledData.from) {\n throw new Error(\"No from table has been supplied\");\n }\n return this.compiledData.from[1];\n }\n getSelectCursor() {\n this.lock(\"selectCursor\");\n return this.compiledData.selectCursor;\n }\n getOffset() {\n this.lock(\"offset\");\n return this.compiledData.offset || 0;\n }\n getFinalLimitAndOffset() {\n this.lock(\"offset\");\n this.lock(\"limit\");\n this.lock(\"first\");\n this.lock(\"last\");\n let limit = this.compiledData.limit;\n let offset = this.compiledData.offset || 0;\n let flip = false;\n if (this.compiledData.first != null) {\n if (limit != null) {\n limit = Math.min(limit, this.compiledData.first);\n } else {\n limit = this.compiledData.first;\n }\n }\n if (this.compiledData.last != null) {\n if (offset > 0 && limit != null) {\n throw new Error(\n \"Issue within pagination, please report your query to graphile-build\"\n );\n }\n if (limit != null) {\n if (this.compiledData.last < limit) {\n offset = limit - this.compiledData.last;\n limit = this.compiledData.last;\n } else {\n // no need to change anything\n }\n } else if (offset > 0) {\n throw new Error(\"Cannot combine 'last' and 'offset'\");\n } else {\n if (this.compiledData.orderBy.length > 0) {\n flip = true;\n limit = this.compiledData.last;\n } else {\n throw new Error(\"Cannot do last of an unordered set\");\n }\n }\n }\n return {\n limit,\n offset,\n flip,\n };\n }\n getFinalOffset() {\n return this.getFinalLimitAndOffset().offset;\n }\n getFinalLimit() {\n return this.getFinalLimitAndOffset().limit;\n }\n getOrderByExpressionsAndDirections() {\n this.lock(\"orderBy\");\n return this.compiledData.orderBy;\n }\n getSelectFieldsCount() {\n this.lockEverything();\n return this.compiledData.select.length;\n }\n buildSelectFields() {\n this.lockEverything();\n if (this.compiledData.fixedSelectExpression) {\n return this.compiledData.fixedSelectExpression;\n }\n return sql.join(\n this.compiledData.select.map(\n ([sqlFragment, alias]) =>\n sql.fragment`to_json(${sqlFragment}) as ${sql.identifier(alias)}`\n ),\n \", \"\n );\n }\n buildSelectJson({\n addNullCase,\n addNotDistinctFromNullCase,\n }: {\n addNullCase?: boolean,\n addNotDistinctFromNullCase?: boolean,\n }) {\n this.lockEverything();\n let buildObject = this.compiledData.select.length\n ? this.jsonbBuildObject(this.compiledData.select)\n : sql.fragment`to_json(${this.getTableAlias()})`;\n if (addNotDistinctFromNullCase) {\n /*\n * `is null` is not sufficient here because the record might exist but\n * have null as each of its values; so we use `is not distinct from null`\n * to assert that the record itself doesn't exist. This is typically used\n * with column values.\n */\n buildObject = sql.fragment`(case when (${this.getTableAlias()} is not distinct from null) then null else ${buildObject} end)`;\n } else if (addNullCase) {\n /*\n * `is null` is probably used here because it's the result of a function;\n * functions seem to have trouble differentiating between `null::my_type`\n * and `(null,null,null)::my_type`, always opting for the latter which\n * then causes issues with the `GraphQLNonNull`s in the schema.\n */\n buildObject = sql.fragment`(case when (${this.getTableAlias()} is null) then null else ${buildObject} end)`;\n }\n return buildObject;\n }\n buildWhereBoundClause(isLower: boolean) {\n this.lock(\"whereBound\");\n const clauses = this.compiledData.whereBound[isLower ? \"lower\" : \"upper\"];\n if (clauses.length) {\n return sql.fragment`(${sql.join(clauses, \") and (\")})`;\n } else {\n return sql.literal(true);\n }\n }\n buildWhereClause(\n includeLowerBound: boolean,\n includeUpperBound: boolean,\n {\n addNullCase,\n addNotDistinctFromNullCase,\n }: { addNullCase?: boolean, addNotDistinctFromNullCase?: boolean }\n ) {\n this.lock(\"where\");\n const clauses = [\n /*\n * Okay... so this is quite interesting. When we're talking about\n * composite types, `(foo is not null)` and `not (foo is null)` are NOT\n * equivalent! Here's why:\n *\n * `(foo is null)`\n * true if every field of the row is null\n *\n * `(foo is not null)`\n * true if every field of the row is not null\n *\n * `not (foo is null)`\n * true if there's at least one field that is not null\n *\n * `is [not] distinct from null` does differentiate between these cases,\n * but when a function returns something like `select * from my_table\n * where false`, it actually returns `(null, null, null)::my_table`,\n * which will cause issues when we apply the `GraphQLNonNull` constraints\n * to the results - we want to treat this as null.\n *\n * So don't \"simplify\" the line below! We're probably checking if the\n * result of a function call returning a compound type was indeed null.\n */\n ...(addNotDistinctFromNullCase\n ? [sql.fragment`(${this.getTableAlias()} is distinct from null)`]\n : addNullCase\n ? [sql.fragment`not (${this.getTableAlias()} is null)`]\n : []),\n ...this.compiledData.where,\n ...(includeLowerBound ? [this.buildWhereBoundClause(true)] : []),\n ...(includeUpperBound ? [this.buildWhereBoundClause(false)] : []),\n ];\n return clauses.length\n ? sql.fragment`(${sql.join(clauses, \") and (\")})`\n : sql.fragment`1 = 1`;\n }\n build(\n options: {\n asJson?: boolean,\n asJsonAggregate?: boolean,\n onlyJsonField?: boolean,\n addNullCase?: boolean,\n addNotDistinctFromNullCase?: boolean,\n useAsterisk?: boolean,\n } = {}\n ) {\n this.lockEverything();\n\n if (this.compiledData.fixedSelectExpression) {\n if (Object.keys(options).length > 0) {\n throw new Error(\n \"Do not pass options to QueryBuilder.build() when using `buildNamedChildSelecting`\"\n );\n }\n }\n const {\n asJson = false,\n asJsonAggregate = false,\n onlyJsonField = false,\n addNullCase = false,\n addNotDistinctFromNullCase = false,\n useAsterisk = false,\n } = options;\n\n if (onlyJsonField) {\n return this.buildSelectJson({ addNullCase, addNotDistinctFromNullCase });\n }\n const { limit, offset, flip } = this.getFinalLimitAndOffset();\n const fields =\n asJson || asJsonAggregate\n ? sql.fragment`${this.buildSelectJson({\n addNullCase,\n addNotDistinctFromNullCase,\n })} as object`\n : this.buildSelectFields();\n\n let fragment = sql.fragment`\\\nselect ${useAsterisk ? sql.fragment`${this.getTableAlias()}.*` : fields}\n${\n this.compiledData.from &&\n sql.fragment`from ${this.compiledData.from[0]} as ${this.getTableAlias()}`\n}\n${this.compiledData.join.length && sql.join(this.compiledData.join, \" \")}\nwhere ${this.buildWhereClause(true, true, options)}\n${\n this.compiledData.orderBy.length\n ? sql.fragment`order by ${sql.join(\n this.compiledData.orderBy.map(\n ([expr, ascending, nullsFirst]) =>\n sql.fragment`${expr} ${\n Number(ascending) ^ Number(flip)\n ? sql.fragment`ASC`\n : sql.fragment`DESC`\n }${\n nullsFirst === true\n ? sql.fragment` NULLS FIRST`\n : nullsFirst === false\n ? sql.fragment` NULLS LAST`\n : null\n }`\n ),\n \",\"\n )}`\n : \"\"\n}\n${isSafeInteger(limit) && sql.fragment`limit ${sql.literal(limit)}`}\n${offset && sql.fragment`offset ${sql.literal(offset)}`}`;\n if (flip) {\n const flipAlias = Symbol();\n fragment = sql.fragment`\\\nwith ${sql.identifier(flipAlias)} as (\n ${fragment}\n)\nselect *\nfrom ${sql.identifier(flipAlias)}\norder by (row_number() over (partition by 1)) desc`; /* We don't need to factor useAsterisk into this row_number() usage */\n }\n if (useAsterisk) {\n /*\n * NOTE[useAsterisk/row_number]: since LIMIT/OFFSET is inside this\n * subquery, row_number() outside of this subquery WON'T include the\n * offset. We must add it back wherever row_number() is used.\n */\n fragment = sql.fragment`select ${fields} from (${fragment}) ${this.getTableAlias()}`;\n }\n if (asJsonAggregate) {\n const aggAlias = Symbol();\n fragment = sql.fragment`select json_agg(${sql.identifier(\n aggAlias,\n \"object\"\n )}) from (${fragment}) as ${sql.identifier(aggAlias)}`;\n fragment = sql.fragment`select coalesce((${fragment}), '[]'::json)`;\n }\n return fragment;\n }\n\n // ----------------------------------------\n\n _finalize() {\n this.finalized = true;\n }\n lock(type: string) {\n if (this.locks[type]) return;\n const context = this.lockContext;\n const { beforeLock } = this.data;\n let locks = beforeLock[type];\n if (locks) {\n beforeLock[type] = [];\n for (let i = 0, l = locks.length; i < l; i++) {\n locks[i]();\n }\n }\n if (type !== \"select\") {\n this.locks[type] = isDev ? new Error(\"Initally locked here\").stack : true;\n }\n if (type === \"cursorComparator\") {\n // It's meant to be a function\n this.compiledData[type] = this.data[type];\n } else if (type === \"whereBound\") {\n // Handle properties separately\n this.compiledData[type].lower = callIfNecessaryArray(\n this.data[type].lower,\n context\n );\n this.compiledData[type].upper = callIfNecessaryArray(\n this.data[type].upper,\n context\n );\n } else if (type === \"fixedSelectExpression\") {\n this.compiledData[type] = callIfNecessary(this.data[type], context);\n } else if (type === \"select\") {\n /*\n * NOTICE: locking select can cause additional selects to be added, so the\n * length of this.data[type] may increase during the operation. This is\n * why we handle this.locks[type] separately.\n */\n\n // Assume that duplicate fields must be identical, don't output the same\n // key multiple times\n const seenFields: { [key: string | Symbol]: true } = {};\n const data = [];\n const selects = this.data[type];\n\n // DELIBERATE slow loop, see NOTICE above\n for (let i = 0; i < selects.length; i++) {\n const [valueOrGenerator, columnName] = selects[i];\n if (!seenFields[columnName]) {\n seenFields[columnName] = true;\n data.push([callIfNecessary(valueOrGenerator, context), columnName]);\n locks = beforeLock[type];\n if (locks) {\n beforeLock[type] = [];\n for (let i = 0, l = locks.length; i < l; i++) {\n locks[i]();\n }\n }\n }\n }\n this.locks[type] = isDev ? new Error(\"Initally locked here\").stack : true;\n this.compiledData[type] = data;\n } else if (type === \"orderBy\") {\n this.compiledData[type] = this.data[type].map(([a, b, c]) => [\n callIfNecessary(a, context),\n b,\n c,\n ]);\n } else if (type === \"from\") {\n if (this.data.from) {\n const f = this.data.from;\n this.compiledData.from = [callIfNecessary(f[0], context), f[1]];\n }\n } else if (type === \"join\" || type === \"where\") {\n this.compiledData[type] = callIfNecessaryArray(this.data[type], context);\n } else if (type === \"selectCursor\") {\n this.compiledData[type] = callIfNecessary(this.data[type], context);\n } else if (type === \"cursorPrefix\") {\n this.compiledData[type] = this.data[type];\n } else if (type === \"orderIsUnique\") {\n this.compiledData[type] = this.data[type];\n } else if (type === \"limit\") {\n this.compiledData[type] = callIfNecessary(this.data[type], context);\n } else if (type === \"offset\") {\n this.compiledData[type] = callIfNecessary(this.data[type], context);\n } else if (type === \"first\") {\n this.compiledData[type] = this.data[type];\n } else if (type === \"last\") {\n this.compiledData[type] = this.data[type];\n } else {\n throw new Error(`Wasn't expecting to lock '${type}'`);\n }\n }\n checkLock(type: string) {\n if (this.locks[type]) {\n if (typeof this.locks[type] === \"string\") {\n throw new Error(\n `'${type}' has already been locked\\n ` +\n this.locks[type].replace(/\\n/g, \"\\n \") +\n \"\\n\"\n );\n }\n throw new Error(`'${type}' has already been locked`);\n }\n }\n lockEverything() {\n this._finalize();\n // We must execute everything after `from` so we have the alias to reference\n this.lock(\"from\");\n this.lock(\"join\");\n this.lock(\"orderBy\");\n // We must execute where after orderBy because cursor queries require all orderBy columns\n this.lock(\"cursorComparator\");\n this.lock(\"whereBound\");\n this.lock(\"where\");\n // 'where' -> 'whereBound' can affect 'offset'/'limit'\n this.lock(\"offset\");\n this.lock(\"limit\");\n this.lock(\"first\");\n this.lock(\"last\");\n // We must execute select after orderBy otherwise we cannot generate a cursor\n this.lock(\"fixedSelectExpression\");\n this.lock(\"selectCursor\");\n this.lock(\"select\");\n }\n /** this method is experimental */\n buildChild() {\n const options = { supportsJSONB: this.supportsJSONB };\n const child = new QueryBuilder(options, this.context, this.rootValue);\n child.parentQueryBuilder = this;\n return child;\n }\n /** this method is experimental */\n buildNamedChildSelecting(\n name: RawAlias,\n from: SQLGen,\n selectExpression: SQLGen,\n alias?: SQLAlias\n ) {\n if (this._children.has(name)) {\n throw new Error(\n `QueryBuilder already has a child named ${name.toString()}`\n );\n }\n const child = this.buildChild();\n child.from(from, alias);\n child.fixedSelectExpression(selectExpression);\n this._children.set(name, child);\n return child;\n }\n /** this method is experimental */\n getNamedChild(name: string) {\n return this._children.get(name);\n }\n}\n\nexport default QueryBuilder;\n"],"mappings":"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"}
@@ -263,97 +263,58 @@ Object.defineProperty(exports, "withPgClient", {
263
263
  return _withPgClient.default;
264
264
  }
265
265
  });
266
-
267
266
  var _PgBasicsPlugin = _interopRequireDefault(require("./plugins/PgBasicsPlugin"));
268
-
269
267
  var _PgIntrospectionPlugin = _interopRequireWildcard(require("./plugins/PgIntrospectionPlugin"));
270
-
271
268
  var _PgTypesPlugin = _interopRequireDefault(require("./plugins/PgTypesPlugin"));
272
-
273
269
  var _PgJWTPlugin = _interopRequireDefault(require("./plugins/PgJWTPlugin"));
274
-
275
270
  var _PgTablesPlugin = _interopRequireDefault(require("./plugins/PgTablesPlugin"));
276
-
277
271
  var _PgConnectionArgFirstLastBeforeAfter = _interopRequireDefault(require("./plugins/PgConnectionArgFirstLastBeforeAfter"));
278
-
279
272
  var _PgConnectionArgOrderBy = _interopRequireDefault(require("./plugins/PgConnectionArgOrderBy"));
280
-
281
273
  var _PgConnectionArgOrderByDefaultValue = _interopRequireDefault(require("./plugins/PgConnectionArgOrderByDefaultValue"));
282
-
283
274
  var _PgConnectionArgCondition = _interopRequireDefault(require("./plugins/PgConnectionArgCondition"));
284
-
285
275
  var _PgConditionComputedColumnPlugin = _interopRequireDefault(require("./plugins/PgConditionComputedColumnPlugin"));
286
-
287
276
  var _PgAllRows = _interopRequireDefault(require("./plugins/PgAllRows"));
288
-
289
277
  var _PgColumnsPlugin = _interopRequireDefault(require("./plugins/PgColumnsPlugin"));
290
-
291
278
  var _PgColumnDeprecationPlugin = _interopRequireDefault(require("./plugins/PgColumnDeprecationPlugin"));
292
-
293
279
  var _PgForwardRelationPlugin = _interopRequireDefault(require("./plugins/PgForwardRelationPlugin"));
294
-
295
280
  var _PgBackwardRelationPlugin = _interopRequireDefault(require("./plugins/PgBackwardRelationPlugin"));
296
-
297
281
  var _PgRowByUniqueConstraint = _interopRequireDefault(require("./plugins/PgRowByUniqueConstraint"));
298
-
299
282
  var _PgComputedColumnsPlugin = _interopRequireDefault(require("./plugins/PgComputedColumnsPlugin"));
300
-
301
283
  var _PgQueryProceduresPlugin = _interopRequireDefault(require("./plugins/PgQueryProceduresPlugin"));
302
-
303
284
  var _PgOrderAllColumnsPlugin = _interopRequireDefault(require("./plugins/PgOrderAllColumnsPlugin"));
304
-
305
285
  var _PgOrderComputedColumnsPlugin = _interopRequireDefault(require("./plugins/PgOrderComputedColumnsPlugin"));
306
-
307
286
  var _PgOrderByPrimaryKeyPlugin = _interopRequireDefault(require("./plugins/PgOrderByPrimaryKeyPlugin"));
308
-
309
287
  var _PgRowNode = _interopRequireDefault(require("./plugins/PgRowNode"));
310
-
311
288
  var _PgNodeAliasPostGraphile = _interopRequireDefault(require("./plugins/PgNodeAliasPostGraphile"));
312
-
313
289
  var _PgRecordReturnTypesPlugin = _interopRequireDefault(require("./plugins/PgRecordReturnTypesPlugin"));
314
-
315
290
  var _PgRecordFunctionConnectionPlugin = _interopRequireDefault(require("./plugins/PgRecordFunctionConnectionPlugin"));
316
-
317
291
  var _PgScalarFunctionConnectionPlugin = _interopRequireDefault(require("./plugins/PgScalarFunctionConnectionPlugin"));
318
-
319
292
  var _PageInfoStartEndCursor = _interopRequireDefault(require("./plugins/PageInfoStartEndCursor"));
320
-
321
293
  var _PgConnectionTotalCount = _interopRequireDefault(require("./plugins/PgConnectionTotalCount"));
322
-
323
294
  var _PgMutationCreatePlugin = _interopRequireDefault(require("./plugins/PgMutationCreatePlugin"));
324
-
325
295
  var _PgMutationUpdateDeletePlugin = _interopRequireDefault(require("./plugins/PgMutationUpdateDeletePlugin"));
326
-
327
296
  var _PgMutationProceduresPlugin = _interopRequireDefault(require("./plugins/PgMutationProceduresPlugin"));
328
-
329
297
  var _PgMutationPayloadEdgePlugin = _interopRequireDefault(require("./plugins/PgMutationPayloadEdgePlugin"));
330
-
331
298
  var inflections = _interopRequireWildcard(require("./inflections"));
332
-
333
299
  exports.inflections = inflections;
334
-
335
300
  var _parseIdentifier = _interopRequireDefault(require("./parseIdentifier"));
336
-
337
301
  var _omit = _interopRequireDefault(require("./omit"));
338
-
339
302
  var _debugSql = require("./plugins/debugSql");
340
-
341
303
  var _graphileBuild = require("graphile-build");
342
-
343
304
  var _utils = require("./utils");
344
-
345
305
  var _withPgClient = _interopRequireWildcard(require("./withPgClient"));
346
-
347
306
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
348
-
349
307
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
350
-
351
308
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
352
-
353
309
  // Mutations
354
- const defaultPlugins = [_PgBasicsPlugin.default, _PgIntrospectionPlugin.default, _PgTypesPlugin.default, _PgJWTPlugin.default, _PgTablesPlugin.default, _PgConnectionArgFirstLastBeforeAfter.default, _PgConnectionArgOrderBy.default, _PgConnectionArgOrderByDefaultValue.default, _PgConnectionArgCondition.default, _PgConditionComputedColumnPlugin.default, _PgAllRows.default, _PgColumnsPlugin.default, _PgColumnDeprecationPlugin.default, _PgForwardRelationPlugin.default, _PgBackwardRelationPlugin.default, _PgRowByUniqueConstraint.default, _PgComputedColumnsPlugin.default, _PgQueryProceduresPlugin.default, _PgOrderAllColumnsPlugin.default, _PgOrderComputedColumnsPlugin.default, _PgOrderByPrimaryKeyPlugin.default, _PgRowNode.default, _PgNodeAliasPostGraphile.default, _PgRecordReturnTypesPlugin.default, _PgRecordFunctionConnectionPlugin.default, _PgScalarFunctionConnectionPlugin.default, // For PostGraphile compatibility
355
- _PageInfoStartEndCursor.default, // For PostGraphile compatibility
356
- _PgConnectionTotalCount.default, // Mutations
310
+ const defaultPlugins = [_PgBasicsPlugin.default, _PgIntrospectionPlugin.default, _PgTypesPlugin.default, _PgJWTPlugin.default, _PgTablesPlugin.default, _PgConnectionArgFirstLastBeforeAfter.default, _PgConnectionArgOrderBy.default, _PgConnectionArgOrderByDefaultValue.default, _PgConnectionArgCondition.default, _PgConditionComputedColumnPlugin.default, _PgAllRows.default, _PgColumnsPlugin.default, _PgColumnDeprecationPlugin.default, _PgForwardRelationPlugin.default, _PgBackwardRelationPlugin.default, _PgRowByUniqueConstraint.default, _PgComputedColumnsPlugin.default, _PgQueryProceduresPlugin.default, _PgOrderAllColumnsPlugin.default, _PgOrderComputedColumnsPlugin.default, _PgOrderByPrimaryKeyPlugin.default, _PgRowNode.default, _PgNodeAliasPostGraphile.default, _PgRecordReturnTypesPlugin.default, _PgRecordFunctionConnectionPlugin.default, _PgScalarFunctionConnectionPlugin.default,
311
+ // For PostGraphile compatibility
312
+ _PageInfoStartEndCursor.default,
313
+ // For PostGraphile compatibility
314
+ _PgConnectionTotalCount.default,
315
+ // Mutations
357
316
  _PgMutationCreatePlugin.default, _PgMutationUpdateDeletePlugin.default, _PgMutationProceduresPlugin.default, _PgMutationPayloadEdgePlugin.default];
317
+
318
+ // TypeScript compatibility
358
319
  exports.defaultPlugins = defaultPlugins;
359
320
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.js"],"names":["defaultPlugins","PgBasicsPlugin","PgIntrospectionPlugin","PgTypesPlugin","PgJWTPlugin","PgTablesPlugin","PgConnectionArgFirstLastBeforeAfter","PgConnectionArgOrderBy","PgConnectionArgOrderByDefaultValue","PgConnectionArgCondition","PgConditionComputedColumnPlugin","PgAllRows","PgColumnsPlugin","PgColumnDeprecationPlugin","PgForwardRelationPlugin","PgBackwardRelationPlugin","PgRowByUniqueConstraint","PgComputedColumnsPlugin","PgQueryProceduresPlugin","PgOrderAllColumnsPlugin","PgOrderComputedColumnsPlugin","PgOrderByPrimaryKeyPlugin","PgRowNode","PgNodeAliasPostGraphile","PgRecordReturnTypesPlugin","PgRecordFunctionConnectionPlugin","PgScalarFunctionConnectionPlugin","PageInfoStartEndCursor","PgConnectionTotalCount","PgMutationCreatePlugin","PgMutationUpdateDeletePlugin","PgMutationProceduresPlugin","PgMutationPayloadEdgePlugin"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA;;AACA;;AAGA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAGA;;AACA;;AACA;;AACA;;AAEA;;;;AAEA;;AACA;;AACA;;AAkFA;;AAEA;;AAEA;;;;;;;;AAhGA;AAcO,MAAMA,cAAc,GAAG,CAC5BC,uBAD4B,EAE5BC,8BAF4B,EAG5BC,sBAH4B,EAI5BC,oBAJ4B,EAK5BC,uBAL4B,EAM5BC,4CAN4B,EAO5BC,+BAP4B,EAQ5BC,2CAR4B,EAS5BC,iCAT4B,EAU5BC,wCAV4B,EAW5BC,kBAX4B,EAY5BC,wBAZ4B,EAa5BC,kCAb4B,EAc5BC,gCAd4B,EAe5BC,iCAf4B,EAgB5BC,gCAhB4B,EAiB5BC,gCAjB4B,EAkB5BC,gCAlB4B,EAmB5BC,gCAnB4B,EAoB5BC,qCApB4B,EAqB5BC,kCArB4B,EAsB5BC,kBAtB4B,EAuB5BC,gCAvB4B,EAwB5BC,kCAxB4B,EAyB5BC,yCAzB4B,EA0B5BC,yCA1B4B,EA0BM;AAClCC,+BA3B4B,EA2BJ;AACxBC,+BA5B4B,EA8B5B;AACAC,+BA/B4B,EAgC5BC,qCAhC4B,EAiC5BC,mCAjC4B,EAkC5BC,oCAlC4B,CAAvB","sourcesContent":["// @flow\nimport PgBasicsPlugin from \"./plugins/PgBasicsPlugin\";\nimport PgIntrospectionPlugin, {\n PgEntityKind,\n} from \"./plugins/PgIntrospectionPlugin\";\nimport PgTypesPlugin from \"./plugins/PgTypesPlugin\";\nimport PgJWTPlugin from \"./plugins/PgJWTPlugin\";\nimport PgTablesPlugin from \"./plugins/PgTablesPlugin\";\nimport PgConnectionArgFirstLastBeforeAfter from \"./plugins/PgConnectionArgFirstLastBeforeAfter\";\nimport PgConnectionArgOrderBy from \"./plugins/PgConnectionArgOrderBy\";\nimport PgConnectionArgOrderByDefaultValue from \"./plugins/PgConnectionArgOrderByDefaultValue\";\nimport PgConnectionArgCondition from \"./plugins/PgConnectionArgCondition\";\nimport PgConditionComputedColumnPlugin from \"./plugins/PgConditionComputedColumnPlugin\";\nimport PgAllRows from \"./plugins/PgAllRows\";\nimport PgColumnsPlugin from \"./plugins/PgColumnsPlugin\";\nimport PgColumnDeprecationPlugin from \"./plugins/PgColumnDeprecationPlugin\";\nimport PgForwardRelationPlugin from \"./plugins/PgForwardRelationPlugin\";\nimport PgBackwardRelationPlugin from \"./plugins/PgBackwardRelationPlugin\";\nimport PgRowByUniqueConstraint from \"./plugins/PgRowByUniqueConstraint\";\nimport PgComputedColumnsPlugin from \"./plugins/PgComputedColumnsPlugin\";\nimport PgQueryProceduresPlugin from \"./plugins/PgQueryProceduresPlugin\";\nimport PgOrderAllColumnsPlugin from \"./plugins/PgOrderAllColumnsPlugin\";\nimport PgOrderComputedColumnsPlugin from \"./plugins/PgOrderComputedColumnsPlugin\";\nimport PgOrderByPrimaryKeyPlugin from \"./plugins/PgOrderByPrimaryKeyPlugin\";\nimport PgRowNode from \"./plugins/PgRowNode\";\nimport PgNodeAliasPostGraphile from \"./plugins/PgNodeAliasPostGraphile\";\nimport PgRecordReturnTypesPlugin from \"./plugins/PgRecordReturnTypesPlugin\";\nimport PgRecordFunctionConnectionPlugin from \"./plugins/PgRecordFunctionConnectionPlugin\";\nimport PgScalarFunctionConnectionPlugin from \"./plugins/PgScalarFunctionConnectionPlugin\";\nimport PageInfoStartEndCursor from \"./plugins/PageInfoStartEndCursor\";\nimport PgConnectionTotalCount from \"./plugins/PgConnectionTotalCount\";\n\n// Mutations\nimport PgMutationCreatePlugin from \"./plugins/PgMutationCreatePlugin\";\nimport PgMutationUpdateDeletePlugin from \"./plugins/PgMutationUpdateDeletePlugin\";\nimport PgMutationProceduresPlugin from \"./plugins/PgMutationProceduresPlugin\";\nimport PgMutationPayloadEdgePlugin from \"./plugins/PgMutationPayloadEdgePlugin\";\n\nimport * as inflections from \"./inflections\";\n\nimport parseIdentifier from \"./parseIdentifier\";\nimport omit from \"./omit\";\nexport { formatSQLForDebugging } from \"./plugins/debugSql\";\n\nexport { parseIdentifier, omit };\n\nexport const defaultPlugins = [\n PgBasicsPlugin,\n PgIntrospectionPlugin,\n PgTypesPlugin,\n PgJWTPlugin,\n PgTablesPlugin,\n PgConnectionArgFirstLastBeforeAfter,\n PgConnectionArgOrderBy,\n PgConnectionArgOrderByDefaultValue,\n PgConnectionArgCondition,\n PgConditionComputedColumnPlugin,\n PgAllRows,\n PgColumnsPlugin,\n PgColumnDeprecationPlugin,\n PgForwardRelationPlugin,\n PgBackwardRelationPlugin,\n PgRowByUniqueConstraint,\n PgComputedColumnsPlugin,\n PgQueryProceduresPlugin,\n PgOrderAllColumnsPlugin,\n PgOrderComputedColumnsPlugin,\n PgOrderByPrimaryKeyPlugin,\n PgRowNode,\n PgNodeAliasPostGraphile,\n PgRecordReturnTypesPlugin,\n PgRecordFunctionConnectionPlugin,\n PgScalarFunctionConnectionPlugin, // For PostGraphile compatibility\n PageInfoStartEndCursor, // For PostGraphile compatibility\n PgConnectionTotalCount,\n\n // Mutations\n PgMutationCreatePlugin,\n PgMutationUpdateDeletePlugin,\n PgMutationProceduresPlugin,\n PgMutationPayloadEdgePlugin,\n];\n\nexport { inflections };\n\n// TypeScript compatibility\nexport { PgEntityKind };\n\nexport {\n PgBasicsPlugin,\n PgIntrospectionPlugin,\n PgTypesPlugin,\n PgJWTPlugin,\n PgTablesPlugin,\n PgConnectionArgFirstLastBeforeAfter,\n PgConnectionArgOrderBy,\n PgConnectionArgOrderByDefaultValue,\n PgConnectionArgCondition,\n PgConditionComputedColumnPlugin,\n PgAllRows,\n PgColumnsPlugin,\n PgColumnDeprecationPlugin,\n PgForwardRelationPlugin,\n PgBackwardRelationPlugin,\n PgRowByUniqueConstraint,\n PgComputedColumnsPlugin,\n PgQueryProceduresPlugin,\n PgOrderAllColumnsPlugin,\n PgOrderComputedColumnsPlugin,\n PgOrderByPrimaryKeyPlugin,\n PgRowNode,\n PgNodeAliasPostGraphile,\n PgNodeAliasPostGraphile as PgNodeAliasPostGraphQL,\n PgRecordReturnTypesPlugin,\n PgRecordFunctionConnectionPlugin,\n PgScalarFunctionConnectionPlugin,\n PageInfoStartEndCursor,\n PgConnectionTotalCount,\n PgMutationCreatePlugin,\n PgMutationUpdateDeletePlugin,\n PgMutationProceduresPlugin,\n PgMutationPayloadEdgePlugin,\n};\n\nexport { upperFirst, camelCase, constantCase } from \"graphile-build\";\n\nexport { parseTags } from \"./utils\";\n\nexport {\n default as withPgClient,\n getPgClientAndReleaserFromConfig,\n} from \"./withPgClient\";\n"],"file":"index.js"}
1
+ {"version":3,"file":"index.js","names":["_PgBasicsPlugin","_interopRequireDefault","require","_PgIntrospectionPlugin","_interopRequireWildcard","_PgTypesPlugin","_PgJWTPlugin","_PgTablesPlugin","_PgConnectionArgFirstLastBeforeAfter","_PgConnectionArgOrderBy","_PgConnectionArgOrderByDefaultValue","_PgConnectionArgCondition","_PgConditionComputedColumnPlugin","_PgAllRows","_PgColumnsPlugin","_PgColumnDeprecationPlugin","_PgForwardRelationPlugin","_PgBackwardRelationPlugin","_PgRowByUniqueConstraint","_PgComputedColumnsPlugin","_PgQueryProceduresPlugin","_PgOrderAllColumnsPlugin","_PgOrderComputedColumnsPlugin","_PgOrderByPrimaryKeyPlugin","_PgRowNode","_PgNodeAliasPostGraphile","_PgRecordReturnTypesPlugin","_PgRecordFunctionConnectionPlugin","_PgScalarFunctionConnectionPlugin","_PageInfoStartEndCursor","_PgConnectionTotalCount","_PgMutationCreatePlugin","_PgMutationUpdateDeletePlugin","_PgMutationProceduresPlugin","_PgMutationPayloadEdgePlugin","inflections","exports","_parseIdentifier","_omit","_debugSql","_graphileBuild","_utils","_withPgClient","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","defaultPlugins","PgBasicsPlugin","PgIntrospectionPlugin","PgTypesPlugin","PgJWTPlugin","PgTablesPlugin","PgConnectionArgFirstLastBeforeAfter","PgConnectionArgOrderBy","PgConnectionArgOrderByDefaultValue","PgConnectionArgCondition","PgConditionComputedColumnPlugin","PgAllRows","PgColumnsPlugin","PgColumnDeprecationPlugin","PgForwardRelationPlugin","PgBackwardRelationPlugin","PgRowByUniqueConstraint","PgComputedColumnsPlugin","PgQueryProceduresPlugin","PgOrderAllColumnsPlugin","PgOrderComputedColumnsPlugin","PgOrderByPrimaryKeyPlugin","PgRowNode","PgNodeAliasPostGraphile","PgRecordReturnTypesPlugin","PgRecordFunctionConnectionPlugin","PgScalarFunctionConnectionPlugin","PageInfoStartEndCursor","PgConnectionTotalCount","PgMutationCreatePlugin","PgMutationUpdateDeletePlugin","PgMutationProceduresPlugin","PgMutationPayloadEdgePlugin"],"sources":["../src/index.js"],"sourcesContent":["// @flow\nimport PgBasicsPlugin from \"./plugins/PgBasicsPlugin\";\nimport PgIntrospectionPlugin, {\n PgEntityKind,\n} from \"./plugins/PgIntrospectionPlugin\";\nimport PgTypesPlugin from \"./plugins/PgTypesPlugin\";\nimport PgJWTPlugin from \"./plugins/PgJWTPlugin\";\nimport PgTablesPlugin from \"./plugins/PgTablesPlugin\";\nimport PgConnectionArgFirstLastBeforeAfter from \"./plugins/PgConnectionArgFirstLastBeforeAfter\";\nimport PgConnectionArgOrderBy from \"./plugins/PgConnectionArgOrderBy\";\nimport PgConnectionArgOrderByDefaultValue from \"./plugins/PgConnectionArgOrderByDefaultValue\";\nimport PgConnectionArgCondition from \"./plugins/PgConnectionArgCondition\";\nimport PgConditionComputedColumnPlugin from \"./plugins/PgConditionComputedColumnPlugin\";\nimport PgAllRows from \"./plugins/PgAllRows\";\nimport PgColumnsPlugin from \"./plugins/PgColumnsPlugin\";\nimport PgColumnDeprecationPlugin from \"./plugins/PgColumnDeprecationPlugin\";\nimport PgForwardRelationPlugin from \"./plugins/PgForwardRelationPlugin\";\nimport PgBackwardRelationPlugin from \"./plugins/PgBackwardRelationPlugin\";\nimport PgRowByUniqueConstraint from \"./plugins/PgRowByUniqueConstraint\";\nimport PgComputedColumnsPlugin from \"./plugins/PgComputedColumnsPlugin\";\nimport PgQueryProceduresPlugin from \"./plugins/PgQueryProceduresPlugin\";\nimport PgOrderAllColumnsPlugin from \"./plugins/PgOrderAllColumnsPlugin\";\nimport PgOrderComputedColumnsPlugin from \"./plugins/PgOrderComputedColumnsPlugin\";\nimport PgOrderByPrimaryKeyPlugin from \"./plugins/PgOrderByPrimaryKeyPlugin\";\nimport PgRowNode from \"./plugins/PgRowNode\";\nimport PgNodeAliasPostGraphile from \"./plugins/PgNodeAliasPostGraphile\";\nimport PgRecordReturnTypesPlugin from \"./plugins/PgRecordReturnTypesPlugin\";\nimport PgRecordFunctionConnectionPlugin from \"./plugins/PgRecordFunctionConnectionPlugin\";\nimport PgScalarFunctionConnectionPlugin from \"./plugins/PgScalarFunctionConnectionPlugin\";\nimport PageInfoStartEndCursor from \"./plugins/PageInfoStartEndCursor\";\nimport PgConnectionTotalCount from \"./plugins/PgConnectionTotalCount\";\n\n// Mutations\nimport PgMutationCreatePlugin from \"./plugins/PgMutationCreatePlugin\";\nimport PgMutationUpdateDeletePlugin from \"./plugins/PgMutationUpdateDeletePlugin\";\nimport PgMutationProceduresPlugin from \"./plugins/PgMutationProceduresPlugin\";\nimport PgMutationPayloadEdgePlugin from \"./plugins/PgMutationPayloadEdgePlugin\";\n\nimport * as inflections from \"./inflections\";\n\nimport parseIdentifier from \"./parseIdentifier\";\nimport omit from \"./omit\";\nexport { formatSQLForDebugging } from \"./plugins/debugSql\";\n\nexport { parseIdentifier, omit };\n\nexport const defaultPlugins = [\n PgBasicsPlugin,\n PgIntrospectionPlugin,\n PgTypesPlugin,\n PgJWTPlugin,\n PgTablesPlugin,\n PgConnectionArgFirstLastBeforeAfter,\n PgConnectionArgOrderBy,\n PgConnectionArgOrderByDefaultValue,\n PgConnectionArgCondition,\n PgConditionComputedColumnPlugin,\n PgAllRows,\n PgColumnsPlugin,\n PgColumnDeprecationPlugin,\n PgForwardRelationPlugin,\n PgBackwardRelationPlugin,\n PgRowByUniqueConstraint,\n PgComputedColumnsPlugin,\n PgQueryProceduresPlugin,\n PgOrderAllColumnsPlugin,\n PgOrderComputedColumnsPlugin,\n PgOrderByPrimaryKeyPlugin,\n PgRowNode,\n PgNodeAliasPostGraphile,\n PgRecordReturnTypesPlugin,\n PgRecordFunctionConnectionPlugin,\n PgScalarFunctionConnectionPlugin, // For PostGraphile compatibility\n PageInfoStartEndCursor, // For PostGraphile compatibility\n PgConnectionTotalCount,\n\n // Mutations\n PgMutationCreatePlugin,\n PgMutationUpdateDeletePlugin,\n PgMutationProceduresPlugin,\n PgMutationPayloadEdgePlugin,\n];\n\nexport { inflections };\n\n// TypeScript compatibility\nexport { PgEntityKind };\n\nexport {\n PgBasicsPlugin,\n PgIntrospectionPlugin,\n PgTypesPlugin,\n PgJWTPlugin,\n PgTablesPlugin,\n PgConnectionArgFirstLastBeforeAfter,\n PgConnectionArgOrderBy,\n PgConnectionArgOrderByDefaultValue,\n PgConnectionArgCondition,\n PgConditionComputedColumnPlugin,\n PgAllRows,\n PgColumnsPlugin,\n PgColumnDeprecationPlugin,\n PgForwardRelationPlugin,\n PgBackwardRelationPlugin,\n PgRowByUniqueConstraint,\n PgComputedColumnsPlugin,\n PgQueryProceduresPlugin,\n PgOrderAllColumnsPlugin,\n PgOrderComputedColumnsPlugin,\n PgOrderByPrimaryKeyPlugin,\n PgRowNode,\n PgNodeAliasPostGraphile,\n PgNodeAliasPostGraphile as PgNodeAliasPostGraphQL,\n PgRecordReturnTypesPlugin,\n PgRecordFunctionConnectionPlugin,\n PgScalarFunctionConnectionPlugin,\n PageInfoStartEndCursor,\n PgConnectionTotalCount,\n PgMutationCreatePlugin,\n PgMutationUpdateDeletePlugin,\n PgMutationProceduresPlugin,\n PgMutationPayloadEdgePlugin,\n};\n\nexport { upperFirst, camelCase, constantCase } from \"graphile-build\";\n\nexport { parseTags } from \"./utils\";\n\nexport {\n default as withPgClient,\n getPgClientAndReleaserFromConfig,\n} from \"./withPgClient\";\n"],"mappings":"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"}