graphile-build-pg 4.13.0 → 4.14.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. package/README.md +4 -13
  2. package/node8plus/GraphQLJSON.js +0 -11
  3. package/node8plus/GraphQLJSON.js.map +1 -1
  4. package/node8plus/PgLiveProvider.js +4 -11
  5. package/node8plus/PgLiveProvider.js.map +1 -1
  6. package/node8plus/QueryBuilder.js +42 -176
  7. package/node8plus/QueryBuilder.js.map +1 -1
  8. package/node8plus/index.js +8 -47
  9. package/node8plus/index.js.map +1 -1
  10. package/node8plus/inflections.js +9 -61
  11. package/node8plus/inflections.js.map +1 -1
  12. package/node8plus/omit.js +7 -22
  13. package/node8plus/omit.js.map +1 -1
  14. package/node8plus/parseIdentifier.js +0 -1
  15. package/node8plus/parseIdentifier.js.map +1 -1
  16. package/node8plus/pgPrepareAndRun.js +2 -14
  17. package/node8plus/pgPrepareAndRun.js.map +1 -1
  18. package/node8plus/plugins/PageInfoStartEndCursor.js +0 -4
  19. package/node8plus/plugins/PageInfoStartEndCursor.js.map +1 -1
  20. package/node8plus/plugins/PgAllRows.js +0 -29
  21. package/node8plus/plugins/PgAllRows.js.map +1 -1
  22. package/node8plus/plugins/PgBackwardRelationPlugin.js +2 -41
  23. package/node8plus/plugins/PgBackwardRelationPlugin.js.map +1 -1
  24. package/node8plus/plugins/PgBasicsPlugin.js +20 -147
  25. package/node8plus/plugins/PgBasicsPlugin.js.map +1 -1
  26. package/node8plus/plugins/PgColumnDeprecationPlugin.js +2 -5
  27. package/node8plus/plugins/PgColumnDeprecationPlugin.js.map +1 -1
  28. package/node8plus/plugins/PgColumnsPlugin.js +4 -17
  29. package/node8plus/plugins/PgColumnsPlugin.js.map +1 -1
  30. package/node8plus/plugins/PgComputedColumnsPlugin.js +4 -19
  31. package/node8plus/plugins/PgComputedColumnsPlugin.js.map +1 -1
  32. package/node8plus/plugins/PgConditionComputedColumnPlugin.js +12 -23
  33. package/node8plus/plugins/PgConditionComputedColumnPlugin.js.map +1 -1
  34. package/node8plus/plugins/PgConnectionArgCondition.js +1 -9
  35. package/node8plus/plugins/PgConnectionArgCondition.js.map +1 -1
  36. package/node8plus/plugins/PgConnectionArgFirstLastBeforeAfter.js +0 -12
  37. package/node8plus/plugins/PgConnectionArgFirstLastBeforeAfter.js.map +1 -1
  38. package/node8plus/plugins/PgConnectionArgOrderBy.js +2 -19
  39. package/node8plus/plugins/PgConnectionArgOrderBy.js.map +1 -1
  40. package/node8plus/plugins/PgConnectionArgOrderByDefaultValue.js +0 -6
  41. package/node8plus/plugins/PgConnectionArgOrderByDefaultValue.js.map +1 -1
  42. package/node8plus/plugins/PgConnectionTotalCount.js +0 -8
  43. package/node8plus/plugins/PgConnectionTotalCount.js.map +1 -1
  44. package/node8plus/plugins/PgForwardRelationPlugin.js +2 -25
  45. package/node8plus/plugins/PgForwardRelationPlugin.js.map +1 -1
  46. package/node8plus/plugins/PgIntrospectionPlugin.js +91 -180
  47. package/node8plus/plugins/PgIntrospectionPlugin.js.flow +30 -2
  48. package/node8plus/plugins/PgIntrospectionPlugin.js.map +1 -1
  49. package/node8plus/plugins/PgJWTPlugin.js +2 -18
  50. package/node8plus/plugins/PgJWTPlugin.js.map +1 -1
  51. package/node8plus/plugins/PgMutationCreatePlugin.js +0 -18
  52. package/node8plus/plugins/PgMutationCreatePlugin.js.map +1 -1
  53. package/node8plus/plugins/PgMutationPayloadEdgePlugin.js +4 -25
  54. package/node8plus/plugins/PgMutationPayloadEdgePlugin.js.map +1 -1
  55. package/node8plus/plugins/PgMutationProceduresPlugin.js +0 -6
  56. package/node8plus/plugins/PgMutationProceduresPlugin.js.map +1 -1
  57. package/node8plus/plugins/PgMutationUpdateDeletePlugin.js +14 -49
  58. package/node8plus/plugins/PgMutationUpdateDeletePlugin.js.flow +5 -2
  59. package/node8plus/plugins/PgMutationUpdateDeletePlugin.js.map +1 -1
  60. package/node8plus/plugins/PgNodeAliasPostGraphile.js +0 -6
  61. package/node8plus/plugins/PgNodeAliasPostGraphile.js.map +1 -1
  62. package/node8plus/plugins/PgOrderAllColumnsPlugin.js +0 -4
  63. package/node8plus/plugins/PgOrderAllColumnsPlugin.js.map +1 -1
  64. package/node8plus/plugins/PgOrderByPrimaryKeyPlugin.js +0 -6
  65. package/node8plus/plugins/PgOrderByPrimaryKeyPlugin.js.map +1 -1
  66. package/node8plus/plugins/PgOrderComputedColumnsPlugin.js +10 -14
  67. package/node8plus/plugins/PgOrderComputedColumnsPlugin.js.map +1 -1
  68. package/node8plus/plugins/PgQueryProceduresPlugin.js +4 -16
  69. package/node8plus/plugins/PgQueryProceduresPlugin.js.map +1 -1
  70. package/node8plus/plugins/PgRecordFunctionConnectionPlugin.js +3 -20
  71. package/node8plus/plugins/PgRecordFunctionConnectionPlugin.js.map +1 -1
  72. package/node8plus/plugins/PgRecordReturnTypesPlugin.js +11 -16
  73. package/node8plus/plugins/PgRecordReturnTypesPlugin.js.map +1 -1
  74. package/node8plus/plugins/PgRowByUniqueConstraint.js +4 -25
  75. package/node8plus/plugins/PgRowByUniqueConstraint.js.map +1 -1
  76. package/node8plus/plugins/PgRowNode.js +0 -32
  77. package/node8plus/plugins/PgRowNode.js.map +1 -1
  78. package/node8plus/plugins/PgScalarFunctionConnectionPlugin.js +3 -17
  79. package/node8plus/plugins/PgScalarFunctionConnectionPlugin.js.map +1 -1
  80. package/node8plus/plugins/PgTablesPlugin.js +7 -59
  81. package/node8plus/plugins/PgTablesPlugin.js.map +1 -1
  82. package/node8plus/plugins/PgTypesPlugin.js +140 -240
  83. package/node8plus/plugins/PgTypesPlugin.js.flow +76 -23
  84. package/node8plus/plugins/PgTypesPlugin.js.map +1 -1
  85. package/node8plus/plugins/addStartEndCursor.js +2 -5
  86. package/node8plus/plugins/addStartEndCursor.js.map +1 -1
  87. package/node8plus/plugins/debugSql.js +1 -16
  88. package/node8plus/plugins/debugSql.js.map +1 -1
  89. package/node8plus/plugins/introspectionQuery.js +3 -4
  90. package/node8plus/plugins/introspectionQuery.js.flow +11 -3
  91. package/node8plus/plugins/introspectionQuery.js.map +1 -1
  92. package/node8plus/plugins/makeProcField.js +40 -90
  93. package/node8plus/plugins/makeProcField.js.map +1 -1
  94. package/node8plus/plugins/pgField.js +2 -7
  95. package/node8plus/plugins/pgField.js.map +1 -1
  96. package/node8plus/plugins/viaTemporaryTable.js +6 -12
  97. package/node8plus/plugins/viaTemporaryTable.js.map +1 -1
  98. package/node8plus/postgresInterval.js +4 -4
  99. package/node8plus/postgresInterval.js.map +1 -1
  100. package/node8plus/queryFromResolveDataFactory.js +33 -77
  101. package/node8plus/queryFromResolveDataFactory.js.map +1 -1
  102. package/node8plus/utils.js +8 -9
  103. package/node8plus/utils.js.map +1 -1
  104. package/node8plus/withPgClient.js +4 -26
  105. package/node8plus/withPgClient.js.map +1 -1
  106. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/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","pgProcFieldDetails","procFieldDetails","pgGetComputedColumnDetails","getComputedColumnDetails","pgParseIdentifier","parseIdentifier","pgViaTemporaryTable","viaTemporaryTable","pgField","pgPrepareAndRun","formatSQLForDebugging","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, { procFieldDetails } from \"./makeProcField\";\nimport { getComputedColumnDetails } from \"./PgComputedColumnsPlugin\";\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\";\nimport { formatSQLForDebugging } from \"./debugSql\";\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 =\n omit =>\n (\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 =\n (omit, hideIndexWarnings) =>\n (\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 pgProcFieldDetails: procFieldDetails,\n pgGetComputedColumnDetails: getComputedColumnDetails,\n pgParseIdentifier: parseIdentifier,\n pgViaTemporaryTable: viaTemporaryTable,\n describePgEntity,\n pgField,\n sqlCommentByAddingTags,\n pgPrepareAndRun,\n pgAugmentIntrospectionResults,\n formatSQLForDebugging,\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(table)}-by-${detailedKeys\n .map(key => this.column(key))\n .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(table)}-by-${detailedKeys\n .map(key => this.column(key))\n .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(table)}-by-${detailedKeys\n .map(key => this.column(key))\n .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(table)}-by-${detailedKeys\n .map(key => this.column(key))\n .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(table)}-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(table)}-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,"file":"PgBasicsPlugin.js","names":["sql","_interopRequireWildcard","require","_package","_pgField","_interopRequireDefault","_queryFromResolveDataFactory","_addStartEndCursor","_omit","_makeProcField","_PgComputedColumnsPlugin","_parseIdentifier","_viaTemporaryTable","_chalk","_pickBy","_PgLiveProvider","_pgPrepareAndRun","_debugSql","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","defaultPgColumnFilter","_attr","_build","_context","identity","_","preventEmptyResult","keys","reduce","memo","fn","args","result","apply","length","stringifiedArgs","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","pickBy","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","pgQueryFromResolveData","queryFromResolveDataFactory","pgAddStartEndCursor","addStartEndCursor","pgMakeProcField","makeProcField","pgProcFieldDetails","procFieldDetails","pgGetComputedColumnDetails","getComputedColumnDetails","pgParseIdentifier","parseIdentifier","pgViaTemporaryTable","viaTemporaryTable","pgField","pgPrepareAndRun","formatSQLForDebugging","inflection","oldBuiltin","builtin","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","exports"],"sources":["../../src/plugins/PgBasicsPlugin.js"],"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, { procFieldDetails } from \"./makeProcField\";\nimport { getComputedColumnDetails } from \"./PgComputedColumnsPlugin\";\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\";\nimport { formatSQLForDebugging } from \"./debugSql\";\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 =\n omit =>\n (\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 =\n (omit, hideIndexWarnings) =>\n (\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 pgProcFieldDetails: procFieldDetails,\n pgGetComputedColumnDetails: getComputedColumnDetails,\n pgParseIdentifier: parseIdentifier,\n pgViaTemporaryTable: viaTemporaryTable,\n describePgEntity,\n pgField,\n sqlCommentByAddingTags,\n pgPrepareAndRun,\n pgAugmentIntrospectionResults,\n formatSQLForDebugging,\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(table)}-by-${detailedKeys\n .map(key => this.column(key))\n .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(table)}-by-${detailedKeys\n .map(key => this.column(key))\n .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(table)}-by-${detailedKeys\n .map(key => this.column(key))\n .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(table)}-by-${detailedKeys\n .map(key => this.column(key))\n .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(table)}-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(table)}-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"],"mappings":"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"}
