graphile-build-pg 4.4.5 → 4.5.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/README.md +2 -1
  2. package/node8plus/QueryBuilder.d.ts +10 -2
  3. package/node8plus/QueryBuilder.js +80 -1
  4. package/node8plus/QueryBuilder.js.flow +75 -2
  5. package/node8plus/QueryBuilder.js.map +1 -1
  6. package/node8plus/index.d.ts +8 -0
  7. package/node8plus/index.js +7 -1
  8. package/node8plus/index.js.flow +6 -1
  9. package/node8plus/index.js.map +1 -1
  10. package/node8plus/plugins/PgBasicsPlugin.js +5 -3
  11. package/node8plus/plugins/PgBasicsPlugin.js.flow +2 -0
  12. package/node8plus/plugins/PgBasicsPlugin.js.map +1 -1
  13. package/node8plus/plugins/PgConnectionTotalCount.js +10 -4
  14. package/node8plus/plugins/PgConnectionTotalCount.js.flow +13 -9
  15. package/node8plus/plugins/PgConnectionTotalCount.js.map +1 -1
  16. package/node8plus/plugins/PgIntrospectionPlugin.d.ts +48 -11
  17. package/node8plus/plugins/PgIntrospectionPlugin.js +53 -23
  18. package/node8plus/plugins/PgIntrospectionPlugin.js.flow +81 -25
  19. package/node8plus/plugins/PgIntrospectionPlugin.js.map +1 -1
  20. package/node8plus/plugins/PgJWTPlugin.js +6 -1
  21. package/node8plus/plugins/PgJWTPlugin.js.flow +7 -1
  22. package/node8plus/plugins/PgJWTPlugin.js.map +1 -1
  23. package/node8plus/plugins/PgMutationUpdateDeletePlugin.js +2 -1
  24. package/node8plus/plugins/PgMutationUpdateDeletePlugin.js.flow +3 -1
  25. package/node8plus/plugins/PgMutationUpdateDeletePlugin.js.map +1 -1
  26. package/node8plus/plugins/PgRecordFunctionConnectionPlugin.js +1 -0
  27. package/node8plus/plugins/PgRecordFunctionConnectionPlugin.js.flow +1 -0
  28. package/node8plus/plugins/PgRecordFunctionConnectionPlugin.js.map +1 -1
  29. package/node8plus/plugins/PgScalarFunctionConnectionPlugin.js +1 -0
  30. package/node8plus/plugins/PgScalarFunctionConnectionPlugin.js.flow +1 -0
  31. package/node8plus/plugins/PgScalarFunctionConnectionPlugin.js.map +1 -1
  32. package/node8plus/plugins/PgTypesPlugin.js +9 -2
  33. package/node8plus/plugins/PgTypesPlugin.js.flow +19 -0
  34. package/node8plus/plugins/PgTypesPlugin.js.map +1 -1
  35. package/node8plus/plugins/introspectionQuery.js +1 -0
  36. package/node8plus/plugins/introspectionQuery.js.flow +1 -0
  37. package/node8plus/plugins/introspectionQuery.js.map +1 -1
  38. package/node8plus/queryFromResolveDataFactory.js +8 -1
  39. package/node8plus/queryFromResolveDataFactory.js.flow +13 -1
  40. package/node8plus/queryFromResolveDataFactory.js.map +1 -1
  41. package/package.json +7 -12
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/plugins/PgMutationUpdateDeletePlugin.js"],"names":["debug","PgMutationUpdateDeletePlugin","builder","pgDisableDefaultMutations","hook","fields","build","context","newWithHooks","getNodeIdForTypeAndIdentifiers","getTypeAndIdentifiersFromNodeId","nodeIdFieldName","fieldDataGeneratorsByType","extend","parseResolveInfo","getTypeByName","gql2pg","pgGetGqlTypeByTypeIdAndModifier","pgGetGqlInputTypeByTypeIdAndModifier","pgIntrospectionResultsByKind","introspectionResultsByKind","pgSql","sql","graphql","GraphQLNonNull","GraphQLInputObjectType","GraphQLString","GraphQLObjectType","GraphQLID","pgColumnFilter","inflection","pgQueryFromResolveData","queryFromResolveData","pgOmit","omit","pgViaTemporaryTable","viaTemporaryTable","describePgEntity","sqlCommentByAddingTags","pgField","scope","isRootMutation","fieldWithHooks","reduce","outerMemo","mode","class","memo","table","namespace","canUpdate","isUpdatable","canDelete","isDeletable","TableType","type","id","commonCodeRenameMe","pgClient","resolveInfo","getDataFromParsedResolveInfoFragment","PayloadType","args","condition","resolveContext","input","parsedResolveInfoFragment","resolveData","sqlTypeIdentifier","identifier","name","sqlMutationQuery","sqlColumns","sqlValues","inputData","patchField","tableFieldName","attributes","forEach","attr","fieldName","column","val","push","typeModifier","length","query","join","map","col","i","fragment","modifiedRowAlias","Symbol","rootValue","row","rows","e","Error","pluralize","_singularizedTableName","clientMutationId","data","uniqueConstraints","constraints","filter","con","Table","tableTypeName","TablePatch","patchType","description","tableName","deletedNodeIdFieldName","deletedNodeId","Object","assign","addDataGenerator","fieldDataGeneratorsByTableType","get","gens","gen","resolve","__identifiers","isPgMutationPayloadDeletedNodeIdField","__origin","isMutationPayload","isPgUpdatePayloadType","isPgDeletePayloadType","pgIntrospection","primaryKeyConstraint","primaryKeys","keyAttributes","InputType","isPgUpdateInputType","isPgUpdateNodeInputType","isPgDeleteInputType","isPgDeleteNodeInputType","pgInflection","isMutationInput","parent","nodeId","Type","identifiers","key","idx","isPgNodeMutation","pgFieldIntrospection","constraint","keys","every","_","some","typeId","isPgUpdateByKeysInputType","isPgDeleteByKeysInputType","pgKeys","pgFieldConstraint"],"mappings":"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","sourcesContent":["// @flow\nimport type { Plugin } from \"graphile-build\";\nimport debugFactory from \"debug\";\n\nconst debug = debugFactory(\"graphile-build-pg\");\n\nexport default (async function PgMutationUpdateDeletePlugin(\n builder,\n { pgDisableDefaultMutations }\n) {\n if (pgDisableDefaultMutations) {\n return;\n }\n\n builder.hook(\n \"GraphQLObjectType:fields\",\n (fields, build, context) => {\n const {\n newWithHooks,\n getNodeIdForTypeAndIdentifiers,\n getTypeAndIdentifiersFromNodeId,\n nodeIdFieldName,\n fieldDataGeneratorsByType,\n extend,\n parseResolveInfo,\n getTypeByName,\n gql2pg,\n pgGetGqlTypeByTypeIdAndModifier,\n pgGetGqlInputTypeByTypeIdAndModifier,\n pgIntrospectionResultsByKind: introspectionResultsByKind,\n pgSql: sql,\n graphql: {\n GraphQLNonNull,\n GraphQLInputObjectType,\n GraphQLString,\n GraphQLObjectType,\n GraphQLID,\n },\n pgColumnFilter,\n inflection,\n pgQueryFromResolveData: queryFromResolveData,\n pgOmit: omit,\n pgViaTemporaryTable: viaTemporaryTable,\n describePgEntity,\n sqlCommentByAddingTags,\n pgField,\n } = build;\n const {\n scope: { isRootMutation },\n fieldWithHooks,\n } = context;\n\n if (!isRootMutation) {\n return fields;\n }\n\n return extend(\n fields,\n [\"update\", \"delete\"].reduce(\n (outerMemo, mode) =>\n introspectionResultsByKind.class.reduce((memo, table) => {\n // PERFORMANCE: These used to be .filter(...) calls\n if (!table.namespace) return memo;\n const canUpdate =\n mode === \"update\" &&\n table.isUpdatable &&\n !omit(table, \"update\");\n const canDelete =\n mode === \"delete\" &&\n table.isDeletable &&\n !omit(table, \"delete\");\n if (!canUpdate && !canDelete) return memo;\n\n const TableType = pgGetGqlTypeByTypeIdAndModifier(\n table.type.id,\n null\n );\n if (!TableType) {\n return memo;\n }\n async function commonCodeRenameMe(\n pgClient,\n resolveInfo,\n getDataFromParsedResolveInfoFragment,\n PayloadType,\n args,\n condition,\n context,\n resolveContext\n ) {\n const { input } = args;\n const parsedResolveInfoFragment = parseResolveInfo(resolveInfo);\n parsedResolveInfoFragment.args = args; // Allow overriding via makeWrapResolversPlugin\n const resolveData = getDataFromParsedResolveInfoFragment(\n parsedResolveInfoFragment,\n PayloadType\n );\n\n const sqlTypeIdentifier = sql.identifier(\n table.namespace.name,\n table.name\n );\n\n let sqlMutationQuery;\n if (mode === \"update\") {\n const sqlColumns = [];\n const sqlValues = [];\n const inputData =\n input[\n inflection.patchField(inflection.tableFieldName(table))\n ];\n table.attributes.forEach(attr => {\n // PERFORMANCE: These used to be .filter(...) calls\n if (!pgColumnFilter(attr, build, context)) return;\n if (omit(attr, \"update\")) return;\n\n const fieldName = inflection.column(attr);\n if (\n fieldName in inputData /* Because we care about null! */\n ) {\n const val = inputData[fieldName];\n sqlColumns.push(sql.identifier(attr.name));\n sqlValues.push(gql2pg(val, attr.type, attr.typeModifier));\n }\n });\n if (sqlColumns.length === 0) {\n return null;\n }\n sqlMutationQuery = sql.query`\\\nupdate ${sql.identifier(table.namespace.name, table.name)} set ${sql.join(\n sqlColumns.map(\n (col, i) => sql.fragment`${col} = ${sqlValues[i]}`\n ),\n \", \"\n )}\nwhere ${condition}\nreturning *`;\n } else {\n sqlMutationQuery = sql.query`\\\ndelete from ${sql.identifier(table.namespace.name, table.name)}\nwhere ${condition}\nreturning *`;\n }\n\n const modifiedRowAlias = sql.identifier(Symbol());\n const query = queryFromResolveData(\n modifiedRowAlias,\n modifiedRowAlias,\n resolveData,\n {},\n null,\n resolveContext,\n resolveInfo.rootValue\n );\n let row;\n try {\n await pgClient.query(\"SAVEPOINT graphql_mutation\");\n const rows = await viaTemporaryTable(\n pgClient,\n sqlTypeIdentifier,\n sqlMutationQuery,\n modifiedRowAlias,\n query\n );\n row = rows[0];\n await pgClient.query(\"RELEASE SAVEPOINT graphql_mutation\");\n } catch (e) {\n await pgClient.query(\n \"ROLLBACK TO SAVEPOINT graphql_mutation\"\n );\n throw e;\n }\n if (!row) {\n throw new Error(\n `No values were ${mode}d in collection '${inflection.pluralize(\n inflection._singularizedTableName(table)\n )}' because no values you can ${mode} were found matching these criteria.`\n );\n }\n return {\n clientMutationId: input.clientMutationId,\n data: row,\n };\n }\n if (TableType) {\n const uniqueConstraints = table.constraints.filter(\n con => con.type === \"u\" || con.type === \"p\"\n );\n const Table = pgGetGqlTypeByTypeIdAndModifier(\n table.type.id,\n null\n );\n const tableTypeName = Table.name;\n const TablePatch = getTypeByName(\n inflection.patchType(Table.name)\n );\n const PayloadType = newWithHooks(\n GraphQLObjectType,\n {\n name: inflection[\n mode === \"delete\"\n ? \"deletePayloadType\"\n : \"updatePayloadType\"\n ](table),\n description: `The output of our ${mode} \\`${tableTypeName}\\` mutation.`,\n fields: ({ fieldWithHooks }) => {\n const tableName = inflection.tableFieldName(table);\n // This should really be `-node-id` but for compatibility with PostGraphQL v3 we haven't made that change.\n const deletedNodeIdFieldName = inflection.deletedNodeId(\n table\n );\n return Object.assign(\n {\n clientMutationId: {\n description:\n \"The exact same `clientMutationId` that was provided in the mutation input, unchanged and unused. May be used by a client to track mutations.\",\n type: GraphQLString,\n },\n [tableName]: pgField(\n build,\n fieldWithHooks,\n tableName,\n {\n description: `The \\`${tableTypeName}\\` that was ${mode}d by this mutation.`,\n type: Table,\n },\n {},\n false\n ),\n },\n mode === \"delete\"\n ? {\n [deletedNodeIdFieldName]: fieldWithHooks(\n deletedNodeIdFieldName,\n ({ addDataGenerator }) => {\n const fieldDataGeneratorsByTableType = fieldDataGeneratorsByType.get(\n TableType\n );\n\n const gens =\n fieldDataGeneratorsByTableType &&\n fieldDataGeneratorsByTableType[\n nodeIdFieldName\n ];\n if (gens) {\n gens.forEach(gen => addDataGenerator(gen));\n }\n return {\n type: GraphQLID,\n resolve(data) {\n return (\n data.data.__identifiers &&\n getNodeIdForTypeAndIdentifiers(\n Table,\n ...data.data.__identifiers\n )\n );\n },\n };\n },\n {\n isPgMutationPayloadDeletedNodeIdField: true,\n }\n ),\n }\n : null\n );\n },\n },\n {\n __origin: `Adding table ${mode} mutation payload type for ${describePgEntity(\n table\n )}. You can rename the table's GraphQL type via a 'Smart Comment':\\n\\n ${sqlCommentByAddingTags(\n table,\n {\n name: \"newNameHere\",\n }\n )}`,\n isMutationPayload: true,\n isPgUpdatePayloadType: mode === \"update\",\n isPgDeletePayloadType: mode === \"delete\",\n pgIntrospection: table,\n }\n );\n\n // NodeId\n const primaryKeyConstraint = table.primaryKeyConstraint;\n if (nodeIdFieldName && primaryKeyConstraint) {\n const primaryKeys =\n primaryKeyConstraint && primaryKeyConstraint.keyAttributes;\n const fieldName = inflection[\n mode === \"update\" ? \"updateNode\" : \"deleteNode\"\n ](table);\n const InputType = newWithHooks(\n GraphQLInputObjectType,\n {\n description: `All input for the \\`${fieldName}\\` mutation.`,\n name: inflection[\n mode === \"update\"\n ? \"updateNodeInputType\"\n : \"deleteNodeInputType\"\n ](table),\n fields: Object.assign(\n {\n clientMutationId: {\n description:\n \"An arbitrary string value with no semantic meaning. Will be included in the payload verbatim. May be used to track mutations by the client.\",\n type: GraphQLString,\n },\n [nodeIdFieldName]: {\n description: `The globally unique \\`ID\\` which will identify a single \\`${tableTypeName}\\` to be ${mode}d.`,\n type: new GraphQLNonNull(GraphQLID),\n },\n },\n mode === \"update\"\n ? {\n [inflection.patchField(\n inflection.tableFieldName(table)\n )]: {\n description: `An object where the defined keys will be set on the \\`${tableTypeName}\\` being ${mode}d.`,\n type: new GraphQLNonNull(TablePatch),\n },\n }\n : null\n ),\n },\n {\n __origin: `Adding table ${mode} (by node ID) mutation input type for ${describePgEntity(\n table\n )}. You can rename the table's GraphQL type via a 'Smart Comment':\\n\\n ${sqlCommentByAddingTags(\n table,\n {\n name: \"newNameHere\",\n }\n )}`,\n isPgUpdateInputType: mode === \"update\",\n isPgUpdateNodeInputType: mode === \"update\",\n isPgDeleteInputType: mode === \"delete\",\n isPgDeleteNodeInputType: mode === \"delete\",\n pgInflection: table, // TODO:v5: remove - TYPO!\n pgIntrospection: table,\n isMutationInput: true,\n }\n );\n\n memo = extend(\n memo,\n {\n [fieldName]: fieldWithHooks(\n fieldName,\n context => {\n const {\n getDataFromParsedResolveInfoFragment,\n } = context;\n return {\n description:\n mode === \"update\"\n ? `Updates a single \\`${tableTypeName}\\` using its globally unique id and a patch.`\n : `Deletes a single \\`${tableTypeName}\\` using its globally unique id.`,\n type: PayloadType,\n args: {\n input: {\n type: new GraphQLNonNull(InputType),\n },\n },\n async resolve(\n parent,\n args,\n resolveContext,\n resolveInfo\n ) {\n const { input } = args;\n const { pgClient } = resolveContext;\n const nodeId = input[nodeIdFieldName];\n try {\n const {\n Type,\n identifiers,\n } = getTypeAndIdentifiersFromNodeId(nodeId);\n if (Type !== TableType) {\n throw new Error(\"Mismatched type\");\n }\n if (identifiers.length !== primaryKeys.length) {\n throw new Error(\"Invalid ID\");\n }\n\n return commonCodeRenameMe(\n pgClient,\n resolveInfo,\n getDataFromParsedResolveInfoFragment,\n PayloadType,\n args,\n sql.fragment`(${sql.join(\n primaryKeys.map(\n (key, idx) =>\n sql.fragment`${sql.identifier(\n key.name\n )} = ${gql2pg(\n identifiers[idx],\n key.type,\n key.typeModifier\n )}`\n ),\n \") and (\"\n )})`,\n context,\n resolveContext\n );\n } catch (e) {\n debug(e);\n return null;\n }\n },\n };\n },\n {\n isPgNodeMutation: true,\n pgFieldIntrospection: table,\n [mode === \"update\"\n ? \"isPgUpdateMutationField\"\n : \"isPgDeleteMutationField\"]: true,\n }\n ),\n },\n \"Adding ${mode} mutation for ${describePgEntity(table)}\"\n );\n }\n\n // Unique\n uniqueConstraints.forEach(constraint => {\n if (omit(constraint, mode)) {\n return;\n }\n const keys = constraint.keyAttributes;\n if (!keys.every(_ => _)) {\n throw new Error(\n `Consistency error: could not find an attribute in the constraint when building the ${mode} mutation for ${describePgEntity(\n table\n )}!`\n );\n }\n if (keys.some(key => omit(key, \"read\"))) {\n return;\n }\n const fieldName = inflection[\n mode === \"update\" ? \"updateByKeys\" : \"deleteByKeys\"\n ](keys, table, constraint);\n const InputType = newWithHooks(\n GraphQLInputObjectType,\n {\n description: `All input for the \\`${fieldName}\\` mutation.`,\n name: inflection[\n mode === \"update\"\n ? \"updateByKeysInputType\"\n : \"deleteByKeysInputType\"\n ](keys, table, constraint),\n fields: Object.assign(\n {\n clientMutationId: {\n type: GraphQLString,\n },\n },\n mode === \"update\"\n ? {\n [inflection.patchField(\n inflection.tableFieldName(table)\n )]: {\n description: `An object where the defined keys will be set on the \\`${tableTypeName}\\` being ${mode}d.`,\n type: new GraphQLNonNull(TablePatch),\n },\n }\n : null,\n keys.reduce((memo, key) => {\n memo[inflection.column(key)] = {\n description: key.description,\n type: new GraphQLNonNull(\n pgGetGqlInputTypeByTypeIdAndModifier(\n key.typeId,\n key.typeModifier\n )\n ),\n };\n return memo;\n }, {})\n ),\n },\n {\n __origin: `Adding table ${mode} mutation input type for ${describePgEntity(\n constraint\n )}. You can rename the table's GraphQL type via a 'Smart Comment':\\n\\n ${sqlCommentByAddingTags(\n table,\n {\n name: \"newNameHere\",\n }\n )}`,\n isPgUpdateInputType: mode === \"update\",\n isPgUpdateByKeysInputType: mode === \"update\",\n isPgDeleteInputType: mode === \"delete\",\n isPgDeleteByKeysInputType: mode === \"delete\",\n pgInflection: table, // TODO:v5: remove - TYPO!\n pgIntrospection: table,\n pgKeys: keys,\n isMutationInput: true,\n }\n );\n\n memo = extend(\n memo,\n {\n [fieldName]: fieldWithHooks(\n fieldName,\n context => {\n const {\n getDataFromParsedResolveInfoFragment,\n } = context;\n return {\n description:\n mode === \"update\"\n ? `Updates a single \\`${tableTypeName}\\` using a unique key and a patch.`\n : `Deletes a single \\`${tableTypeName}\\` using a unique key.`,\n type: PayloadType,\n args: {\n input: {\n type: new GraphQLNonNull(InputType),\n },\n },\n async resolve(\n parent,\n args,\n resolveContext,\n resolveInfo\n ) {\n const { input } = args;\n const { pgClient } = resolveContext;\n return commonCodeRenameMe(\n pgClient,\n resolveInfo,\n getDataFromParsedResolveInfoFragment,\n PayloadType,\n args,\n sql.fragment`(${sql.join(\n keys.map(\n key =>\n sql.fragment`${sql.identifier(\n key.name\n )} = ${gql2pg(\n input[inflection.column(key)],\n key.type,\n key.typeModifier\n )}`\n ),\n \") and (\"\n )})`,\n context,\n resolveContext\n );\n },\n };\n },\n {\n isPgNodeMutation: false,\n pgFieldIntrospection: table,\n pgFieldConstraint: constraint,\n [mode === \"update\"\n ? \"isPgUpdateMutationField\"\n : \"isPgDeleteMutationField\"]: true,\n }\n ),\n },\n `Adding ${mode} mutation for ${describePgEntity(\n constraint\n )}`\n );\n });\n }\n return memo;\n }, outerMemo),\n {}\n ),\n `Adding default update/delete mutations to root Mutation type`\n );\n },\n [\"PgMutationUpdateDelete\"]\n );\n}: Plugin);\n"],"file":"PgMutationUpdateDeletePlugin.js"}
1
+ {"version":3,"sources":["../../src/plugins/PgMutationUpdateDeletePlugin.js"],"names":["debug","PgMutationUpdateDeletePlugin","builder","pgDisableDefaultMutations","hook","fields","build","context","newWithHooks","getNodeIdForTypeAndIdentifiers","getTypeAndIdentifiersFromNodeId","nodeIdFieldName","fieldDataGeneratorsByType","extend","parseResolveInfo","getTypeByName","gql2pg","pgGetGqlTypeByTypeIdAndModifier","pgGetGqlInputTypeByTypeIdAndModifier","pgIntrospectionResultsByKind","introspectionResultsByKind","pgSql","sql","graphql","GraphQLNonNull","GraphQLInputObjectType","GraphQLString","GraphQLObjectType","GraphQLID","pgColumnFilter","inflection","pgQueryFromResolveData","queryFromResolveData","pgOmit","omit","pgViaTemporaryTable","viaTemporaryTable","describePgEntity","sqlCommentByAddingTags","pgField","scope","isRootMutation","fieldWithHooks","reduce","outerMemo","mode","class","memo","table","namespace","canUpdate","isUpdatable","attributes","find","attr","canDelete","isDeletable","TableType","type","id","commonCodeRenameMe","pgClient","resolveInfo","getDataFromParsedResolveInfoFragment","PayloadType","args","condition","resolveContext","input","parsedResolveInfoFragment","resolveData","sqlTypeIdentifier","identifier","name","sqlMutationQuery","sqlColumns","sqlValues","inputData","patchField","tableFieldName","forEach","fieldName","column","val","push","typeModifier","length","query","join","map","col","i","fragment","modifiedRowAlias","Symbol","rootValue","row","rows","e","Error","pluralize","_singularizedTableName","clientMutationId","data","uniqueConstraints","constraints","filter","con","Table","tableTypeName","TablePatch","patchType","description","tableName","deletedNodeIdFieldName","deletedNodeId","Object","assign","addDataGenerator","fieldDataGeneratorsByTableType","get","gens","gen","resolve","__identifiers","isPgMutationPayloadDeletedNodeIdField","__origin","isMutationPayload","isPgUpdatePayloadType","isPgDeletePayloadType","pgIntrospection","primaryKeyConstraint","primaryKeys","keyAttributes","InputType","isPgUpdateInputType","isPgUpdateNodeInputType","isPgDeleteInputType","isPgDeleteNodeInputType","pgInflection","isMutationInput","parent","nodeId","Type","identifiers","key","idx","isPgNodeMutation","pgFieldIntrospection","constraint","keys","every","_","some","typeId","isPgUpdateByKeysInputType","isPgDeleteByKeysInputType","pgKeys","pgFieldConstraint"],"mappings":"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","sourcesContent":["// @flow\nimport type { Plugin } from \"graphile-build\";\nimport debugFactory from \"debug\";\n\nconst debug = debugFactory(\"graphile-build-pg\");\n\nexport default (async function PgMutationUpdateDeletePlugin(\n builder,\n { pgDisableDefaultMutations }\n) {\n if (pgDisableDefaultMutations) {\n return;\n }\n\n builder.hook(\n \"GraphQLObjectType:fields\",\n (fields, build, context) => {\n const {\n newWithHooks,\n getNodeIdForTypeAndIdentifiers,\n getTypeAndIdentifiersFromNodeId,\n nodeIdFieldName,\n fieldDataGeneratorsByType,\n extend,\n parseResolveInfo,\n getTypeByName,\n gql2pg,\n pgGetGqlTypeByTypeIdAndModifier,\n pgGetGqlInputTypeByTypeIdAndModifier,\n pgIntrospectionResultsByKind: introspectionResultsByKind,\n pgSql: sql,\n graphql: {\n GraphQLNonNull,\n GraphQLInputObjectType,\n GraphQLString,\n GraphQLObjectType,\n GraphQLID,\n },\n pgColumnFilter,\n inflection,\n pgQueryFromResolveData: queryFromResolveData,\n pgOmit: omit,\n pgViaTemporaryTable: viaTemporaryTable,\n describePgEntity,\n sqlCommentByAddingTags,\n pgField,\n } = build;\n const {\n scope: { isRootMutation },\n fieldWithHooks,\n } = context;\n\n if (!isRootMutation) {\n return fields;\n }\n\n return extend(\n fields,\n [\"update\", \"delete\"].reduce(\n (outerMemo, mode) =>\n introspectionResultsByKind.class.reduce((memo, table) => {\n // PERFORMANCE: These used to be .filter(...) calls\n if (!table.namespace) return memo;\n const canUpdate =\n mode === \"update\" &&\n table.isUpdatable &&\n !omit(table, \"update\") &&\n // Check at least one attribute is updatable\n table.attributes.find(attr => !omit(attr, \"update\"));\n const canDelete =\n mode === \"delete\" &&\n table.isDeletable &&\n !omit(table, \"delete\");\n if (!canUpdate && !canDelete) return memo;\n\n const TableType = pgGetGqlTypeByTypeIdAndModifier(\n table.type.id,\n null\n );\n if (!TableType) {\n return memo;\n }\n async function commonCodeRenameMe(\n pgClient,\n resolveInfo,\n getDataFromParsedResolveInfoFragment,\n PayloadType,\n args,\n condition,\n context,\n resolveContext\n ) {\n const { input } = args;\n const parsedResolveInfoFragment = parseResolveInfo(resolveInfo);\n parsedResolveInfoFragment.args = args; // Allow overriding via makeWrapResolversPlugin\n const resolveData = getDataFromParsedResolveInfoFragment(\n parsedResolveInfoFragment,\n PayloadType\n );\n\n const sqlTypeIdentifier = sql.identifier(\n table.namespace.name,\n table.name\n );\n\n let sqlMutationQuery;\n if (mode === \"update\") {\n const sqlColumns = [];\n const sqlValues = [];\n const inputData =\n input[\n inflection.patchField(inflection.tableFieldName(table))\n ];\n table.attributes.forEach(attr => {\n // PERFORMANCE: These used to be .filter(...) calls\n if (!pgColumnFilter(attr, build, context)) return;\n if (omit(attr, \"update\")) return;\n\n const fieldName = inflection.column(attr);\n if (\n fieldName in inputData /* Because we care about null! */\n ) {\n const val = inputData[fieldName];\n sqlColumns.push(sql.identifier(attr.name));\n sqlValues.push(gql2pg(val, attr.type, attr.typeModifier));\n }\n });\n if (sqlColumns.length === 0) {\n return null;\n }\n sqlMutationQuery = sql.query`\\\nupdate ${sql.identifier(table.namespace.name, table.name)} set ${sql.join(\n sqlColumns.map(\n (col, i) => sql.fragment`${col} = ${sqlValues[i]}`\n ),\n \", \"\n )}\nwhere ${condition}\nreturning *`;\n } else {\n sqlMutationQuery = sql.query`\\\ndelete from ${sql.identifier(table.namespace.name, table.name)}\nwhere ${condition}\nreturning *`;\n }\n\n const modifiedRowAlias = sql.identifier(Symbol());\n const query = queryFromResolveData(\n modifiedRowAlias,\n modifiedRowAlias,\n resolveData,\n {},\n null,\n resolveContext,\n resolveInfo.rootValue\n );\n let row;\n try {\n await pgClient.query(\"SAVEPOINT graphql_mutation\");\n const rows = await viaTemporaryTable(\n pgClient,\n sqlTypeIdentifier,\n sqlMutationQuery,\n modifiedRowAlias,\n query\n );\n row = rows[0];\n await pgClient.query(\"RELEASE SAVEPOINT graphql_mutation\");\n } catch (e) {\n await pgClient.query(\n \"ROLLBACK TO SAVEPOINT graphql_mutation\"\n );\n throw e;\n }\n if (!row) {\n throw new Error(\n `No values were ${mode}d in collection '${inflection.pluralize(\n inflection._singularizedTableName(table)\n )}' because no values you can ${mode} were found matching these criteria.`\n );\n }\n return {\n clientMutationId: input.clientMutationId,\n data: row,\n };\n }\n if (TableType) {\n const uniqueConstraints = table.constraints.filter(\n con => con.type === \"u\" || con.type === \"p\"\n );\n const Table = pgGetGqlTypeByTypeIdAndModifier(\n table.type.id,\n null\n );\n const tableTypeName = Table.name;\n const TablePatch = getTypeByName(\n inflection.patchType(Table.name)\n );\n const PayloadType = newWithHooks(\n GraphQLObjectType,\n {\n name: inflection[\n mode === \"delete\"\n ? \"deletePayloadType\"\n : \"updatePayloadType\"\n ](table),\n description: `The output of our ${mode} \\`${tableTypeName}\\` mutation.`,\n fields: ({ fieldWithHooks }) => {\n const tableName = inflection.tableFieldName(table);\n // This should really be `-node-id` but for compatibility with PostGraphQL v3 we haven't made that change.\n const deletedNodeIdFieldName = inflection.deletedNodeId(\n table\n );\n return Object.assign(\n {\n clientMutationId: {\n description:\n \"The exact same `clientMutationId` that was provided in the mutation input, unchanged and unused. May be used by a client to track mutations.\",\n type: GraphQLString,\n },\n [tableName]: pgField(\n build,\n fieldWithHooks,\n tableName,\n {\n description: `The \\`${tableTypeName}\\` that was ${mode}d by this mutation.`,\n type: Table,\n },\n {},\n false\n ),\n },\n mode === \"delete\"\n ? {\n [deletedNodeIdFieldName]: fieldWithHooks(\n deletedNodeIdFieldName,\n ({ addDataGenerator }) => {\n const fieldDataGeneratorsByTableType = fieldDataGeneratorsByType.get(\n TableType\n );\n\n const gens =\n fieldDataGeneratorsByTableType &&\n fieldDataGeneratorsByTableType[\n nodeIdFieldName\n ];\n if (gens) {\n gens.forEach(gen => addDataGenerator(gen));\n }\n return {\n type: GraphQLID,\n resolve(data) {\n return (\n data.data.__identifiers &&\n getNodeIdForTypeAndIdentifiers(\n Table,\n ...data.data.__identifiers\n )\n );\n },\n };\n },\n {\n isPgMutationPayloadDeletedNodeIdField: true,\n }\n ),\n }\n : null\n );\n },\n },\n {\n __origin: `Adding table ${mode} mutation payload type for ${describePgEntity(\n table\n )}. You can rename the table's GraphQL type via a 'Smart Comment':\\n\\n ${sqlCommentByAddingTags(\n table,\n {\n name: \"newNameHere\",\n }\n )}`,\n isMutationPayload: true,\n isPgUpdatePayloadType: mode === \"update\",\n isPgDeletePayloadType: mode === \"delete\",\n pgIntrospection: table,\n }\n );\n\n // NodeId\n const primaryKeyConstraint = table.primaryKeyConstraint;\n if (nodeIdFieldName && primaryKeyConstraint) {\n const primaryKeys =\n primaryKeyConstraint && primaryKeyConstraint.keyAttributes;\n const fieldName = inflection[\n mode === \"update\" ? \"updateNode\" : \"deleteNode\"\n ](table);\n const InputType = newWithHooks(\n GraphQLInputObjectType,\n {\n description: `All input for the \\`${fieldName}\\` mutation.`,\n name: inflection[\n mode === \"update\"\n ? \"updateNodeInputType\"\n : \"deleteNodeInputType\"\n ](table),\n fields: Object.assign(\n {\n clientMutationId: {\n description:\n \"An arbitrary string value with no semantic meaning. Will be included in the payload verbatim. May be used to track mutations by the client.\",\n type: GraphQLString,\n },\n [nodeIdFieldName]: {\n description: `The globally unique \\`ID\\` which will identify a single \\`${tableTypeName}\\` to be ${mode}d.`,\n type: new GraphQLNonNull(GraphQLID),\n },\n },\n mode === \"update\"\n ? {\n [inflection.patchField(\n inflection.tableFieldName(table)\n )]: {\n description: `An object where the defined keys will be set on the \\`${tableTypeName}\\` being ${mode}d.`,\n type: new GraphQLNonNull(TablePatch),\n },\n }\n : null\n ),\n },\n {\n __origin: `Adding table ${mode} (by node ID) mutation input type for ${describePgEntity(\n table\n )}. You can rename the table's GraphQL type via a 'Smart Comment':\\n\\n ${sqlCommentByAddingTags(\n table,\n {\n name: \"newNameHere\",\n }\n )}`,\n isPgUpdateInputType: mode === \"update\",\n isPgUpdateNodeInputType: mode === \"update\",\n isPgDeleteInputType: mode === \"delete\",\n isPgDeleteNodeInputType: mode === \"delete\",\n pgInflection: table, // TODO:v5: remove - TYPO!\n pgIntrospection: table,\n isMutationInput: true,\n }\n );\n\n memo = extend(\n memo,\n {\n [fieldName]: fieldWithHooks(\n fieldName,\n context => {\n const {\n getDataFromParsedResolveInfoFragment,\n } = context;\n return {\n description:\n mode === \"update\"\n ? `Updates a single \\`${tableTypeName}\\` using its globally unique id and a patch.`\n : `Deletes a single \\`${tableTypeName}\\` using its globally unique id.`,\n type: PayloadType,\n args: {\n input: {\n type: new GraphQLNonNull(InputType),\n },\n },\n async resolve(\n parent,\n args,\n resolveContext,\n resolveInfo\n ) {\n const { input } = args;\n const { pgClient } = resolveContext;\n const nodeId = input[nodeIdFieldName];\n try {\n const {\n Type,\n identifiers,\n } = getTypeAndIdentifiersFromNodeId(nodeId);\n if (Type !== TableType) {\n throw new Error(\"Mismatched type\");\n }\n if (identifiers.length !== primaryKeys.length) {\n throw new Error(\"Invalid ID\");\n }\n\n return commonCodeRenameMe(\n pgClient,\n resolveInfo,\n getDataFromParsedResolveInfoFragment,\n PayloadType,\n args,\n sql.fragment`(${sql.join(\n primaryKeys.map(\n (key, idx) =>\n sql.fragment`${sql.identifier(\n key.name\n )} = ${gql2pg(\n identifiers[idx],\n key.type,\n key.typeModifier\n )}`\n ),\n \") and (\"\n )})`,\n context,\n resolveContext\n );\n } catch (e) {\n debug(e);\n return null;\n }\n },\n };\n },\n {\n isPgNodeMutation: true,\n pgFieldIntrospection: table,\n [mode === \"update\"\n ? \"isPgUpdateMutationField\"\n : \"isPgDeleteMutationField\"]: true,\n }\n ),\n },\n \"Adding ${mode} mutation for ${describePgEntity(table)}\"\n );\n }\n\n // Unique\n uniqueConstraints.forEach(constraint => {\n if (omit(constraint, mode)) {\n return;\n }\n const keys = constraint.keyAttributes;\n if (!keys.every(_ => _)) {\n throw new Error(\n `Consistency error: could not find an attribute in the constraint when building the ${mode} mutation for ${describePgEntity(\n table\n )}!`\n );\n }\n if (keys.some(key => omit(key, \"read\"))) {\n return;\n }\n const fieldName = inflection[\n mode === \"update\" ? \"updateByKeys\" : \"deleteByKeys\"\n ](keys, table, constraint);\n const InputType = newWithHooks(\n GraphQLInputObjectType,\n {\n description: `All input for the \\`${fieldName}\\` mutation.`,\n name: inflection[\n mode === \"update\"\n ? \"updateByKeysInputType\"\n : \"deleteByKeysInputType\"\n ](keys, table, constraint),\n fields: Object.assign(\n {\n clientMutationId: {\n type: GraphQLString,\n },\n },\n mode === \"update\"\n ? {\n [inflection.patchField(\n inflection.tableFieldName(table)\n )]: {\n description: `An object where the defined keys will be set on the \\`${tableTypeName}\\` being ${mode}d.`,\n type: new GraphQLNonNull(TablePatch),\n },\n }\n : null,\n keys.reduce((memo, key) => {\n memo[inflection.column(key)] = {\n description: key.description,\n type: new GraphQLNonNull(\n pgGetGqlInputTypeByTypeIdAndModifier(\n key.typeId,\n key.typeModifier\n )\n ),\n };\n return memo;\n }, {})\n ),\n },\n {\n __origin: `Adding table ${mode} mutation input type for ${describePgEntity(\n constraint\n )}. You can rename the table's GraphQL type via a 'Smart Comment':\\n\\n ${sqlCommentByAddingTags(\n table,\n {\n name: \"newNameHere\",\n }\n )}`,\n isPgUpdateInputType: mode === \"update\",\n isPgUpdateByKeysInputType: mode === \"update\",\n isPgDeleteInputType: mode === \"delete\",\n isPgDeleteByKeysInputType: mode === \"delete\",\n pgInflection: table, // TODO:v5: remove - TYPO!\n pgIntrospection: table,\n pgKeys: keys,\n isMutationInput: true,\n }\n );\n\n memo = extend(\n memo,\n {\n [fieldName]: fieldWithHooks(\n fieldName,\n context => {\n const {\n getDataFromParsedResolveInfoFragment,\n } = context;\n return {\n description:\n mode === \"update\"\n ? `Updates a single \\`${tableTypeName}\\` using a unique key and a patch.`\n : `Deletes a single \\`${tableTypeName}\\` using a unique key.`,\n type: PayloadType,\n args: {\n input: {\n type: new GraphQLNonNull(InputType),\n },\n },\n async resolve(\n parent,\n args,\n resolveContext,\n resolveInfo\n ) {\n const { input } = args;\n const { pgClient } = resolveContext;\n return commonCodeRenameMe(\n pgClient,\n resolveInfo,\n getDataFromParsedResolveInfoFragment,\n PayloadType,\n args,\n sql.fragment`(${sql.join(\n keys.map(\n key =>\n sql.fragment`${sql.identifier(\n key.name\n )} = ${gql2pg(\n input[inflection.column(key)],\n key.type,\n key.typeModifier\n )}`\n ),\n \") and (\"\n )})`,\n context,\n resolveContext\n );\n },\n };\n },\n {\n isPgNodeMutation: false,\n pgFieldIntrospection: table,\n pgFieldConstraint: constraint,\n [mode === \"update\"\n ? \"isPgUpdateMutationField\"\n : \"isPgDeleteMutationField\"]: true,\n }\n ),\n },\n `Adding ${mode} mutation for ${describePgEntity(\n constraint\n )}`\n );\n });\n }\n return memo;\n }, outerMemo),\n {}\n ),\n `Adding default update/delete mutations to root Mutation type`\n );\n },\n [\"PgMutationUpdateDelete\"]\n );\n}: Plugin);\n"],"file":"PgMutationUpdateDeletePlugin.js"}
@@ -138,6 +138,7 @@ var PgRecordFunctionConnectionPlugin = function PgRecordFunctionConnectionPlugin
138
138
  name: "newNameHere"
