graphile-build-pg 4.9.1 → 4.11.2

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 (76) hide show
  1. package/README.md +1 -0
  2. package/node8plus/plugins/PageInfoStartEndCursor.js +2 -2
  3. package/node8plus/plugins/PageInfoStartEndCursor.js.flow +6 -2
  4. package/node8plus/plugins/PageInfoStartEndCursor.js.map +1 -1
  5. package/node8plus/plugins/PgAllRows.js +1 -1
  6. package/node8plus/plugins/PgAllRows.js.flow +6 -3
  7. package/node8plus/plugins/PgAllRows.js.map +1 -1
  8. package/node8plus/plugins/PgBackwardRelationPlugin.js +2 -2
  9. package/node8plus/plugins/PgBackwardRelationPlugin.js.flow +8 -2
  10. package/node8plus/plugins/PgBackwardRelationPlugin.js.map +1 -1
  11. package/node8plus/plugins/PgBasicsPlugin.js +1 -1
  12. package/node8plus/plugins/PgBasicsPlugin.js.flow +1 -1
  13. package/node8plus/plugins/PgBasicsPlugin.js.map +1 -1
  14. package/node8plus/plugins/PgConditionComputedColumnPlugin.js +1 -1
  15. package/node8plus/plugins/PgConditionComputedColumnPlugin.js.flow +4 -1
  16. package/node8plus/plugins/PgConditionComputedColumnPlugin.js.map +1 -1
  17. package/node8plus/plugins/PgConnectionArgCondition.js +3 -3
  18. package/node8plus/plugins/PgConnectionArgCondition.js.flow +11 -3
  19. package/node8plus/plugins/PgConnectionArgCondition.js.map +1 -1
  20. package/node8plus/plugins/PgConnectionArgFirstLastBeforeAfter.js +5 -5
  21. package/node8plus/plugins/PgConnectionArgFirstLastBeforeAfter.js.flow +20 -7
  22. package/node8plus/plugins/PgConnectionArgFirstLastBeforeAfter.js.map +1 -1
  23. package/node8plus/plugins/PgConnectionArgOrderBy.js +2 -2
  24. package/node8plus/plugins/PgConnectionArgOrderBy.js.flow +8 -2
  25. package/node8plus/plugins/PgConnectionArgOrderBy.js.map +1 -1
  26. package/node8plus/plugins/PgConnectionTotalCount.js +1 -1
  27. package/node8plus/plugins/PgConnectionTotalCount.js.flow +4 -1
  28. package/node8plus/plugins/PgConnectionTotalCount.js.map +1 -1
  29. package/node8plus/plugins/PgForwardRelationPlugin.js +1 -1
  30. package/node8plus/plugins/PgForwardRelationPlugin.js.flow +4 -1
  31. package/node8plus/plugins/PgForwardRelationPlugin.js.map +1 -1
  32. package/node8plus/plugins/PgIntrospectionPlugin.d.ts +1 -0
  33. package/node8plus/plugins/PgIntrospectionPlugin.js +182 -159
  34. package/node8plus/plugins/PgIntrospectionPlugin.js.flow +218 -198
  35. package/node8plus/plugins/PgIntrospectionPlugin.js.map +1 -1
  36. package/node8plus/plugins/PgJWTPlugin.js +1 -1
  37. package/node8plus/plugins/PgJWTPlugin.js.flow +3 -1
  38. package/node8plus/plugins/PgJWTPlugin.js.map +1 -1
  39. package/node8plus/plugins/PgMutationCreatePlugin.js +7 -7
  40. package/node8plus/plugins/PgMutationCreatePlugin.js.flow +26 -7
  41. package/node8plus/plugins/PgMutationCreatePlugin.js.map +1 -1
  42. package/node8plus/plugins/PgMutationPayloadEdgePlugin.js +2 -2
  43. package/node8plus/plugins/PgMutationPayloadEdgePlugin.js.flow +8 -2
  44. package/node8plus/plugins/PgMutationPayloadEdgePlugin.js.map +1 -1
  45. package/node8plus/plugins/PgMutationUpdateDeletePlugin.js +11 -11
  46. package/node8plus/plugins/PgMutationUpdateDeletePlugin.js.flow +40 -11
  47. package/node8plus/plugins/PgMutationUpdateDeletePlugin.js.map +1 -1
  48. package/node8plus/plugins/PgRecordFunctionConnectionPlugin.js +6 -6
  49. package/node8plus/plugins/PgRecordFunctionConnectionPlugin.js.flow +24 -6
  50. package/node8plus/plugins/PgRecordFunctionConnectionPlugin.js.map +1 -1
  51. package/node8plus/plugins/PgRecordReturnTypesPlugin.js +1 -1
  52. package/node8plus/plugins/PgRecordReturnTypesPlugin.js.flow +6 -3
  53. package/node8plus/plugins/PgRecordReturnTypesPlugin.js.map +1 -1
  54. package/node8plus/plugins/PgRowNode.js +2 -2
  55. package/node8plus/plugins/PgRowNode.js.flow +8 -2
  56. package/node8plus/plugins/PgRowNode.js.map +1 -1
  57. package/node8plus/plugins/PgScalarFunctionConnectionPlugin.js +6 -6
  58. package/node8plus/plugins/PgScalarFunctionConnectionPlugin.js.flow +24 -6
  59. package/node8plus/plugins/PgScalarFunctionConnectionPlugin.js.map +1 -1
  60. package/node8plus/plugins/PgTablesPlugin.js +13 -13
  61. package/node8plus/plugins/PgTablesPlugin.js.flow +56 -20
  62. package/node8plus/plugins/PgTablesPlugin.js.map +1 -1
  63. package/node8plus/plugins/PgTypesPlugin.js +62 -78
  64. package/node8plus/plugins/PgTypesPlugin.js.flow +193 -76
  65. package/node8plus/plugins/PgTypesPlugin.js.map +1 -1
  66. package/node8plus/plugins/makeProcField.js +3 -3
  67. package/node8plus/plugins/makeProcField.js.flow +16 -7
  68. package/node8plus/plugins/makeProcField.js.map +1 -1
  69. package/node8plus/plugins/viaTemporaryTable.js +1 -1
  70. package/node8plus/plugins/viaTemporaryTable.js.flow +8 -4
  71. package/node8plus/plugins/viaTemporaryTable.js.map +1 -1
  72. package/node8plus/postgresInterval.js +12 -33
  73. package/node8plus/postgresInterval.js.flow +22 -51
  74. package/node8plus/postgresInterval.js.map +1 -1
  75. package/package.json +9 -9
  76. package/res/watch-fixtures.sql +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/plugins/PgBasicsPlugin.js"],"names":["defaultPgColumnFilter","_attr","_build","_context","identity","_","preventEmptyResult","obj","Object","keys","reduce","memo","key","fn","args","result","apply","length","stringifiedArgs","require","inspect","Error","String","omitWithRBACChecks","omit","entity","permission","ORDINARY_TABLE","VIEW","MATERIALIZED_VIEW","isTableLike","kind","classKind","EXECUTE","aclExecutable","tableEntity","READ","ALL","MANY","aclSelectable","attributes","some","attr","CREATE","aclInsertable","UPDATE","aclUpdatable","DELETE","aclDeletable","class","attributeEntity","klass","FILTER","ORDER","omitUnindexed","hideIndexWarnings","isIndexed","type","shouldOutputWarning","_omitUnindexedReadWarningGiven","console","log","describePgEntity","namespaceName","name","keyAttributes","map","a","join","includeAlias","getAlias","tags","value","endsWith","chalk","bold","t","c","f","p","r","v","m","e","error","id","sqlCommentByAddingTags","tagsToAdd","escape","str","replace","chr","description","tagsSql","tag","tagValue","valueArray","Array","isArray","highlightOrNot","green","forEach","push","commentValue","sqlThing","identifier","PgBasicsPlugin","builder","pgStrictFunctions","pgColumnFilter","pgIgnoreRBAC","pgIgnoreIndexes","pgHideIndexWarnings","pgLegacyJsonUuid","pgAugmentIntrospectionResults","pgOmit","baseOmit","hook","build","versions","version","liveCoordinator","registerProvider","PgLiveProvider","extend","graphileBuildPgVersion","pgSql","sql","pgQueryFromResolveData","pgAddStartEndCursor","addStartEndCursor","pgMakeProcField","makeProcField","pgParseIdentifier","parseIdentifier","pgViaTemporaryTable","viaTemporaryTable","pgField","pgPrepareAndRun","inflection","oldBuiltin","builtin","call","conditionType","typeName","upperCamelCase","inputType","rangeBoundType","rangeType","patchType","baseInputType","patchField","itemName","camelCase","orderByType","pluralize","edge","connection","_functionName","proc","coerceToGraphQLName","_typeName","_tableName","table","_singularizedTableName","singularize","_columnName","_options","enumType","enumName","argument","index","orderByEnum","columnName","ascending","constantCase","orderByColumnEnum","skipRowId","orderByComputedColumnEnum","pseudoColumnName","computedColumn","domainType","inValue","$","tableNode","tableFieldName","allRows","allRowsSimple","functionMutationName","functionMutationResultFieldName","gqlType","plural","outputArgNames","resultFieldName","returnTypeId","functionQueryName","functionQueryNameList","functionPayloadType","functionInputType","functionOutputFieldName","outputArgName","tableType","column","_table","fieldName","computedColumnList","singleRelationByKeys","detailedKeys","_foreignTable","constraint","singleRelationByKeysBackwards","foreignSingleFieldName","foreignFieldName","manyRelationByKeys","manyRelationByKeysSimple","foreignSimpleFieldName","rowByUniqueKeys","updateByKeys","updateFieldName","deleteByKeys","deleteFieldName","updateByKeysInputType","deleteByKeysInputType","updateNode","deleteNode","deletedNodeId","updateNodeInputType","deleteNodeInputType","edgeField","recordFunctionReturnType","resultTypeName","recordFunctionConnection","recordFunctionEdge","scalarFunctionConnection","scalarFunctionEdge","createField","createInputType","createPayloadType","updatePayloadType","deletePayloadType"],"mappings":"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","sourcesContent":["// @flow\nimport * as sql from \"pg-sql2\";\nimport type { Plugin } from \"graphile-build\";\nimport { version } from \"../../package.json\";\nimport type {\n PgProc,\n PgType,\n PgClass,\n PgAttribute,\n PgConstraint,\n PgEntity,\n} from \"./PgIntrospectionPlugin\";\nimport pgField from \"./pgField\";\n\nimport queryFromResolveDataFactory from \"../queryFromResolveDataFactory\";\nimport addStartEndCursor from \"./addStartEndCursor\";\nimport baseOmit, {\n CREATE,\n READ,\n UPDATE,\n DELETE,\n ALL,\n MANY,\n ORDER,\n FILTER,\n EXECUTE,\n} from \"../omit\";\nimport makeProcField from \"./makeProcField\";\nimport parseIdentifier from \"../parseIdentifier\";\nimport viaTemporaryTable from \"./viaTemporaryTable\";\nimport chalk from \"chalk\";\nimport pickBy from \"lodash/pickBy\";\nimport PgLiveProvider from \"../PgLiveProvider\";\nimport pgPrepareAndRun from \"../pgPrepareAndRun\";\n\nconst defaultPgColumnFilter = (_attr, _build, _context) => true;\ntype Keys = Array<{\n column: string,\n table: string,\n schema: ?string,\n}>;\n\nconst identity = _ => _;\n\nexport function preventEmptyResult<\n // eslint-disable-next-line flowtype/no-weak-types\n O: { [key: string]: (...args: Array<any>) => string }\n>(obj: O): $ObjMap<O, <V>(V) => V> {\n return Object.keys(obj).reduce((memo, key) => {\n const fn = obj[key];\n memo[key] = function (...args) {\n const result = fn.apply(this, args);\n if (typeof result !== \"string\" || result.length === 0) {\n const stringifiedArgs = require(\"util\").inspect(args);\n throw new Error(\n `Inflector for '${key}' returned '${String(\n result\n )}'; expected non-empty string\\n` +\n `See: https://github.com/graphile/graphile-build/blob/master/packages/graphile-build-pg/src/plugins/PgBasicsPlugin.js\\n` +\n `Arguments passed to ${key}:\\n${stringifiedArgs}`\n );\n }\n return result;\n };\n return memo;\n }, {});\n}\n\nconst omitWithRBACChecks = omit => (\n entity: PgProc | PgClass | PgAttribute | PgConstraint,\n permission: string\n) => {\n const ORDINARY_TABLE = \"r\";\n const VIEW = \"v\";\n const MATERIALIZED_VIEW = \"m\";\n const isTableLike = entity =>\n entity &&\n entity.kind === \"class\" &&\n (entity.classKind === ORDINARY_TABLE ||\n entity.classKind === VIEW ||\n entity.classKind === MATERIALIZED_VIEW);\n if (entity.kind === \"procedure\") {\n if (permission === EXECUTE && !entity.aclExecutable) {\n return true;\n }\n } else if (entity.kind === \"class\" && isTableLike(entity)) {\n const tableEntity: PgClass = entity;\n if (\n (permission === READ || permission === ALL || permission === MANY) &&\n !tableEntity.aclSelectable &&\n !tableEntity.attributes.some(attr => attr.aclSelectable)\n ) {\n return true;\n } else if (\n permission === CREATE &&\n !tableEntity.aclInsertable &&\n !tableEntity.attributes.some(attr => attr.aclInsertable)\n ) {\n return true;\n } else if (\n permission === UPDATE &&\n !tableEntity.aclUpdatable &&\n !tableEntity.attributes.some(attr => attr.aclUpdatable)\n ) {\n return true;\n } else if (permission === DELETE && !tableEntity.aclDeletable) {\n return true;\n }\n } else if (entity.kind === \"attribute\" && isTableLike(entity.class)) {\n const attributeEntity: PgAttribute = entity;\n\n const klass = attributeEntity.class;\n // Have we got *any* permissions on the table?\n if (\n klass.aclSelectable ||\n klass.attributes.some(attr => attr.aclSelectable)\n ) {\n // Yes; this is a regular table; omit if RBAC permissions tell us to.\n if (\n (permission === READ ||\n permission === FILTER ||\n permission === ORDER) &&\n !attributeEntity.aclSelectable\n ) {\n return true;\n } else if (permission === CREATE && !attributeEntity.aclInsertable) {\n return true;\n } else if (permission === UPDATE && !attributeEntity.aclUpdatable) {\n return true;\n }\n } else {\n // No permissions on the table at all, so normal connections will skip\n // over it. Thus we must be being exposed via a security definer function\n // or similar, so we should expose all fields except those that are\n // explicitly @omit-ed.\n }\n }\n return omit(entity, permission);\n};\n\nconst omitUnindexed = (omit, hideIndexWarnings) => (\n entity: PgProc | PgClass | PgAttribute | PgConstraint,\n permission: string\n) => {\n if (\n entity.kind === \"attribute\" &&\n !entity.isIndexed &&\n (permission === \"filter\" || permission === \"order\")\n ) {\n return true;\n }\n if (\n entity.kind === \"constraint\" &&\n entity.type === \"f\" &&\n !entity.isIndexed &&\n permission === \"read\"\n ) {\n const klass = entity.class;\n if (klass) {\n const shouldOutputWarning =\n // $FlowFixMe\n !entity._omitUnindexedReadWarningGiven && !hideIndexWarnings;\n if (shouldOutputWarning) {\n // $FlowFixMe\n entity._omitUnindexedReadWarningGiven = true;\n // eslint-disable-next-line no-console\n console.log(\n \"%s\",\n `Disabled 'read' permission for ${describePgEntity(\n entity\n )} because it isn't indexed. For more information see https://graphile.org/postgraphile/best-practices/ To fix, perform\\n\\n CREATE INDEX ON ${`\"${klass.namespaceName}\".\"${klass.name}\"`}(\"${entity.keyAttributes\n .map(a => a.name)\n .join('\", \"')}\");`\n );\n }\n }\n return true;\n }\n return omit(entity, permission);\n};\n\nfunction describePgEntity(entity: PgEntity, includeAlias = true) {\n const getAlias = !includeAlias\n ? () => \"\"\n : () => {\n const tags = pickBy(\n entity.tags,\n (value, key) => key === \"name\" || key.endsWith(\"Name\")\n );\n if (Object.keys(tags).length) {\n return ` (with smart comments: ${chalk.bold(\n Object.keys(tags)\n .map(t => `@${t} ${tags[t]}`)\n .join(\" | \")\n )})`;\n }\n return \"\";\n };\n\n try {\n if (entity.kind === \"constraint\") {\n return `constraint ${chalk.bold(\n `\"${entity.name}\"`\n )} on ${describePgEntity(entity.class, false)}${getAlias()}`;\n } else if (entity.kind === \"class\") {\n // see pg_class.relkind https://www.postgresql.org/docs/10/static/catalog-pg-class.html\n const kind =\n {\n c: \"composite type\",\n f: \"foreign table\",\n p: \"partitioned table\",\n r: \"table\",\n v: \"view\",\n m: \"materialized view\",\n }[entity.classKind] || \"table-like\";\n return `${kind} ${chalk.bold(\n `\"${entity.namespaceName}\".\"${entity.name}\"`\n )}${getAlias()}`;\n } else if (entity.kind === \"procedure\") {\n return `function ${chalk.bold(\n `\"${entity.namespaceName}\".\"${entity.name}\"(...args...)`\n )}${getAlias()}`;\n } else if (entity.kind === \"attribute\") {\n return `column ${chalk.bold(`\"${entity.name}\"`)} on ${describePgEntity(\n entity.class,\n false\n )}${getAlias()}`;\n }\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error(\"Error occurred while attempting to debug entity:\", entity);\n // eslint-disable-next-line no-console\n console.error(e);\n }\n return `entity of kind '${entity.kind}' with ${\n typeof entity.id === \"string\" ? `oid '${entity.id}'` : \"\"\n }`;\n}\n\nfunction sqlCommentByAddingTags(entity, tagsToAdd) {\n // NOTE: this function is NOT intended to be SQL safe; it's for\n // displaying in error messages. Nonetheless if you find issues with\n // SQL compatibility, please send a PR or issue.\n\n // Ref: https://www.postgresql.org/docs/current/static/sql-syntax-lexical.html#SQL-BACKSLASH-TABLE\n const escape = str =>\n str.replace(\n /['\\\\\\b\\f\\n\\r\\t]/g,\n chr =>\n ({\n \"\\b\": \"\\\\b\",\n \"\\f\": \"\\\\f\",\n \"\\n\": \"\\\\n\",\n \"\\r\": \"\\\\r\",\n \"\\t\": \"\\\\t\",\n }[chr] || \"\\\\\" + chr)\n );\n\n // tagsToAdd is here twice to ensure that the keys in tagsToAdd come first, but that they also \"win\" any conflicts.\n const tags = {\n ...tagsToAdd,\n ...entity.tags,\n ...tagsToAdd,\n };\n\n const description = entity.description;\n const tagsSql = Object.keys(tags)\n .reduce((memo, tag) => {\n const tagValue = tags[tag];\n const valueArray = Array.isArray(tagValue) ? tagValue : [tagValue];\n const highlightOrNot = tag in tagsToAdd ? chalk.bold.green : identity;\n valueArray.forEach(value => {\n memo.push(\n highlightOrNot(\n `@${escape(escape(tag))}${\n value === true ? \"\" : \" \" + escape(escape(value))\n }`\n )\n );\n });\n return memo;\n }, [])\n .join(\"\\\\n\");\n const commentValue = `E'${tagsSql}${\n description ? \"\\\\n\" + escape(description) : \"\"\n }'`;\n let sqlThing;\n if (entity.kind === \"class\") {\n const identifier = `\"${entity.namespaceName}\".\"${entity.name}\"`;\n if (entity.classKind === \"r\") {\n sqlThing = `TABLE ${identifier}`;\n } else if (entity.classKind === \"v\") {\n sqlThing = `VIEW ${identifier}`;\n } else if (entity.classKind === \"m\") {\n sqlThing = `MATERIALIZED VIEW ${identifier}`;\n } else if (entity.classKind === \"c\") {\n sqlThing = `TYPE ${identifier}`;\n } else {\n sqlThing = `PLEASE_SEND_A_PULL_REQUEST_TO_FIX_THIS ${identifier}`;\n }\n } else if (entity.kind === \"attribute\") {\n sqlThing = `COLUMN \"${entity.class.namespaceName}\".\"${entity.class.name}\".\"${entity.name}\"`;\n } else if (entity.kind === \"procedure\") {\n sqlThing = `FUNCTION \"${entity.namespaceName}\".\"${entity.name}\"(...arg types go here...)`;\n } else if (entity.kind === \"constraint\") {\n // TODO: TEST!\n sqlThing = `CONSTRAINT \"${entity.name}\" ON \"${entity.class.namespaceName}\".\"${entity.class.name}\"`;\n } else {\n sqlThing = `UNKNOWN_ENTITY_PLEASE_SEND_A_PULL_REQUEST`;\n }\n\n return `COMMENT ON ${sqlThing} IS ${commentValue};`;\n}\n\nexport default (function PgBasicsPlugin(\n builder,\n {\n pgStrictFunctions = false,\n pgColumnFilter = defaultPgColumnFilter,\n pgIgnoreRBAC = false,\n pgIgnoreIndexes = true, // TODO:v5: change this to false\n pgHideIndexWarnings = false,\n pgLegacyJsonUuid = false, // TODO:v5: remove this\n pgAugmentIntrospectionResults,\n }\n) {\n let pgOmit = baseOmit;\n if (!pgIgnoreRBAC) {\n pgOmit = omitWithRBACChecks(pgOmit);\n }\n if (!pgIgnoreIndexes) {\n pgOmit = omitUnindexed(pgOmit, pgHideIndexWarnings);\n }\n builder.hook(\n \"build\",\n build => {\n build.versions[\"graphile-build-pg\"] = version;\n build.liveCoordinator.registerProvider(new PgLiveProvider());\n return build.extend(build, {\n graphileBuildPgVersion: version,\n pgSql: sql,\n pgStrictFunctions,\n pgColumnFilter,\n\n // TODO:v5: remove this workaround\n // BEWARE: this may be overridden in PgIntrospectionPlugin for PG < 9.5\n pgQueryFromResolveData: queryFromResolveDataFactory(),\n\n pgAddStartEndCursor: addStartEndCursor,\n pgOmit,\n pgMakeProcField: makeProcField,\n pgParseIdentifier: parseIdentifier,\n pgViaTemporaryTable: viaTemporaryTable,\n describePgEntity,\n pgField,\n sqlCommentByAddingTags,\n pgPrepareAndRun,\n pgAugmentIntrospectionResults,\n });\n },\n [\"PgBasics\"]\n );\n\n builder.hook(\n \"inflection\",\n (inflection, build) => {\n // TODO:v5: move this to postgraphile-core\n const oldBuiltin = inflection.builtin;\n inflection.builtin = function (name) {\n if (pgLegacyJsonUuid && name === \"JSON\") return \"Json\";\n if (pgLegacyJsonUuid && name === \"UUID\") return \"Uuid\";\n return oldBuiltin.call(this, name);\n };\n\n return build.extend(\n inflection,\n preventEmptyResult({\n // These helpers are passed GraphQL type names as strings\n conditionType(typeName: string) {\n return this.upperCamelCase(`${typeName}-condition`);\n },\n inputType(typeName: string) {\n return this.upperCamelCase(`${typeName}-input`);\n },\n rangeBoundType(typeName: string) {\n return this.upperCamelCase(`${typeName}-range-bound`);\n },\n rangeType(typeName: string) {\n return this.upperCamelCase(`${typeName}-range`);\n },\n patchType(typeName: string) {\n return this.upperCamelCase(`${typeName}-patch`);\n },\n baseInputType(typeName: string) {\n return this.upperCamelCase(`${typeName}-base-input`);\n },\n patchField(itemName: string) {\n return this.camelCase(`${itemName}-patch`);\n },\n orderByType(typeName: string) {\n return this.upperCamelCase(`${this.pluralize(typeName)}-order-by`);\n },\n edge(typeName: string) {\n return this.upperCamelCase(`${this.pluralize(typeName)}-edge`);\n },\n connection(typeName: string) {\n return this.upperCamelCase(\n `${this.pluralize(typeName)}-connection`\n );\n },\n\n // These helpers handle overrides via smart comments. They should only\n // be used in other inflectors, hence the underscore prefix.\n //\n // IMPORTANT: do NOT do case transforms here, because detail can be\n // lost, e.g.\n // `constantCase(camelCase('foo_1')) !== constantCase('foo_1')`\n _functionName(proc: PgProc) {\n return this.coerceToGraphQLName(proc.tags.name || proc.name);\n },\n _typeName(type: PgType) {\n // 'type' introspection result\n return this.coerceToGraphQLName(type.tags.name || type.name);\n },\n _tableName(table: PgClass) {\n return this.coerceToGraphQLName(\n table.tags.name || table.type.tags.name || table.name\n );\n },\n _singularizedTableName(table: PgClass): string {\n return this.singularize(this._tableName(table)).replace(\n /.(?:(?:[_-]i|I)nput|(?:[_-]p|P)atch)$/,\n \"$&_record\"\n );\n },\n _columnName(attr: PgAttribute, _options?: { skipRowId?: boolean }) {\n return this.coerceToGraphQLName(attr.tags.name || attr.name);\n },\n\n // From here down, functions are passed database introspection results\n enumType(type: PgType) {\n if (type.tags.enumName) {\n return type.tags.enumName;\n }\n return this.upperCamelCase(this._typeName(type));\n },\n argument(name: ?string, index: number) {\n return this.coerceToGraphQLName(\n this.camelCase(name || `arg${index}`)\n );\n },\n orderByEnum(columnName, ascending) {\n return this.constantCase(\n `${columnName}_${ascending ? \"asc\" : \"desc\"}`\n );\n },\n orderByColumnEnum(attr: PgAttribute, ascending: boolean) {\n const columnName = this._columnName(attr, {\n skipRowId: true, // Because we messed up 😔\n });\n return this.orderByEnum(columnName, ascending);\n },\n orderByComputedColumnEnum(\n pseudoColumnName: string,\n proc: PgProc,\n table: PgClass,\n ascending: boolean\n ) {\n const columnName = this.computedColumn(\n pseudoColumnName,\n proc,\n table\n );\n return this.orderByEnum(columnName, ascending);\n },\n domainType(type: PgType) {\n return this.upperCamelCase(this._typeName(type));\n },\n enumName(inValue: string) {\n let value = inValue;\n\n if (value === \"\") {\n return \"_EMPTY_\";\n }\n\n // Some enums use asterisks to signify wildcards - this might be for\n // the whole item, or prefixes/suffixes, or even in the middle. This\n // is provided on a best efforts basis, if it doesn't suit your\n // purposes then please pass a custom inflector as mentioned below.\n value = value\n .replace(/\\*/g, \"_ASTERISK_\")\n .replace(/^(_?)_+ASTERISK/, \"$1ASTERISK\")\n .replace(/ASTERISK_(_?)_*$/, \"ASTERISK$1\");\n\n // This is a best efforts replacement for common symbols that you\n // might find in enums. Generally we only support enums that are\n // alphanumeric, if these replacements don't work for you, you should\n // pass a custom inflector that replaces this `enumName` method\n // with one of your own chosing.\n value =\n {\n // SQL comparison operators\n \">\": \"GREATER_THAN\",\n \">=\": \"GREATER_THAN_OR_EQUAL\",\n \"=\": \"EQUAL\",\n \"!=\": \"NOT_EQUAL\",\n \"<>\": \"DIFFERENT\",\n \"<=\": \"LESS_THAN_OR_EQUAL\",\n \"<\": \"LESS_THAN\",\n\n // PostgreSQL LIKE shortcuts\n \"~~\": \"LIKE\",\n \"~~*\": \"ILIKE\",\n \"!~~\": \"NOT_LIKE\",\n \"!~~*\": \"NOT_ILIKE\",\n\n // '~' doesn't necessarily represent regexps, but the three\n // operators following it likely do, so we'll use the word TILDE\n // in all for consistency.\n \"~\": \"TILDE\",\n \"~*\": \"TILDE_ASTERISK\",\n \"!~\": \"NOT_TILDE\",\n \"!~*\": \"NOT_TILDE_ASTERISK\",\n\n // A number of other symbols where we're not sure of their\n // meaning. We give them common generic names so that they're\n // suitable for multiple purposes, e.g. favouring 'PLUS' over\n // 'ADDITION' and 'DOT' over 'FULL_STOP'\n \"%\": \"PERCENT\",\n \"+\": \"PLUS\",\n \"-\": \"MINUS\",\n \"/\": \"SLASH\",\n \"\\\\\": \"BACKSLASH\",\n _: \"UNDERSCORE\",\n \"#\": \"POUND\",\n \"£\": \"STERLING\",\n $: \"DOLLAR\",\n \"&\": \"AMPERSAND\",\n \"@\": \"AT\",\n \"'\": \"APOSTROPHE\",\n '\"': \"QUOTE\",\n \"`\": \"BACKTICK\",\n \":\": \"COLON\",\n \";\": \"SEMICOLON\",\n \"!\": \"EXCLAMATION_POINT\",\n \"?\": \"QUESTION_MARK\",\n \",\": \"COMMA\",\n \".\": \"DOT\",\n \"^\": \"CARET\",\n \"|\": \"BAR\",\n \"[\": \"OPEN_BRACKET\",\n \"]\": \"CLOSE_BRACKET\",\n \"(\": \"OPEN_PARENTHESIS\",\n \")\": \"CLOSE_PARENTHESIS\",\n \"{\": \"OPEN_BRACE\",\n \"}\": \"CLOSE_BRACE\",\n }[value] || value;\n return value;\n },\n\n tableNode(table: PgClass) {\n return this.camelCase(this._singularizedTableName(table));\n },\n tableFieldName(table: PgClass) {\n return this.camelCase(this._singularizedTableName(table));\n },\n allRows(table: PgClass) {\n return this.camelCase(\n `all-${this.pluralize(this._singularizedTableName(table))}`\n );\n },\n allRowsSimple(table: PgClass) {\n return this.camelCase(\n `all-${this.pluralize(this._singularizedTableName(table))}-list`\n );\n },\n functionMutationName(proc: PgProc) {\n return this.camelCase(this._functionName(proc));\n },\n functionMutationResultFieldName(\n proc: PgProc,\n gqlType,\n plural: boolean = false,\n outputArgNames: Array<string> = []\n ) {\n if (proc.tags.resultFieldName) {\n return proc.tags.resultFieldName;\n }\n let name;\n if (outputArgNames.length === 1 && outputArgNames[0] !== \"\") {\n name = this.camelCase(outputArgNames[0]);\n } else if (gqlType.name === \"Int\") {\n name = \"integer\";\n } else if (gqlType.name === \"Float\") {\n name = \"float\";\n } else if (gqlType.name === \"Boolean\") {\n name = \"boolean\";\n } else if (gqlType.name === \"String\") {\n name = \"string\";\n } else if (proc.returnTypeId === \"2249\") {\n // returns a record type\n name = \"result\";\n } else {\n name = this.camelCase(gqlType.name);\n }\n return plural ? this.pluralize(name) : name;\n },\n functionQueryName(proc: PgProc) {\n return this.camelCase(this._functionName(proc));\n },\n functionQueryNameList(proc: PgProc) {\n return this.camelCase(`${this._functionName(proc)}-list`);\n },\n functionPayloadType(proc: PgProc) {\n return this.upperCamelCase(`${this._functionName(proc)}-payload`);\n },\n functionInputType(proc: PgProc) {\n return this.upperCamelCase(`${this._functionName(proc)}-input`);\n },\n functionOutputFieldName(\n proc: PgProc,\n outputArgName: string,\n index: number\n ) {\n return this.argument(outputArgName, index);\n },\n tableType(table: PgClass) {\n return this.upperCamelCase(this._singularizedTableName(table));\n },\n column(attr: PgAttribute) {\n return this.camelCase(this._columnName(attr));\n },\n computedColumn(\n pseudoColumnName: string,\n proc: PgProc,\n _table: PgClass\n ) {\n return proc.tags.fieldName || this.camelCase(pseudoColumnName);\n },\n computedColumnList(\n pseudoColumnName: string,\n proc: PgProc,\n _table: PgClass\n ) {\n return proc.tags.fieldName\n ? proc.tags.fieldName + \"List\"\n : this.camelCase(`${pseudoColumnName}-list`);\n },\n singleRelationByKeys(\n detailedKeys: Keys,\n table: PgClass,\n _foreignTable: PgClass,\n constraint: PgConstraint\n ) {\n if (constraint.tags.fieldName) {\n return constraint.tags.fieldName;\n }\n return this.camelCase(\n `${this._singularizedTableName(\n table\n )}-by-${detailedKeys.map(key => this.column(key)).join(\"-and-\")}`\n );\n },\n singleRelationByKeysBackwards(\n detailedKeys: Keys,\n table: PgClass,\n _foreignTable: PgClass,\n constraint: PgConstraint\n ) {\n if (constraint.tags.foreignSingleFieldName) {\n return constraint.tags.foreignSingleFieldName;\n }\n if (constraint.tags.foreignFieldName) {\n return constraint.tags.foreignFieldName;\n }\n return this.singleRelationByKeys(\n detailedKeys,\n table,\n _foreignTable,\n constraint\n );\n },\n manyRelationByKeys(\n detailedKeys: Keys,\n table: PgClass,\n _foreignTable: PgClass,\n constraint: PgConstraint\n ) {\n if (constraint.tags.foreignFieldName) {\n return constraint.tags.foreignFieldName;\n }\n return this.camelCase(\n `${this.pluralize(\n this._singularizedTableName(table)\n )}-by-${detailedKeys.map(key => this.column(key)).join(\"-and-\")}`\n );\n },\n manyRelationByKeysSimple(\n detailedKeys: Keys,\n table: PgClass,\n _foreignTable: PgClass,\n constraint: PgConstraint\n ) {\n if (constraint.tags.foreignSimpleFieldName) {\n return constraint.tags.foreignSimpleFieldName;\n }\n if (constraint.tags.foreignFieldName) {\n return constraint.tags.foreignFieldName;\n }\n return this.camelCase(\n `${this.pluralize(\n this._singularizedTableName(table)\n )}-by-${detailedKeys\n .map(key => this.column(key))\n .join(\"-and-\")}-list`\n );\n },\n rowByUniqueKeys(\n detailedKeys: Keys,\n table: PgClass,\n constraint: PgConstraint\n ) {\n if (constraint.tags.fieldName) {\n return constraint.tags.fieldName;\n }\n return this.camelCase(\n `${this._singularizedTableName(\n table\n )}-by-${detailedKeys.map(key => this.column(key)).join(\"-and-\")}`\n );\n },\n updateByKeys(\n detailedKeys: Keys,\n table: PgClass,\n constraint: PgConstraint\n ) {\n if (constraint.tags.updateFieldName) {\n return constraint.tags.updateFieldName;\n }\n return this.camelCase(\n `update-${this._singularizedTableName(\n table\n )}-by-${detailedKeys.map(key => this.column(key)).join(\"-and-\")}`\n );\n },\n deleteByKeys(\n detailedKeys: Keys,\n table: PgClass,\n constraint: PgConstraint\n ) {\n if (constraint.tags.deleteFieldName) {\n return constraint.tags.deleteFieldName;\n }\n return this.camelCase(\n `delete-${this._singularizedTableName(\n table\n )}-by-${detailedKeys.map(key => this.column(key)).join(\"-and-\")}`\n );\n },\n updateByKeysInputType(\n detailedKeys: Keys,\n table: PgClass,\n constraint: PgConstraint\n ) {\n if (constraint.tags.updateFieldName) {\n return this.upperCamelCase(\n `${constraint.tags.updateFieldName}-input`\n );\n }\n return this.upperCamelCase(\n `update-${this._singularizedTableName(\n table\n )}-by-${detailedKeys\n .map(key => this.column(key))\n .join(\"-and-\")}-input`\n );\n },\n deleteByKeysInputType(\n detailedKeys: Keys,\n table: PgClass,\n constraint: PgConstraint\n ) {\n if (constraint.tags.deleteFieldName) {\n return this.upperCamelCase(\n `${constraint.tags.deleteFieldName}-input`\n );\n }\n return this.upperCamelCase(\n `delete-${this._singularizedTableName(\n table\n )}-by-${detailedKeys\n .map(key => this.column(key))\n .join(\"-and-\")}-input`\n );\n },\n updateNode(table: PgClass) {\n return this.camelCase(\n `update-${this._singularizedTableName(table)}`\n );\n },\n deleteNode(table: PgClass) {\n return this.camelCase(\n `delete-${this._singularizedTableName(table)}`\n );\n },\n deletedNodeId(table: PgClass) {\n return this.camelCase(`deleted-${this.singularize(table.name)}-id`);\n },\n updateNodeInputType(table: PgClass) {\n return this.upperCamelCase(\n `update-${this._singularizedTableName(table)}-input`\n );\n },\n deleteNodeInputType(table: PgClass) {\n return this.upperCamelCase(\n `delete-${this._singularizedTableName(table)}-input`\n );\n },\n edgeField(table: PgClass) {\n return this.camelCase(`${this._singularizedTableName(table)}-edge`);\n },\n recordFunctionReturnType(proc: PgProc) {\n return (\n proc.tags.resultTypeName ||\n this.upperCamelCase(`${this._functionName(proc)}-record`)\n );\n },\n recordFunctionConnection(proc: PgProc) {\n return this.upperCamelCase(\n `${this._functionName(proc)}-connection`\n );\n },\n recordFunctionEdge(proc: PgProc) {\n return this.upperCamelCase(\n `${this.singularize(this._functionName(proc))}-edge`\n );\n },\n scalarFunctionConnection(proc: PgProc) {\n return this.upperCamelCase(\n `${this._functionName(proc)}-connection`\n );\n },\n scalarFunctionEdge(proc: PgProc) {\n return this.upperCamelCase(\n `${this.singularize(this._functionName(proc))}-edge`\n );\n },\n createField(table: PgClass) {\n return this.camelCase(\n `create-${this._singularizedTableName(table)}`\n );\n },\n createInputType(table: PgClass) {\n return this.upperCamelCase(\n `create-${this._singularizedTableName(table)}-input`\n );\n },\n createPayloadType(table: PgClass) {\n return this.upperCamelCase(\n `create-${this._singularizedTableName(table)}-payload`\n );\n },\n updatePayloadType(table: PgClass) {\n return this.upperCamelCase(\n `update-${this._singularizedTableName(table)}-payload`\n );\n },\n deletePayloadType(table: PgClass) {\n return this.upperCamelCase(\n `delete-${this._singularizedTableName(table)}-payload`\n );\n },\n }),\n \"Default inflectors from PgBasicsPlugin. You can override these with `makeAddInflectorsPlugin(..., true)`.\"\n );\n },\n [\"PgBasics\"]\n );\n}: Plugin);\n"],"file":"PgBasicsPlugin.js"}