@@ -4,7 +4,6 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  var PgColumnDeprecationPlugin = function PgColumnDeprecationPlugin(builder) {
9
8
  builder.hook("GraphQLObjectType:fields:field", (field, build, context) => {
10
9
  const {
@@ -12,16 +11,14 @@ var PgColumnDeprecationPlugin = function PgColumnDeprecationPlugin(builder) {
12
11
  pgFieldIntrospection
13
12
  }
14
13
  } = context;
15
-
16
14
  if (!pgFieldIntrospection || !pgFieldIntrospection.tags || !pgFieldIntrospection.tags.deprecated) {
17
15
  return field;
18
16
  }
19
-
20
- return { ...field,
17
+ return {
18
+ ...field,
21
19
  deprecationReason: Array.isArray(pgFieldIntrospection.tags.deprecated) ? pgFieldIntrospection.tags.deprecated.join("\n") : pgFieldIntrospection.tags.deprecated
22
20
  };
23
21
  }, ["PgColumnDeprecation"]);
24
22
  };
25
-
26
23
  exports.default = PgColumnDeprecationPlugin;
27
24
  //# sourceMappingURL=PgColumnDeprecationPlugin.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/plugins/PgColumnDeprecationPlugin.js"],"names":["PgColumnDeprecationPlugin","builder","hook","field","build","context","scope","pgFieldIntrospection","tags","deprecated","deprecationReason","Array","isArray","join"],"mappings":";;;;;;;IAGyBA,yB,GAAT,SAASA,yBAAT,CAAmCC,OAAnC,EAA4C;AAC1DA,EAAAA,OAAO,CAACC,IAAR,CACE,gCADF,EAEE,CAACC,KAAD,EAAQC,KAAR,EAAeC,OAAf,KAA2B;AACzB,UAAM;AACJC,MAAAA,KAAK,EAAE;AAAEC,QAAAA;AAAF;AADH,QAEFF,OAFJ;;AAGA,QACE,CAACE,oBAAD,IACA,CAACA,oBAAoB,CAACC,IADtB,IAEA,CAACD,oBAAoB,CAACC,IAArB,CAA0BC,UAH7B,EAIE;AACA,aAAON,KAAP;AACD;;AACD,WAAO,EACL,GAAGA,KADE;AAELO,MAAAA,iBAAiB,EAAEC,KAAK,CAACC,OAAN,CAAcL,oBAAoB,CAACC,IAArB,CAA0BC,UAAxC,IACfF,oBAAoB,CAACC,IAArB,CAA0BC,UAA1B,CAAqCI,IAArC,CAA0C,IAA1C,CADe,GAEfN,oBAAoB,CAACC,IAArB,CAA0BC;AAJzB,KAAP;AAMD,GAnBH,EAoBE,CAAC,qBAAD,CApBF;AAsBD,C","sourcesContent":["// @flow\nimport type { Plugin } from \"graphile-build\";\n\nexport default (function PgColumnDeprecationPlugin(builder) {\n builder.hook(\n \"GraphQLObjectType:fields:field\",\n (field, build, context) => {\n const {\n scope: { pgFieldIntrospection },\n } = context;\n if (\n !pgFieldIntrospection ||\n !pgFieldIntrospection.tags ||\n !pgFieldIntrospection.tags.deprecated\n ) {\n return field;\n }\n return {\n ...field,\n deprecationReason: Array.isArray(pgFieldIntrospection.tags.deprecated)\n ? pgFieldIntrospection.tags.deprecated.join(\"\\n\")\n : pgFieldIntrospection.tags.deprecated,\n };\n },\n [\"PgColumnDeprecation\"]\n );\n}: Plugin);\n"],"file":"PgColumnDeprecationPlugin.js"}
1
+ {"version":3,"file":"PgColumnDeprecationPlugin.js","names":["PgColumnDeprecationPlugin","builder","hook","field","build","context","scope","pgFieldIntrospection","tags","deprecated","deprecationReason","Array","isArray","join","exports","default"],"sources":["../../src/plugins/PgColumnDeprecationPlugin.js"],"sourcesContent":["// @flow\nimport type { Plugin } from \"graphile-build\";\n\nexport default (function PgColumnDeprecationPlugin(builder) {\n builder.hook(\n \"GraphQLObjectType:fields:field\",\n (field, build, context) => {\n const {\n scope: { pgFieldIntrospection },\n } = context;\n if (\n !pgFieldIntrospection ||\n !pgFieldIntrospection.tags ||\n !pgFieldIntrospection.tags.deprecated\n ) {\n return field;\n }\n return {\n ...field,\n deprecationReason: Array.isArray(pgFieldIntrospection.tags.deprecated)\n ? pgFieldIntrospection.tags.deprecated.join(\"\\n\")\n : pgFieldIntrospection.tags.deprecated,\n };\n },\n [\"PgColumnDeprecation\"]\n );\n}: Plugin);\n"],"mappings":";;;;;;IAGyBA,yBAAyB,GAAlC,SAASA,yBAAyBA,CAACC,OAAO,EAAE;EAC1DA,OAAO,CAACC,IAAI,CACV,gCAAgC,EAChC,CAACC,KAAK,EAAEC,KAAK,EAAEC,OAAO,KAAK;IACzB,MAAM;MACJC,KAAK,EAAE;QAAEC;MAAqB;IAChC,CAAC,GAAGF,OAAO;IACX,IACE,CAACE,oBAAoB,IACrB,CAACA,oBAAoB,CAACC,IAAI,IAC1B,CAACD,oBAAoB,CAACC,IAAI,CAACC,UAAU,EACrC;MACA,OAAON,KAAK;IACd;IACA,OAAO;MACL,GAAGA,KAAK;MACRO,iBAAiB,EAAEC,KAAK,CAACC,OAAO,CAACL,oBAAoB,CAACC,IAAI,CAACC,UAAU,CAAC,GAClEF,oBAAoB,CAACC,IAAI,CAACC,UAAU,CAACI,IAAI,CAAC,IAAI,CAAC,GAC/CN,oBAAoB,CAACC,IAAI,CAACC;IAChC,CAAC;EACH,CAAC,EACD,CAAC,qBAAqB,CACxB,CAAC;AACH,CAAC;AAAAK,OAAA,CAAAC,OAAA,GAAAf,yBAAA"}
@@ -4,9 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  const nullableIf = (GraphQLNonNull, condition, Type) => condition ? Type : new GraphQLNonNull(Type);
9
-
10
8
  var PgColumnsPlugin = function PgColumnsPlugin(builder) {
11
9
  builder.hook("build", build => {
12
10
  const {
@@ -14,12 +12,10 @@ var PgColumnsPlugin = function PgColumnsPlugin(builder) {
14
12
  pgTweakFragmentForTypeAndModifier,
15
13
  pgQueryFromResolveData: queryFromResolveData
16
14
  } = build;
17
-
18
15
  const getSelectValueForFieldAndTypeAndModifier = (ReturnType, fieldScope, parsedResolveInfoFragment, sqlFullName, type, typeModifier) => {
19
16
  const {
20
17
  getDataFromParsedResolveInfoFragment
21
18
  } = fieldScope;
22
-
23
19
  if (type.isPgArray) {
24
20
  const ident = sql.identifier(Symbol());
25
21
  return sql.fragment`(\
@@ -33,10 +29,10 @@ end
33
29
  )`;
34
30
  } else {
35
31
  const resolveData = getDataFromParsedResolveInfoFragment(parsedResolveInfoFragment, ReturnType);
36
-
37
32
  if (type.type === "c") {
38
33
  const isDefinitelyNotATable = type.class && !type.class.isSelectable;
39
- const jsonBuildObject = queryFromResolveData(sql.identifier(Symbol()), // Ignore!
34
+ const jsonBuildObject = queryFromResolveData(sql.identifier(Symbol()),
35
+ // Ignore!
40
36
  sqlFullName, resolveData, {
41
37
  onlyJsonField: true,
42
38
  addNullCase: !isDefinitelyNotATable,
@@ -48,7 +44,6 @@ end
48
44
  }
49
45
  }
50
46
  };
51
-
52
47
  return build.extend(build, {
53
48
  pgGetSelectValueForFieldAndTypeAndModifier: getSelectValueForFieldAndTypeAndModifier
54
49
  });
@@ -78,21 +73,17 @@ end
78
73
  },
79
74
  fieldWithHooks
80
75
  } = context;
81
-
82
76
  if (!(isPgRowType || isPgCompoundType) || !table || table.kind !== "class") {
83
77
  return fields;
84
78
  }
85
-
86
79
  return extend(fields, table.attributes.reduce((memo, attr) => {
87
80
  // PERFORMANCE: These used to be .filter(...) calls
88
81
  if (!pgColumnFilter(attr, build, context)) return memo;
89
82
  if (omit(attr, "read")) return memo;
90
83
  const fieldName = inflection.column(attr);
91
-
92
84
  if (memo[fieldName]) {
93
85
  throw new Error(`Two columns produce the same GraphQL field name '${fieldName}' on class '${table.namespaceName}.${table.name}'; one of them is '${attr.name}'`);
94
86
  }
95
-
96
87
  memo = extend(memo, {
97
88
  [fieldName]: fieldWithHooks(fieldName, fieldContext => {
98
89
  const {
@@ -107,7 +98,8 @@ end
107
98
  addDataGenerator(parsedResolveInfoFragment => {
108
99
  return {
109
100
  pgQuery: queryBuilder => {
110
- queryBuilder.select(getSelectValueForFieldAndTypeAndModifier(ReturnType, fieldContext, parsedResolveInfoFragment, sql.fragment`(${queryBuilder.getTableAlias()}.${sqlColumn})`, // The brackets are necessary to stop the parser getting confused, ref: https://www.postgresql.org/docs/9.6/static/rowtypes.html#ROWTYPES-ACCESSING
101
+ queryBuilder.select(getSelectValueForFieldAndTypeAndModifier(ReturnType, fieldContext, parsedResolveInfoFragment, sql.fragment`(${queryBuilder.getTableAlias()}.${sqlColumn})`,
102
+ // The brackets are necessary to stop the parser getting confused, ref: https://www.postgresql.org/docs/9.6/static/rowtypes.html#ROWTYPES-ACCESSING
111
103
  type, typeModifier), fieldName);
112
104
  }
113
105
  };
@@ -154,11 +146,9 @@ end
154
146
  },
155
147
  fieldWithHooks
156
148
  } = context;
157
-
158
149
  if (!(isPgRowType || isPgCompoundType) || !table || table.kind !== "class") {
159
150
  return fields;
160
151
  }
161
-
162
152
  return extend(fields, table.attributes.reduce((memo, attr) => {
163
153
  // PERFORMANCE: These used to be .filter(...) calls
164
154
  if (!pgColumnFilter(attr, build, context)) return memo;
@@ -166,11 +156,9 @@ end
166
156
  if (omit(attr, action)) return memo;
167
157
  if (attr.identity === "a") return memo;
168
158
  const fieldName = inflection.column(attr);
169
-
170
159
  if (memo[fieldName]) {
171
160
  throw new Error(`Two columns produce the same GraphQL field name '${fieldName}' on input class '${table.namespaceName}.${table.name}'; one of them is '${attr.name}'`);
172
161
  }
173
-
174
162
  memo = extend(memo, {
175
163
  [fieldName]: fieldWithHooks(fieldName, pgAddSubfield(fieldName, attr.name, attr.type, {
176
164
  description: attr.description,
@@ -185,6 +173,5 @@ end
185
173
  }, {}), `Adding columns to input object for ${describePgEntity(table)}`);
186
174
  }, ["PgColumns"]);
187
175
  };
188
-
189
176
  exports.default = PgColumnsPlugin;
190
177
  //# sourceMappingURL=PgColumnsPlugin.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/plugins/PgColumnsPlugin.js"],"names":["nullableIf","GraphQLNonNull","condition","Type","PgColumnsPlugin","builder","hook","build","pgSql","sql","pgTweakFragmentForTypeAndModifier","pgQueryFromResolveData","queryFromResolveData","getSelectValueForFieldAndTypeAndModifier","ReturnType","fieldScope","parsedResolveInfoFragment","sqlFullName","type","typeModifier","getDataFromParsedResolveInfoFragment","isPgArray","ident","identifier","Symbol","fragment","arrayItemType","resolveData","isDefinitelyNotATable","class","isSelectable","jsonBuildObject","onlyJsonField","addNullCase","addNotDistinctFromNullCase","extend","pgGetSelectValueForFieldAndTypeAndModifier","fields","context","pgGetGqlTypeByTypeIdAndModifier","pg2gqlForType","graphql","GraphQLString","pgColumnFilter","inflection","pgOmit","omit","describePgEntity","sqlCommentByAddingTags","scope","isPgRowType","isPgCompoundType","pgIntrospection","table","fieldWithHooks","kind","attributes","reduce","memo","attr","fieldName","column","Error","namespaceName","name","fieldContext","sqlColumn","addDataGenerator","typeId","pgQuery","queryBuilder","select","getTableAlias","convertFromPg","description","isNotNull","domainIsNotNull","tags","notNull","resolve","data","_args","_context","_resolveInfo","pgFieldIntrospection","pgGetGqlInputTypeByTypeIdAndModifier","isPgPatch","isPgBaseInput","pgAddSubfield","action","identity","domainHasDefault","hasDefault"],"mappings":"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","sourcesContent":["// @flow\nimport type { Plugin } from \"graphile-build\";\n\nconst nullableIf = (GraphQLNonNull, condition, Type) =>\n condition ? Type : new GraphQLNonNull(Type);\n\nexport default (function PgColumnsPlugin(builder) {\n builder.hook(\n \"build\",\n build => {\n const {\n pgSql: sql,\n pgTweakFragmentForTypeAndModifier,\n pgQueryFromResolveData: queryFromResolveData,\n } = build;\n const getSelectValueForFieldAndTypeAndModifier = (\n ReturnType,\n fieldScope,\n parsedResolveInfoFragment,\n sqlFullName,\n type,\n typeModifier\n ) => {\n const { getDataFromParsedResolveInfoFragment } = fieldScope;\n if (type.isPgArray) {\n const ident = sql.identifier(Symbol());\n return sql.fragment`(\\\ncase\nwhen ${sqlFullName} is null then null\nwhen coalesce(array_length(${sqlFullName}, 1), 0) = 0 then '[]'::json\nelse (\n select json_agg(${getSelectValueForFieldAndTypeAndModifier(\n ReturnType,\n fieldScope,\n parsedResolveInfoFragment,\n ident,\n type.arrayItemType,\n typeModifier\n )}) from unnest(${sqlFullName}) as ${ident}\n)\nend\n)`;\n } else {\n const resolveData = getDataFromParsedResolveInfoFragment(\n parsedResolveInfoFragment,\n ReturnType\n );\n if (type.type === \"c\") {\n const isDefinitelyNotATable =\n type.class && !type.class.isSelectable;\n const jsonBuildObject = queryFromResolveData(\n sql.identifier(Symbol()), // Ignore!\n sqlFullName,\n resolveData,\n {\n onlyJsonField: true,\n addNullCase: !isDefinitelyNotATable,\n addNotDistinctFromNullCase: isDefinitelyNotATable,\n }\n );\n return jsonBuildObject;\n } else {\n return pgTweakFragmentForTypeAndModifier(\n sqlFullName,\n type,\n typeModifier,\n resolveData\n );\n }\n }\n };\n return build.extend(build, {\n pgGetSelectValueForFieldAndTypeAndModifier:\n getSelectValueForFieldAndTypeAndModifier,\n });\n },\n [\"PgColumns\"],\n [],\n [\"PgTypes\"]\n );\n\n builder.hook(\n \"GraphQLObjectType:fields\",\n (fields, build, context) => {\n const {\n extend,\n pgGetGqlTypeByTypeIdAndModifier,\n pgSql: sql,\n pg2gqlForType,\n graphql: { GraphQLString, GraphQLNonNull },\n pgColumnFilter,\n inflection,\n pgOmit: omit,\n pgGetSelectValueForFieldAndTypeAndModifier:\n getSelectValueForFieldAndTypeAndModifier,\n describePgEntity,\n sqlCommentByAddingTags,\n } = build;\n const {\n scope: { isPgRowType, isPgCompoundType, pgIntrospection: table },\n fieldWithHooks,\n } = context;\n\n if (\n !(isPgRowType || isPgCompoundType) ||\n !table ||\n table.kind !== \"class\"\n ) {\n return fields;\n }\n\n return extend(\n fields,\n 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, \"read\")) return memo;\n\n const fieldName = inflection.column(attr);\n if (memo[fieldName]) {\n throw new Error(\n `Two columns produce the same GraphQL field name '${fieldName}' on class '${table.namespaceName}.${table.name}'; one of them is '${attr.name}'`\n );\n }\n memo = extend(\n memo,\n {\n [fieldName]: fieldWithHooks(\n fieldName,\n fieldContext => {\n const { type, typeModifier } = attr;\n const sqlColumn = sql.identifier(attr.name);\n const { addDataGenerator } = fieldContext;\n const ReturnType =\n pgGetGqlTypeByTypeIdAndModifier(\n attr.typeId,\n attr.typeModifier\n ) || GraphQLString;\n addDataGenerator(parsedResolveInfoFragment => {\n return {\n pgQuery: queryBuilder => {\n queryBuilder.select(\n getSelectValueForFieldAndTypeAndModifier(\n ReturnType,\n fieldContext,\n parsedResolveInfoFragment,\n sql.fragment`(${queryBuilder.getTableAlias()}.${sqlColumn})`, // The brackets are necessary to stop the parser getting confused, ref: https://www.postgresql.org/docs/9.6/static/rowtypes.html#ROWTYPES-ACCESSING\n type,\n typeModifier\n ),\n fieldName\n );\n },\n };\n });\n const convertFromPg = pg2gqlForType(type);\n return {\n description: attr.description,\n type: nullableIf(\n GraphQLNonNull,\n !attr.isNotNull &&\n !attr.type.domainIsNotNull &&\n !attr.tags.notNull,\n ReturnType\n ),\n resolve: (data, _args, _context, _resolveInfo) => {\n return convertFromPg(data[fieldName]);\n },\n };\n },\n { pgFieldIntrospection: attr }\n ),\n },\n `Adding field for ${describePgEntity(\n attr\n )}. You can rename this field with a 'Smart Comment':\\n\\n ${sqlCommentByAddingTags(\n attr,\n {\n name: \"newNameHere\",\n }\n )}`\n );\n return memo;\n }, {}),\n `Adding columns to '${describePgEntity(table)}'`\n );\n },\n [\"PgColumns\"]\n );\n builder.hook(\n \"GraphQLInputObjectType:fields\",\n (fields, build, context) => {\n const {\n extend,\n pgGetGqlInputTypeByTypeIdAndModifier,\n graphql: { GraphQLString, GraphQLNonNull },\n pgColumnFilter,\n inflection,\n pgOmit: omit,\n describePgEntity,\n sqlCommentByAddingTags,\n } = build;\n const {\n scope: {\n isPgRowType,\n isPgCompoundType,\n isPgPatch,\n isPgBaseInput,\n pgIntrospection: table,\n pgAddSubfield,\n },\n fieldWithHooks,\n } = context;\n if (\n !(isPgRowType || isPgCompoundType) ||\n !table ||\n table.kind !== \"class\"\n ) {\n return fields;\n }\n return extend(\n fields,\n table.attributes.reduce((memo, attr) => {\n // PERFORMANCE: These used to be .filter(...) calls\n if (!pgColumnFilter(attr, build, context)) return memo;\n const action = isPgBaseInput\n ? \"base\"\n : isPgPatch\n ? \"update\"\n : \"create\";\n if (omit(attr, action)) return memo;\n if (attr.identity === \"a\") return memo;\n\n const fieldName = inflection.column(attr);\n if (memo[fieldName]) {\n throw new Error(\n `Two columns produce the same GraphQL field name '${fieldName}' on input class '${table.namespaceName}.${table.name}'; one of them is '${attr.name}'`\n );\n }\n memo = extend(\n memo,\n {\n [fieldName]: fieldWithHooks(\n fieldName,\n pgAddSubfield(\n fieldName,\n attr.name,\n attr.type,\n {\n description: attr.description,\n type: nullableIf(\n GraphQLNonNull,\n isPgBaseInput ||\n isPgPatch ||\n (!attr.isNotNull &&\n (!attr.type.domainIsNotNull ||\n attr.type.domainHasDefault) &&\n !attr.tags.notNull) ||\n attr.hasDefault ||\n attr.tags.hasDefault ||\n attr.identity === \"d\",\n pgGetGqlInputTypeByTypeIdAndModifier(\n attr.typeId,\n attr.typeModifier\n ) || GraphQLString\n ),\n },\n attr.typeModifier\n ),\n { pgFieldIntrospection: attr }\n ),\n },\n `Adding input object field for ${describePgEntity(\n attr\n )}. You can rename this field with a 'Smart Comment':\\n\\n ${sqlCommentByAddingTags(\n attr,\n {\n name: \"newNameHere\",\n }\n )}`\n );\n return memo;\n }, {}),\n `Adding columns to input object for ${describePgEntity(table)}`\n );\n },\n [\"PgColumns\"]\n );\n}: Plugin);\n"],"file":"PgColumnsPlugin.js"}
1
+ {"version":3,"file":"PgColumnsPlugin.js","names":["nullableIf","GraphQLNonNull","condition","Type","PgColumnsPlugin","builder","hook","build","pgSql","sql","pgTweakFragmentForTypeAndModifier","pgQueryFromResolveData","queryFromResolveData","getSelectValueForFieldAndTypeAndModifier","ReturnType","fieldScope","parsedResolveInfoFragment","sqlFullName","type","typeModifier","getDataFromParsedResolveInfoFragment","isPgArray","ident","identifier","Symbol","fragment","arrayItemType","resolveData","isDefinitelyNotATable","class","isSelectable","jsonBuildObject","onlyJsonField","addNullCase","addNotDistinctFromNullCase","extend","pgGetSelectValueForFieldAndTypeAndModifier","fields","context","pgGetGqlTypeByTypeIdAndModifier","pg2gqlForType","graphql","GraphQLString","pgColumnFilter","inflection","pgOmit","omit","describePgEntity","sqlCommentByAddingTags","scope","isPgRowType","isPgCompoundType","pgIntrospection","table","fieldWithHooks","kind","attributes","reduce","memo","attr","fieldName","column","Error","namespaceName","name","fieldContext","sqlColumn","addDataGenerator","typeId","pgQuery","queryBuilder","select","getTableAlias","convertFromPg","description","isNotNull","domainIsNotNull","tags","notNull","resolve","data","_args","_context","_resolveInfo","pgFieldIntrospection","pgGetGqlInputTypeByTypeIdAndModifier","isPgPatch","isPgBaseInput","pgAddSubfield","action","identity","domainHasDefault","hasDefault","exports","default"],"sources":["../../src/plugins/PgColumnsPlugin.js"],"sourcesContent":["// @flow\nimport type { Plugin } from \"graphile-build\";\n\nconst nullableIf = (GraphQLNonNull, condition, Type) =>\n condition ? Type : new GraphQLNonNull(Type);\n\nexport default (function PgColumnsPlugin(builder) {\n builder.hook(\n \"build\",\n build => {\n const {\n pgSql: sql,\n pgTweakFragmentForTypeAndModifier,\n pgQueryFromResolveData: queryFromResolveData,\n } = build;\n const getSelectValueForFieldAndTypeAndModifier = (\n ReturnType,\n fieldScope,\n parsedResolveInfoFragment,\n sqlFullName,\n type,\n typeModifier\n ) => {\n const { getDataFromParsedResolveInfoFragment } = fieldScope;\n if (type.isPgArray) {\n const ident = sql.identifier(Symbol());\n return sql.fragment`(\\\ncase\nwhen ${sqlFullName} is null then null\nwhen coalesce(array_length(${sqlFullName}, 1), 0) = 0 then '[]'::json\nelse (\n select json_agg(${getSelectValueForFieldAndTypeAndModifier(\n ReturnType,\n fieldScope,\n parsedResolveInfoFragment,\n ident,\n type.arrayItemType,\n typeModifier\n )}) from unnest(${sqlFullName}) as ${ident}\n)\nend\n)`;\n } else {\n const resolveData = getDataFromParsedResolveInfoFragment(\n parsedResolveInfoFragment,\n ReturnType\n );\n if (type.type === \"c\") {\n const isDefinitelyNotATable =\n type.class && !type.class.isSelectable;\n const jsonBuildObject = queryFromResolveData(\n sql.identifier(Symbol()), // Ignore!\n sqlFullName,\n resolveData,\n {\n onlyJsonField: true,\n addNullCase: !isDefinitelyNotATable,\n addNotDistinctFromNullCase: isDefinitelyNotATable,\n }\n );\n return jsonBuildObject;\n } else {\n return pgTweakFragmentForTypeAndModifier(\n sqlFullName,\n type,\n typeModifier,\n resolveData\n );\n }\n }\n };\n return build.extend(build, {\n pgGetSelectValueForFieldAndTypeAndModifier:\n getSelectValueForFieldAndTypeAndModifier,\n });\n },\n [\"PgColumns\"],\n [],\n [\"PgTypes\"]\n );\n\n builder.hook(\n \"GraphQLObjectType:fields\",\n (fields, build, context) => {\n const {\n extend,\n pgGetGqlTypeByTypeIdAndModifier,\n pgSql: sql,\n pg2gqlForType,\n graphql: { GraphQLString, GraphQLNonNull },\n pgColumnFilter,\n inflection,\n pgOmit: omit,\n pgGetSelectValueForFieldAndTypeAndModifier:\n getSelectValueForFieldAndTypeAndModifier,\n describePgEntity,\n sqlCommentByAddingTags,\n } = build;\n const {\n scope: { isPgRowType, isPgCompoundType, pgIntrospection: table },\n fieldWithHooks,\n } = context;\n\n if (\n !(isPgRowType || isPgCompoundType) ||\n !table ||\n table.kind !== \"class\"\n ) {\n return fields;\n }\n\n return extend(\n fields,\n 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, \"read\")) return memo;\n\n const fieldName = inflection.column(attr);\n if (memo[fieldName]) {\n throw new Error(\n `Two columns produce the same GraphQL field name '${fieldName}' on class '${table.namespaceName}.${table.name}'; one of them is '${attr.name}'`\n );\n }\n memo = extend(\n memo,\n {\n [fieldName]: fieldWithHooks(\n fieldName,\n fieldContext => {\n const { type, typeModifier } = attr;\n const sqlColumn = sql.identifier(attr.name);\n const { addDataGenerator } = fieldContext;\n const ReturnType =\n pgGetGqlTypeByTypeIdAndModifier(\n attr.typeId,\n attr.typeModifier\n ) || GraphQLString;\n addDataGenerator(parsedResolveInfoFragment => {\n return {\n pgQuery: queryBuilder => {\n queryBuilder.select(\n getSelectValueForFieldAndTypeAndModifier(\n ReturnType,\n fieldContext,\n parsedResolveInfoFragment,\n sql.fragment`(${queryBuilder.getTableAlias()}.${sqlColumn})`, // The brackets are necessary to stop the parser getting confused, ref: https://www.postgresql.org/docs/9.6/static/rowtypes.html#ROWTYPES-ACCESSING\n type,\n typeModifier\n ),\n fieldName\n );\n },\n };\n });\n const convertFromPg = pg2gqlForType(type);\n return {\n description: attr.description,\n type: nullableIf(\n GraphQLNonNull,\n !attr.isNotNull &&\n !attr.type.domainIsNotNull &&\n !attr.tags.notNull,\n ReturnType\n ),\n resolve: (data, _args, _context, _resolveInfo) => {\n return convertFromPg(data[fieldName]);\n },\n };\n },\n { pgFieldIntrospection: attr }\n ),\n },\n `Adding field for ${describePgEntity(\n attr\n )}. You can rename this field with a 'Smart Comment':\\n\\n ${sqlCommentByAddingTags(\n attr,\n {\n name: \"newNameHere\",\n }\n )}`\n );\n return memo;\n }, {}),\n `Adding columns to '${describePgEntity(table)}'`\n );\n },\n [\"PgColumns\"]\n );\n builder.hook(\n \"GraphQLInputObjectType:fields\",\n (fields, build, context) => {\n const {\n extend,\n pgGetGqlInputTypeByTypeIdAndModifier,\n graphql: { GraphQLString, GraphQLNonNull },\n pgColumnFilter,\n inflection,\n pgOmit: omit,\n describePgEntity,\n sqlCommentByAddingTags,\n } = build;\n const {\n scope: {\n isPgRowType,\n isPgCompoundType,\n isPgPatch,\n isPgBaseInput,\n pgIntrospection: table,\n pgAddSubfield,\n },\n fieldWithHooks,\n } = context;\n if (\n !(isPgRowType || isPgCompoundType) ||\n !table ||\n table.kind !== \"class\"\n ) {\n return fields;\n }\n return extend(\n fields,\n table.attributes.reduce((memo, attr) => {\n // PERFORMANCE: These used to be .filter(...) calls\n if (!pgColumnFilter(attr, build, context)) return memo;\n const action = isPgBaseInput\n ? \"base\"\n : isPgPatch\n ? \"update\"\n : \"create\";\n if (omit(attr, action)) return memo;\n if (attr.identity === \"a\") return memo;\n\n const fieldName = inflection.column(attr);\n if (memo[fieldName]) {\n throw new Error(\n `Two columns produce the same GraphQL field name '${fieldName}' on input class '${table.namespaceName}.${table.name}'; one of them is '${attr.name}'`\n );\n }\n memo = extend(\n memo,\n {\n [fieldName]: fieldWithHooks(\n fieldName,\n pgAddSubfield(\n fieldName,\n attr.name,\n attr.type,\n {\n description: attr.description,\n type: nullableIf(\n GraphQLNonNull,\n isPgBaseInput ||\n isPgPatch ||\n (!attr.isNotNull &&\n (!attr.type.domainIsNotNull ||\n attr.type.domainHasDefault) &&\n !attr.tags.notNull) ||\n attr.hasDefault ||\n attr.tags.hasDefault ||\n attr.identity === \"d\",\n pgGetGqlInputTypeByTypeIdAndModifier(\n attr.typeId,\n attr.typeModifier\n ) || GraphQLString\n ),\n },\n attr.typeModifier\n ),\n { pgFieldIntrospection: attr }\n ),\n },\n `Adding input object field for ${describePgEntity(\n attr\n )}. You can rename this field with a 'Smart Comment':\\n\\n ${sqlCommentByAddingTags(\n attr,\n {\n name: \"newNameHere\",\n }\n )}`\n );\n return memo;\n }, {}),\n `Adding columns to input object for ${describePgEntity(table)}`\n );\n },\n [\"PgColumns\"]\n );\n}: Plugin);\n"],"mappings":"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"}