139
139
  })}`,
140
140
  isConnectionType: true,
141
+ isPgRowConnectionType: true,
141
142
  edgeType: EdgeType,
142
143
  nodeType: NodeType,
143
144
  pgIntrospection: proc
@@ -172,6 +172,7 @@ export default (function PgRecordFunctionConnectionPlugin(
172
172
  }
173
173
  )}`,
174
174
  isConnectionType: true,
175
+ isPgRowConnectionType: true,
175
176
  edgeType: EdgeType,
176
177
  nodeType: NodeType,
177
178
  pgIntrospection: proc,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/plugins/PgRecordFunctionConnectionPlugin.js"],"names":["base64","str","Buffer","from","String","toString","PgRecordFunctionConnectionPlugin","builder","pgForbidSetofFunctionsToReturnNull","hook","_","build","newWithHooks","getSafeAliasFromResolveInfo","pgIntrospectionResultsByKind","introspectionResultsByKind","getTypeByName","graphql","GraphQLObjectType","GraphQLNonNull","GraphQLList","inflection","pgOmit","omit","describePgEntity","sqlCommentByAddingTags","pgField","nullableIf","condition","Type","Cursor","procedure","forEach","proc","returnsSet","namespace","returnTypeId","NodeType","recordFunctionReturnType","Error","name","EdgeType","recordFunctionEdge","description","fields","fieldWithHooks","cursor","addDataGenerator","usesCursor","type","resolve","data","JSON","stringify","__cursor","isCursorField","node","_args","_context","resolveInfo","safeAlias","__origin","isEdgeType","nodeType","pgIntrospection","recordFunctionConnection","nodes","map","entry","edges","hoistCursor","isConnectionType","edgeType"],"mappings":"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","sourcesContent":["// @flow\nimport type { Plugin } from \"graphile-build\";\n\nconst base64 = str => Buffer.from(String(str)).toString(\"base64\");\n\nexport default (function PgRecordFunctionConnectionPlugin(\n builder,\n { pgForbidSetofFunctionsToReturnNull = false }\n) {\n builder.hook(\n \"init\",\n (_, build) => {\n const {\n newWithHooks,\n getSafeAliasFromResolveInfo,\n pgIntrospectionResultsByKind: introspectionResultsByKind,\n getTypeByName,\n graphql: { GraphQLObjectType, GraphQLNonNull, GraphQLList },\n inflection,\n pgOmit: omit,\n describePgEntity,\n sqlCommentByAddingTags,\n pgField,\n } = build;\n\n const nullableIf = (condition, Type) =>\n condition ? Type : new GraphQLNonNull(Type);\n const Cursor = getTypeByName(\"Cursor\");\n\n introspectionResultsByKind.procedure.forEach(proc => {\n // PERFORMANCE: These used to be .filter(...) calls\n if (!proc.returnsSet) return;\n if (!proc.namespace) return;\n if (omit(proc, \"execute\")) return;\n\n if (proc.returnTypeId !== \"2249\") {\n // Does not return a record type; defer handling to\n // PgTablesPlugin and PgScalarFunctionConnectionPlugin\n return;\n }\n // TODO: PG10 doesn't support the equivalent of pg_attribute.atttypemod\n // on function arguments and return types, however maybe a later\n // version of PG will?\n const NodeType = getTypeByName(\n inflection.recordFunctionReturnType(proc)\n );\n if (!NodeType) {\n throw new Error(\n `Do not have a node type '${inflection.recordFunctionReturnType(\n proc\n )}' for '${proc.name}' so cannot create connection type`\n );\n }\n const EdgeType = newWithHooks(\n GraphQLObjectType,\n {\n name: inflection.recordFunctionEdge(proc),\n description: `A \\`${NodeType.name}\\` edge in the connection.`,\n fields: ({ fieldWithHooks }) => {\n return {\n cursor: fieldWithHooks(\n \"cursor\",\n ({ addDataGenerator }) => {\n addDataGenerator(() => ({\n usesCursor: [true],\n }));\n return {\n description: \"A cursor for use in pagination.\",\n type: Cursor,\n resolve(data) {\n return base64(JSON.stringify(data.__cursor));\n },\n };\n },\n {\n isCursorField: true,\n }\n ),\n node: pgField(\n build,\n fieldWithHooks,\n \"node\",\n {\n description: `The \\`${NodeType.name}\\` at the end of the edge.`,\n type: nullableIf(\n !pgForbidSetofFunctionsToReturnNull,\n NodeType\n ),\n resolve(data, _args, _context, resolveInfo) {\n const safeAlias = getSafeAliasFromResolveInfo(\n resolveInfo\n );\n return data[safeAlias];\n },\n },\n {},\n false\n ),\n };\n },\n },\n {\n __origin: `Adding function result edge type for ${describePgEntity(\n proc\n )}. You can rename the function's GraphQL field (and its dependent types) via a 'Smart Comment':\\n\\n ${sqlCommentByAddingTags(\n proc,\n {\n name: \"newNameHere\",\n }\n )}`,\n isEdgeType: true,\n nodeType: NodeType,\n pgIntrospection: proc,\n }\n );\n\n /*const ConnectionType = */\n newWithHooks(\n GraphQLObjectType,\n {\n name: inflection.recordFunctionConnection(proc),\n description: `A connection to a list of \\`${NodeType.name}\\` values.`,\n fields: ({ fieldWithHooks }) => {\n return {\n nodes: pgField(build, fieldWithHooks, \"nodes\", {\n description: `A list of \\`${NodeType.name}\\` objects.`,\n type: new GraphQLNonNull(\n new GraphQLList(\n nullableIf(!pgForbidSetofFunctionsToReturnNull, NodeType)\n )\n ),\n resolve(data, _args, _context, resolveInfo) {\n const safeAlias = getSafeAliasFromResolveInfo(resolveInfo);\n return data.data.map(entry => entry[safeAlias]);\n },\n }),\n edges: pgField(\n build,\n fieldWithHooks,\n \"edges\",\n {\n description: `A list of edges which contains the \\`${NodeType.name}\\` and cursor to aid in pagination.`,\n type: new GraphQLNonNull(\n new GraphQLList(new GraphQLNonNull(EdgeType))\n ),\n resolve(data, _args, _context, resolveInfo) {\n const safeAlias = getSafeAliasFromResolveInfo(\n resolveInfo\n );\n return data.data.map(entry => ({\n __cursor: entry.__cursor,\n ...entry[safeAlias],\n }));\n },\n },\n {},\n false,\n {\n hoistCursor: true,\n }\n ),\n };\n },\n },\n {\n __origin: `Adding function connection type for ${describePgEntity(\n proc\n )}. You can rename the function's GraphQL field (and its dependent types) via a 'Smart Comment':\\n\\n ${sqlCommentByAddingTags(\n proc,\n {\n name: \"newNameHere\",\n }\n )}`,\n isConnectionType: true,\n edgeType: EdgeType,\n nodeType: NodeType,\n pgIntrospection: proc,\n }\n );\n });\n return _;\n },\n [\"PgRecordFunctionConnection\"]\n );\n}: Plugin);\n"],"file":"PgRecordFunctionConnectionPlugin.js"}