1
+ {"version":3,"sources":["../../src/plugins/PgBasicsPlugin.js"],"names":["defaultPgColumnFilter","_attr","_build","_context","identity","_","preventEmptyResult","obj","Object","keys","reduce","memo","key","fn","args","result","apply","length","stringifiedArgs","require","inspect","Error","String","omitWithRBACChecks","omit","entity","permission","ORDINARY_TABLE","VIEW","MATERIALIZED_VIEW","isTableLike","kind","classKind","EXECUTE","aclExecutable","tableEntity","READ","ALL","MANY","aclSelectable","attributes","some","attr","CREATE","aclInsertable","UPDATE","aclUpdatable","DELETE","aclDeletable","class","attributeEntity","klass","FILTER","ORDER","omitUnindexed","hideIndexWarnings","isIndexed","type","shouldOutputWarning","_omitUnindexedReadWarningGiven","console","log","describePgEntity","namespaceName","name","keyAttributes","map","a","join","includeAlias","getAlias","tags","value","endsWith","chalk","bold","t","c","f","p","r","v","m","e","error","id","sqlCommentByAddingTags","tagsToAdd","escape","str","replace","chr","description","tagsSql","tag","tagValue","valueArray","Array","isArray","highlightOrNot","green","forEach","push","commentValue","sqlThing","identifier","PgBasicsPlugin","builder","pgStrictFunctions","pgColumnFilter","pgIgnoreRBAC","pgIgnoreIndexes","pgHideIndexWarnings","pgLegacyJsonUuid","pgAugmentIntrospectionResults","pgOmit","baseOmit","hook","build","versions","version","liveCoordinator","registerProvider","PgLiveProvider","extend","graphileBuildPgVersion","pgSql","sql","pgQueryFromResolveData","pgAddStartEndCursor","addStartEndCursor","pgMakeProcField","makeProcField","pgParseIdentifier","parseIdentifier","pgViaTemporaryTable","viaTemporaryTable","pgField","pgPrepareAndRun","inflection","oldBuiltin","builtin","call","conditionType","typeName","upperCamelCase","inputType","rangeBoundType","rangeType","patchType","baseInputType","patchField","itemName","camelCase","orderByType","pluralize","edge","connection","_functionName","proc","coerceToGraphQLName","_typeName","_tableName","table","_singularizedTableName","singularize","_columnName","_options","enumType","enumName","argument","index","orderByEnum","columnName","ascending","constantCase","orderByColumnEnum","skipRowId","orderByComputedColumnEnum","pseudoColumnName","computedColumn","domainType","inValue","$","tableNode","tableFieldName","allRows","allRowsSimple","functionMutationName","functionMutationResultFieldName","gqlType","plural","outputArgNames","resultFieldName","returnTypeId","functionQueryName","functionQueryNameList","functionPayloadType","functionInputType","functionOutputFieldName","outputArgName","tableType","column","_table","fieldName","computedColumnList","singleRelationByKeys","detailedKeys","_foreignTable","constraint","singleRelationByKeysBackwards","foreignSingleFieldName","foreignFieldName","manyRelationByKeys","manyRelationByKeysSimple","foreignSimpleFieldName","rowByUniqueKeys","updateByKeys","updateFieldName","deleteByKeys","deleteFieldName","updateByKeysInputType","deleteByKeysInputType","updateNode","deleteNode","deletedNodeId","updateNodeInputType","deleteNodeInputType","edgeField","recordFunctionReturnType","resultTypeName","recordFunctionConnection","recordFunctionEdge","scalarFunctionConnection","scalarFunctionEdge","createField","createInputType","createPayloadType","updatePayloadType","deletePayloadType"],"mappings":"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","sourcesContent":["// @flow\nimport * as sql from \"pg-sql2\";\nimport type { Plugin } from \"graphile-build\";\nimport { version } from \"../../package.json\";\nimport type {\n PgProc,\n PgType,\n PgClass,\n PgAttribute,\n PgConstraint,\n PgEntity,\n} from \"./PgIntrospectionPlugin\";\nimport pgField from \"./pgField\";\n\nimport queryFromResolveDataFactory from \"../queryFromResolveDataFactory\";\nimport addStartEndCursor from \"./addStartEndCursor\";\nimport baseOmit, {\n CREATE,\n READ,\n UPDATE,\n DELETE,\n ALL,\n MANY,\n ORDER,\n FILTER,\n EXECUTE,\n} from \"../omit\";\nimport makeProcField from \"./makeProcField\";\nimport parseIdentifier from \"../parseIdentifier\";\nimport viaTemporaryTable from \"./viaTemporaryTable\";\nimport chalk from \"chalk\";\nimport pickBy from \"lodash/pickBy\";\nimport PgLiveProvider from \"../PgLiveProvider\";\nimport pgPrepareAndRun from \"../pgPrepareAndRun\";\n\nconst defaultPgColumnFilter = (_attr, _build, _context) => true;\ntype Keys = Array<{\n column: string,\n table: string,\n schema: ?string,\n}>;\n\nconst identity = _ => _;\n\nexport function preventEmptyResult<\n // eslint-disable-next-line flowtype/no-weak-types\n O: { [key: string]: (...args: Array<any>) => string }\n>(obj: O): $ObjMap<O, <V>(V) => V> {\n return Object.keys(obj).reduce((memo, key) => {\n const fn = obj[key];\n memo[key] = function (...args) {\n const result = fn.apply(this, args);\n if (typeof result !== \"string\" || result.length === 0) {\n const stringifiedArgs = require(\"util\").inspect(args);\n throw new Error(\n `Inflector for '${key}' returned '${String(\n result\n )}'; expected non-empty string\\n` +\n `See: https://github.com/graphile/graphile-engine/blob/master/packages/graphile-build-pg/src/plugins/PgBasicsPlugin.js\\n` +\n `Arguments passed to ${key}:\\n${stringifiedArgs}`\n );\n }\n return result;\n };\n return memo;\n }, {});\n}\n\nconst omitWithRBACChecks = omit => (\n entity: PgProc | PgClass | PgAttribute | PgConstraint,\n permission: string\n) => {\n const ORDINARY_TABLE = \"r\";\n const VIEW = \"v\";\n const MATERIALIZED_VIEW = \"m\";\n const isTableLike = entity =>\n entity &&\n entity.kind === \"class\" &&\n (entity.classKind === ORDINARY_TABLE ||\n entity.classKind === VIEW ||\n entity.classKind === MATERIALIZED_VIEW);\n if (entity.kind === \"procedure\") {\n if (permission === EXECUTE && !entity.aclExecutable) {\n return true;\n }\n } else if (entity.kind === \"class\" && isTableLike(entity)) {\n const tableEntity: PgClass = entity;\n if (\n (permission === READ || permission === ALL || permission === MANY) &&\n !tableEntity.aclSelectable &&\n !tableEntity.attributes.some(attr => attr.aclSelectable)\n ) {\n return true;\n } else if (\n permission === CREATE &&\n !tableEntity.aclInsertable &&\n !tableEntity.attributes.some(attr => attr.aclInsertable)\n ) {\n return true;\n } else if (\n permission === UPDATE &&\n !tableEntity.aclUpdatable &&\n !tableEntity.attributes.some(attr => attr.aclUpdatable)\n ) {\n return true;\n } else if (permission === DELETE && !tableEntity.aclDeletable) {\n return true;\n }\n } else if (entity.kind === \"attribute\" && isTableLike(entity.class)) {\n const attributeEntity: PgAttribute = entity;\n\n const klass = attributeEntity.class;\n // Have we got *any* permissions on the table?\n if (\n klass.aclSelectable ||\n klass.attributes.some(attr => attr.aclSelectable)\n ) {\n // Yes; this is a regular table; omit if RBAC permissions tell us to.\n if (\n (permission === READ ||\n permission === FILTER ||\n permission === ORDER) &&\n !attributeEntity.aclSelectable\n ) {\n return true;\n } else if (permission === CREATE && !attributeEntity.aclInsertable) {\n return true;\n } else if (permission === UPDATE && !attributeEntity.aclUpdatable) {\n return true;\n }\n } else {\n // No permissions on the table at all, so normal connections will skip\n // over it. Thus we must be being exposed via a security definer function\n // or similar, so we should expose all fields except those that are\n // explicitly @omit-ed.\n }\n }\n return omit(entity, permission);\n};\n\nconst omitUnindexed = (omit, hideIndexWarnings) => (\n entity: PgProc | PgClass | PgAttribute | PgConstraint,\n permission: string\n) => {\n if (\n entity.kind === \"attribute\" &&\n !entity.isIndexed &&\n (permission === \"filter\" || permission === \"order\")\n ) {\n return true;\n }\n if (\n entity.kind === \"constraint\" &&\n entity.type === \"f\" &&\n !entity.isIndexed &&\n permission === \"read\"\n ) {\n const klass = entity.class;\n if (klass) {\n const shouldOutputWarning =\n // $FlowFixMe\n !entity._omitUnindexedReadWarningGiven && !hideIndexWarnings;\n if (shouldOutputWarning) {\n // $FlowFixMe\n entity._omitUnindexedReadWarningGiven = true;\n // eslint-disable-next-line no-console\n console.log(\n \"%s\",\n `Disabled 'read' permission for ${describePgEntity(\n entity\n )} because it isn't indexed. For more information see https://graphile.org/postgraphile/best-practices/ To fix, perform\\n\\n CREATE INDEX ON ${`\"${klass.namespaceName}\".\"${klass.name}\"`}(\"${entity.keyAttributes\n .map(a => a.name)\n .join('\", \"')}\");`\n );\n }\n }\n return true;\n }\n return omit(entity, permission);\n};\n\nfunction describePgEntity(entity: PgEntity, includeAlias = true) {\n const getAlias = !includeAlias\n ? () => \"\"\n : () => {\n const tags = pickBy(\n entity.tags,\n (value, key) => key === \"name\" || key.endsWith(\"Name\")\n );\n if (Object.keys(tags).length) {\n return ` (with smart comments: ${chalk.bold(\n Object.keys(tags)\n .map(t => `@${t} ${tags[t]}`)\n .join(\" | \")\n )})`;\n }\n return \"\";\n };\n\n try {\n if (entity.kind === \"constraint\") {\n return `constraint ${chalk.bold(\n `\"${entity.name}\"`\n )} on ${describePgEntity(entity.class, false)}${getAlias()}`;\n } else if (entity.kind === \"class\") {\n // see pg_class.relkind https://www.postgresql.org/docs/10/static/catalog-pg-class.html\n const kind =\n {\n c: \"composite type\",\n f: \"foreign table\",\n p: \"partitioned table\",\n r: \"table\",\n v: \"view\",\n m: \"materialized view\",\n }[entity.classKind] || \"table-like\";\n return `${kind} ${chalk.bold(\n `\"${entity.namespaceName}\".\"${entity.name}\"`\n )}${getAlias()}`;\n } else if (entity.kind === \"procedure\") {\n return `function ${chalk.bold(\n `\"${entity.namespaceName}\".\"${entity.name}\"(...args...)`\n )}${getAlias()}`;\n } else if (entity.kind === \"attribute\") {\n return `column ${chalk.bold(`\"${entity.name}\"`)} on ${describePgEntity(\n entity.class,\n false\n )}${getAlias()}`;\n }\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error(\"Error occurred while attempting to debug entity:\", entity);\n // eslint-disable-next-line no-console\n console.error(e);\n }\n return `entity of kind '${entity.kind}' with ${\n typeof entity.id === \"string\" ? `oid '${entity.id}'` : \"\"\n }`;\n}\n\nfunction sqlCommentByAddingTags(entity, tagsToAdd) {\n // NOTE: this function is NOT intended to be SQL safe; it's for\n // displaying in error messages. Nonetheless if you find issues with\n // SQL compatibility, please send a PR or issue.\n\n // Ref: https://www.postgresql.org/docs/current/static/sql-syntax-lexical.html#SQL-BACKSLASH-TABLE\n const escape = str =>\n str.replace(\n /['\\\\\\b\\f\\n\\r\\t]/g,\n chr =>\n ({\n \"\\b\": \"\\\\b\",\n \"\\f\": \"\\\\f\",\n \"\\n\": \"\\\\n\",\n \"\\r\": \"\\\\r\",\n \"\\t\": \"\\\\t\",\n }[chr] || \"\\\\\" + chr)\n );\n\n // tagsToAdd is here twice to ensure that the keys in tagsToAdd come first, but that they also \"win\" any conflicts.\n const tags = {\n ...tagsToAdd,\n ...entity.tags,\n ...tagsToAdd,\n };\n\n const description = entity.description;\n const tagsSql = Object.keys(tags)\n .reduce((memo, tag) => {\n const tagValue = tags[tag];\n const valueArray = Array.isArray(tagValue) ? tagValue : [tagValue];\n const highlightOrNot = tag in tagsToAdd ? chalk.bold.green : identity;\n valueArray.forEach(value => {\n memo.push(\n highlightOrNot(\n `@${escape(escape(tag))}${\n value === true ? \"\" : \" \" + escape(escape(value))\n }`\n )\n );\n });\n return memo;\n }, [])\n .join(\"\\\\n\");\n const commentValue = `E'${tagsSql}${\n description ? \"\\\\n\" + escape(description) : \"\"\n }'`;\n let sqlThing;\n if (entity.kind === \"class\") {\n const identifier = `\"${entity.namespaceName}\".\"${entity.name}\"`;\n if (entity.classKind === \"r\") {\n sqlThing = `TABLE ${identifier}`;\n } else if (entity.classKind === \"v\") {\n sqlThing = `VIEW ${identifier}`;\n } else if (entity.classKind === \"m\") {\n sqlThing = `MATERIALIZED VIEW ${identifier}`;\n } else if (entity.classKind === \"c\") {\n sqlThing = `TYPE ${identifier}`;\n } else {\n sqlThing = `PLEASE_SEND_A_PULL_REQUEST_TO_FIX_THIS ${identifier}`;\n }\n } else if (entity.kind === \"attribute\") {\n sqlThing = `COLUMN \"${entity.class.namespaceName}\".\"${entity.class.name}\".\"${entity.name}\"`;\n } else if (entity.kind === \"procedure\") {\n sqlThing = `FUNCTION \"${entity.namespaceName}\".\"${entity.name}\"(...arg types go here...)`;\n } else if (entity.kind === \"constraint\") {\n // TODO: TEST!\n sqlThing = `CONSTRAINT \"${entity.name}\" ON \"${entity.class.namespaceName}\".\"${entity.class.name}\"`;\n } else {\n sqlThing = `UNKNOWN_ENTITY_PLEASE_SEND_A_PULL_REQUEST`;\n }\n\n return `COMMENT ON ${sqlThing} IS ${commentValue};`;\n}\n\nexport default (function PgBasicsPlugin(\n builder,\n {\n pgStrictFunctions = false,\n pgColumnFilter = defaultPgColumnFilter,\n pgIgnoreRBAC = false,\n pgIgnoreIndexes = true, // TODO:v5: change this to false\n pgHideIndexWarnings = false,\n pgLegacyJsonUuid = false, // TODO:v5: remove this\n pgAugmentIntrospectionResults,\n }\n) {\n let pgOmit = baseOmit;\n if (!pgIgnoreRBAC) {\n pgOmit = omitWithRBACChecks(pgOmit);\n }\n if (!pgIgnoreIndexes) {\n pgOmit = omitUnindexed(pgOmit, pgHideIndexWarnings);\n }\n builder.hook(\n \"build\",\n build => {\n build.versions[\"graphile-build-pg\"] = version;\n build.liveCoordinator.registerProvider(new PgLiveProvider());\n return build.extend(build, {\n graphileBuildPgVersion: version,\n pgSql: sql,\n pgStrictFunctions,\n pgColumnFilter,\n\n // TODO:v5: remove this workaround\n // BEWARE: this may be overridden in PgIntrospectionPlugin for PG < 9.5\n pgQueryFromResolveData: queryFromResolveDataFactory(),\n\n pgAddStartEndCursor: addStartEndCursor,\n pgOmit,\n pgMakeProcField: makeProcField,\n pgParseIdentifier: parseIdentifier,\n pgViaTemporaryTable: viaTemporaryTable,\n describePgEntity,\n pgField,\n sqlCommentByAddingTags,\n pgPrepareAndRun,\n pgAugmentIntrospectionResults,\n });\n },\n [\"PgBasics\"]\n );\n\n builder.hook(\n \"inflection\",\n (inflection, build) => {\n // TODO:v5: move this to postgraphile-core\n const oldBuiltin = inflection.builtin;\n inflection.builtin = function (name) {\n if (pgLegacyJsonUuid && name === \"JSON\") return \"Json\";\n if (pgLegacyJsonUuid && name === \"UUID\") return \"Uuid\";\n return oldBuiltin.call(this, name);\n };\n\n return build.extend(\n inflection,\n preventEmptyResult({\n // These helpers are passed GraphQL type names as strings\n conditionType(typeName: string) {\n return this.upperCamelCase(`${typeName}-condition`);\n },\n inputType(typeName: string) {\n return this.upperCamelCase(`${typeName}-input`);\n },\n rangeBoundType(typeName: string) {\n return this.upperCamelCase(`${typeName}-range-bound`);\n },\n rangeType(typeName: string) {\n return this.upperCamelCase(`${typeName}-range`);\n },\n patchType(typeName: string) {\n return this.upperCamelCase(`${typeName}-patch`);\n },\n baseInputType(typeName: string) {\n return this.upperCamelCase(`${typeName}-base-input`);\n },\n patchField(itemName: string) {\n return this.camelCase(`${itemName}-patch`);\n },\n orderByType(typeName: string) {\n return this.upperCamelCase(`${this.pluralize(typeName)}-order-by`);\n },\n edge(typeName: string) {\n return this.upperCamelCase(`${this.pluralize(typeName)}-edge`);\n },\n connection(typeName: string) {\n return this.upperCamelCase(\n `${this.pluralize(typeName)}-connection`\n );\n },\n\n // These helpers handle overrides via smart comments. They should only\n // be used in other inflectors, hence the underscore prefix.\n //\n // IMPORTANT: do NOT do case transforms here, because detail can be\n // lost, e.g.\n // `constantCase(camelCase('foo_1')) !== constantCase('foo_1')`\n _functionName(proc: PgProc) {\n return this.coerceToGraphQLName(proc.tags.name || proc.name);\n },\n _typeName(type: PgType) {\n // 'type' introspection result\n return this.coerceToGraphQLName(type.tags.name || type.name);\n },\n _tableName(table: PgClass) {\n return this.coerceToGraphQLName(\n table.tags.name || table.type.tags.name || table.name\n );\n },\n _singularizedTableName(table: PgClass): string {\n return this.singularize(this._tableName(table)).replace(\n /.(?:(?:[_-]i|I)nput|(?:[_-]p|P)atch)$/,\n \"$&_record\"\n );\n },\n _columnName(attr: PgAttribute, _options?: { skipRowId?: boolean }) {\n return this.coerceToGraphQLName(attr.tags.name || attr.name);\n },\n\n // From here down, functions are passed database introspection results\n enumType(type: PgType) {\n if (type.tags.enumName) {\n return type.tags.enumName;\n }\n return this.upperCamelCase(this._typeName(type));\n },\n argument(name: ?string, index: number) {\n return this.coerceToGraphQLName(\n this.camelCase(name || `arg${index}`)\n );\n },\n orderByEnum(columnName, ascending) {\n return this.constantCase(\n `${columnName}_${ascending ? \"asc\" : \"desc\"}`\n );\n },\n orderByColumnEnum(attr: PgAttribute, ascending: boolean) {\n const columnName = this._columnName(attr, {\n skipRowId: true, // Because we messed up 😔\n });\n return this.orderByEnum(columnName, ascending);\n },\n orderByComputedColumnEnum(\n pseudoColumnName: string,\n proc: PgProc,\n table: PgClass,\n ascending: boolean\n ) {\n const columnName = this.computedColumn(\n pseudoColumnName,\n proc,\n table\n );\n return this.orderByEnum(columnName, ascending);\n },\n domainType(type: PgType) {\n return this.upperCamelCase(this._typeName(type));\n },\n enumName(inValue: string) {\n let value = inValue;\n\n if (value === \"\") {\n return \"_EMPTY_\";\n }\n\n // Some enums use asterisks to signify wildcards - this might be for\n // the whole item, or prefixes/suffixes, or even in the middle. This\n // is provided on a best efforts basis, if it doesn't suit your\n // purposes then please pass a custom inflector as mentioned below.\n value = value\n .replace(/\\*/g, \"_ASTERISK_\")\n .replace(/^(_?)_+ASTERISK/, \"$1ASTERISK\")\n .replace(/ASTERISK_(_?)_*$/, \"ASTERISK$1\");\n\n // This is a best efforts replacement for common symbols that you\n // might find in enums. Generally we only support enums that are\n // alphanumeric, if these replacements don't work for you, you should\n // pass a custom inflector that replaces this `enumName` method\n // with one of your own chosing.\n value =\n {\n // SQL comparison operators\n \">\": \"GREATER_THAN\",\n \">=\": \"GREATER_THAN_OR_EQUAL\",\n \"=\": \"EQUAL\",\n \"!=\": \"NOT_EQUAL\",\n \"<>\": \"DIFFERENT\",\n \"<=\": \"LESS_THAN_OR_EQUAL\",\n \"<\": \"LESS_THAN\",\n\n // PostgreSQL LIKE shortcuts\n \"~~\": \"LIKE\",\n \"~~*\": \"ILIKE\",\n \"!~~\": \"NOT_LIKE\",\n \"!~~*\": \"NOT_ILIKE\",\n\n // '~' doesn't necessarily represent regexps, but the three\n // operators following it likely do, so we'll use the word TILDE\n // in all for consistency.\n \"~\": \"TILDE\",\n \"~*\": \"TILDE_ASTERISK\",\n \"!~\": \"NOT_TILDE\",\n \"!~*\": \"NOT_TILDE_ASTERISK\",\n\n // A number of other symbols where we're not sure of their\n // meaning. We give them common generic names so that they're\n // suitable for multiple purposes, e.g. favouring 'PLUS' over\n // 'ADDITION' and 'DOT' over 'FULL_STOP'\n \"%\": \"PERCENT\",\n \"+\": \"PLUS\",\n \"-\": \"MINUS\",\n \"/\": \"SLASH\",\n \"\\\\\": \"BACKSLASH\",\n _: \"UNDERSCORE\",\n \"#\": \"POUND\",\n \"£\": \"STERLING\",\n $: \"DOLLAR\",\n \"&\": \"AMPERSAND\",\n \"@\": \"AT\",\n \"'\": \"APOSTROPHE\",\n '\"': \"QUOTE\",\n \"`\": \"BACKTICK\",\n \":\": \"COLON\",\n \";\": \"SEMICOLON\",\n \"!\": \"EXCLAMATION_POINT\",\n \"?\": \"QUESTION_MARK\",\n \",\": \"COMMA\",\n \".\": \"DOT\",\n \"^\": \"CARET\",\n \"|\": \"BAR\",\n \"[\": \"OPEN_BRACKET\",\n \"]\": \"CLOSE_BRACKET\",\n \"(\": \"OPEN_PARENTHESIS\",\n \")\": \"CLOSE_PARENTHESIS\",\n \"{\": \"OPEN_BRACE\",\n \"}\": \"CLOSE_BRACE\",\n }[value] || value;\n return value;\n },\n\n tableNode(table: PgClass) {\n return this.camelCase(this._singularizedTableName(table));\n },\n tableFieldName(table: PgClass) {\n return this.camelCase(this._singularizedTableName(table));\n },\n allRows(table: PgClass) {\n return this.camelCase(\n `all-${this.pluralize(this._singularizedTableName(table))}`\n );\n },\n allRowsSimple(table: PgClass) {\n return this.camelCase(\n `all-${this.pluralize(this._singularizedTableName(table))}-list`\n );\n },\n functionMutationName(proc: PgProc) {\n return this.camelCase(this._functionName(proc));\n },\n functionMutationResultFieldName(\n proc: PgProc,\n gqlType,\n plural: boolean = false,\n outputArgNames: Array<string> = []\n ) {\n if (proc.tags.resultFieldName) {\n return proc.tags.resultFieldName;\n }\n let name;\n if (outputArgNames.length === 1 && outputArgNames[0] !== \"\") {\n name = this.camelCase(outputArgNames[0]);\n } else if (gqlType.name === \"Int\") {\n name = \"integer\";\n } else if (gqlType.name === \"Float\") {\n name = \"float\";\n } else if (gqlType.name === \"Boolean\") {\n name = \"boolean\";\n } else if (gqlType.name === \"String\") {\n name = \"string\";\n } else if (proc.returnTypeId === \"2249\") {\n // returns a record type\n name = \"result\";\n } else {\n name = this.camelCase(gqlType.name);\n }\n return plural ? this.pluralize(name) : name;\n },\n functionQueryName(proc: PgProc) {\n return this.camelCase(this._functionName(proc));\n },\n functionQueryNameList(proc: PgProc) {\n return this.camelCase(`${this._functionName(proc)}-list`);\n },\n functionPayloadType(proc: PgProc) {\n return this.upperCamelCase(`${this._functionName(proc)}-payload`);\n },\n functionInputType(proc: PgProc) {\n return this.upperCamelCase(`${this._functionName(proc)}-input`);\n },\n functionOutputFieldName(\n proc: PgProc,\n outputArgName: string,\n index: number\n ) {\n return this.argument(outputArgName, index);\n },\n tableType(table: PgClass) {\n return this.upperCamelCase(this._singularizedTableName(table));\n },\n column(attr: PgAttribute) {\n return this.camelCase(this._columnName(attr));\n },\n computedColumn(\n pseudoColumnName: string,\n proc: PgProc,\n _table: PgClass\n ) {\n return proc.tags.fieldName || this.camelCase(pseudoColumnName);\n },\n computedColumnList(\n pseudoColumnName: string,\n proc: PgProc,\n _table: PgClass\n ) {\n return proc.tags.fieldName\n ? proc.tags.fieldName + \"List\"\n : this.camelCase(`${pseudoColumnName}-list`);\n },\n singleRelationByKeys(\n detailedKeys: Keys,\n table: PgClass,\n _foreignTable: PgClass,\n constraint: PgConstraint\n ) {\n if (constraint.tags.fieldName) {\n return constraint.tags.fieldName;\n }\n return this.camelCase(\n `${this._singularizedTableName(\n table\n )}-by-${detailedKeys.map(key => this.column(key)).join(\"-and-\")}`\n );\n },\n singleRelationByKeysBackwards(\n detailedKeys: Keys,\n table: PgClass,\n _foreignTable: PgClass,\n constraint: PgConstraint\n ) {\n if (constraint.tags.foreignSingleFieldName) {\n return constraint.tags.foreignSingleFieldName;\n }\n if (constraint.tags.foreignFieldName) {\n return constraint.tags.foreignFieldName;\n }\n return this.singleRelationByKeys(\n detailedKeys,\n table,\n _foreignTable,\n constraint\n );\n },\n manyRelationByKeys(\n detailedKeys: Keys,\n table: PgClass,\n _foreignTable: PgClass,\n constraint: PgConstraint\n ) {\n if (constraint.tags.foreignFieldName) {\n return constraint.tags.foreignFieldName;\n }\n return this.camelCase(\n `${this.pluralize(\n this._singularizedTableName(table)\n )}-by-${detailedKeys.map(key => this.column(key)).join(\"-and-\")}`\n );\n },\n manyRelationByKeysSimple(\n detailedKeys: Keys,\n table: PgClass,\n _foreignTable: PgClass,\n constraint: PgConstraint\n ) {\n if (constraint.tags.foreignSimpleFieldName) {\n return constraint.tags.foreignSimpleFieldName;\n }\n if (constraint.tags.foreignFieldName) {\n return constraint.tags.foreignFieldName;\n }\n return this.camelCase(\n `${this.pluralize(\n this._singularizedTableName(table)\n )}-by-${detailedKeys\n .map(key => this.column(key))\n .join(\"-and-\")}-list`\n );\n },\n rowByUniqueKeys(\n detailedKeys: Keys,\n table: PgClass,\n constraint: PgConstraint\n ) {\n if (constraint.tags.fieldName) {\n return constraint.tags.fieldName;\n }\n return this.camelCase(\n `${this._singularizedTableName(\n table\n )}-by-${detailedKeys.map(key => this.column(key)).join(\"-and-\")}`\n );\n },\n updateByKeys(\n detailedKeys: Keys,\n table: PgClass,\n constraint: PgConstraint\n ) {\n if (constraint.tags.updateFieldName) {\n return constraint.tags.updateFieldName;\n }\n return this.camelCase(\n `update-${this._singularizedTableName(\n table\n )}-by-${detailedKeys.map(key => this.column(key)).join(\"-and-\")}`\n );\n },\n deleteByKeys(\n detailedKeys: Keys,\n table: PgClass,\n constraint: PgConstraint\n ) {\n if (constraint.tags.deleteFieldName) {\n return constraint.tags.deleteFieldName;\n }\n return this.camelCase(\n `delete-${this._singularizedTableName(\n table\n )}-by-${detailedKeys.map(key => this.column(key)).join(\"-and-\")}`\n );\n },\n updateByKeysInputType(\n detailedKeys: Keys,\n table: PgClass,\n constraint: PgConstraint\n ) {\n if (constraint.tags.updateFieldName) {\n return this.upperCamelCase(\n `${constraint.tags.updateFieldName}-input`\n );\n }\n return this.upperCamelCase(\n `update-${this._singularizedTableName(\n table\n )}-by-${detailedKeys\n .map(key => this.column(key))\n .join(\"-and-\")}-input`\n );\n },\n deleteByKeysInputType(\n detailedKeys: Keys,\n table: PgClass,\n constraint: PgConstraint\n ) {\n if (constraint.tags.deleteFieldName) {\n return this.upperCamelCase(\n `${constraint.tags.deleteFieldName}-input`\n );\n }\n return this.upperCamelCase(\n `delete-${this._singularizedTableName(\n table\n )}-by-${detailedKeys\n .map(key => this.column(key))\n .join(\"-and-\")}-input`\n );\n },\n updateNode(table: PgClass) {\n return this.camelCase(\n `update-${this._singularizedTableName(table)}`\n );\n },\n deleteNode(table: PgClass) {\n return this.camelCase(\n `delete-${this._singularizedTableName(table)}`\n );\n },\n deletedNodeId(table: PgClass) {\n return this.camelCase(`deleted-${this.singularize(table.name)}-id`);\n },\n updateNodeInputType(table: PgClass) {\n return this.upperCamelCase(\n `update-${this._singularizedTableName(table)}-input`\n );\n },\n deleteNodeInputType(table: PgClass) {\n return this.upperCamelCase(\n `delete-${this._singularizedTableName(table)}-input`\n );\n },\n edgeField(table: PgClass) {\n return this.camelCase(`${this._singularizedTableName(table)}-edge`);\n },\n recordFunctionReturnType(proc: PgProc) {\n return (\n proc.tags.resultTypeName ||\n this.upperCamelCase(`${this._functionName(proc)}-record`)\n );\n },\n recordFunctionConnection(proc: PgProc) {\n return this.upperCamelCase(\n `${this._functionName(proc)}-connection`\n );\n },\n recordFunctionEdge(proc: PgProc) {\n return this.upperCamelCase(\n `${this.singularize(this._functionName(proc))}-edge`\n );\n },\n scalarFunctionConnection(proc: PgProc) {\n return this.upperCamelCase(\n `${this._functionName(proc)}-connection`\n );\n },\n scalarFunctionEdge(proc: PgProc) {\n return this.upperCamelCase(\n `${this.singularize(this._functionName(proc))}-edge`\n );\n },\n createField(table: PgClass) {\n return this.camelCase(\n `create-${this._singularizedTableName(table)}`\n );\n },\n createInputType(table: PgClass) {\n return this.upperCamelCase(\n `create-${this._singularizedTableName(table)}-input`\n );\n },\n createPayloadType(table: PgClass) {\n return this.upperCamelCase(\n `create-${this._singularizedTableName(table)}-payload`\n );\n },\n updatePayloadType(table: PgClass) {\n return this.upperCamelCase(\n `update-${this._singularizedTableName(table)}-payload`\n );\n },\n deletePayloadType(table: PgClass) {\n return this.upperCamelCase(\n `delete-${this._singularizedTableName(table)}-payload`\n );\n },\n }),\n \"Default inflectors from PgBasicsPlugin. You can override these with `makeAddInflectorsPlugin(..., true)`.\"\n );\n },\n [\"PgBasics\"]\n );\n}: Plugin);\n"],"file":"PgBasicsPlugin.js"}
@@ -85,7 +85,7 @@ var PgConditionComputedColumnPlugin = function PgConditionComputedColumnPlugin(b
85
85
  if (!Type) return memo;
86
86
  memo = build.extend(memo, {
87
87
  [fieldName]: fieldWithHooks(fieldName, {
88
- description: `Checks for equality with the object’s \`${fieldName}\` field.`,
88
+ description: build.wrapDescription(`Checks for equality with the object’s \`${fieldName}\` field.`, "field"),
89
89
  type: Type
90
90
  }, {
91
91
  isPgConnectionConditionInputField: true,
@@ -84,7 +84,10 @@ export default (function PgConditionComputedColumnPlugin(builder) {
84
84
  [fieldName]: fieldWithHooks(
85
85
  fieldName,
86
86
  {
87
- description: `Checks for equality with the object’s \`${fieldName}\` field.`,
87
+ description: build.wrapDescription(
88
+ `Checks for equality with the object’s \`${fieldName}\` field.`,
89
+ "field"
90
+ ),
88
91
  type: Type,
89
92
  },
90
93
  {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/plugins/PgConditionComputedColumnPlugin.js"],"names":["getCompatibleComputedColumns","build","table","pgIntrospectionResultsByKind","introspectionResultsByKind","pgOmit","omit","procedure","reduce","memo","proc","tags","filterable","computedColumnDetails","pseudoColumnName","nonOptionalArgumentsCount","inputArgsCount","argDefaultsNum","returnsSet","returnType","typeById","returnTypeId","isPgArray","returnTypeTable","classById","classId","isRecordLike","id","isVoid","String","push","PgConditionComputedColumnPlugin","builder","hook","fields","context","extend","pgGetGqlInputTypeByTypeIdAndModifier","inflection","describePgEntity","scope","isPgCondition","pgIntrospection","fieldWithHooks","kind","compatibleComputedColumns","fieldName","computedColumn","Type","description","type","isPgConnectionConditionInputField","pgFieldIntrospection","args","pgSql","sql","gql2pg","getTypeByName","pgGetGqlTypeByTypeIdAndModifier","graphql","getNullableType","isPgFieldConnection","isPgFieldSimpleCollection","pgFieldIntrospectionTable","addArgDataGenerator","shouldAddCondition","condition","namespace","TableType","TableConditionType","conditionType","name","map","o","sqlFnName","identifier","namespaceName","connectionCondition","pgQuery","queryBuilder","forEach","val","sqlCall","fragment","getTableAlias","where"],"mappings":"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","sourcesContent":["// @flow\nimport type { Plugin } from \"graphile-build\";\nimport { getComputedColumnDetails } from \"./PgComputedColumnsPlugin\";\nimport assert from \"assert\";\nfunction getCompatibleComputedColumns(build, table) {\n const {\n pgIntrospectionResultsByKind: introspectionResultsByKind,\n pgOmit: omit,\n } = build;\n return introspectionResultsByKind.procedure.reduce((memo, proc) => {\n /* ALSO SEE PgOrderComputedColumnsPlugin */\n // Must be marked @filterable\n if (!proc.tags.filterable) return memo;\n\n // Must not be omitted\n if (omit(proc, \"execute\")) return memo;\n\n // Must be a computed column\n const computedColumnDetails = getComputedColumnDetails(build, table, proc);\n if (!computedColumnDetails) return memo;\n const { pseudoColumnName } = computedColumnDetails;\n\n // Must have only one required argument\n const nonOptionalArgumentsCount = proc.inputArgsCount - proc.argDefaultsNum;\n if (nonOptionalArgumentsCount > 1) {\n return memo;\n }\n\n // Must return a scalar\n if (proc.returnsSet) return memo;\n const returnType = introspectionResultsByKind.typeById[proc.returnTypeId];\n if (returnType.isPgArray) return memo;\n const returnTypeTable =\n introspectionResultsByKind.classById[returnType.classId];\n if (returnTypeTable) return memo;\n const isRecordLike = returnType.id === \"2249\";\n if (isRecordLike) return memo;\n const isVoid = String(returnType.id) === \"2278\";\n if (isVoid) return memo;\n\n // Looks good\n memo.push({ proc, pseudoColumnName, returnType });\n return memo;\n }, []);\n}\n\nexport default (function PgConditionComputedColumnPlugin(builder) {\n builder.hook(\n \"GraphQLInputObjectType:fields\",\n (fields, build, context) => {\n const {\n extend,\n pgGetGqlInputTypeByTypeIdAndModifier,\n inflection,\n describePgEntity,\n } = build;\n const {\n scope: { isPgCondition, pgIntrospection: table },\n fieldWithHooks,\n } = context;\n if (!isPgCondition || !table || table.kind !== \"class\") {\n return fields;\n }\n const compatibleComputedColumns = getCompatibleComputedColumns(\n build,\n table\n );\n return extend(\n fields,\n compatibleComputedColumns.reduce((memo, { proc, pseudoColumnName }) => {\n const fieldName = inflection.computedColumn(\n pseudoColumnName,\n proc,\n table\n );\n const Type = pgGetGqlInputTypeByTypeIdAndModifier(\n proc.returnTypeId,\n null\n );\n if (!Type) return memo;\n memo = build.extend(\n memo,\n {\n [fieldName]: fieldWithHooks(\n fieldName,\n {\n description: `Checks for equality with the object’s \\`${fieldName}\\` field.`,\n type: Type,\n },\n {\n isPgConnectionConditionInputField: true,\n pgFieldIntrospection: proc,\n }\n ),\n },\n `Adding computed column condition argument for ${describePgEntity(\n proc\n )}`\n );\n return memo;\n }, {})\n );\n },\n [\"PgConditionComputedColumn\"]\n );\n\n builder.hook(\n \"GraphQLObjectType:fields:field:args\",\n (args, build, context) => {\n const {\n pgSql: sql,\n gql2pg,\n getTypeByName,\n pgGetGqlTypeByTypeIdAndModifier,\n inflection,\n pgOmit: omit,\n graphql: { getNullableType },\n } = build;\n const {\n scope: {\n isPgFieldConnection,\n isPgFieldSimpleCollection,\n pgFieldIntrospection,\n pgFieldIntrospectionTable,\n },\n addArgDataGenerator,\n } = context;\n\n const shouldAddCondition =\n isPgFieldConnection || isPgFieldSimpleCollection;\n if (!shouldAddCondition) return args;\n if (!args.condition) {\n return args;\n }\n const proc =\n pgFieldIntrospection.kind === \"procedure\" ? pgFieldIntrospection : null;\n const table =\n pgFieldIntrospection.kind === \"class\"\n ? pgFieldIntrospection\n : proc\n ? pgFieldIntrospectionTable\n : null;\n if (\n !table ||\n table.kind !== \"class\" ||\n !table.namespace ||\n omit(table, \"filter\")\n ) {\n return args;\n }\n const TableType = pgGetGqlTypeByTypeIdAndModifier(table.type.id, null);\n const TableConditionType = getTypeByName(\n inflection.conditionType(TableType.name)\n );\n if (!TableConditionType) {\n return args;\n }\n assert(\n getNullableType(args.condition.type) === TableConditionType,\n \"Condition is present, but doesn't match?\"\n );\n\n const compatibleComputedColumns = getCompatibleComputedColumns(\n build,\n table\n ).map(o => {\n const { proc, pseudoColumnName } = o;\n\n const fieldName = inflection.computedColumn(\n pseudoColumnName,\n proc,\n table\n );\n const sqlFnName = sql.identifier(proc.namespaceName, proc.name);\n return {\n ...o,\n fieldName,\n sqlFnName,\n };\n });\n addArgDataGenerator(function connectionCondition({ condition }) {\n return {\n pgQuery: queryBuilder => {\n if (condition != null) {\n compatibleComputedColumns.forEach(\n ({ fieldName, sqlFnName, returnType }) => {\n const val = condition[fieldName];\n const sqlCall = sql.fragment`${sqlFnName}(${queryBuilder.getTableAlias()})`;\n if (val != null) {\n queryBuilder.where(\n sql.fragment`${sqlCall} = ${gql2pg(\n val,\n returnType,\n null\n )}`\n );\n } else if (val === null) {\n queryBuilder.where(sql.fragment`${sqlCall} IS NULL`);\n }\n }\n );\n }\n },\n };\n });\n\n return args;\n },\n [\"PgConditionComputedColumn\"]\n );\n}: Plugin);\n"],"file":"PgConditionComputedColumnPlugin.js"}
1
+ {"version":3,"sources":["../../src/plugins/PgConditionComputedColumnPlugin.js"],"names":["getCompatibleComputedColumns","build","table","pgIntrospectionResultsByKind","introspectionResultsByKind","pgOmit","omit","procedure","reduce","memo","proc","tags","filterable","computedColumnDetails","pseudoColumnName","nonOptionalArgumentsCount","inputArgsCount","argDefaultsNum","returnsSet","returnType","typeById","returnTypeId","isPgArray","returnTypeTable","classById","classId","isRecordLike","id","isVoid","String","push","PgConditionComputedColumnPlugin","builder","hook","fields","context","extend","pgGetGqlInputTypeByTypeIdAndModifier","inflection","describePgEntity","scope","isPgCondition","pgIntrospection","fieldWithHooks","kind","compatibleComputedColumns","fieldName","computedColumn","Type","description","wrapDescription","type","isPgConnectionConditionInputField","pgFieldIntrospection","args","pgSql","sql","gql2pg","getTypeByName","pgGetGqlTypeByTypeIdAndModifier","graphql","getNullableType","isPgFieldConnection","isPgFieldSimpleCollection","pgFieldIntrospectionTable","addArgDataGenerator","shouldAddCondition","condition","namespace","TableType","TableConditionType","conditionType","name","map","o","sqlFnName","identifier","namespaceName","connectionCondition","pgQuery","queryBuilder","forEach","val","sqlCall","fragment","getTableAlias","where"],"mappings":"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","sourcesContent":["// @flow\nimport type { Plugin } from \"graphile-build\";\nimport { getComputedColumnDetails } from \"./PgComputedColumnsPlugin\";\nimport assert from \"assert\";\nfunction getCompatibleComputedColumns(build, table) {\n const {\n pgIntrospectionResultsByKind: introspectionResultsByKind,\n pgOmit: omit,\n } = build;\n return introspectionResultsByKind.procedure.reduce((memo, proc) => {\n /* ALSO SEE PgOrderComputedColumnsPlugin */\n // Must be marked @filterable\n if (!proc.tags.filterable) return memo;\n\n // Must not be omitted\n if (omit(proc, \"execute\")) return memo;\n\n // Must be a computed column\n const computedColumnDetails = getComputedColumnDetails(build, table, proc);\n if (!computedColumnDetails) return memo;\n const { pseudoColumnName } = computedColumnDetails;\n\n // Must have only one required argument\n const nonOptionalArgumentsCount = proc.inputArgsCount - proc.argDefaultsNum;\n if (nonOptionalArgumentsCount > 1) {\n return memo;\n }\n\n // Must return a scalar\n if (proc.returnsSet) return memo;\n const returnType = introspectionResultsByKind.typeById[proc.returnTypeId];\n if (returnType.isPgArray) return memo;\n const returnTypeTable =\n introspectionResultsByKind.classById[returnType.classId];\n if (returnTypeTable) return memo;\n const isRecordLike = returnType.id === \"2249\";\n if (isRecordLike) return memo;\n const isVoid = String(returnType.id) === \"2278\";\n if (isVoid) return memo;\n\n // Looks good\n memo.push({ proc, pseudoColumnName, returnType });\n return memo;\n }, []);\n}\n\nexport default (function PgConditionComputedColumnPlugin(builder) {\n builder.hook(\n \"GraphQLInputObjectType:fields\",\n (fields, build, context) => {\n const {\n extend,\n pgGetGqlInputTypeByTypeIdAndModifier,\n inflection,\n describePgEntity,\n } = build;\n const {\n scope: { isPgCondition, pgIntrospection: table },\n fieldWithHooks,\n } = context;\n if (!isPgCondition || !table || table.kind !== \"class\") {\n return fields;\n }\n const compatibleComputedColumns = getCompatibleComputedColumns(\n build,\n table\n );\n return extend(\n fields,\n compatibleComputedColumns.reduce((memo, { proc, pseudoColumnName }) => {\n const fieldName = inflection.computedColumn(\n pseudoColumnName,\n proc,\n table\n );\n const Type = pgGetGqlInputTypeByTypeIdAndModifier(\n proc.returnTypeId,\n null\n );\n if (!Type) return memo;\n memo = build.extend(\n memo,\n {\n [fieldName]: fieldWithHooks(\n fieldName,\n {\n description: build.wrapDescription(\n `Checks for equality with the object’s \\`${fieldName}\\` field.`,\n \"field\"\n ),\n type: Type,\n },\n {\n isPgConnectionConditionInputField: true,\n pgFieldIntrospection: proc,\n }\n ),\n },\n `Adding computed column condition argument for ${describePgEntity(\n proc\n )}`\n );\n return memo;\n }, {})\n );\n },\n [\"PgConditionComputedColumn\"]\n );\n\n builder.hook(\n \"GraphQLObjectType:fields:field:args\",\n (args, build, context) => {\n const {\n pgSql: sql,\n gql2pg,\n getTypeByName,\n pgGetGqlTypeByTypeIdAndModifier,\n inflection,\n pgOmit: omit,\n graphql: { getNullableType },\n } = build;\n const {\n scope: {\n isPgFieldConnection,\n isPgFieldSimpleCollection,\n pgFieldIntrospection,\n pgFieldIntrospectionTable,\n },\n addArgDataGenerator,\n } = context;\n\n const shouldAddCondition =\n isPgFieldConnection || isPgFieldSimpleCollection;\n if (!shouldAddCondition) return args;\n if (!args.condition) {\n return args;\n }\n const proc =\n pgFieldIntrospection.kind === \"procedure\" ? pgFieldIntrospection : null;\n const table =\n pgFieldIntrospection.kind === \"class\"\n ? pgFieldIntrospection\n : proc\n ? pgFieldIntrospectionTable\n : null;\n if (\n !table ||\n table.kind !== \"class\" ||\n !table.namespace ||\n omit(table, \"filter\")\n ) {\n return args;\n }\n const TableType = pgGetGqlTypeByTypeIdAndModifier(table.type.id, null);\n const TableConditionType = getTypeByName(\n inflection.conditionType(TableType.name)\n );\n if (!TableConditionType) {\n return args;\n }\n assert(\n getNullableType(args.condition.type) === TableConditionType,\n \"Condition is present, but doesn't match?\"\n );\n\n const compatibleComputedColumns = getCompatibleComputedColumns(\n build,\n table\n ).map(o => {\n const { proc, pseudoColumnName } = o;\n\n const fieldName = inflection.computedColumn(\n pseudoColumnName,\n proc,\n table\n );\n const sqlFnName = sql.identifier(proc.namespaceName, proc.name);\n return {\n ...o,\n fieldName,\n sqlFnName,\n };\n });\n addArgDataGenerator(function connectionCondition({ condition }) {\n return {\n pgQuery: queryBuilder => {\n if (condition != null) {\n compatibleComputedColumns.forEach(\n ({ fieldName, sqlFnName, returnType }) => {\n const val = condition[fieldName];\n const sqlCall = sql.fragment`${sqlFnName}(${queryBuilder.getTableAlias()})`;\n if (val != null) {\n queryBuilder.where(\n sql.fragment`${sqlCall} = ${gql2pg(\n val,\n returnType,\n null\n )}`\n );\n } else if (val === null) {\n queryBuilder.where(sql.fragment`${sqlCall} IS NULL`);\n }\n }\n );\n }\n },\n };\n });\n\n return args;\n },\n [\"PgConditionComputedColumn\"]\n );\n}: Plugin);\n"],"file":"PgConditionComputedColumnPlugin.js"}
@@ -29,7 +29,7 @@ var PgConnectionArgCondition = function PgConnectionArgCondition(builder) {
29
29
  /* const TableConditionType = */
30
30
 
31
31
  newWithHooks(GraphQLInputObjectType, {
32
- description: `A condition to be used against \`${tableTypeName}\` object types. All fields are tested for equality and combined with a logical ‘and.’`,
32
+ description: build.wrapDescription(`A condition to be used against \`${tableTypeName}\` object types. All fields are tested for equality and combined with a logical ‘and.’`, "type"),
33
33
  name: inflection.conditionType(inflection.tableType(table)),
34
34
  fields: context => {
35
35
  const {
@@ -42,7 +42,7 @@ var PgConnectionArgCondition = function PgConnectionArgCondition(builder) {
42
42
  const fieldName = inflection.column(attr);
43
43
  memo = build.extend(memo, {
44
44
  [fieldName]: fieldWithHooks(fieldName, {
45
- description: `Checks for equality with the object’s \`${fieldName}\` field.`,
45
+ description: build.wrapDescription(`Checks for equality with the object’s \`${fieldName}\` field.`, "field"),
46
46
  type: pgGetGqlInputTypeByTypeIdAndModifier(attr.typeId, attr.typeModifier) || GraphQLString
47
47
  }, {
48
48
  isPgConnectionConditionInputField: true
@@ -131,7 +131,7 @@ var PgConnectionArgCondition = function PgConnectionArgCondition(builder) {
131
131
  });
132
132
  return extend(args, {
133
133
  condition: {
134
- description: "A condition to be used in determining which values should be returned by the collection.",
134
+ description: build.wrapDescription("A condition to be used in determining which values should be returned by the collection.", "arg"),
135
135
  type: TableConditionType
136
136
  }
137
137
  }, `Adding condition to connection field '${fieldName}' of '${Self.name}'`);
@@ -26,7 +26,10 @@ export default (function PgConnectionArgCondition(builder) {
26
26
  newWithHooks(
27
27
  GraphQLInputObjectType,
28
28
  {
29
- description: `A condition to be used against \`${tableTypeName}\` object types. All fields are tested for equality and combined with a logical ‘and.’`,
29
+ description: build.wrapDescription(
30
+ `A condition to be used against \`${tableTypeName}\` object types. All fields are tested for equality and combined with a logical ‘and.’`,
31
+ "type"
32
+ ),
30
33
  name: inflection.conditionType(inflection.tableType(table)),
31
34
  fields: context => {
32
35
  const { fieldWithHooks } = context;
@@ -42,7 +45,10 @@ export default (function PgConnectionArgCondition(builder) {
42
45
  [fieldName]: fieldWithHooks(
43
46
  fieldName,
44
47
  {
45
- description: `Checks for equality with the object’s \`${fieldName}\` field.`,
48
+ description: build.wrapDescription(
49
+ `Checks for equality with the object’s \`${fieldName}\` field.`,
50
+ "field"
51
+ ),
46
52
  type:
47
53
  pgGetGqlInputTypeByTypeIdAndModifier(
48
54
  attr.typeId,
@@ -181,8 +187,10 @@ export default (function PgConnectionArgCondition(builder) {
181
187
  args,
182
188
  {
183
189
  condition: {
184
- description:
190
+ description: build.wrapDescription(
185
191
  "A condition to be used in determining which values should be returned by the collection.",
192
+ "arg"
193
+ ),
186
194
  type: TableConditionType,
187
195
  },
188
196
  },
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/plugins/PgConnectionArgCondition.js"],"names":["PgConnectionArgCondition","builder","hook","_","build","newWithHooks","pgIntrospectionResultsByKind","introspectionResultsByKind","pgGetGqlInputTypeByTypeIdAndModifier","graphql","GraphQLInputObjectType","GraphQLString","pgColumnFilter","inflection","pgOmit","omit","describePgEntity","sqlCommentByAddingTags","class","forEach","table","isSelectable","namespace","tableTypeName","tableType","description","name","conditionType","fields","context","fieldWithHooks","attributes","reduce","memo","attr","fieldName","column","extend","type","typeId","typeModifier","isPgConnectionConditionInputField","__origin","pgIntrospection","isPgCondition","args","pgSql","sql","gql2pg","getTypeByName","pgGetGqlTypeByTypeIdAndModifier","scope","isPgFieldConnection","isPgFieldSimpleCollection","pgFieldIntrospection","pgFieldIntrospectionTable","addArgDataGenerator","Self","shouldAddCondition","proc","kind","tags","filterable","TableType","id","TableConditionType","relevantAttributes","filter","connectionCondition","condition","pgQuery","queryBuilder","val","addLiveCondition","record","where","fragment","getTableAlias","identifier"],"mappings":"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","sourcesContent":["// @flow\nimport type { Plugin } from \"graphile-build\";\n\nexport default (function PgConnectionArgCondition(builder) {\n builder.hook(\n \"init\",\n (_, build) => {\n const {\n newWithHooks,\n pgIntrospectionResultsByKind: introspectionResultsByKind,\n pgGetGqlInputTypeByTypeIdAndModifier,\n graphql: { GraphQLInputObjectType, GraphQLString },\n pgColumnFilter,\n inflection,\n pgOmit: omit,\n describePgEntity,\n sqlCommentByAddingTags,\n } = build;\n introspectionResultsByKind.class.forEach(table => {\n // PERFORMANCE: These used to be .filter(...) calls\n if (!table.isSelectable || omit(table, \"filter\")) return;\n if (!table.namespace) return;\n\n const tableTypeName = inflection.tableType(table);\n /* const TableConditionType = */\n newWithHooks(\n GraphQLInputObjectType,\n {\n description: `A condition to be used against \\`${tableTypeName}\\` object types. All fields are tested for equality and combined with a logical ‘and.’`,\n name: inflection.conditionType(inflection.tableType(table)),\n fields: context => {\n const { fieldWithHooks } = context;\n return table.attributes.reduce((memo, attr) => {\n // PERFORMANCE: These used to be .filter(...) calls\n if (!pgColumnFilter(attr, build, context)) return memo;\n if (omit(attr, \"filter\")) return memo;\n\n const fieldName = inflection.column(attr);\n memo = build.extend(\n memo,\n {\n [fieldName]: fieldWithHooks(\n fieldName,\n {\n description: `Checks for equality with the object’s \\`${fieldName}\\` field.`,\n type:\n pgGetGqlInputTypeByTypeIdAndModifier(\n attr.typeId,\n attr.typeModifier\n ) || GraphQLString,\n },\n {\n isPgConnectionConditionInputField: true,\n }\n ),\n },\n `Adding condition argument for ${describePgEntity(attr)}`\n );\n return memo;\n }, {});\n },\n },\n {\n __origin: `Adding condition 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 pgIntrospection: table,\n isPgCondition: true,\n },\n true // Conditions might all be filtered\n );\n });\n return _;\n },\n [\"PgConnectionArgCondition\"],\n [],\n [\"PgTypes\"]\n );\n\n builder.hook(\n \"GraphQLObjectType:fields:field:args\",\n (args, build, context) => {\n const {\n pgSql: sql,\n gql2pg,\n extend,\n getTypeByName,\n pgGetGqlTypeByTypeIdAndModifier,\n pgColumnFilter,\n inflection,\n pgOmit: omit,\n } = build;\n const {\n scope: {\n fieldName,\n isPgFieldConnection,\n isPgFieldSimpleCollection,\n pgFieldIntrospection,\n pgFieldIntrospectionTable,\n },\n addArgDataGenerator,\n Self,\n } = context;\n\n const shouldAddCondition =\n isPgFieldConnection || isPgFieldSimpleCollection;\n if (!shouldAddCondition) return args;\n\n const proc =\n pgFieldIntrospection.kind === \"procedure\" ? pgFieldIntrospection : null;\n const table =\n pgFieldIntrospection.kind === \"class\"\n ? pgFieldIntrospection\n : proc\n ? pgFieldIntrospectionTable\n : null;\n if (\n !table ||\n table.kind !== \"class\" ||\n !table.namespace ||\n omit(table, \"filter\")\n ) {\n return args;\n }\n if (proc) {\n if (!proc.tags.filterable) {\n return args;\n }\n }\n\n const TableType = pgGetGqlTypeByTypeIdAndModifier(table.type.id, null);\n const TableConditionType = getTypeByName(\n inflection.conditionType(TableType.name)\n );\n if (!TableConditionType) {\n return args;\n }\n\n const relevantAttributes = table.attributes.filter(\n attr => pgColumnFilter(attr, build, context) && !omit(attr, \"filter\")\n );\n\n addArgDataGenerator(function connectionCondition({ condition }) {\n return {\n pgQuery: queryBuilder => {\n if (condition != null) {\n relevantAttributes.forEach(attr => {\n const fieldName = inflection.column(attr);\n const val = condition[fieldName];\n if (val != null) {\n queryBuilder.addLiveCondition(() => record =>\n record[attr.name] === val\n );\n queryBuilder.where(\n sql.fragment`${queryBuilder.getTableAlias()}.${sql.identifier(\n attr.name\n )} = ${gql2pg(val, attr.type, attr.typeModifier)}`\n );\n } else if (val === null) {\n queryBuilder.addLiveCondition(() => record =>\n record[attr.name] == null\n );\n queryBuilder.where(\n sql.fragment`${queryBuilder.getTableAlias()}.${sql.identifier(\n attr.name\n )} IS NULL`\n );\n }\n });\n }\n },\n };\n });\n\n return extend(\n args,\n {\n condition: {\n description:\n \"A condition to be used in determining which values should be returned by the collection.\",\n type: TableConditionType,\n },\n },\n `Adding condition to connection field '${fieldName}' of '${Self.name}'`\n );\n },\n [\"PgConnectionArgCondition\"]\n );\n}: Plugin);\n"],"file":"PgConnectionArgCondition.js"}
1
+ {"version":3,"sources":["../../src/plugins/PgConnectionArgCondition.js"],"names":["PgConnectionArgCondition","builder","hook","_","build","newWithHooks","pgIntrospectionResultsByKind","introspectionResultsByKind","pgGetGqlInputTypeByTypeIdAndModifier","graphql","GraphQLInputObjectType","GraphQLString","pgColumnFilter","inflection","pgOmit","omit","describePgEntity","sqlCommentByAddingTags","class","forEach","table","isSelectable","namespace","tableTypeName","tableType","description","wrapDescription","name","conditionType","fields","context","fieldWithHooks","attributes","reduce","memo","attr","fieldName","column","extend","type","typeId","typeModifier","isPgConnectionConditionInputField","__origin","pgIntrospection","isPgCondition","args","pgSql","sql","gql2pg","getTypeByName","pgGetGqlTypeByTypeIdAndModifier","scope","isPgFieldConnection","isPgFieldSimpleCollection","pgFieldIntrospection","pgFieldIntrospectionTable","addArgDataGenerator","Self","shouldAddCondition","proc","kind","tags","filterable","TableType","id","TableConditionType","relevantAttributes","filter","connectionCondition","condition","pgQuery","queryBuilder","val","addLiveCondition","record","where","fragment","getTableAlias","identifier"],"mappings":"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","sourcesContent":["// @flow\nimport type { Plugin } from \"graphile-build\";\n\nexport default (function PgConnectionArgCondition(builder) {\n builder.hook(\n \"init\",\n (_, build) => {\n const {\n newWithHooks,\n pgIntrospectionResultsByKind: introspectionResultsByKind,\n pgGetGqlInputTypeByTypeIdAndModifier,\n graphql: { GraphQLInputObjectType, GraphQLString },\n pgColumnFilter,\n inflection,\n pgOmit: omit,\n describePgEntity,\n sqlCommentByAddingTags,\n } = build;\n introspectionResultsByKind.class.forEach(table => {\n // PERFORMANCE: These used to be .filter(...) calls\n if (!table.isSelectable || omit(table, \"filter\")) return;\n if (!table.namespace) return;\n\n const tableTypeName = inflection.tableType(table);\n /* const TableConditionType = */\n newWithHooks(\n GraphQLInputObjectType,\n {\n description: build.wrapDescription(\n `A condition to be used against \\`${tableTypeName}\\` object types. All fields are tested for equality and combined with a logical ‘and.’`,\n \"type\"\n ),\n name: inflection.conditionType(inflection.tableType(table)),\n fields: context => {\n const { fieldWithHooks } = context;\n return table.attributes.reduce((memo, attr) => {\n // PERFORMANCE: These used to be .filter(...) calls\n if (!pgColumnFilter(attr, build, context)) return memo;\n if (omit(attr, \"filter\")) return memo;\n\n const fieldName = inflection.column(attr);\n memo = build.extend(\n memo,\n {\n [fieldName]: fieldWithHooks(\n fieldName,\n {\n description: build.wrapDescription(\n `Checks for equality with the object’s \\`${fieldName}\\` field.`,\n \"field\"\n ),\n type:\n pgGetGqlInputTypeByTypeIdAndModifier(\n attr.typeId,\n attr.typeModifier\n ) || GraphQLString,\n },\n {\n isPgConnectionConditionInputField: true,\n }\n ),\n },\n `Adding condition argument for ${describePgEntity(attr)}`\n );\n return memo;\n }, {});\n },\n },\n {\n __origin: `Adding condition 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 pgIntrospection: table,\n isPgCondition: true,\n },\n true // Conditions might all be filtered\n );\n });\n return _;\n },\n [\"PgConnectionArgCondition\"],\n [],\n [\"PgTypes\"]\n );\n\n builder.hook(\n \"GraphQLObjectType:fields:field:args\",\n (args, build, context) => {\n const {\n pgSql: sql,\n gql2pg,\n extend,\n getTypeByName,\n pgGetGqlTypeByTypeIdAndModifier,\n pgColumnFilter,\n inflection,\n pgOmit: omit,\n } = build;\n const {\n scope: {\n fieldName,\n isPgFieldConnection,\n isPgFieldSimpleCollection,\n pgFieldIntrospection,\n pgFieldIntrospectionTable,\n },\n addArgDataGenerator,\n Self,\n } = context;\n\n const shouldAddCondition =\n isPgFieldConnection || isPgFieldSimpleCollection;\n if (!shouldAddCondition) return args;\n\n const proc =\n pgFieldIntrospection.kind === \"procedure\" ? pgFieldIntrospection : null;\n const table =\n pgFieldIntrospection.kind === \"class\"\n ? pgFieldIntrospection\n : proc\n ? pgFieldIntrospectionTable\n : null;\n if (\n !table ||\n table.kind !== \"class\" ||\n !table.namespace ||\n omit(table, \"filter\")\n ) {\n return args;\n }\n if (proc) {\n if (!proc.tags.filterable) {\n return args;\n }\n }\n\n const TableType = pgGetGqlTypeByTypeIdAndModifier(table.type.id, null);\n const TableConditionType = getTypeByName(\n inflection.conditionType(TableType.name)\n );\n if (!TableConditionType) {\n return args;\n }\n\n const relevantAttributes = table.attributes.filter(\n attr => pgColumnFilter(attr, build, context) && !omit(attr, \"filter\")\n );\n\n addArgDataGenerator(function connectionCondition({ condition }) {\n return {\n pgQuery: queryBuilder => {\n if (condition != null) {\n relevantAttributes.forEach(attr => {\n const fieldName = inflection.column(attr);\n const val = condition[fieldName];\n if (val != null) {\n queryBuilder.addLiveCondition(() => record =>\n record[attr.name] === val\n );\n queryBuilder.where(\n sql.fragment`${queryBuilder.getTableAlias()}.${sql.identifier(\n attr.name\n )} = ${gql2pg(val, attr.type, attr.typeModifier)}`\n );\n } else if (val === null) {\n queryBuilder.addLiveCondition(() => record =>\n record[attr.name] == null\n );\n queryBuilder.where(\n sql.fragment`${queryBuilder.getTableAlias()}.${sql.identifier(\n attr.name\n )} IS NULL`\n );\n }\n });\n }\n },\n };\n });\n\n return extend(\n args,\n {\n condition: {\n description: build.wrapDescription(\n \"A condition to be used in determining which values should be returned by the collection.\",\n \"arg\"\n ),\n type: TableConditionType,\n },\n },\n `Adding condition to connection field '${fieldName}' of '${Self.name}'`\n );\n },\n [\"PgConnectionArgCondition\"]\n );\n}: Plugin);\n"],"file":"PgConnectionArgCondition.js"}
@@ -84,26 +84,26 @@ var PgConnectionArgs = function PgConnectionArgs(builder) {
84
84
  });
85
85
  return extend(args, {
86
86
  first: {
87
- description: "Only read the first `n` values of the set.",
87
+ description: build.wrapDescription("Only read the first `n` values of the set.", "arg"),
88
88
  type: GraphQLInt
89
89
  },
90
90
  ...(isPgFieldConnection ? {
91
91
  last: {
92
- description: "Only read the last `n` values of the set.",
92
+ description: build.wrapDescription("Only read the last `n` values of the set.", "arg"),
93
93
  type: GraphQLInt
94
94
  }
95
95
  } : null),
96
96
  offset: {
97
- description: isPgFieldConnection ? "Skip the first `n` values from our `after` cursor, an alternative to cursor based pagination. May not be used with `last`." : "Skip the first `n` values.",
97
+ description: build.wrapDescription(isPgFieldConnection ? "Skip the first `n` values from our `after` cursor, an alternative to cursor based pagination. May not be used with `last`." : "Skip the first `n` values.", "arg"),
98
98
  type: GraphQLInt
99
99
  },
100
100
  ...(isPgFieldConnection ? {
101
101
  before: {
102
- description: "Read all values in the set before (above) this cursor.",
102
+ description: build.wrapDescription("Read all values in the set before (above) this cursor.", "arg"),
103
103
  type: Cursor
104
104
  },
105
105
  after: {
106
- description: "Read all values in the set after (below) this cursor.",
106
+ description: build.wrapDescription("Read all values in the set after (below) this cursor.", "arg"),
107
107
  type: Cursor
108
108
  }
109
109
  } : null)
@@ -87,33 +87,46 @@ export default (function PgConnectionArgs(builder) {
87
87
  args,
88
88
  {
89
89
  first: {
90
- description: "Only read the first `n` values of the set.",
90
+ description: build.wrapDescription(
91
+ "Only read the first `n` values of the set.",
92
+ "arg"
93
+ ),
91
94
  type: GraphQLInt,
92
95
  },
93
96
  ...(isPgFieldConnection
94
97
  ? {
95
98
  last: {
96
- description: "Only read the last `n` values of the set.",
99
+ description: build.wrapDescription(
100
+ "Only read the last `n` values of the set.",
101
+ "arg"
102
+ ),
97
103
  type: GraphQLInt,
98
104
  },
99
105
  }
100
106
  : null),
101
107
  offset: {
102
- description: isPgFieldConnection
103
- ? "Skip the first `n` values from our `after` cursor, an alternative to cursor based pagination. May not be used with `last`."
104
- : "Skip the first `n` values.",
108
+ description: build.wrapDescription(
109
+ isPgFieldConnection
110
+ ? "Skip the first `n` values from our `after` cursor, an alternative to cursor based pagination. May not be used with `last`."
111
+ : "Skip the first `n` values.",
112
+ "arg"
113
+ ),
105
114
  type: GraphQLInt,
106
115
  },
107
116
  ...(isPgFieldConnection
108
117
  ? {
109
118
  before: {
110
- description:
119
+ description: build.wrapDescription(
111
120
  "Read all values in the set before (above) this cursor.",
121
+ "arg"
122
+ ),
112
123
  type: Cursor,
113
124
  },
114
125
  after: {
115
- description:
126
+ description: build.wrapDescription(
116
127
  "Read all values in the set after (below) this cursor.",
128
+ "arg"
129
+ ),
117
130
  type: Cursor,
118
131
  },
119
132
  }