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.
- package/README.md +4 -13
- package/node8plus/GraphQLJSON.js +0 -11
- package/node8plus/GraphQLJSON.js.map +1 -1
- package/node8plus/PgLiveProvider.js +4 -11
- package/node8plus/PgLiveProvider.js.map +1 -1
- package/node8plus/QueryBuilder.js +42 -176
- package/node8plus/QueryBuilder.js.map +1 -1
- package/node8plus/index.js +8 -47
- package/node8plus/index.js.map +1 -1
- package/node8plus/inflections.js +9 -61
- package/node8plus/inflections.js.map +1 -1
- package/node8plus/omit.js +7 -22
- package/node8plus/omit.js.map +1 -1
- package/node8plus/parseIdentifier.js +0 -1
- package/node8plus/parseIdentifier.js.map +1 -1
- package/node8plus/pgPrepareAndRun.js +2 -14
- package/node8plus/pgPrepareAndRun.js.map +1 -1
- package/node8plus/plugins/PageInfoStartEndCursor.js +0 -4
- package/node8plus/plugins/PageInfoStartEndCursor.js.map +1 -1
- package/node8plus/plugins/PgAllRows.js +0 -29
- package/node8plus/plugins/PgAllRows.js.map +1 -1
- package/node8plus/plugins/PgBackwardRelationPlugin.js +2 -41
- package/node8plus/plugins/PgBackwardRelationPlugin.js.map +1 -1
- package/node8plus/plugins/PgBasicsPlugin.js +20 -147
- package/node8plus/plugins/PgBasicsPlugin.js.map +1 -1
- package/node8plus/plugins/PgColumnDeprecationPlugin.js +2 -5
- package/node8plus/plugins/PgColumnDeprecationPlugin.js.map +1 -1
- package/node8plus/plugins/PgColumnsPlugin.js +4 -17
- package/node8plus/plugins/PgColumnsPlugin.js.map +1 -1
- package/node8plus/plugins/PgComputedColumnsPlugin.js +4 -19
- package/node8plus/plugins/PgComputedColumnsPlugin.js.map +1 -1
- package/node8plus/plugins/PgConditionComputedColumnPlugin.js +12 -23
- package/node8plus/plugins/PgConditionComputedColumnPlugin.js.map +1 -1
- package/node8plus/plugins/PgConnectionArgCondition.js +1 -9
- package/node8plus/plugins/PgConnectionArgCondition.js.map +1 -1
- package/node8plus/plugins/PgConnectionArgFirstLastBeforeAfter.js +0 -12
- package/node8plus/plugins/PgConnectionArgFirstLastBeforeAfter.js.map +1 -1
- package/node8plus/plugins/PgConnectionArgOrderBy.js +2 -19
- package/node8plus/plugins/PgConnectionArgOrderBy.js.map +1 -1
- package/node8plus/plugins/PgConnectionArgOrderByDefaultValue.js +0 -6
- package/node8plus/plugins/PgConnectionArgOrderByDefaultValue.js.map +1 -1
- package/node8plus/plugins/PgConnectionTotalCount.js +0 -8
- package/node8plus/plugins/PgConnectionTotalCount.js.map +1 -1
- package/node8plus/plugins/PgForwardRelationPlugin.js +2 -25
- package/node8plus/plugins/PgForwardRelationPlugin.js.map +1 -1
- package/node8plus/plugins/PgIntrospectionPlugin.js +91 -180
- package/node8plus/plugins/PgIntrospectionPlugin.js.flow +30 -2
- package/node8plus/plugins/PgIntrospectionPlugin.js.map +1 -1
- package/node8plus/plugins/PgJWTPlugin.js +2 -18
- package/node8plus/plugins/PgJWTPlugin.js.map +1 -1
- package/node8plus/plugins/PgMutationCreatePlugin.js +0 -18
- package/node8plus/plugins/PgMutationCreatePlugin.js.map +1 -1
- package/node8plus/plugins/PgMutationPayloadEdgePlugin.js +4 -25
- package/node8plus/plugins/PgMutationPayloadEdgePlugin.js.map +1 -1
- package/node8plus/plugins/PgMutationProceduresPlugin.js +0 -6
- package/node8plus/plugins/PgMutationProceduresPlugin.js.map +1 -1
- package/node8plus/plugins/PgMutationUpdateDeletePlugin.js +14 -49
- package/node8plus/plugins/PgMutationUpdateDeletePlugin.js.flow +5 -2
- package/node8plus/plugins/PgMutationUpdateDeletePlugin.js.map +1 -1
- package/node8plus/plugins/PgNodeAliasPostGraphile.js +0 -6
- package/node8plus/plugins/PgNodeAliasPostGraphile.js.map +1 -1
- package/node8plus/plugins/PgOrderAllColumnsPlugin.js +0 -4
- package/node8plus/plugins/PgOrderAllColumnsPlugin.js.map +1 -1
- package/node8plus/plugins/PgOrderByPrimaryKeyPlugin.js +0 -6
- package/node8plus/plugins/PgOrderByPrimaryKeyPlugin.js.map +1 -1
- package/node8plus/plugins/PgOrderComputedColumnsPlugin.js +10 -14
- package/node8plus/plugins/PgOrderComputedColumnsPlugin.js.map +1 -1
- package/node8plus/plugins/PgQueryProceduresPlugin.js +4 -16
- package/node8plus/plugins/PgQueryProceduresPlugin.js.map +1 -1
- package/node8plus/plugins/PgRecordFunctionConnectionPlugin.js +3 -20
- package/node8plus/plugins/PgRecordFunctionConnectionPlugin.js.map +1 -1
- package/node8plus/plugins/PgRecordReturnTypesPlugin.js +11 -16
- package/node8plus/plugins/PgRecordReturnTypesPlugin.js.map +1 -1
- package/node8plus/plugins/PgRowByUniqueConstraint.js +4 -25
- package/node8plus/plugins/PgRowByUniqueConstraint.js.map +1 -1
- package/node8plus/plugins/PgRowNode.js +0 -32
- package/node8plus/plugins/PgRowNode.js.map +1 -1
- package/node8plus/plugins/PgScalarFunctionConnectionPlugin.js +3 -17
- package/node8plus/plugins/PgScalarFunctionConnectionPlugin.js.map +1 -1
- package/node8plus/plugins/PgTablesPlugin.js +7 -59
- package/node8plus/plugins/PgTablesPlugin.js.map +1 -1
- package/node8plus/plugins/PgTypesPlugin.js +140 -240
- package/node8plus/plugins/PgTypesPlugin.js.flow +76 -23
- package/node8plus/plugins/PgTypesPlugin.js.map +1 -1
- package/node8plus/plugins/addStartEndCursor.js +2 -5
- package/node8plus/plugins/addStartEndCursor.js.map +1 -1
- package/node8plus/plugins/debugSql.js +1 -16
- package/node8plus/plugins/debugSql.js.map +1 -1
- package/node8plus/plugins/introspectionQuery.js +3 -4
- package/node8plus/plugins/introspectionQuery.js.flow +11 -3
- package/node8plus/plugins/introspectionQuery.js.map +1 -1
- package/node8plus/plugins/makeProcField.js +40 -90
- package/node8plus/plugins/makeProcField.js.map +1 -1
- package/node8plus/plugins/pgField.js +2 -7
- package/node8plus/plugins/pgField.js.map +1 -1
- package/node8plus/plugins/viaTemporaryTable.js +6 -12
- package/node8plus/plugins/viaTemporaryTable.js.map +1 -1
- package/node8plus/postgresInterval.js +4 -4
- package/node8plus/postgresInterval.js.map +1 -1
- package/node8plus/queryFromResolveDataFactory.js +33 -77
- package/node8plus/queryFromResolveDataFactory.js.map +1 -1
- package/node8plus/utils.js +8 -9
- package/node8plus/utils.js.map +1 -1
- package/node8plus/withPgClient.js +4 -26
- package/node8plus/withPgClient.js.map +1 -1
- 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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"}
|
package/node8plus/index.js
CHANGED
|
@@ -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,
|
|
355
|
-
|
|
356
|
-
|
|
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
|
package/node8plus/index.js.map
CHANGED
|
@@ -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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"}
|