1
+ {"version":3,"sources":["../../src/plugins/PgRecordFunctionConnectionPlugin.js"],"names":["base64","str","Buffer","from","String","toString","PgRecordFunctionConnectionPlugin","builder","pgForbidSetofFunctionsToReturnNull","hook","_","build","newWithHooks","getSafeAliasFromResolveInfo","pgIntrospectionResultsByKind","introspectionResultsByKind","getTypeByName","graphql","GraphQLObjectType","GraphQLNonNull","GraphQLList","inflection","pgOmit","omit","describePgEntity","sqlCommentByAddingTags","pgField","nullableIf","condition","Type","Cursor","procedure","forEach","proc","returnsSet","namespace","returnTypeId","NodeType","recordFunctionReturnType","Error","name","EdgeType","recordFunctionEdge","description","fields","fieldWithHooks","cursor","addDataGenerator","usesCursor","type","resolve","data","JSON","stringify","__cursor","isCursorField","node","_args","_context","resolveInfo","safeAlias","__origin","isEdgeType","nodeType","pgIntrospection","recordFunctionConnection","nodes","map","entry","edges","hoistCursor","isConnectionType","isPgRowConnectionType","edgeType"],"mappings":"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","sourcesContent":["// @flow\nimport type { Plugin } from \"graphile-build\";\n\nconst base64 = str => Buffer.from(String(str)).toString(\"base64\");\n\nexport default (function PgRecordFunctionConnectionPlugin(\n builder,\n { pgForbidSetofFunctionsToReturnNull = false }\n) {\n builder.hook(\n \"init\",\n (_, build) => {\n const {\n newWithHooks,\n getSafeAliasFromResolveInfo,\n pgIntrospectionResultsByKind: introspectionResultsByKind,\n getTypeByName,\n graphql: { GraphQLObjectType, GraphQLNonNull, GraphQLList },\n inflection,\n pgOmit: omit,\n describePgEntity,\n sqlCommentByAddingTags,\n pgField,\n } = build;\n\n const nullableIf = (condition, Type) =>\n condition ? Type : new GraphQLNonNull(Type);\n const Cursor = getTypeByName(\"Cursor\");\n\n introspectionResultsByKind.procedure.forEach(proc => {\n // PERFORMANCE: These used to be .filter(...) calls\n if (!proc.returnsSet) return;\n if (!proc.namespace) return;\n if (omit(proc, \"execute\")) return;\n\n if (proc.returnTypeId !== \"2249\") {\n // Does not return a record type; defer handling to\n // PgTablesPlugin and PgScalarFunctionConnectionPlugin\n return;\n }\n // TODO: PG10 doesn't support the equivalent of pg_attribute.atttypemod\n // on function arguments and return types, however maybe a later\n // version of PG will?\n const NodeType = getTypeByName(\n inflection.recordFunctionReturnType(proc)\n );\n if (!NodeType) {\n throw new Error(\n `Do not have a node type '${inflection.recordFunctionReturnType(\n proc\n )}' for '${proc.name}' so cannot create connection type`\n );\n }\n const EdgeType = newWithHooks(\n GraphQLObjectType,\n {\n name: inflection.recordFunctionEdge(proc),\n description: `A \\`${NodeType.name}\\` edge in the connection.`,\n fields: ({ fieldWithHooks }) => {\n return {\n cursor: fieldWithHooks(\n \"cursor\",\n ({ addDataGenerator }) => {\n addDataGenerator(() => ({\n usesCursor: [true],\n }));\n return {\n description: \"A cursor for use in pagination.\",\n type: Cursor,\n resolve(data) {\n return base64(JSON.stringify(data.__cursor));\n },\n };\n },\n {\n isCursorField: true,\n }\n ),\n node: pgField(\n build,\n fieldWithHooks,\n \"node\",\n {\n description: `The \\`${NodeType.name}\\` at the end of the edge.`,\n type: nullableIf(\n !pgForbidSetofFunctionsToReturnNull,\n NodeType\n ),\n resolve(data, _args, _context, resolveInfo) {\n const safeAlias = getSafeAliasFromResolveInfo(\n resolveInfo\n );\n return data[safeAlias];\n },\n },\n {},\n false\n ),\n };\n },\n },\n {\n __origin: `Adding function result edge type for ${describePgEntity(\n proc\n )}. You can rename the function's GraphQL field (and its dependent types) via a 'Smart Comment':\\n\\n ${sqlCommentByAddingTags(\n proc,\n {\n name: \"newNameHere\",\n }\n )}`,\n isEdgeType: true,\n nodeType: NodeType,\n pgIntrospection: proc,\n }\n );\n\n /*const ConnectionType = */\n newWithHooks(\n GraphQLObjectType,\n {\n name: inflection.recordFunctionConnection(proc),\n description: `A connection to a list of \\`${NodeType.name}\\` values.`,\n fields: ({ fieldWithHooks }) => {\n return {\n nodes: pgField(build, fieldWithHooks, \"nodes\", {\n description: `A list of \\`${NodeType.name}\\` objects.`,\n type: new GraphQLNonNull(\n new GraphQLList(\n nullableIf(!pgForbidSetofFunctionsToReturnNull, NodeType)\n )\n ),\n resolve(data, _args, _context, resolveInfo) {\n const safeAlias = getSafeAliasFromResolveInfo(resolveInfo);\n return data.data.map(entry => entry[safeAlias]);\n },\n }),\n edges: pgField(\n build,\n fieldWithHooks,\n \"edges\",\n {\n description: `A list of edges which contains the \\`${NodeType.name}\\` and cursor to aid in pagination.`,\n type: new GraphQLNonNull(\n new GraphQLList(new GraphQLNonNull(EdgeType))\n ),\n resolve(data, _args, _context, resolveInfo) {\n const safeAlias = getSafeAliasFromResolveInfo(\n resolveInfo\n );\n return data.data.map(entry => ({\n __cursor: entry.__cursor,\n ...entry[safeAlias],\n }));\n },\n },\n {},\n false,\n {\n hoistCursor: true,\n }\n ),\n };\n },\n },\n {\n __origin: `Adding function connection type for ${describePgEntity(\n proc\n )}. You can rename the function's GraphQL field (and its dependent types) via a 'Smart Comment':\\n\\n ${sqlCommentByAddingTags(\n proc,\n {\n name: \"newNameHere\",\n }\n )}`,\n isConnectionType: true,\n isPgRowConnectionType: true,\n edgeType: EdgeType,\n nodeType: NodeType,\n pgIntrospection: proc,\n }\n );\n });\n return _;\n },\n [\"PgRecordFunctionConnection\"]\n );\n}: Plugin);\n"],"file":"PgRecordFunctionConnectionPlugin.js"}
@@ -129,6 +129,7 @@ var PgScalarFunctionConnectionPlugin = function PgScalarFunctionConnectionPlugin
129
129
  name: "newNameHere"
130
130
  })}`,
131
131
  isConnectionType: true,
132
+ isPgRowConnectionType: true,
132
133
  edgeType: EdgeType,
133
134
  nodeType: NodeType,
134
135
  pgIntrospection: proc
@@ -146,6 +146,7 @@ export default (function PgScalarFunctionConnectionPlugin(builder) {
146
146
  }
147
147
  )}`,
148
148
  isConnectionType: true,
149
+ isPgRowConnectionType: true,
149
150
  edgeType: EdgeType,
150
151
  nodeType: NodeType,
151
152
  pgIntrospection: proc,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/plugins/PgScalarFunctionConnectionPlugin.js"],"names":["base64","str","Buffer","from","String","toString","PgScalarFunctionConnectionPlugin","builder","hook","_","build","newWithHooks","pgIntrospectionResultsByKind","introspectionResultsByKind","getTypeByName","pgGetGqlTypeByTypeIdAndModifier","graphql","GraphQLObjectType","GraphQLNonNull","GraphQLList","GraphQLString","inflection","pgOmit","omit","describePgEntity","sqlCommentByAddingTags","pgField","Cursor","procedure","forEach","proc","returnsSet","namespace","returnType","typeById","returnTypeId","returnTypeTable","classById","classId","id","NodeType","EdgeType","name","scalarFunctionEdge","description","fields","fieldWithHooks","cursor","addDataGenerator","usesCursor","type","resolve","data","JSON","stringify","__cursor","isCursorField","node","value","__origin","isEdgeType","nodeType","pgIntrospection","scalarFunctionConnection","nodes","map","entry","edges","hoistCursor","isConnectionType","edgeType"],"mappings":"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","sourcesContent":["// @flow\nimport type { Plugin } from \"graphile-build\";\n\nconst base64 = str => Buffer.from(String(str)).toString(\"base64\");\n\nexport default (function PgScalarFunctionConnectionPlugin(builder) {\n builder.hook(\n \"init\",\n (_, build) => {\n const {\n newWithHooks,\n pgIntrospectionResultsByKind: introspectionResultsByKind,\n getTypeByName,\n pgGetGqlTypeByTypeIdAndModifier,\n graphql: {\n GraphQLObjectType,\n GraphQLNonNull,\n GraphQLList,\n GraphQLString,\n },\n inflection,\n pgOmit: omit,\n describePgEntity,\n sqlCommentByAddingTags,\n pgField,\n } = build;\n\n const Cursor = getTypeByName(\"Cursor\");\n introspectionResultsByKind.procedure.forEach(proc => {\n // PERFORMANCE: These used to be .filter(...) calls\n if (!proc.returnsSet) return;\n if (!proc.namespace) return;\n if (omit(proc, \"execute\")) return;\n\n const returnType =\n introspectionResultsByKind.typeById[proc.returnTypeId];\n const returnTypeTable =\n introspectionResultsByKind.classById[returnType.classId];\n if (returnTypeTable) {\n // Just use the standard table connection from PgTablesPlugin\n return;\n }\n if (returnType.id === \"2249\") {\n // Defer handling to PgRecordFunctionConnectionPlugin\n return;\n }\n // TODO: PG10 doesn't support the equivalent of pg_attribute.atttypemod\n // on function arguments and return types, however maybe a later\n // version of PG will?\n const NodeType =\n pgGetGqlTypeByTypeIdAndModifier(returnType.id, null) || GraphQLString;\n const EdgeType = newWithHooks(\n GraphQLObjectType,\n {\n name: inflection.scalarFunctionEdge(proc),\n description: `A \\`${NodeType.name}\\` edge in the connection.`,\n fields: ({ fieldWithHooks }) => {\n return {\n cursor: fieldWithHooks(\n \"cursor\",\n ({ addDataGenerator }) => {\n addDataGenerator(() => ({\n usesCursor: [true],\n }));\n return {\n description: \"A cursor for use in pagination.\",\n type: Cursor,\n resolve(data) {\n return base64(JSON.stringify(data.__cursor));\n },\n };\n },\n {\n isCursorField: true,\n }\n ),\n node: {\n description: `The \\`${NodeType.name}\\` at the end of the edge.`,\n type: NodeType,\n resolve(data) {\n return data.value;\n },\n },\n };\n },\n },\n {\n __origin: `Adding function result edge type for ${describePgEntity(\n proc\n )}. You can rename the function's GraphQL field (and its dependent types) via a 'Smart Comment':\\n\\n ${sqlCommentByAddingTags(\n proc,\n {\n name: \"newNameHere\",\n }\n )}`,\n isEdgeType: true,\n nodeType: NodeType,\n pgIntrospection: proc,\n }\n );\n\n /*const ConnectionType = */\n newWithHooks(\n GraphQLObjectType,\n {\n name: inflection.scalarFunctionConnection(proc),\n description: `A connection to a list of \\`${NodeType.name}\\` values.`,\n fields: ({ fieldWithHooks }) => {\n return {\n nodes: pgField(build, fieldWithHooks, \"nodes\", {\n description: `A list of \\`${NodeType.name}\\` objects.`,\n type: new GraphQLNonNull(new GraphQLList(NodeType)),\n resolve(data) {\n return data.data.map(entry => entry.value);\n },\n }),\n edges: pgField(\n build,\n fieldWithHooks,\n \"edges\",\n {\n description: `A list of edges which contains the \\`${NodeType.name}\\` and cursor to aid in pagination.`,\n type: new GraphQLNonNull(\n new GraphQLList(new GraphQLNonNull(EdgeType))\n ),\n resolve(data) {\n return data.data;\n },\n },\n {},\n false,\n {\n hoistCursor: true,\n }\n ),\n };\n },\n },\n {\n __origin: `Adding function connection type for ${describePgEntity(\n proc\n )}. You can rename the function's GraphQL field (and its dependent types) via a 'Smart Comment':\\n\\n ${sqlCommentByAddingTags(\n proc,\n {\n name: \"newNameHere\",\n }\n )}`,\n isConnectionType: true,\n edgeType: EdgeType,\n nodeType: NodeType,\n pgIntrospection: proc,\n }\n );\n });\n return _;\n },\n [\"PgScalarFunctionConnection\"],\n [],\n [\"PgTypes\"]\n );\n}: Plugin);\n"],"file":"PgScalarFunctionConnectionPlugin.js"}
1
+ {"version":3,"sources":["../../src/plugins/PgScalarFunctionConnectionPlugin.js"],"names":["base64","str","Buffer","from","String","toString","PgScalarFunctionConnectionPlugin","builder","hook","_","build","newWithHooks","pgIntrospectionResultsByKind","introspectionResultsByKind","getTypeByName","pgGetGqlTypeByTypeIdAndModifier","graphql","GraphQLObjectType","GraphQLNonNull","GraphQLList","GraphQLString","inflection","pgOmit","omit","describePgEntity","sqlCommentByAddingTags","pgField","Cursor","procedure","forEach","proc","returnsSet","namespace","returnType","typeById","returnTypeId","returnTypeTable","classById","classId","id","NodeType","EdgeType","name","scalarFunctionEdge","description","fields","fieldWithHooks","cursor","addDataGenerator","usesCursor","type","resolve","data","JSON","stringify","__cursor","isCursorField","node","value","__origin","isEdgeType","nodeType","pgIntrospection","scalarFunctionConnection","nodes","map","entry","edges","hoistCursor","isConnectionType","isPgRowConnectionType","edgeType"],"mappings":"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","sourcesContent":["// @flow\nimport type { Plugin } from \"graphile-build\";\n\nconst base64 = str => Buffer.from(String(str)).toString(\"base64\");\n\nexport default (function PgScalarFunctionConnectionPlugin(builder) {\n builder.hook(\n \"init\",\n (_, build) => {\n const {\n newWithHooks,\n pgIntrospectionResultsByKind: introspectionResultsByKind,\n getTypeByName,\n pgGetGqlTypeByTypeIdAndModifier,\n graphql: {\n GraphQLObjectType,\n GraphQLNonNull,\n GraphQLList,\n GraphQLString,\n },\n inflection,\n pgOmit: omit,\n describePgEntity,\n sqlCommentByAddingTags,\n pgField,\n } = build;\n\n const Cursor = getTypeByName(\"Cursor\");\n introspectionResultsByKind.procedure.forEach(proc => {\n // PERFORMANCE: These used to be .filter(...) calls\n if (!proc.returnsSet) return;\n if (!proc.namespace) return;\n if (omit(proc, \"execute\")) return;\n\n const returnType =\n introspectionResultsByKind.typeById[proc.returnTypeId];\n const returnTypeTable =\n introspectionResultsByKind.classById[returnType.classId];\n if (returnTypeTable) {\n // Just use the standard table connection from PgTablesPlugin\n return;\n }\n if (returnType.id === \"2249\") {\n // Defer handling to PgRecordFunctionConnectionPlugin\n return;\n }\n // TODO: PG10 doesn't support the equivalent of pg_attribute.atttypemod\n // on function arguments and return types, however maybe a later\n // version of PG will?\n const NodeType =\n pgGetGqlTypeByTypeIdAndModifier(returnType.id, null) || GraphQLString;\n const EdgeType = newWithHooks(\n GraphQLObjectType,\n {\n name: inflection.scalarFunctionEdge(proc),\n description: `A \\`${NodeType.name}\\` edge in the connection.`,\n fields: ({ fieldWithHooks }) => {\n return {\n cursor: fieldWithHooks(\n \"cursor\",\n ({ addDataGenerator }) => {\n addDataGenerator(() => ({\n usesCursor: [true],\n }));\n return {\n description: \"A cursor for use in pagination.\",\n type: Cursor,\n resolve(data) {\n return base64(JSON.stringify(data.__cursor));\n },\n };\n },\n {\n isCursorField: true,\n }\n ),\n node: {\n description: `The \\`${NodeType.name}\\` at the end of the edge.`,\n type: NodeType,\n resolve(data) {\n return data.value;\n },\n },\n };\n },\n },\n {\n __origin: `Adding function result edge type for ${describePgEntity(\n proc\n )}. You can rename the function's GraphQL field (and its dependent types) via a 'Smart Comment':\\n\\n ${sqlCommentByAddingTags(\n proc,\n {\n name: \"newNameHere\",\n }\n )}`,\n isEdgeType: true,\n nodeType: NodeType,\n pgIntrospection: proc,\n }\n );\n\n /*const ConnectionType = */\n newWithHooks(\n GraphQLObjectType,\n {\n name: inflection.scalarFunctionConnection(proc),\n description: `A connection to a list of \\`${NodeType.name}\\` values.`,\n fields: ({ fieldWithHooks }) => {\n return {\n nodes: pgField(build, fieldWithHooks, \"nodes\", {\n description: `A list of \\`${NodeType.name}\\` objects.`,\n type: new GraphQLNonNull(new GraphQLList(NodeType)),\n resolve(data) {\n return data.data.map(entry => entry.value);\n },\n }),\n edges: pgField(\n build,\n fieldWithHooks,\n \"edges\",\n {\n description: `A list of edges which contains the \\`${NodeType.name}\\` and cursor to aid in pagination.`,\n type: new GraphQLNonNull(\n new GraphQLList(new GraphQLNonNull(EdgeType))\n ),\n resolve(data) {\n return data.data;\n },\n },\n {},\n false,\n {\n hoistCursor: true,\n }\n ),\n };\n },\n },\n {\n __origin: `Adding function connection type for ${describePgEntity(\n proc\n )}. You can rename the function's GraphQL field (and its dependent types) via a 'Smart Comment':\\n\\n ${sqlCommentByAddingTags(\n proc,\n {\n name: \"newNameHere\",\n }\n )}`,\n isConnectionType: true,\n isPgRowConnectionType: true,\n edgeType: EdgeType,\n nodeType: NodeType,\n pgIntrospection: proc,\n }\n );\n });\n return _;\n },\n [\"PgScalarFunctionConnection\"],\n [],\n [\"PgTypes\"]\n );\n}: Plugin);\n"],"file":"PgScalarFunctionConnectionPlugin.js"}
@@ -41,6 +41,7 @@ var PgTypesPlugin = function PgTypesPlugin(builder, {
41
41
  pgExtendedTypes = true,
42
42
  // Adding hstore support is technically a breaking change; this allows people to opt out easily:
43
43
  pgSkipHstore = false,
44
+ pgUseCustomNetworkScalars = false,
44
45
  disableIssue390Fix = false
45
46
  }) {
46
47
  // XXX: most of this should be in an "init" hook, not a "build" hook
@@ -291,7 +292,10 @@ var PgTypesPlugin = function PgTypesPlugin(builder, {
291
292
  const SimpleTime = stringType(inflection.builtin("Time"), "The exact time of day, does not include the date. May or may not have a timezone offset.");
292
293
  const SimpleJSON = stringType(inflection.builtin("JSON"), "A JavaScript object encoded in the JSON format as specified by [ECMA-404](http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf).");
293
294
  const SimpleUUID = stringType(inflection.builtin("UUID"), "A universally unique identifier as defined by [RFC 4122](https://tools.ietf.org/html/rfc4122).");
294
- const InetType = stringType(inflection.builtin("InternetAddress"), "An IPv4 or IPv6 host address, and optionally its subnet."); // pgExtendedTypes might change what types we use for things
295
+ const InetType = stringType(inflection.builtin("InternetAddress"), "An IPv4 or IPv6 host address, and optionally its subnet.");
296
+ const CidrType = pgUseCustomNetworkScalars ? stringType(inflection.builtin("CidrAddress"), "An IPv4 or IPv6 CIDR address.") : GraphQLString;
297
+ const MacAddrType = pgUseCustomNetworkScalars ? stringType(inflection.builtin("MacAddress"), "A 6-byte MAC address.") : GraphQLString;
298
+ const MacAddr8Type = pgUseCustomNetworkScalars ? stringType(inflection.builtin("MacAddress8"), "An 8-byte MAC address.") : GraphQLString; // pgExtendedTypes might change what types we use for things
295
299
 
296
300
  const JSONType = pgExtendedTypes ? (0, _GraphQLJSON.default)(graphql, inflection.builtin("JSON")) : SimpleJSON;
297
301
  const UUIDType = SimpleUUID; // GraphQLUUID
@@ -380,7 +384,10 @@ var PgTypesPlugin = function PgTypesPlugin(builder, {
380
384
  // varchar
381
385
  "600": Point,
382
386
  // point
383
- "869": InetType
387
+ "869": InetType,
388
+ "650": CidrType,
389
+ "829": MacAddrType,
390
+ "774": MacAddr8Type
384
391
  };
385
392
  const oidInputLookup = {
386
393
  "1186": GQLIntervalInput,
@@ -31,6 +31,7 @@ export default (function PgTypesPlugin(
31
31
  pgExtendedTypes = true,
32
32
  // Adding hstore support is technically a breaking change; this allows people to opt out easily:
33
33
  pgSkipHstore = false,
34
+ pgUseCustomNetworkScalars = false,
34
35
  disableIssue390Fix = false,
35
36
  }
36
37
  ) {
@@ -337,6 +338,21 @@ export default (function PgTypesPlugin(
337
338
  inflection.builtin("InternetAddress"),
338
339
  "An IPv4 or IPv6 host address, and optionally its subnet."
339
340
  );
341
+ const CidrType = pgUseCustomNetworkScalars
342
+ ? stringType(
343
+ inflection.builtin("CidrAddress"),
344
+ "An IPv4 or IPv6 CIDR address."
345
+ )
346
+ : GraphQLString;
347
+ const MacAddrType = pgUseCustomNetworkScalars
348
+ ? stringType(inflection.builtin("MacAddress"), "A 6-byte MAC address.")
349
+ : GraphQLString;
350
+ const MacAddr8Type = pgUseCustomNetworkScalars
351
+ ? stringType(
352
+ inflection.builtin("MacAddress8"),
353
+ "An 8-byte MAC address."
354
+ )
355
+ : GraphQLString;
340
356
 
341
357
  // pgExtendedTypes might change what types we use for things
342
358
  const JSONType = pgExtendedTypes
@@ -423,6 +439,9 @@ export default (function PgTypesPlugin(
423
439
  "600": Point, // point
424
440
 
425
441
  "869": InetType,
442
+ "650": CidrType,
443
+ "829": MacAddrType,
444
+ "774": MacAddr8Type,
426
445
  };
427
446
  const oidInputLookup = {
428
447
  "1186": GQLIntervalInput, // interval