UNPKG

377 kBSource Map (JSON)View Raw
1{"version":3,"file":"index.cjs.js","sources":["../../../dist/handlers/openapi/src/openapi-to-graphql/types/graphql.js","../../../dist/handlers/openapi/src/openapi-to-graphql/utils.js","../../../dist/handlers/openapi/src/openapi-to-graphql/oas_3_tools.js","../../../dist/handlers/openapi/src/openapi-to-graphql/resolver_builder.js","../../../dist/handlers/openapi/src/openapi-to-graphql/preprocessor.js","../../../dist/handlers/openapi/src/openapi-to-graphql/schema_builder.js","../../../dist/handlers/openapi/src/openapi-to-graphql/graphql_tools.js","../../../dist/handlers/openapi/src/openapi-to-graphql/auth_builder.js","../../../dist/handlers/openapi/src/openapi-to-graphql/index.js","../../../dist/handlers/openapi/src/index.js"],"sourcesContent":["/* eslint-disable @typescript-eslint/ban-types */\n// Copyright IBM Corp. 2018. All Rights Reserved.\n// Node module: openapi-to-graphql\n// This file is licensed under the MIT License.\n// License text available at https://opensource.org/licenses/MIT\nexport var GraphQLOperationType;\n(function (GraphQLOperationType) {\n GraphQLOperationType[GraphQLOperationType[\"Query\"] = 0] = \"Query\";\n GraphQLOperationType[GraphQLOperationType[\"Mutation\"] = 1] = \"Mutation\";\n GraphQLOperationType[GraphQLOperationType[\"Subscription\"] = 2] = \"Subscription\";\n})(GraphQLOperationType || (GraphQLOperationType = {}));\n//# sourceMappingURL=graphql.js.map","/* eslint-disable @typescript-eslint/ban-types */\n/* eslint-disable no-sequences */\n// Copyright IBM Corp. 2018. All Rights Reserved.\n// Node module: openapi-to-graphql\n// This file is licensed under the MIT License.\n// License text available at https://opensource.org/licenses/MIT\nexport var MitigationTypes;\n(function (MitigationTypes) {\n /**\n * Problems with the OAS\n *\n * Should be caught by the module oas-validator\n */\n MitigationTypes[\"INVALID_OAS\"] = \"INVALID_OAS\";\n MitigationTypes[\"UNNAMED_PARAMETER\"] = \"UNNAMED_PARAMETER\";\n // General problems\n MitigationTypes[\"AMBIGUOUS_UNION_MEMBERS\"] = \"AMBIGUOUS_UNION_MEMBERS\";\n MitigationTypes[\"CANNOT_GET_FIELD_TYPE\"] = \"CANNOT_GET_FIELD_TYPE\";\n MitigationTypes[\"COMBINE_SCHEMAS\"] = \"COMBINE_SCHEMAS\";\n MitigationTypes[\"DUPLICATE_FIELD_NAME\"] = \"DUPLICATE_FIELD_NAME\";\n MitigationTypes[\"DUPLICATE_LINK_KEY\"] = \"DUPLICATE_LINK_KEY\";\n MitigationTypes[\"INVALID_HTTP_METHOD\"] = \"INVALID_HTTP_METHOD\";\n MitigationTypes[\"INPUT_UNION\"] = \"INPUT_UNION\";\n MitigationTypes[\"MISSING_RESPONSE_SCHEMA\"] = \"MISSING_RESPONSE_SCHEMA\";\n MitigationTypes[\"MISSING_SCHEMA\"] = \"MISSING_SCHEMA\";\n MitigationTypes[\"MULTIPLE_RESPONSES\"] = \"MULTIPLE_RESPONSES\";\n MitigationTypes[\"NON_APPLICATION_JSON_SCHEMA\"] = \"NON_APPLICATION_JSON_SCHEMA\";\n MitigationTypes[\"OBJECT_MISSING_PROPERTIES\"] = \"OBJECT_MISSING_PROPERTIES\";\n MitigationTypes[\"UNKNOWN_TARGET_TYPE\"] = \"UNKNOWN_TARGET_TYPE\";\n MitigationTypes[\"UNRESOLVABLE_SCHEMA\"] = \"UNRESOLVABLE_SCHEMA\";\n MitigationTypes[\"UNSUPPORTED_HTTP_SECURITY_SCHEME\"] = \"UNSUPPORTED_HTTP_SECURITY_SCHEME\";\n MitigationTypes[\"UNSUPPORTED_JSON_SCHEMA_KEYWORD\"] = \"UNSUPPORTED_JSON_SCHEMA_KEYWORD\";\n MitigationTypes[\"CALLBACKS_MULTIPLE_OPERATION_OBJECTS\"] = \"CALLBACKS_MULTIPLE_OPERATION_OBJECTS\";\n // Links\n MitigationTypes[\"AMBIGUOUS_LINK\"] = \"AMBIGUOUS_LINK\";\n MitigationTypes[\"LINK_NAME_COLLISION\"] = \"LINK_NAME_COLLISION\";\n MitigationTypes[\"UNRESOLVABLE_LINK\"] = \"UNRESOLVABLE_LINK\";\n // Multiple OAS\n MitigationTypes[\"DUPLICATE_OPERATIONID\"] = \"DUPLICATE_OPERATIONID\";\n MitigationTypes[\"DUPLICATE_SECURITY_SCHEME\"] = \"DUPLICATE_SECURITY_SCHEME\";\n MitigationTypes[\"MULTIPLE_OAS_SAME_TITLE\"] = \"MULTIPLE_OAS_SAME_TITLE\";\n // Options\n MitigationTypes[\"CUSTOM_RESOLVER_UNKNOWN_OAS\"] = \"CUSTOM_RESOLVER_UNKNOWN_OAS\";\n MitigationTypes[\"CUSTOM_RESOLVER_UNKNOWN_PATH_METHOD\"] = \"CUSTOM_RESOLVER_UNKNOWN_PATH_METHOD\";\n MitigationTypes[\"LIMIT_ARGUMENT_NAME_COLLISION\"] = \"LIMIT_ARGUMENT_NAME_COLLISION\";\n // Miscellaneous\n MitigationTypes[\"OAUTH_SECURITY_SCHEME\"] = \"OAUTH_SECURITY_SCHEME\";\n})(MitigationTypes || (MitigationTypes = {}));\nexport const mitigations = {\n /**\n * Problems with the OAS\n *\n * Should be caught by the module oas-validator\n */\n INVALID_OAS: 'Ignore issue and continue.',\n UNNAMED_PARAMETER: 'Ignore parameter.',\n // General problems\n AMBIGUOUS_UNION_MEMBERS: 'Ignore issue and continue.',\n CANNOT_GET_FIELD_TYPE: 'Ignore field and continue.',\n COMBINE_SCHEMAS: 'Ignore combine schema keyword and continue.',\n DUPLICATE_FIELD_NAME: 'Ignore field and maintain preexisting field.',\n DUPLICATE_LINK_KEY: 'Ignore link and maintain preexisting link.',\n INPUT_UNION: 'The data will be stored in an arbitrary JSON type.',\n INVALID_HTTP_METHOD: 'Ignore operation and continue.',\n MISSING_RESPONSE_SCHEMA: 'Ignore operation.',\n MISSING_SCHEMA: 'Use arbitrary JSON type.',\n MULTIPLE_RESPONSES: 'Select first response object with successful status code (200-299).',\n NON_APPLICATION_JSON_SCHEMA: 'Ignore schema',\n OBJECT_MISSING_PROPERTIES: 'The (sub-)object will be stored in an arbitray JSON type.',\n UNKNOWN_TARGET_TYPE: 'The data will be stored in an arbitrary JSON type.',\n UNRESOLVABLE_SCHEMA: 'Ignore and continue. May lead to unexpected behavior.',\n UNSUPPORTED_HTTP_SECURITY_SCHEME: 'Ignore security scheme.',\n UNSUPPORTED_JSON_SCHEMA_KEYWORD: 'Ignore keyword and continue.',\n CALLBACKS_MULTIPLE_OPERATION_OBJECTS: 'Select arbitrary operation object',\n // Links\n AMBIGUOUS_LINK: `Use first occurance of '#/'.`,\n LINK_NAME_COLLISION: 'Ignore link and maintain preexisting field.',\n UNRESOLVABLE_LINK: 'Ignore link.',\n // Multiple OAS\n DUPLICATE_OPERATIONID: 'Ignore operation and maintain preexisting operation.',\n DUPLICATE_SECURITY_SCHEME: 'Ignore security scheme and maintain preexisting scheme.',\n MULTIPLE_OAS_SAME_TITLE: 'Ignore issue and continue.',\n // Options\n CUSTOM_RESOLVER_UNKNOWN_OAS: 'Ignore this set of custom resolvers.',\n CUSTOM_RESOLVER_UNKNOWN_PATH_METHOD: 'Ignore this set of custom resolvers.',\n LIMIT_ARGUMENT_NAME_COLLISION: `Do not override existing 'limit' argument.`,\n // Miscellaneous\n OAUTH_SECURITY_SCHEME: `Ignore security scheme`,\n};\n/**\n * Utilities that are specific to OpenAPI-to-GraphQL\n */\nexport function handleWarning({ mitigationType, message, mitigationAddendum, path, data, log, }) {\n const mitigation = mitigations[mitigationType];\n const warning = {\n type: mitigationType,\n message,\n mitigation: mitigationAddendum ? `${mitigation} ${mitigationAddendum}` : mitigation,\n };\n if (path) {\n warning.path = path;\n }\n if (data.options.strict) {\n throw new Error(`${warning.type} - ${warning.message}`);\n }\n else {\n const output = `Warning: ${warning.message} - ${warning.mitigation}`;\n if (typeof log === 'function') {\n log(output);\n }\n else {\n console.log(output);\n }\n data.options.report.warnings.push(warning);\n }\n}\n// Code provided by codename- from StackOverflow\n// Link: https://stackoverflow.com/a/29622653\nexport function sortObject(o) {\n return Object.keys(o)\n .sort()\n .reduce((r, k) => ((r[k] = o[k]), r), {});\n}\n/**\n * Finds the common property names between two objects\n */\nexport function getCommonPropertyNames(object1, object2) {\n return Object.keys(object1).filter(propertyName => {\n return propertyName in object2;\n });\n}\n// TODO: replace this with Mesh's logger\nexport function mockDebug(...args1) {\n // do nothing\n return (...args2) => {\n if (process.env.DEBUG) {\n console.debug(...args1, ...args2);\n }\n };\n}\n//# sourceMappingURL=utils.js.map","/* eslint-disable no-useless-escape */\n/* eslint-disable @typescript-eslint/ban-types */\n// Copyright IBM Corp. 2018. All Rights Reserved.\n// Node module: openapi-to-graphql\n// This file is licensed under the MIT License.\n// License text available at https://opensource.org/licenses/MIT\n// Imports:\nimport * as Swagger2OpenAPI from 'swagger2openapi';\nimport { handleWarning, MitigationTypes, mockDebug as debug } from './utils';\nimport * as jsonptr from 'json-ptr';\nimport * as pluralize from 'pluralize';\nconst httpLog = debug('http');\nconst translationLog = debug('translation');\n// OAS constants\nexport var HTTP_METHODS;\n(function (HTTP_METHODS) {\n HTTP_METHODS[\"get\"] = \"get\";\n HTTP_METHODS[\"put\"] = \"put\";\n HTTP_METHODS[\"post\"] = \"post\";\n HTTP_METHODS[\"patch\"] = \"patch\";\n HTTP_METHODS[\"delete\"] = \"delete\";\n HTTP_METHODS[\"options\"] = \"options\";\n HTTP_METHODS[\"head\"] = \"head\";\n})(HTTP_METHODS || (HTTP_METHODS = {}));\nexport const SUCCESS_STATUS_RX = /2[0-9]{2}|2XX/;\n/**\n * Given an HTTP method, convert it to the HTTP_METHODS enum\n */\nexport function methodToHttpMethod(method) {\n switch (method.toLowerCase()) {\n case 'get':\n return HTTP_METHODS.get;\n case 'put':\n return HTTP_METHODS.put;\n case 'post':\n return HTTP_METHODS.post;\n case 'patch':\n return HTTP_METHODS.patch;\n case 'delete':\n return HTTP_METHODS.delete;\n case 'options':\n return HTTP_METHODS.options;\n case 'head':\n return HTTP_METHODS.head;\n default:\n throw new Error(`Invalid HTTP method '${method}'`);\n }\n}\n/**\n * Resolves on a validated OAS 3 for the given spec (OAS 2 or OAS 3), or rejects\n * if errors occur.\n */\nexport async function getValidOAS3(spec) {\n if (typeof spec.swagger === 'string' && spec.swagger === '2.0') {\n const { openapi } = await Swagger2OpenAPI.convertObj(spec, {\n patch: true,\n warnOnly: true,\n });\n return openapi;\n }\n else {\n return spec;\n }\n}\n/**\n * Counts the number of operations in an OAS.\n */\nexport function countOperations(oas) {\n let numOps = 0;\n for (const path in oas.paths) {\n for (const method in oas.paths[path]) {\n if (isHttpMethod(method)) {\n numOps++;\n if (oas.paths[path][method].callbacks) {\n for (const cbName in oas.paths[path][method].callbacks) {\n for (const _ in oas.paths[path][method].callbacks[cbName]) {\n numOps++;\n }\n }\n }\n }\n }\n }\n return numOps;\n}\n/**\n * Counts the number of operations that translate to queries in an OAS.\n */\nexport function countOperationsQuery(oas) {\n let numOps = 0;\n for (const path in oas.paths) {\n for (const method in oas.paths[path]) {\n if (isHttpMethod(method) && method.toLowerCase() === HTTP_METHODS.get) {\n numOps++;\n }\n }\n }\n return numOps;\n}\n/**\n * Counts the number of operations that translate to mutations in an OAS.\n */\nexport function countOperationsMutation(oas) {\n let numOps = 0;\n for (const path in oas.paths) {\n for (const method in oas.paths[path]) {\n if (isHttpMethod(method) && method.toLowerCase() !== HTTP_METHODS.get) {\n numOps++;\n }\n }\n }\n return numOps;\n}\n/**\n * Counts the number of operations that translate to subscriptions in an OAS.\n */\nexport function countOperationsSubscription(oas) {\n let numOps = 0;\n for (const path in oas.paths) {\n for (const method in oas.paths[path]) {\n if (isHttpMethod(method) && method.toLowerCase() !== HTTP_METHODS.get && oas.paths[path][method].callbacks) {\n for (const cbName in oas.paths[path][method].callbacks) {\n for (const _ in oas.paths[path][method].callbacks[cbName]) {\n numOps++;\n }\n }\n }\n }\n }\n return numOps;\n}\n/**\n * Counts the number of operations with a payload definition in an OAS.\n */\nexport function countOperationsWithPayload(oas) {\n let numOps = 0;\n for (const path in oas.paths) {\n for (const method in oas.paths[path]) {\n if (isHttpMethod(method) && typeof oas.paths[path][method].requestBody === 'object') {\n numOps++;\n }\n }\n }\n return numOps;\n}\n/**\n * Resolves the given reference in the given object.\n */\nexport function resolveRef(ref, oas) {\n return jsonptr.JsonPointer.get(oas, ref);\n}\n/**\n * Returns the base URL to use for the given operation.\n */\nexport function getBaseUrl(operation) {\n // Check for servers:\n if (!Array.isArray(operation.servers) || operation.servers.length === 0) {\n throw new Error(`No servers defined for operation '${operation.operationString}'`);\n }\n // Check for local servers\n if (Array.isArray(operation.servers) && operation.servers.length > 0) {\n const url = buildUrl(operation.servers[0]);\n if (Array.isArray(operation.servers) && operation.servers.length > 1) {\n httpLog(`Warning: Randomly selected first server '${url}'`);\n }\n return url.replace(/\\/$/, '');\n }\n const oas = operation.oas;\n if (Array.isArray(oas.servers) && oas.servers.length > 0) {\n const url = buildUrl(oas.servers[0]);\n if (Array.isArray(oas.servers) && oas.servers.length > 1) {\n httpLog(`Warning: Randomly selected first server '${url}'`);\n }\n return url.replace(/\\/$/, '');\n }\n throw new Error('Cannot find a server to call');\n}\n/**\n * Returns the default URL for a given OAS server object.\n */\nfunction buildUrl(server) {\n let url = server.url;\n // Replace with variable defaults, if applicable\n if (typeof server.variables === 'object' && Object.keys(server.variables).length > 0) {\n for (const variableKey in server.variables) {\n // TODO: check for default? Would be invalid OAS\n url = url.replace(`{${variableKey}}`, server.variables[variableKey].default.toString());\n }\n }\n return url;\n}\n/**\n * Returns object/array/scalar where all object keys (if applicable) are\n * sanitized.\n */\nexport function sanitizeObjectKeys(obj, // obj does not necessarily need to be an object\ncaseStyle = CaseStyle.camelCase) {\n const cleanKeys = (obj) => {\n // Case: no (response) data\n if (obj === null || typeof obj === 'undefined') {\n return null;\n // Case: array\n }\n else if (Array.isArray(obj)) {\n return obj.map(cleanKeys);\n // Case: object\n }\n else if (typeof obj === 'object') {\n const res = {};\n for (const key in obj) {\n const saneKey = sanitize(key, caseStyle);\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n res[saneKey] = cleanKeys(obj[key]);\n }\n }\n return res;\n // Case: scalar\n }\n else {\n return obj;\n }\n };\n return cleanKeys(obj);\n}\n/**\n * Desanitizes keys in given object by replacing them with the keys stored in\n * the given mapping.\n */\nexport function desanitizeObjectKeys(obj, mapping = {}) {\n const replaceKeys = (obj) => {\n if (obj === null) {\n return null;\n }\n else if (Array.isArray(obj)) {\n return obj.map(replaceKeys);\n }\n else if (typeof obj === 'object') {\n const res = {};\n for (const key in obj) {\n if (key in mapping) {\n const rawKey = mapping[key];\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n res[rawKey] = replaceKeys(obj[key]);\n }\n }\n else {\n res[key] = replaceKeys(obj[key]);\n }\n }\n return res;\n }\n else {\n return obj;\n }\n };\n return replaceKeys(obj);\n}\n/**\n * Returns the GraphQL type that the provided schema should be made into\n *\n * Does not consider allOf, anyOf, oneOf, or not (handled separately)\n */\nexport function getSchemaTargetGraphQLType(schema, data) {\n // CASE: object\n if (schema.type === 'object' || typeof schema.properties === 'object') {\n // TODO: additionalProperties is more like a flag than a type itself\n // CASE: arbitrary JSON\n if (typeof schema.additionalProperties === 'object') {\n return 'json';\n }\n else {\n return 'object';\n }\n }\n // CASE: array\n if (schema.type === 'array' || 'items' in schema) {\n return 'list';\n }\n // CASE: enum\n if (Array.isArray(schema.enum)) {\n return 'enum';\n }\n // CASE: a type is present\n if (typeof schema.type === 'string') {\n // Special edge cases involving the schema format\n if (typeof schema.format === 'string') {\n /**\n * CASE: 64 bit int - return number instead of integer, leading to use of\n * GraphQLFloat, which can support 64 bits:\n */\n if (schema.type === 'integer' && schema.format === 'int64') {\n return 'number';\n // CASE: id\n }\n else if (schema.type === 'string' &&\n (schema.format === 'uuid' ||\n // Custom ID format\n (Array.isArray(data.options.idFormats) && data.options.idFormats.includes(schema.format)))) {\n return 'id';\n }\n }\n return schema.type;\n }\n return null;\n}\nfunction isIdParam(part) {\n return /^{.*(id|name|key).*}$/gi.test(part);\n}\nfunction isSingularParam(part, nextPart) {\n return `\\{${pluralize.singular(part)}\\}` === nextPart;\n}\n/**\n * Infers a resource name from the given URL path.\n *\n * For example, turns \"/users/{userId}/car\" into \"userCar\".\n */\nexport function inferResourceNameFromPath(path) {\n const parts = path.split('/');\n const pathNoPathParams = parts.reduce((path, part, i) => {\n if (!/{/g.test(part)) {\n if (parts[i + 1] && (isIdParam(parts[i + 1]) || isSingularParam(part, parts[i + 1]))) {\n return path + capitalize(pluralize.singular(part));\n }\n else {\n return path + capitalize(part);\n }\n }\n else {\n return path;\n }\n }, '');\n return pathNoPathParams;\n}\n/**\n * Returns JSON-compatible schema required by the given operation\n */\nexport function getRequestBodyObject(operation, oas) {\n if (typeof operation.requestBody === 'object') {\n let requestBodyObject = operation.requestBody;\n // Make sure we have a RequestBodyObject:\n if (typeof requestBodyObject.$ref === 'string') {\n requestBodyObject = resolveRef(requestBodyObject.$ref, oas);\n }\n else {\n requestBodyObject = requestBodyObject;\n }\n if (typeof requestBodyObject.content === 'object') {\n const content = requestBodyObject.content;\n // Prioritize content-type JSON\n if (Object.keys(content).includes('application/json')) {\n return {\n payloadContentType: 'application/json',\n requestBodyObject,\n };\n }\n else if (Object.keys(content).includes('application/x-www-form-urlencoded')) {\n return {\n payloadContentType: 'application/x-www-form-urlencoded',\n requestBodyObject,\n };\n }\n else {\n // Pick first (random) content type\n const randomContentType = Object.keys(content)[0].toString();\n return {\n payloadContentType: randomContentType,\n requestBodyObject,\n };\n }\n }\n }\n return { payloadContentType: null, requestBodyObject: null };\n}\n/**\n * Returns the request schema (if any) for the given operation,\n * a dictionary of names from different sources (if available), and whether the\n * request schema is required for the operation.\n */\nexport function getRequestSchemaAndNames(path, operation, oas) {\n const { payloadContentType, requestBodyObject } = getRequestBodyObject(operation, oas);\n if (payloadContentType) {\n let payloadSchema = requestBodyObject.content[payloadContentType].schema;\n // Get resource name from different sources\n let fromRef;\n if ('$ref' in payloadSchema) {\n fromRef = payloadSchema.$ref.split('/').pop();\n payloadSchema = resolveRef(payloadSchema.$ref, oas);\n }\n let payloadSchemaNames = {\n fromRef,\n fromSchema: payloadSchema.title,\n fromPath: inferResourceNameFromPath(path),\n };\n // Determine if request body is required:\n const payloadRequired = typeof requestBodyObject.required === 'boolean' ? requestBodyObject.required : false;\n /**\n * Edge case: if request body content-type is not application/json or\n * application/x-www-form-urlencoded, do not parse it.\n *\n * Instead, treat the request body as a black box and send it as a string\n * with the proper content-type header\n */\n if (payloadContentType !== 'application/json' && payloadContentType !== 'application/x-www-form-urlencoded') {\n const saneContentTypeName = uncapitalize(payloadContentType.split('/').reduce((name, term) => {\n return name + capitalize(term);\n }));\n payloadSchemaNames = {\n fromPath: saneContentTypeName,\n };\n let description = `String represents payload of content type '${payloadContentType}'`;\n if ('description' in payloadSchema && typeof payloadSchema.description === 'string') {\n description += `\\n\\nOriginal top level description: '${payloadSchema.description}'`;\n }\n payloadSchema = {\n description: description,\n type: 'string',\n };\n }\n return {\n payloadContentType,\n payloadSchema,\n payloadSchemaNames,\n payloadRequired,\n };\n }\n return {\n payloadRequired: false,\n };\n}\n/**\n * Returns JSON-compatible schema produced by the given operation\n */\nexport function getResponseObject(operation, statusCode, oas) {\n if (typeof operation.responses === 'object') {\n const responses = operation.responses;\n if (typeof responses[statusCode] === 'object') {\n let responseObject = responses[statusCode];\n // Make sure we have a ResponseObject:\n if (typeof responseObject.$ref === 'string') {\n responseObject = resolveRef(responseObject.$ref, oas);\n }\n else {\n responseObject = responseObject;\n }\n if (responseObject.content && typeof responseObject.content !== 'undefined') {\n const content = responseObject.content;\n // Prioritize content-type JSON\n if (Object.keys(content).includes('application/json')) {\n return {\n responseContentType: 'application/json',\n responseObject,\n };\n }\n else {\n // Pick first (random) content type\n const randomContentType = Object.keys(content)[0].toString();\n return {\n responseContentType: randomContentType,\n responseObject,\n };\n }\n }\n }\n }\n return { responseContentType: null, responseObject: null };\n}\n/**\n * Returns the response schema for the given operation,\n * a successful status code, and a dictionary of names from different sources\n * (if available).\n */\nexport function getResponseSchemaAndNames(path, method, operation, oas, data, options) {\n const statusCode = getResponseStatusCode(path, method, operation, oas, data);\n if (!statusCode) {\n return {};\n }\n const { responseContentType, responseObject } = getResponseObject(operation, statusCode, oas);\n if (responseContentType) {\n let responseSchema = responseObject.content[responseContentType].schema;\n let fromRef;\n if ('$ref' in responseSchema) {\n fromRef = responseSchema.$ref.split('/').pop();\n responseSchema = resolveRef(responseSchema.$ref, oas);\n }\n const responseSchemaNames = {\n fromRef,\n fromSchema: responseSchema.title,\n fromPath: inferResourceNameFromPath(path),\n };\n /**\n * Edge case: if response body content-type is not application/json, do not\n * parse.\n */\n if (responseContentType !== 'application/json') {\n let description = 'Placeholder to access non-application/json response bodies';\n if ('description' in responseSchema && typeof responseSchema.description === 'string') {\n description += `\\n\\nOriginal top level description: '${responseSchema.description}'`;\n }\n responseSchema = {\n description: description,\n type: 'string',\n };\n }\n return {\n responseContentType,\n responseSchema,\n responseSchemaNames,\n statusCode,\n };\n }\n else {\n /**\n * GraphQL requires that objects must have some properties.\n *\n * To allow some operations (such as those with a 204 HTTP code) to be\n * included in the GraphQL interface, we added the fillEmptyResponses\n * option, which will simply create a placeholder to allow access.\n */\n if (options.fillEmptyResponses) {\n return {\n responseSchemaNames: {\n fromPath: inferResourceNameFromPath(path),\n },\n responseContentType: 'application/json',\n responseSchema: {\n description: 'Placeholder to support operations with no response schema',\n type: 'object',\n },\n };\n }\n return {};\n }\n}\n/**\n * Returns a success status code for the given operation\n */\nexport function getResponseStatusCode(path, method, operation, oas, data) {\n var _a;\n if (typeof operation.responses === 'object') {\n const codes = Object.keys(operation.responses);\n const successCodes = codes.filter(code => {\n return SUCCESS_STATUS_RX.test(code.toString());\n });\n if (successCodes.length === 1) {\n return successCodes[0].toString();\n }\n else if (successCodes.length > 1) {\n handleWarning({\n mitigationType: MitigationTypes.MULTIPLE_RESPONSES,\n message: `Operation '${formatOperationString(method, path, (_a = oas.info) === null || _a === void 0 ? void 0 : _a.title)}' ` +\n `contains multiple possible successful response object ` +\n `(HTTP code 200-299 or 2XX). Only one can be chosen.`,\n mitigationAddendum: `The response object with the HTTP code ` + `${successCodes[0]} will be selected`,\n data,\n log: translationLog,\n });\n return successCodes[0].toString();\n }\n }\n return null;\n}\n/**\n * Returns a hash containing the links in the given operation.\n */\nexport function getLinks(path, method, operation, oas, data) {\n const links = {};\n const statusCode = getResponseStatusCode(path, method, operation, oas, data);\n if (!statusCode) {\n return links;\n }\n if (typeof operation.responses === 'object') {\n const responses = operation.responses;\n if (typeof responses[statusCode] === 'object') {\n let response = responses[statusCode];\n if (typeof response.$ref === 'string') {\n response = resolveRef(response.$ref, oas);\n }\n // Here, we can be certain we have a ResponseObject:\n response = response;\n if (typeof response.links === 'object') {\n const epLinks = response.links;\n for (const linkKey in epLinks) {\n let link = epLinks[linkKey];\n // Make sure we have LinkObjects:\n if (typeof link.$ref === 'string') {\n link = resolveRef(link.$ref, oas);\n }\n else {\n link = link;\n }\n links[linkKey] = link;\n }\n }\n }\n }\n return links;\n}\n/**\n * Returns the list of parameters in the given operation.\n */\nexport function getParameters(path, method, operation, pathItem, oas) {\n let parameters = [];\n if (!isHttpMethod(method)) {\n translationLog(`Warning: attempted to get parameters for ${method} ${path}, ` + `which is not an operation.`);\n return parameters;\n }\n // First, consider parameters in Path Item Object:\n const pathParams = pathItem.parameters;\n if (Array.isArray(pathParams)) {\n const pathItemParameters = pathParams.map(p => {\n if (typeof p.$ref === 'string') {\n // Here we know we have a parameter object:\n return resolveRef(p.$ref, oas);\n }\n else {\n // Here we know we have a parameter object:\n return p;\n }\n });\n parameters = parameters.concat(pathItemParameters);\n }\n // Second, consider parameters in Operation Object:\n const opObjectParameters = operation.parameters;\n if (Array.isArray(opObjectParameters)) {\n const operationParameters = opObjectParameters.map(p => {\n if (typeof p.$ref === 'string') {\n // Here we know we have a parameter object:\n return resolveRef(p.$ref, oas);\n }\n else {\n // Here we know we have a parameter object:\n return p;\n }\n });\n parameters = parameters.concat(operationParameters);\n }\n return parameters;\n}\n/**\n * Returns an array of server objects for the operation at the given path and\n * method. Considers in the following order: global server definitions,\n * definitions at the path item, definitions at the operation, or the OAS\n * default.\n */\nexport function getServers(operation, pathItem, oas) {\n let servers = [];\n // Global server definitions:\n if (Array.isArray(oas.servers) && oas.servers.length > 0) {\n servers = oas.servers;\n }\n // First, consider servers defined on the path\n if (Array.isArray(pathItem.servers) && pathItem.servers.length > 0) {\n servers = pathItem.servers;\n }\n // Second, consider servers defined on the operation\n if (Array.isArray(operation.servers) && operation.servers.length > 0) {\n servers = operation.servers;\n }\n // Default, in case there is no server:\n if (servers.length === 0) {\n const server = {\n url: '/',\n };\n servers.push(server);\n }\n return servers;\n}\n/**\n * Returns a map of Security Scheme definitions, identified by keys. Resolves\n * possible references.\n */\nexport function getSecuritySchemes(oas) {\n // Collect all security schemes:\n const securitySchemes = {};\n if (typeof oas.components === 'object' && typeof oas.components.securitySchemes === 'object') {\n for (const schemeKey in oas.components.securitySchemes) {\n const obj = oas.components.securitySchemes[schemeKey];\n // Ensure we have actual SecuritySchemeObject:\n if (typeof obj.$ref === 'string') {\n // Result of resolution will be SecuritySchemeObject:\n securitySchemes[schemeKey] = resolveRef(obj.$ref, oas);\n }\n else {\n // We already have a SecuritySchemeObject:\n securitySchemes[schemeKey] = obj;\n }\n }\n }\n return securitySchemes;\n}\n/**\n * Returns the list of sanitized keys of non-OAuth2 security schemes\n * required by the operation at the given path and method.\n */\nexport function getSecurityRequirements(operation, securitySchemes, oas) {\n const results = [];\n // First, consider global requirements\n const globalSecurity = oas.security;\n if (globalSecurity && typeof globalSecurity !== 'undefined') {\n for (const secReq of globalSecurity) {\n for (const schemaKey in secReq) {\n if (securitySchemes[schemaKey] &&\n typeof securitySchemes[schemaKey] === 'object' &&\n securitySchemes[schemaKey].def.type !== 'oauth2') {\n results.push(schemaKey);\n }\n }\n }\n }\n // Second, consider operation requirements\n const localSecurity = operation.security;\n if (localSecurity && typeof localSecurity !== 'undefined') {\n for (const secReq of localSecurity) {\n for (const schemaKey in secReq) {\n if (securitySchemes[schemaKey] &&\n typeof securitySchemes[schemaKey] === 'object' &&\n securitySchemes[schemaKey].def.type !== 'oauth2') {\n if (!results.includes(schemaKey)) {\n results.push(schemaKey);\n }\n }\n }\n }\n }\n return results;\n}\nexport var CaseStyle;\n(function (CaseStyle) {\n CaseStyle[CaseStyle[\"simple\"] = 0] = \"simple\";\n CaseStyle[CaseStyle[\"PascalCase\"] = 1] = \"PascalCase\";\n CaseStyle[CaseStyle[\"camelCase\"] = 2] = \"camelCase\";\n CaseStyle[CaseStyle[\"ALL_CAPS\"] = 3] = \"ALL_CAPS\";\n})(CaseStyle || (CaseStyle = {}));\n/**\n * First sanitizes given string and then also camel-cases it.\n */\nexport function sanitize(str, caseStyle) {\n /**\n * Used in conjunction to simpleNames, which only removes illegal\n * characters and preserves casing\n */\n if (caseStyle === CaseStyle.simple) {\n return str.replace(/[^a-zA-Z0-9_]/gi, '');\n }\n /**\n * Remove all GraphQL unsafe characters\n */\n const regex = caseStyle === CaseStyle.ALL_CAPS\n ? /[^a-zA-Z0-9_]/g // ALL_CAPS has underscores\n : /[^a-zA-Z0-9]/g;\n const operators = {\n '<=': 'less_than_or_equal_to',\n '>=': 'greater_than_or_equal_to',\n '<': 'less_than',\n '>': 'greater_than',\n '=': 'equal_to',\n };\n for (const operator in operators) {\n str = str.replace(operator, operators[operator]);\n }\n let sanitized = str.split(regex).reduce((path, part) => {\n if (caseStyle === CaseStyle.ALL_CAPS) {\n return path + '_' + part;\n }\n else {\n return path + capitalize(part);\n }\n });\n switch (caseStyle) {\n case CaseStyle.PascalCase:\n // The first character in PascalCase should be uppercase\n sanitized = capitalize(sanitized);\n break;\n case CaseStyle.camelCase:\n // The first character in camelCase should be lowercase\n sanitized = uncapitalize(sanitized);\n break;\n case CaseStyle.ALL_CAPS:\n sanitized = sanitized.toUpperCase();\n break;\n }\n // Special case: we cannot start with number, and cannot be empty:\n if (/^[0-9]/.test(sanitized) || sanitized === '') {\n sanitized = '_' + sanitized;\n }\n return sanitized;\n}\n/**\n * Sanitizes the given string and stores the sanitized-to-original mapping in\n * the given mapping.\n */\nexport function storeSaneName(saneStr, str, mapping) {\n if (saneStr in mapping && str !== mapping[saneStr]) {\n // TODO: Follow warning model\n translationLog(`Warning: '${str}' and '${mapping[saneStr]}' both sanitize ` +\n `to '${saneStr}' - collision possible. Desanitize to '${str}'.`);\n let appendix = 2;\n while (`${saneStr}${appendix}` in mapping) {\n appendix++;\n }\n return storeSaneName(`${saneStr}${appendix}`, str, mapping);\n }\n mapping[saneStr] = str;\n return saneStr;\n}\n/**\n * Stringifies and possibly trims the given string to the provided length.\n */\nexport function trim(str, length) {\n if (typeof str !== 'string') {\n str = JSON.stringify(str);\n }\n if (str && str.length > length) {\n str = `${str.substring(0, length)}...`;\n }\n return str;\n}\n/**\n * Determines if the given \"method\" is indeed an operation. Alternatively, the\n * method could point to other types of information (e.g., parameters, servers).\n */\nexport function isHttpMethod(method) {\n return Object.keys(HTTP_METHODS).includes(method.toLowerCase());\n}\n/**\n * Formats a string that describes an operation in the form:\n * {name of OAS} {HTTP method in ALL_CAPS} {operation path}\n *\n * Also used in preprocessing.ts where Operation objects are being constructed\n */\nexport function formatOperationString(method, path, title) {\n if (title) {\n return `${title} ${method.toUpperCase()} ${path}`;\n }\n else {\n return `${method.toUpperCase()} ${path}`;\n }\n}\n/**\n * Capitalizes a given string\n */\nexport function capitalize(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\n/**\n * Uncapitalizes a given string\n */\nexport function uncapitalize(str) {\n return str.charAt(0).toLowerCase() + str.slice(1);\n}\n/**\n * For operations that do not have an operationId, generate one\n */\nexport function generateOperationId(method, path) {\n return sanitize(`${method} ${path}`, CaseStyle.camelCase);\n}\n//# sourceMappingURL=oas_3_tools.js.map","/* eslint-disable no-case-declarations */\n/* eslint-disable camelcase */\n// Copyright IBM Corp. 2018. All Rights Reserved.\n// Node module: openapi-to-graphql\n// This file is licensed under the MIT License.\n// License text available at https://opensource.org/licenses/MIT\n// Imports:\nimport * as Oas3Tools from './oas_3_tools';\nimport * as JSONPath from 'jsonpath-plus';\nimport { mockDebug as debug } from './utils';\nimport { GraphQLError } from 'graphql';\nimport formurlencoded from 'form-urlencoded';\nimport urlJoin from 'url-join';\nconst translationLog = debug('translation');\nconst httpLog = debug('http');\nconst pubsubLog = debug('pubsub');\nfunction headersToObject(headers) {\n const headersObj = {};\n headers.forEach((value, key) => {\n headersObj[key] = value;\n });\n return headersObj;\n}\n/*\n * If operationType is Subscription, creates and returns a resolver object that\n * contains subscribe to perform subscription and resolve to execute payload\n * transformation\n */\nexport function getSubscribe({ operation, payloadName, data, baseUrl, connectOptions, pubsub, }) {\n var _a;\n // Determine the appropriate URL:\n if (typeof baseUrl === 'undefined') {\n baseUrl = Oas3Tools.getBaseUrl(operation);\n }\n // Return custom resolver if it is defined\n const customResolvers = data.options.customSubscriptionResolvers;\n const title = (_a = operation.oas.info) === null || _a === void 0 ? void 0 : _a.title;\n const path = operation.path;\n const method = operation.method;\n if (typeof customResolvers === 'object' &&\n typeof customResolvers[title] === 'object' &&\n typeof customResolvers[title][path] === 'object' &&\n typeof customResolvers[title][path][method] === 'object' &&\n typeof customResolvers[title][path][method].subscribe === 'function') {\n translationLog(`Use custom publish resolver for ${operation.operationString}`);\n return customResolvers[title][path][method].subscribe;\n }\n return (root, args, context, info) => {\n try {\n /**\n * Determine possible topic(s) by resolving callback path\n *\n * GraphQL produces sanitized payload names, so we have to sanitize before\n * lookup here\n */\n const paramName = Oas3Tools.sanitize(payloadName, Oas3Tools.CaseStyle.camelCase);\n const resolveData = {};\n if (payloadName && typeof payloadName === 'string') {\n // The option genericPayloadArgName will change the payload name to \"requestBody\"\n const sanePayloadName = data.options.genericPayloadArgName\n ? 'requestBody'\n : Oas3Tools.sanitize(payloadName, Oas3Tools.CaseStyle.camelCase);\n if (sanePayloadName in args) {\n if (typeof args[sanePayloadName] === 'object') {\n const rawPayload = Oas3Tools.desanitizeObjectKeys(args[sanePayloadName], data.saneMap);\n resolveData.usedPayload = rawPayload;\n }\n else {\n const rawPayload = JSON.parse(args[sanePayloadName]);\n resolveData.usedPayload = rawPayload;\n }\n }\n }\n if (connectOptions) {\n resolveData.usedRequestOptions = connectOptions;\n }\n else {\n resolveData.usedRequestOptions = {\n method: resolveData.usedPayload.method ? resolveData.usedPayload.method : method.toUpperCase(),\n };\n }\n pubsubLog(`Subscription schema: ${JSON.stringify(resolveData.usedPayload)}`);\n let value = path;\n let paramNameWithoutLocation = paramName;\n if (paramName.indexOf('.') !== -1) {\n paramNameWithoutLocation = paramName.split('.')[1];\n }\n // See if the callback path contains constants expression\n if (value.search(/{|}/) === -1) {\n args[paramNameWithoutLocation] = isRuntimeExpression(value)\n ? resolveRuntimeExpression(paramName, value, resolveData, root, args)\n : value;\n }\n else {\n // Replace callback expression with appropriate values\n const cbParams = value.match(/{([^}]*)}/g);\n pubsubLog(`Analyzing subscription path: ${cbParams.toString()}`);\n cbParams.forEach(cbParam => {\n value = value.replace(cbParam, resolveRuntimeExpression(paramName, cbParam.substring(1, cbParam.length - 1), resolveData, root, args));\n });\n args[paramNameWithoutLocation] = value;\n }\n const topic = args[paramNameWithoutLocation] || 'test';\n pubsubLog(`Subscribing to: ${topic}`);\n return pubsub.asyncIterator(topic);\n }\n catch (e) {\n console.error(e);\n throw e;\n }\n };\n}\n/*\n * If operationType is Subscription, creates and returns a resolver function\n * triggered after a message has been published to the corresponding subscribe\n * topic(s) to execute payload transformation\n */\nexport function getPublishResolver({ operation, responseName, data, }) {\n var _a;\n // Return custom resolver if it is defined\n const customResolvers = data.options.customSubscriptionResolvers;\n const title = (_a = operation.oas.info) === null || _a === void 0 ? void 0 : _a.title;\n const path = operation.path;\n const method = operation.method;\n if (typeof customResolvers === 'object' &&\n typeof customResolvers[title] === 'object' &&\n typeof customResolvers[title][path] === 'object' &&\n typeof customResolvers[title][path][method] === 'object' &&\n typeof customResolvers[title][path][method].resolve === 'function') {\n translationLog(`Use custom publish resolver for ${operation.operationString}`);\n return customResolvers[title][path][method].resolve;\n }\n return (payload, args, context, info) => {\n // Validate and format based on operation.responseDefinition\n const typeOfResponse = operation.responseDefinition.targetGraphQLType;\n pubsubLog(`Message received: ${responseName}, ${typeOfResponse}, ${JSON.stringify(payload)}`);\n let responseBody;\n let saneData;\n if (typeof payload === 'object') {\n if (typeOfResponse === 'object') {\n if (Buffer.isBuffer(payload)) {\n try {\n responseBody = JSON.parse(payload.toString());\n }\n catch (e) {\n const errorString = `Cannot JSON parse payload` +\n `operation ${operation.operationString} ` +\n `even though it has content-type 'application/json'`;\n pubsubLog(errorString);\n return null;\n }\n }\n else {\n responseBody = payload;\n }\n saneData = Oas3Tools.sanitizeObjectKeys(payload);\n }\n else if ((Buffer.isBuffer(payload) || Array.isArray(payload)) && typeOfResponse === 'string') {\n saneData = payload.toString();\n }\n }\n else if (typeof payload === 'string') {\n if (typeOfResponse === 'object') {\n try {\n responseBody = JSON.parse(payload);\n saneData = Oas3Tools.sanitizeObjectKeys(responseBody);\n }\n catch (e) {\n const errorString = `Cannot JSON parse payload` +\n `operation ${operation.operationString} ` +\n `even though it has content-type 'application/json'`;\n pubsubLog(errorString);\n return null;\n }\n }\n else if (typeOfResponse === 'string') {\n saneData = payload;\n }\n }\n pubsubLog(`Message forwarded: ${JSON.stringify(saneData || payload)}`);\n return saneData || payload;\n };\n}\n/**\n * Creates and returns a resolver function that performs API requests for the\n * given GraphQL query\n */\nexport function getResolver(getResolverParams) {\n var _a;\n let { operation, argsFromLink = {}, payloadName, data, baseUrl, requestOptions, fetch: fetchFn = data.options.fetch, qs: customQs, } = getResolverParams();\n // Determine the appropriate URL:\n if (typeof baseUrl === 'undefined') {\n baseUrl = Oas3Tools.getBaseUrl(operation);\n }\n // Return custom resolver if it is defined\n const customResolvers = data.options.customResolvers;\n const title = (_a = operation.oas.info) === null || _a === void 0 ? void 0 : _a.title;\n const path = operation.path;\n const method = operation.method;\n if (typeof customResolvers === 'object' &&\n typeof customResolvers[title] === 'object' &&\n typeof customResolvers[title][path] === 'object' &&\n typeof customResolvers[title][path][method] === 'function') {\n translationLog(`Use custom resolver for ${operation.operationString}`);\n return customResolvers[title][path][method];\n }\n // Return resolve function:\n return async (root, args, ctx, info = {}) => {\n /**\n * Retch resolveData from possibly existing _openAPIToGraphQL\n *\n * NOTE: _openAPIToGraphQL is an object used to pass security info and data\n * from previous resolvers\n */\n let resolveData = {};\n if (root &&\n typeof root === 'object' &&\n typeof root._openAPIToGraphQL === 'object' &&\n typeof root._openAPIToGraphQL.data === 'object') {\n const parentIdentifier = getParentIdentifier(info);\n if (!(parentIdentifier.length === 0) && parentIdentifier in root._openAPIToGraphQL.data) {\n /**\n * Resolving link params may change the usedParams, but these changes\n * should not be present in the parent _openAPIToGraphQL, therefore copy\n * the object\n */\n resolveData = JSON.parse(JSON.stringify(root._openAPIToGraphQL.data[parentIdentifier]));\n }\n }\n if (typeof resolveData.usedParams === 'undefined') {\n resolveData.usedParams = {};\n }\n /**\n * Handle default values of parameters, if they have not yet been defined by\n * the user.\n */\n operation.parameters.forEach(param => {\n const paramName = Oas3Tools.sanitize(param.name, !data.options.simpleNames ? Oas3Tools.CaseStyle.camelCase : Oas3Tools.CaseStyle.simple);\n if (typeof args[paramName] === 'undefined' && param.schema && typeof param.schema === 'object') {\n let schema = param.schema;\n if (schema && schema.$ref && typeof schema.$ref === 'string') {\n schema = Oas3Tools.resolveRef(schema.$ref, operation.oas);\n }\n if (schema && schema.default && typeof schema.default !== 'undefined') {\n args[paramName] = schema.default;\n }\n }\n });\n // Handle arguments provided by links\n for (const paramName in argsFromLink) {\n const saneParamName = Oas3Tools.sanitize(paramName, !data.options.simpleNames ? Oas3Tools.CaseStyle.camelCase : Oas3Tools.CaseStyle.simple);\n let value = argsFromLink[paramName];\n /**\n * see if the link parameter contains constants that are appended to the link parameter\n *\n * e.g. instead of:\n * $response.body#/employerId\n *\n * it could be:\n * abc_{$response.body#/employerId}\n */\n if (value.search(/{|}/) === -1) {\n args[saneParamName] = isRuntimeExpression(value)\n ? resolveLinkParameter(paramName, value, resolveData, root, args)\n : value;\n }\n else {\n // Replace link parameters with appropriate values\n const linkParams = value.match(/{([^}]*)}/g);\n linkParams.forEach(linkParam => {\n value = value.replace(linkParam, resolveLinkParameter(paramName, linkParam.substring(1, linkParam.length - 1), resolveData, root, args));\n });\n args[saneParamName] = value;\n }\n }\n // Stored used parameters to future requests:\n resolveData.usedParams = Object.assign(resolveData.usedParams, args);\n // Build URL (i.e., fill in path parameters):\n const { path, qs: query, headers } = extractRequestDataFromArgs(operation.path, operation.parameters, args, data);\n const urlObject = new URL(urlJoin(baseUrl, path));\n /**\n * The Content-type and accept property should not be changed because the\n * object type has already been created and unlike these properties, it\n * cannot be easily changed\n *\n * NOTE: This may cause the user to encounter unexpected changes\n */\n if (operation.method !== 'get') {\n /**\n * the check is done on the 'get' operation to determine if there is a payload because\n * operation.payloadRequired is not always correctly initialized (at least during the unit test)\n */\n headers['content-type'] =\n typeof operation.payloadContentType !== 'undefined' ? operation.payloadContentType : 'application/json';\n }\n headers.accept =\n typeof operation.responseContentType !== 'undefined' ? operation.responseContentType : 'application/json';\n let options;\n if (requestOptions) {\n options = { ...requestOptions };\n options.method = operation.method;\n options.headers = options.headers || {};\n for (const headerName in headers) {\n const headerValue = headers[headerName];\n if (headerValue) {\n options.headers[headerName] = headerValue;\n }\n }\n }\n else {\n options = {\n method: operation.method,\n headers: headers,\n };\n }\n for (const paramName in query) {\n const val = query[paramName];\n if (val) {\n urlObject.searchParams.set(paramName, val);\n }\n }\n /**\n * Determine possible payload\n *\n * GraphQL produces sanitized payload names, so we have to sanitize before\n * lookup here\n */\n resolveData.usedPayload = undefined;\n if (typeof payloadName === 'string') {\n // The option genericPayloadArgName will change the payload name to \"requestBody\"\n const sanePayloadName = data.options.genericPayloadArgName\n ? 'requestBody'\n : Oas3Tools.sanitize(payloadName, Oas3Tools.CaseStyle.camelCase);\n let rawPayload;\n if (operation.payloadContentType === 'application/json') {\n rawPayload = JSON.stringify(Oas3Tools.desanitizeObjectKeys(args[sanePayloadName], data.saneMap));\n }\n else if (operation.payloadContentType === 'application/x-www-form-urlencoded') {\n rawPayload = formurlencoded(Oas3Tools.desanitizeObjectKeys(args[sanePayloadName], data.saneMap));\n }\n else {\n // Payload is not an object\n rawPayload = args[sanePayloadName];\n }\n options.body = rawPayload;\n resolveData.usedPayload = rawPayload;\n }\n /**\n * Pass on OpenAPI-to-GraphQL options\n */\n if (typeof data.options === 'object') {\n // Headers:\n if (typeof data.options.headers === 'object') {\n for (const header in data.options.headers) {\n const val = data.options.headers[header];\n if (val) {\n options.headers[header] = val;\n }\n }\n }\n // Query string:\n if (typeof data.options.qs === 'object') {\n for (const query in data.options.qs) {\n const val = data.options.qs[query];\n if (val) {\n urlObject.searchParams.set(query, val);\n }\n }\n }\n }\n if (typeof customQs === 'object') {\n for (const query in customQs) {\n const val = customQs[query];\n if (val) {\n urlObject.searchParams.set(query, val);\n }\n }\n }\n // Get authentication headers and query parameters\n if (root && typeof root === 'object' && typeof root._openAPIToGraphQL === 'object') {\n const { authHeaders, authQs, authCookie } = getAuthOptions(operation, root._openAPIToGraphQL, data);\n // ...and pass them to the options\n for (const headerName in authHeaders) {\n const headerValue = authHeaders[headerName];\n if (headerValue) {\n options.headers[headerName] = headerValue;\n }\n }\n for (const query in authQs) {\n const val = authQs[query];\n if (val) {\n urlObject.searchParams.set(query, val);\n }\n }\n // Add authentication cookie if created\n if (authCookie !== null) {\n const cookieHeaderName = 'cookie';\n options.headers[cookieHeaderName] = authCookie;\n }\n }\n // Extract OAuth token from context (if available)\n if (data.options.sendOAuthTokenInQuery) {\n const oauthQueryObj = createOAuthQS(data, ctx);\n for (const query in oauthQueryObj) {\n const val = oauthQueryObj[query];\n if (val) {\n urlObject.searchParams.set(query, val);\n }\n }\n }\n else {\n const oauthHeader = createOAuthHeader(data, ctx);\n for (const headerName in oauthHeader) {\n const headerValue = oauthHeader[headerName];\n if (headerValue) {\n options.headers[headerName] = headerValue;\n }\n }\n }\n const urlWithoutQuery = urlObject.href.replace(urlObject.search, '');\n resolveData.url = urlWithoutQuery;\n resolveData.usedRequestOptions = options;\n resolveData.usedStatusCode = operation.statusCode;\n // Make the call\n httpLog(`Call ${options.method.toUpperCase()} ${urlWithoutQuery}?${urlObject.search}\\n` +\n `headers: ${JSON.stringify(options.headers)}\\n` +\n `request body: ${options.body}`);\n let response;\n try {\n response = await fetchFn(urlObject.href, options);\n }\n catch (err) {\n httpLog(err);\n throw err;\n }\n const body = await response.text();\n if (response.status < 200 || response.status > 299) {\n httpLog(`${response.status} - ${Oas3Tools.trim(body, 100)}`);\n const errorString = `Could not invoke operation ${operation.operationString}`;\n if (data.options.provideErrorExtensions) {\n let responseBody;\n try {\n responseBody = JSON.parse(body);\n }\n catch (e) {\n responseBody = body;\n }\n const extensions = {\n method: operation.method,\n path: operation.path,\n statusText: response.statusText,\n statusCode: response.status,\n responseHeaders: headersToObject(response.headers),\n responseBody,\n };\n throw graphQLErrorWithExtensions(errorString, extensions);\n }\n else {\n throw new Error(errorString);\n }\n // Successful response 200-299\n }\n else {\n httpLog(`${response.status} - ${Oas3Tools.trim(body, 100)}`);\n if (response.headers.get('content-type')) {\n /**\n * If the response body is type JSON, then parse it\n *\n * content-type may not be necessarily 'application/json' it can be\n * 'application/json; charset=utf-8' for example\n */\n if (response.headers.get('content-type').includes('json')) {\n let responseBody;\n try {\n responseBody = JSON.parse(body);\n }\n catch (e) {\n const errorString = `Cannot JSON parse response body of ` +\n `operation ${operation.operationString} ` +\n `even though it has content-type '${response.headers.get('content-type')}'`;\n httpLog(errorString);\n throw errorString;\n }\n resolveData.responseHeaders = headersToObject(response.headers);\n // Deal with the fact that the server might send unsanitized data\n let saneData = Oas3Tools.sanitizeObjectKeys(responseBody, !data.options.simpleNames ? Oas3Tools.CaseStyle.camelCase : Oas3Tools.CaseStyle.simple);\n // Pass on _openAPIToGraphQL to subsequent resolvers\n if (saneData && typeof saneData === 'object') {\n if (Array.isArray(saneData)) {\n saneData.forEach(element => {\n if (typeof element._openAPIToGraphQL === 'undefined') {\n element._openAPIToGraphQL = {\n data: {},\n };\n }\n if (root && typeof root === 'object' && typeof root._openAPIToGraphQL === 'object') {\n Object.assign(element._openAPIToGraphQL, root._openAPIToGraphQL);\n }\n element._openAPIToGraphQL.data[getIdentifier(info)] = resolveData;\n });\n }\n else {\n if (typeof saneData._openAPIToGraphQL === 'undefined') {\n saneData._openAPIToGraphQL = {\n data: {},\n };\n }\n if (root && typeof root === 'object' && typeof root._openAPIToGraphQL === 'object') {\n Object.assign(saneData._openAPIToGraphQL, root._openAPIToGraphQL);\n }\n saneData._openAPIToGraphQL.data[getIdentifier(info)] = resolveData;\n }\n }\n // Apply limit argument\n if (data.options.addLimitArgument &&\n /**\n * NOTE: Does not differentiate between autogenerated args and\n * preexisting args\n *\n * Ensure that there is not preexisting 'limit' argument\n */\n !operation.parameters.find(parameter => {\n return parameter.name === 'limit';\n }) &&\n // Only array data\n Array.isArray(saneData) &&\n // Only array of objects/arrays\n saneData.some(data => {\n return typeof data === 'object';\n }) &&\n 'limit' in args) {\n let arraySaneData = saneData;\n const limit = args.limit;\n if (limit >= 0) {\n arraySaneData = arraySaneData.slice(0, limit);\n }\n else {\n throw new Error(`Auto-generated 'limit' argument must be greater than or equal to 0`);\n }\n saneData = arraySaneData;\n }\n return saneData;\n }\n else {\n // TODO: Handle YAML\n return body;\n }\n }\n else {\n /**\n * Check to see if there is not supposed to be a response body,\n * if that is the case, that would explain why there is not\n * a content-type\n */\n const { responseContentType } = Oas3Tools.getResponseObject(operation, operation.statusCode, operation.oas);\n if (responseContentType === null) {\n return null;\n }\n else {\n const errorString = 'Response does not have a Content-Type property';\n httpLog(errorString);\n throw errorString;\n }\n }\n }\n };\n}\n/**\n * Attempts to create an object to become an OAuth query string by extracting an\n * OAuth token from the ctx based on the JSON path provided in the options.\n */\nfunction createOAuthQS(data, context) {\n return typeof data.options.tokenJSONpath !== 'string' ? {} : extractToken(data, context);\n}\nfunction extractToken(data, ctx) {\n const tokenJSONpath = data.options.tokenJSONpath;\n const tokens = JSONPath.JSONPath({ path: tokenJSONpath, json: ctx });\n if (Array.isArray(tokens) && tokens.length > 0) {\n const token = tokens[0];\n return {\n access_token: token,\n };\n }\n else {\n httpLog(`Warning: could not extract OAuth token from context at '${tokenJSONpath}'`);\n return {};\n }\n}\n/**\n * Attempts to create an OAuth authorization header by extracting an OAuth token\n * from the ctx based on the JSON path provided in the options.\n */\nfunction createOAuthHeader(data, ctx) {\n if (typeof data.options.tokenJSONpath !== 'string') {\n return {};\n }\n // Extract token\n const tokenJSONpath = data.options.tokenJSONpath;\n const tokens = JSONPath.JSONPath({ path: tokenJSONpath, json: ctx });\n if (Array.isArray(tokens) && tokens.length > 0) {\n const token = tokens[0];\n return {\n Authorization: `Bearer ${token}`,\n 'User-Agent': 'openapi-to-graphql',\n };\n }\n else {\n httpLog(`Warning: could not extract OAuth token from context at ` + `'${tokenJSONpath}'`);\n return {};\n }\n}\n/**\n * Returns the headers and query strings to authenticate a request (if any).\n * Object containing authHeader and authQs object,\n * which hold headers and query parameters respectively to authentication a\n * request.\n */\nfunction getAuthOptions(operation, _openAPIToGraphQL, data) {\n const authHeaders = {};\n const authQs = {};\n let authCookie = null;\n /**\n * Determine if authentication is required, and which protocol (if any) we can\n * use\n */\n const { authRequired, sanitizedSecurityRequirement } = getAuthReqAndProtcolName(operation, _openAPIToGraphQL);\n const securityRequirement = data.saneMap[sanitizedSecurityRequirement];\n // Possibly, we don't need to do anything:\n if (!authRequired) {\n return { authHeaders, authQs, authCookie };\n }\n // If authentication is required, but we can't fulfill the protocol, throw:\n if (authRequired && typeof securityRequirement !== 'string') {\n throw new Error(`Missing information to authenticate API request.`);\n }\n if (typeof securityRequirement === 'string') {\n const security = data.security[securityRequirement];\n switch (security.def.type) {\n case 'apiKey':\n const apiKey = _openAPIToGraphQL.security[sanitizedSecurityRequirement].apiKey;\n if ('in' in security.def) {\n if (typeof security.def.name === 'string') {\n if (security.def.in === 'header') {\n authHeaders[security.def.name] = apiKey;\n }\n else if (security.def.in === 'query') {\n authQs[security.def.name] = apiKey;\n }\n else if (security.def.in === 'cookie') {\n authCookie = `${security.def.name}=${apiKey}`;\n }\n }\n else {\n throw new Error(`Cannot send API key in '${JSON.stringify(security.def.in)}'`);\n }\n }\n break;\n case 'http':\n switch (security.def.scheme) {\n case 'basic':\n const username = _openAPIToGraphQL.security[sanitizedSecurityRequirement].username;\n const password = _openAPIToGraphQL.security[sanitizedSecurityRequirement].password;\n const credentials = `${username}:${password}`;\n authHeaders.Authorization = `Basic ${Buffer.from(credentials).toString('base64')}`;\n break;\n default:\n throw new Error(`Cannot recognize http security scheme ` + `'${JSON.stringify(security.def.scheme)}'`);\n }\n break;\n case 'oauth2':\n break;\n case 'openIdConnect':\n break;\n default:\n throw new Error(`Cannot recognize security type '${security.def.type}'`);\n }\n }\n return { authHeaders, authQs, authCookie };\n}\n/**\n * Determines whether given operation requires authentication, and which of the\n * (possibly multiple) authentication protocols can be used based on the data\n * present in the given context.\n */\nfunction getAuthReqAndProtcolName(operation, _openAPIToGraphQL) {\n let authRequired = false;\n if (Array.isArray(operation.securityRequirements) && operation.securityRequirements.length > 0) {\n authRequired = true;\n for (const securityRequirement of operation.securityRequirements) {\n const sanitizedSecurityRequirement = Oas3Tools.sanitize(securityRequirement, Oas3Tools.CaseStyle.camelCase);\n if (typeof _openAPIToGraphQL.security[sanitizedSecurityRequirement] === 'object') {\n return {\n authRequired,\n sanitizedSecurityRequirement,\n };\n }\n }\n }\n return {\n authRequired,\n };\n}\n/**\n * Given a link parameter, determine the value\n *\n * The link parameter is a reference to data contained in the\n * url/method/statuscode or response/request body/query/path/header\n */\nfunction resolveLinkParameter(paramName, value, resolveData, root, args) {\n if (value === '$url') {\n return resolveData.url;\n }\n else if (value === '$method') {\n return resolveData.usedRequestOptions.method;\n }\n else if (value === '$statusCode') {\n return resolveData.usedStatusCode;\n }\n else if (value.startsWith('$request.')) {\n // CASE: parameter is previous body\n if (value === '$request.body') {\n return resolveData.usedPayload;\n // CASE: parameter in previous body\n }\n else if (value.startsWith('$request.body#')) {\n const tokens = JSONPath.JSONPath({\n path: value.split('body#/')[1],\n json: resolveData.usedPayload,\n });\n if (Array.isArray(tokens) && tokens.length > 0) {\n return tokens[0];\n }\n else {\n httpLog(`Warning: could not extract parameter '${paramName}' from link`);\n }\n // CASE: parameter in previous query parameter\n }\n else if (value.startsWith('$request.query')) {\n return resolveData.usedParams[Oas3Tools.sanitize(value.split('query.')[1], Oas3Tools.CaseStyle.camelCase)];\n // CASE: parameter in previous path parameter\n }\n else if (value.startsWith('$request.path')) {\n return resolveData.usedParams[Oas3Tools.sanitize(value.split('path.')[1], Oas3Tools.CaseStyle.camelCase)];\n // CASE: parameter in previous header parameter\n }\n else if (value.startsWith('$request.header')) {\n return resolveData.usedRequestOptions.headers[value.split('header.')[1]];\n }\n }\n else if (value.startsWith('$response.')) {\n /**\n * CASE: parameter is body\n *\n * NOTE: may not be used because it implies that the operation does not\n * return a JSON object and OpenAPI-to-GraphQL does not create GraphQL\n * objects for non-JSON data and links can only exists between objects.\n */\n if (value === '$response.body') {\n const result = JSON.parse(JSON.stringify(root));\n /**\n * _openAPIToGraphQL contains data used by OpenAPI-to-GraphQL to create the GraphQL interface\n * and should not be exposed\n */\n result._openAPIToGraphQL = undefined;\n return result;\n // CASE: parameter in body\n }\n else if (value.startsWith('$response.body#')) {\n const tokens = JSONPath.JSONPath({\n path: value.split('body#/')[1],\n json: root,\n });\n if (Array.isArray(tokens) && tokens.length > 0) {\n return tokens[0];\n }\n else {\n httpLog(`Warning: could not extract parameter '${paramName}' from link`);\n }\n // CASE: parameter in query parameter\n }\n else if (value.startsWith('$response.query')) {\n // NOTE: handled the same way $request.query is handled\n return resolveData.usedParams[Oas3Tools.sanitize(value.split('query.')[1], Oas3Tools.CaseStyle.camelCase)];\n // CASE: parameter in path parameter\n }\n else if (value.startsWith('$response.path')) {\n // NOTE: handled the same way $request.path is handled\n return resolveData.usedParams[Oas3Tools.sanitize(value.split('path.')[1], Oas3Tools.CaseStyle.camelCase)];\n // CASE: parameter in header parameter\n }\n else if (value.startsWith('$response.header')) {\n return resolveData.responseHeaders[value.split('header.')[1]];\n }\n }\n throw new Error(`Cannot create link because '${value}' is an invalid runtime expression`);\n}\n/**\n * Given a link parameter or callback path, determine the value from the runtime\n * expression\n *\n * The link parameter or callback path is a reference to data contained in the\n * url/method/statuscode or response/request body/query/path/header\n */\nfunction resolveRuntimeExpression(paramName, value, resolveData, root, args) {\n if (value === '$url') {\n return resolveData.usedRequestOptions.url;\n }\n else if (value === '$method') {\n return resolveData.usedRequestOptions.method;\n }\n else if (value === '$statusCode') {\n return resolveData.usedStatusCode;\n }\n else if (value.startsWith('$request.')) {\n // CASE: parameter is previous body\n if (value === '$request.body') {\n return resolveData.usedPayload;\n // CASE: parameter in previous body\n }\n else if (value.startsWith('$request.body#')) {\n const tokens = JSONPath.JSONPath({\n path: value.split('body#/')[1],\n json: resolveData.usedPayload,\n });\n if (Array.isArray(tokens) && tokens.length > 0) {\n return tokens[0];\n }\n else {\n httpLog(`Warning: could not extract parameter '${paramName}' from link`);\n }\n // CASE: parameter in previous query parameter\n }\n else if (value.startsWith('$request.query')) {\n return resolveData.usedParams[Oas3Tools.sanitize(value.split('query.')[1], Oas3Tools.CaseStyle.camelCase)];\n // CASE: parameter in previous path parameter\n }\n else if (value.startsWith('$request.path')) {\n return resolveData.usedParams[Oas3Tools.sanitize(value.split('path.')[1], Oas3Tools.CaseStyle.camelCase)];\n // CASE: parameter in previous header parameter\n }\n else if (value.startsWith('$request.header')) {\n return resolveData.usedRequestOptions.headers[value.split('header.')[1]];\n }\n }\n else if (value.startsWith('$response.')) {\n /**\n * CASE: parameter is body\n *\n * NOTE: may not be used because it implies that the operation does not\n * return a JSON object and OpenAPI-to-GraphQL does not create GraphQL\n * objects for non-JSON data and links can only exists between objects.\n */\n if (value === '$response.body') {\n const result = JSON.parse(JSON.stringify(root));\n /**\n * _openAPIToGraphQL contains data used by OpenAPI-to-GraphQL to create the GraphQL interface\n * and should not be exposed\n */\n result._openAPIToGraphQL = undefined;\n return result;\n // CASE: parameter in body\n }\n else if (value.startsWith('$response.body#')) {\n const tokens = JSONPath.JSONPath({\n path: value.split('body#/')[1],\n json: root,\n });\n if (Array.isArray(tokens) && tokens.length > 0) {\n return tokens[0];\n }\n else {\n httpLog(`Warning: could not extract parameter '${paramName}' from link`);\n }\n // CASE: parameter in query parameter\n }\n else if (value.startsWith('$response.query')) {\n // NOTE: handled the same way $request.query is handled\n return resolveData.usedParams[Oas3Tools.sanitize(value.split('query.')[1], Oas3Tools.CaseStyle.camelCase)];\n // CASE: parameter in path parameter\n }\n else if (value.startsWith('$response.path')) {\n // NOTE: handled the same way $request.path is handled\n return resolveData.usedParams[Oas3Tools.sanitize(value.split('path.')[1], Oas3Tools.CaseStyle.camelCase)];\n // CASE: parameter in header parameter\n }\n else if (value.startsWith('$response.header')) {\n return resolveData.responseHeaders[value.split('header.')[1]];\n }\n }\n throw new Error(`Cannot create link because '${value}' is an invalid runtime expression`);\n}\n/**\n * Check if a string is a runtime expression in the context of link parameters\n */\nfunction isRuntimeExpression(str) {\n const references = ['header.', 'query.', 'path.', 'body'];\n if (str === '$url' || str === '$method' || str === '$statusCode') {\n return true;\n }\n else if (str.startsWith('$request.')) {\n for (let i = 0; i < references.length; i++) {\n if (str.startsWith(`$request.${references[i]}`)) {\n return true;\n }\n }\n }\n else if (str.startsWith('$response.')) {\n for (let i = 0; i < references.length; i++) {\n if (str.startsWith(`$response.${references[i]}`)) {\n return true;\n }\n }\n }\n return false;\n}\n/**\n * From the info object provided by the resolver, get a unique identifier, which\n * is the path formed from the nested field names (or aliases if provided)\n *\n * Used to store and retrieve the _openAPIToGraphQL of parent field\n */\nfunction getIdentifier(info) {\n return getIdentifierRecursive(info.path);\n}\n/**\n * From the info object provided by the resolver, get the unique identifier of\n * the parent object\n */\nfunction getParentIdentifier(info) {\n return getIdentifierRecursive(info.path.prev);\n}\n/**\n * Get the path of nested field names (or aliases if provided)\n */\nfunction getIdentifierRecursive(path) {\n return typeof path.prev === 'undefined'\n ? path.key.toString()\n : /**\n * Check if the identifier contains array indexing, if so remove.\n *\n * i.e. instead of 0/friends/1/friends/2/friends/user, create\n * friends/friends/friends/user\n */\n isNaN(parseInt(path.key.toString()))\n ? `${path.key}/${getIdentifierRecursive(path.prev)}`\n : getIdentifierRecursive(path.prev);\n}\n/**\n * Create a new GraphQLError with an extensions field\n */\nfunction graphQLErrorWithExtensions(message, extensions) {\n return new GraphQLError(message, null, null, null, null, null, extensions);\n}\n/**\n * Extracts data from the GraphQL arguments of a particular field\n *\n * Replaces the path parameter in the given path with values in the given args.\n * Furthermore adds the query parameters for a request.\n */\nexport function extractRequestDataFromArgs(path, parameters, args, // NOTE: argument keys are sanitized!\ndata) {\n const qs = {};\n const headers = {};\n // Iterate parameters:\n for (const param of parameters) {\n const sanitizedParamName = Oas3Tools.sanitize(param.name, !data.options.simpleNames ? Oas3Tools.CaseStyle.camelCase : Oas3Tools.CaseStyle.simple);\n if (sanitizedParamName && sanitizedParamName in args) {\n switch (param.in) {\n // Path parameters\n case 'path':\n path = path.replace(`{${param.name}}`, args[sanitizedParamName]);\n break;\n // Query parameters\n case 'query':\n qs[param.name] = args[sanitizedParamName];\n break;\n // Header parameters\n case 'header':\n headers[param.name] = args[sanitizedParamName];\n break;\n // Cookie parameters\n case 'cookie':\n if (!('cookie' in headers)) {\n headers.cookie = '';\n }\n headers.cookie += `${param.name}=${args[sanitizedParamName]}; `;\n break;\n default:\n httpLog(`Warning: The parameter location '${param.in}' in the ` +\n `parameter '${param.name}' of operation '${path}' is not ` +\n `supported`);\n }\n }\n }\n return { path, qs, headers };\n}\n//# sourceMappingURL=resolver_builder.js.map","// Copyright IBM Corp. 2018. All Rights Reserved.\n// Node module: openapi-to-graphql\n// This file is licensed under the MIT License.\n// License text available at https://opensource.org/licenses/MIT\n// Imports:\nimport * as Oas3Tools from './oas_3_tools';\nimport deepEqual from 'deep-equal';\nimport { handleWarning, getCommonPropertyNames, MitigationTypes, mockDebug as debug } from './utils';\nimport { GraphQLOperationType } from './types/graphql';\nimport { methodToHttpMethod } from './oas_3_tools';\nconst preprocessingLog = debug('preprocessing');\n/**\n * Given an operation object from the OAS, create an Operation, which contains\n * the necessary data to create a GraphQL wrapper for said operation object.\n *\n * @param path The path of the operation object\n * @param method The method of the operation object\n * @param operationString A string representation of the path and the method (and the OAS title if applicable)\n * @param operationType Whether the operation should be turned into a Query/Mutation/Subscription operation\n * @param operation The operation object from the OAS\n * @param pathItem The path item object from the OAS from which the operation object is derived from\n * @param oas The OAS from which the path item and operation object are derived from\n * @param data An assortment of data which at this point is mainly used enable logging\n * @param options The options passed by the user\n */\nfunction processOperation(path, method, operationString, operationType, operation, pathItem, oas, data, options) {\n // Determine description\n let description = operation.description;\n if ((typeof description !== 'string' || description === '') && typeof operation.summary === 'string') {\n description = operation.summary;\n }\n if (data.options.equivalentToMessages) {\n // Description may not exist\n if (typeof description !== 'string') {\n description = '';\n }\n description += `\\n\\nEquivalent to ${operationString}`;\n }\n // Hold on to the operationId\n const operationId = typeof operation.operationId !== 'undefined' ? operation.operationId : Oas3Tools.generateOperationId(method, path);\n // Request schema\n const { payloadContentType, payloadSchema, payloadSchemaNames, payloadRequired } = Oas3Tools.getRequestSchemaAndNames(path, operation, oas);\n const payloadDefinition = payloadSchema && typeof payloadSchema !== 'undefined'\n ? createDataDef(payloadSchemaNames, payloadSchema, true, data, oas)\n : undefined;\n // Response schema\n const { responseContentType, responseSchema, responseSchemaNames, statusCode } = Oas3Tools.getResponseSchemaAndNames(path, method, operation, oas, data, options);\n if (!responseSchema || typeof responseSchema !== 'object') {\n handleWarning({\n mitigationType: MitigationTypes.MISSING_RESPONSE_SCHEMA,\n message: `Operation ${operationString} has no (valid) response schema. ` +\n `You can use the fillEmptyResponses option to create a ` +\n `placeholder schema`,\n data,\n log: preprocessingLog,\n });\n return undefined;\n }\n // Links\n const links = Oas3Tools.getLinks(path, method, operation, oas, data);\n const responseDefinition = createDataDef(responseSchemaNames, responseSchema, false, data, oas, links);\n // Parameters\n const parameters = Oas3Tools.getParameters(path, method, operation, pathItem, oas);\n // Security protocols\n const securityRequirements = options.viewer ? Oas3Tools.getSecurityRequirements(operation, data.security, oas) : [];\n // Servers\n const servers = Oas3Tools.getServers(operation, pathItem, oas);\n // Whether to place this operation into an authentication viewer\n const inViewer = securityRequirements.length > 0 && data.options.viewer !== false;\n return {\n operationId,\n operationString,\n operationType,\n description,\n path,\n method,\n payloadContentType,\n payloadDefinition,\n payloadRequired,\n responseContentType,\n responseDefinition,\n parameters,\n securityRequirements,\n servers,\n inViewer,\n statusCode,\n oas,\n };\n}\n/**\n * Extract information from the OAS and put it inside a data structure that\n * is easier for OpenAPI-to-GraphQL to use\n */\nexport function preprocessOas(oass, options) {\n const data = {\n operations: {},\n callbackOperations: {},\n usedTypeNames: [\n 'Query',\n 'Mutation',\n 'Subscription',\n ],\n defs: [],\n security: {},\n saneMap: {},\n options,\n oass,\n };\n oass.forEach(oas => {\n // Store stats on OAS:\n data.options.report.numOps += Oas3Tools.countOperations(oas);\n data.options.report.numOpsMutation += Oas3Tools.countOperationsMutation(oas);\n data.options.report.numOpsQuery += Oas3Tools.countOperationsQuery(oas);\n data.options.report.numOpsSubscription += Oas3Tools.countOperationsSubscription(oas);\n // Get security schemes\n const currentSecurity = getProcessedSecuritySchemes(oas, data);\n const commonSecurityPropertyName = getCommonPropertyNames(data.security, currentSecurity);\n commonSecurityPropertyName.forEach(propertyName => {\n var _a;\n handleWarning({\n mitigationType: MitigationTypes.DUPLICATE_SECURITY_SCHEME,\n message: `Multiple OASs share security schemes with the same name '${propertyName}'`,\n mitigationAddendum: `The security scheme from OAS ` + `'${(_a = currentSecurity[propertyName].oas.info) === null || _a === void 0 ? void 0 : _a.title}' will be ignored`,\n data,\n log: preprocessingLog,\n });\n });\n // Do not overwrite preexisting security schemes\n data.security = { ...currentSecurity, ...data.security };\n // Process all operations\n for (const path in oas.paths) {\n const pathItem = !('$ref' in oas.paths[path])\n ? oas.paths[path]\n : Oas3Tools.resolveRef(oas.paths[path].$ref, oas);\n Object.keys(pathItem)\n .filter(objectKey => {\n /**\n * Get only fields that contain operation objects\n *\n * Can also contain other fields such as summary or description\n */\n return Oas3Tools.isHttpMethod(objectKey);\n })\n .forEach(rawMethod => {\n var _a, _b, _c, _d, _e, _f;\n const operationString = oass.length === 1\n ? Oas3Tools.formatOperationString(rawMethod, path)\n : Oas3Tools.formatOperationString(rawMethod, path, (_a = oas.info) === null || _a === void 0 ? void 0 : _a.title);\n let httpMethod;\n try {\n httpMethod = methodToHttpMethod(rawMethod);\n }\n catch (e) {\n handleWarning({\n mitigationType: MitigationTypes.INVALID_HTTP_METHOD,\n message: `Invalid HTTP method '${rawMethod}' in operation '${operationString}'`,\n data,\n log: preprocessingLog,\n });\n return;\n }\n const operation = pathItem[httpMethod];\n let operationType = httpMethod === Oas3Tools.HTTP_METHODS.get ? GraphQLOperationType.Query : GraphQLOperationType.Mutation;\n // Option selectQueryOrMutationField can override operation type\n if (typeof options.selectQueryOrMutationField === 'object' &&\n typeof options.selectQueryOrMutationField[(_b = oas.info) === null || _b === void 0 ? void 0 : _b.title] === 'object' &&\n typeof options.selectQueryOrMutationField[(_c = oas.info) === null || _c === void 0 ? void 0 : _c.title][path] === 'object' &&\n typeof options.selectQueryOrMutationField[(_d = oas.info) === null || _d === void 0 ? void 0 : _d.title][path][httpMethod] === 'number' // This is an TS enum, which is translated to have a integer value\n ) {\n operationType =\n options.selectQueryOrMutationField[(_e = oas.info) === null || _e === void 0 ? void 0 : _e.title][path][httpMethod] === GraphQLOperationType.Mutation\n ? GraphQLOperationType.Mutation\n : GraphQLOperationType.Query;\n }\n const operationData = processOperation(path, httpMethod, operationString, operationType, operation, pathItem, oas, data, options);\n if (operationData) {\n /**\n * Handle operationId property name collision\n * May occur if multiple OAS are provided\n */\n if (operationData && !(operationData.operationId in data.operations)) {\n data.operations[operationData.operationId] = operationData;\n }\n else {\n handleWarning({\n mitigationType: MitigationTypes.DUPLICATE_OPERATIONID,\n message: `Multiple OASs share operations with the same operationId '${operationData.operationId}'`,\n mitigationAddendum: `The operation from the OAS '${(_f = operationData.oas.info) === null || _f === void 0 ? void 0 : _f.title}' will be ignored`,\n data,\n log: preprocessingLog,\n });\n }\n }\n // Process all callbacks\n if (operation.callbacks) {\n Object.entries(operation.callbacks).forEach(([callbackName, callback]) => {\n const resolvedCallback = !('$ref' in callback)\n ? callback\n : Oas3Tools.resolveRef(callback.$ref, oas);\n Object.entries(resolvedCallback).forEach(([callbackExpression, callbackPathItem]) => {\n var _a, _b;\n const resolvedCallbackPathItem = !('$ref' in callbackPathItem)\n ? callbackPathItem\n : Oas3Tools.resolveRef(callbackPathItem.$ref, oas);\n const callbackOperationObjectMethods = Object.keys(resolvedCallbackPathItem).filter(objectKey => {\n /**\n * Get only fields that contain operation objects\n *\n * Can also contain other fields such as summary or description\n */\n return Oas3Tools.isHttpMethod(objectKey.toString());\n });\n if (callbackOperationObjectMethods.length > 0) {\n if (callbackOperationObjectMethods.length > 1) {\n handleWarning({\n mitigationType: MitigationTypes.CALLBACKS_MULTIPLE_OPERATION_OBJECTS,\n message: `Callback '${callbackExpression}' on operation '${operationString}' has multiple operation objects with the methods '${callbackOperationObjectMethods}'. OpenAPI-to-GraphQL can only utilize one of these operation objects.`,\n mitigationAddendum: `The operation with the method '${callbackOperationObjectMethods[0].toString()}' will be selected and all others will be ignored.`,\n data,\n log: preprocessingLog,\n });\n }\n // Select only one of the operation object methods\n const callbackRawMethod = callbackOperationObjectMethods[0];\n const callbackOperationString = oass.length === 1\n ? Oas3Tools.formatOperationString(httpMethod, callbackName)\n : Oas3Tools.formatOperationString(httpMethod, callbackName, (_a = oas.info) === null || _a === void 0 ? void 0 : _a.title);\n let callbackHttpMethod;\n try {\n callbackHttpMethod = methodToHttpMethod(callbackRawMethod.toString());\n }\n catch (e) {\n handleWarning({\n mitigationType: MitigationTypes.INVALID_HTTP_METHOD,\n message: `Invalid HTTP method '${rawMethod}' in callback '${callbackOperationString}' in operation '${operationString}'`,\n data,\n log: preprocessingLog,\n });\n return;\n }\n const callbackOperation = processOperation(callbackExpression, callbackHttpMethod, callbackOperationString, GraphQLOperationType.Subscription, resolvedCallbackPathItem[callbackHttpMethod], callbackPathItem, oas, data, options);\n callbackOperation.responseContentType = callbackOperation.payloadContentType;\n callbackOperation.responseDefinition = callbackOperation.payloadDefinition;\n callbackOperation.parameters = operationData.parameters;\n callbackOperation.payloadContentType = operationData.payloadContentType;\n callbackOperation.payloadDefinition = operationData.payloadDefinition;\n callbackOperation.payloadRequired = operationData.payloadRequired;\n if (callbackOperation) {\n /**\n * Handle operationId property name collision\n * May occur if multiple OAS are provided\n */\n if (callbackOperation && !(callbackOperation.operationId in data.callbackOperations)) {\n data.callbackOperations[callbackOperation.operationId] = callbackOperation;\n }\n else {\n handleWarning({\n mitigationType: MitigationTypes.DUPLICATE_OPERATIONID,\n message: `Multiple OASs share callback operations with the same operationId '${callbackOperation.operationId}'`,\n mitigationAddendum: `The callback operation from the OAS '${(_b = operationData.oas.info) === null || _b === void 0 ? void 0 : _b.title}' will be ignored`,\n data,\n log: preprocessingLog,\n });\n }\n }\n }\n });\n });\n }\n });\n }\n });\n return data;\n}\n/**\n * Extracts the security schemes from given OAS and organizes the information in\n * a data structure that is easier for OpenAPI-to-GraphQL to use\n *\n * Here is the structure of the data:\n * {\n * {string} [sanitized name] { Contains information about the security protocol\n * {string} rawName Stores the raw security protocol name\n * {object} def Definition provided by OAS\n * {object} parameters Stores the names of the authentication credentials\n * NOTE: Structure will depend on the type of the protocol\n * (e.g. basic authentication, API key, etc.)\n * NOTE: Mainly used for the AnyAuth viewers\n * {object} schema Stores the GraphQL schema to create the viewers\n * }\n * }\n *\n * Here is an example:\n * {\n * MyApiKey: {\n * rawName: \"My_api_key\",\n * def: { ... },\n * parameters: {\n * apiKey: MyKeyApiKey\n * },\n * schema: { ... }\n * }\n * MyBasicAuth: {\n * rawName: \"My_basic_auth\",\n * def: { ... },\n * parameters: {\n * username: MyBasicAuthUsername,\n * password: MyBasicAuthPassword,\n * },\n * schema: { ... }\n * }\n * }\n */\nfunction getProcessedSecuritySchemes(oas, data) {\n var _a, _b, _c, _d, _e;\n const result = {};\n const security = Oas3Tools.getSecuritySchemes(oas);\n // Loop through all the security protocols\n for (const key in security) {\n const protocol = security[key];\n // Determine the schema and the parameters for the security protocol\n let schema;\n let parameters = {};\n let description;\n switch (protocol.type) {\n case 'apiKey':\n description = `API key credentials for the security protocol '${key}'`;\n if (data.oass.length > 1) {\n description += ` in ${(_a = oas.info) === null || _a === void 0 ? void 0 : _a.title}`;\n }\n parameters = {\n apiKey: Oas3Tools.sanitize(`${key}_apiKey`, Oas3Tools.CaseStyle.camelCase),\n };\n schema = {\n type: 'object',\n description,\n properties: {\n apiKey: {\n type: 'string',\n },\n },\n };\n break;\n case 'http':\n switch (protocol.scheme) {\n /**\n * TODO: HTTP has a number of authentication types\n *\n * See http://www.iana.org/assignments/http-authschemes/http-authschemes.xhtml\n */\n case 'basic':\n description = `Basic auth credentials for security protocol '${key}'`;\n parameters = {\n username: Oas3Tools.sanitize(`${key}_username`, Oas3Tools.CaseStyle.camelCase),\n password: Oas3Tools.sanitize(`${key}_password`, Oas3Tools.CaseStyle.camelCase),\n };\n schema = {\n type: 'object',\n description,\n properties: {\n username: {\n type: 'string',\n },\n password: {\n type: 'string',\n },\n },\n };\n break;\n default:\n handleWarning({\n mitigationType: MitigationTypes.UNSUPPORTED_HTTP_SECURITY_SCHEME,\n message: `Currently unsupported HTTP authentication protocol ` +\n `type 'http' and scheme '${protocol.scheme}' in OAS ` +\n `'${(_b = oas.info) === null || _b === void 0 ? void 0 : _b.title}'`,\n data,\n log: preprocessingLog,\n });\n }\n break;\n // TODO: Implement\n case 'openIdConnect':\n handleWarning({\n mitigationType: MitigationTypes.UNSUPPORTED_HTTP_SECURITY_SCHEME,\n message: `Currently unsupported HTTP authentication protocol ` + `type 'openIdConnect' in OAS '${(_c = oas.info) === null || _c === void 0 ? void 0 : _c.title}'`,\n data,\n log: preprocessingLog,\n });\n break;\n case 'oauth2':\n handleWarning({\n mitigationType: MitigationTypes.OAUTH_SECURITY_SCHEME,\n message: `OAuth security scheme found in OAS '${(_d = oas.info) === null || _d === void 0 ? void 0 : _d.title}'. ` +\n `OAuth support is provided using the 'tokenJSONpath' option`,\n data,\n log: preprocessingLog,\n });\n // Continue because we do not want to create an OAuth viewer\n continue;\n default:\n handleWarning({\n mitigationType: MitigationTypes.UNSUPPORTED_HTTP_SECURITY_SCHEME,\n message: `Unsupported HTTP authentication protocol` + `type '${protocol.type}' in OAS '${(_e = oas.info) === null || _e === void 0 ? void 0 : _e.title}'`,\n data,\n log: preprocessingLog,\n });\n }\n // Add protocol data to the output\n result[key] = {\n rawName: key,\n def: protocol,\n parameters,\n schema,\n oas,\n };\n }\n return result;\n}\n/**\n * Method to either create a new or reuse an existing, centrally stored data\n * definition.\n */\nexport function createDataDef(names, schema, isInputObjectType, data, oas, links) {\n const preferredName = getPreferredName(names);\n // Basic validation test\n if (typeof schema !== 'object') {\n handleWarning({\n mitigationType: MitigationTypes.MISSING_SCHEMA,\n message: `Could not create data definition for schema with ` +\n `preferred name '${preferredName}' and schema '${JSON.stringify(schema)}'`,\n data,\n log: preprocessingLog,\n });\n // TODO: Does this change make the option fillEmptyResponses obsolete?\n return {\n preferredName,\n schema: null,\n required: [],\n links: null,\n subDefinitions: null,\n graphQLTypeName: null,\n graphQLInputObjectTypeName: null,\n targetGraphQLType: 'json',\n };\n }\n else {\n if ('$ref' in schema) {\n schema = Oas3Tools.resolveRef(schema.$ref, oas);\n }\n const saneLinks = {};\n if (typeof links === 'object') {\n Object.keys(links).forEach(linkKey => {\n saneLinks[Oas3Tools.sanitize(linkKey.toString(), !data.options.simpleNames ? Oas3Tools.CaseStyle.camelCase : Oas3Tools.CaseStyle.simple)] = links[linkKey];\n });\n }\n // Determine the index of possible existing data definition\n const index = getSchemaIndex(preferredName, schema, data.defs);\n if (index !== -1) {\n // Found existing data definition and fetch it\n const existingDataDef = data.defs[index];\n /**\n * Collapse links if possible, i.e. if the current operation has links,\n * combine them with the prexisting ones\n */\n if (typeof saneLinks !== 'undefined') {\n if (typeof existingDataDef.links !== 'undefined') {\n // Check if there are any overlapping links\n Object.keys(existingDataDef.links).forEach(saneLinkKey => {\n if (typeof saneLinks[saneLinkKey] !== 'undefined' &&\n !deepEqual(existingDataDef.links[saneLinkKey], saneLinks[saneLinkKey])) {\n handleWarning({\n mitigationType: MitigationTypes.DUPLICATE_LINK_KEY,\n message: `Multiple operations with the same response body share the same sanitized ` +\n `link key '${saneLinkKey}' but have different link definitions ` +\n `'${JSON.stringify(existingDataDef.links[saneLinkKey])}' and ` +\n `'${JSON.stringify(saneLinks[saneLinkKey])}'.`,\n data,\n log: preprocessingLog,\n });\n }\n });\n /**\n * Collapse the links\n *\n * Avoid overwriting preexisting links\n */\n existingDataDef.links = { ...saneLinks, ...existingDataDef.links };\n }\n else {\n // No preexisting links, so simply assign the links\n existingDataDef.links = saneLinks;\n }\n }\n return existingDataDef;\n }\n else {\n // Else, define a new name, store the def, and return it\n const usedNames = [...data.usedTypeNames, ...Object.keys(data.saneMap)];\n const caseStyle = data.options.simpleNames ? Oas3Tools.CaseStyle.simple : Oas3Tools.CaseStyle.PascalCase;\n const name = getSchemaName(names, usedNames, caseStyle);\n // Store and sanitize the name\n let saneName = Oas3Tools.sanitize(name, caseStyle);\n saneName = Oas3Tools.storeSaneName(saneName, name, data.saneMap);\n const saneInputName = Oas3Tools.capitalize(saneName + 'Input');\n /**\n * TODO: is there a better way of copying the schema object?\n *\n * Perhaps, just copy it at the root level (operation schema)\n */\n const collapsedSchema = resolveAllOf(schema, {}, data, oas);\n const targetGraphQLType = Oas3Tools.getSchemaTargetGraphQLType(collapsedSchema, data);\n const def = {\n preferredName,\n /**\n * Note that schema may contain $ref or schema composition (e.g. allOf)\n *\n * TODO: the schema is used in getSchemaIndex, which allows us to check\n * whether a dataDef has already been created for that particular\n * schema and name pair. The look up should resolve references but\n * currently, it does not.\n */\n schema,\n required: [],\n targetGraphQLType,\n subDefinitions: undefined,\n links: saneLinks,\n graphQLTypeName: saneName,\n graphQLInputObjectTypeName: saneInputName,\n };\n // Used type names and defs of union and object types are pushed during creation\n if (targetGraphQLType === 'object' || targetGraphQLType === 'list' || targetGraphQLType === 'enum') {\n data.usedTypeNames.push(saneName);\n data.usedTypeNames.push(saneInputName);\n // Add the def to the master list\n data.defs.push(def);\n }\n // We currently only support simple cases of anyOf and oneOf\n if (\n // TODO: Should also consider if the member schema contains type data\n (Array.isArray(collapsedSchema.anyOf) && Array.isArray(collapsedSchema.oneOf)) || // anyOf and oneOf used concurrently\n hasNestedAnyOfUsage(collapsedSchema, oas) ||\n hasNestedOneOfUsage(collapsedSchema, oas)) {\n handleWarning({\n mitigationType: MitigationTypes.COMBINE_SCHEMAS,\n message: `Schema '${JSON.stringify(schema)}' contains either both ` +\n `'anyOf' and 'oneOf' or nested 'anyOf' and 'oneOf' which ` +\n `is currently not supported.`,\n mitigationAddendum: `Use arbitrary JSON type instead.`,\n data,\n log: preprocessingLog,\n });\n def.targetGraphQLType = 'json';\n return def;\n }\n // oneOf will ideally be turned into a union type\n if (Array.isArray(collapsedSchema.oneOf)) {\n const oneOfDataDef = createDataDefFromOneOf(saneName, saneInputName, collapsedSchema, isInputObjectType, def, data, oas);\n if (typeof oneOfDataDef === 'object') {\n return oneOfDataDef;\n }\n }\n /**\n * anyOf will ideally be turned into an object type\n *\n * Fields common to all member schemas will be made non-null\n */\n if (Array.isArray(collapsedSchema.anyOf)) {\n const anyOfDataDef = createDataDefFromAnyOf(saneName, saneInputName, collapsedSchema, isInputObjectType, def, data, oas);\n if (typeof anyOfDataDef === 'object') {\n return anyOfDataDef;\n }\n }\n if (targetGraphQLType) {\n switch (targetGraphQLType) {\n case 'list':\n if (typeof collapsedSchema.items === 'object') {\n // Break schema down into component parts\n // I.e. if it is an list type, create a reference to the list item type\n // Or if it is an object type, create references to all of the field types\n const itemsSchema = collapsedSchema.items;\n let itemsName = `${name}ListItem`;\n if ('$ref' in itemsSchema) {\n itemsName = collapsedSchema.items.$ref.split('/').pop();\n }\n const subDefinition = createDataDef(\n // Is this the correct classification for this name? It does not matter in the long run.\n { fromRef: itemsName }, itemsSchema, isInputObjectType, data, oas);\n // Add list item reference\n def.subDefinitions = subDefinition;\n }\n break;\n case 'object':\n def.subDefinitions = {};\n if (typeof collapsedSchema.properties === 'object' && Object.keys(collapsedSchema.properties).length > 0) {\n addObjectPropertiesToDataDef(def, collapsedSchema, def.required, isInputObjectType, data, oas);\n }\n else {\n handleWarning({\n mitigationType: MitigationTypes.OBJECT_MISSING_PROPERTIES,\n message: `Schema ${JSON.stringify(schema)} does not have ` + `any properties`,\n data,\n log: preprocessingLog,\n });\n def.targetGraphQLType = 'json';\n }\n break;\n }\n }\n else {\n // No target GraphQL type\n handleWarning({\n mitigationType: MitigationTypes.UNKNOWN_TARGET_TYPE,\n message: `No GraphQL target type could be identified for schema '${JSON.stringify(schema)}'.`,\n data,\n log: preprocessingLog,\n });\n def.targetGraphQLType = 'json';\n }\n return def;\n }\n }\n}\n/**\n * Returns the index of the data definition object in the given list that\n * contains the same schema and preferred name as the given one. Returns -1 if\n * that schema could not be found.\n */\nfunction getSchemaIndex(preferredName, schema, dataDefs) {\n /**\n * TODO: instead of iterating through the whole list every time, create a\n * hashing function and store all of the DataDefinitions in a hashmap.\n */\n for (let index = 0; index < dataDefs.length; index++) {\n const def = dataDefs[index];\n /**\n * TODO: deepEquals is not sufficient. We also need to resolve references.\n * However, deepEquals should work for vast majority of cases.\n */\n if (preferredName === def.preferredName && deepEqual(schema, def.schema)) {\n return index;\n }\n }\n // The schema could not be found in the master list\n return -1;\n}\n/**\n * Determines the preferred name to use for schema regardless of name collisions.\n *\n * In other words, determines the ideal name for a schema.\n *\n * Similar to getSchemaName() except it does not check if the name has already\n * been taken.\n */\nfunction getPreferredName(names) {\n if (typeof names.preferred === 'string') {\n return Oas3Tools.sanitize(names.preferred, Oas3Tools.CaseStyle.PascalCase); // CASE: preferred name already known\n }\n else if (typeof names.fromRef === 'string') {\n return Oas3Tools.sanitize(names.fromRef, Oas3Tools.CaseStyle.PascalCase); // CASE: name from reference\n }\n else if (typeof names.fromSchema === 'string') {\n return Oas3Tools.sanitize(names.fromSchema, Oas3Tools.CaseStyle.PascalCase); // CASE: name from schema (i.e., \"title\" property in schema)\n }\n else if (typeof names.fromPath === 'string') {\n return Oas3Tools.sanitize(names.fromPath, Oas3Tools.CaseStyle.PascalCase); // CASE: name from path\n }\n else {\n return 'PlaceholderName'; // CASE: placeholder name\n }\n}\n/**\n * Determines name to use for schema from previously determined schemaNames and\n * considering not reusing existing names.\n */\nfunction getSchemaName(names, usedNames, caseStyle) {\n if (Object.keys(names).length === 1 && typeof names.preferred === 'string') {\n throw new Error(`Cannot create data definition without name(s), excluding the preferred name.`);\n }\n let schemaName;\n // CASE: name from reference\n if (typeof names.fromRef === 'string') {\n const saneName = Oas3Tools.sanitize(names.fromRef, caseStyle);\n if (!usedNames.includes(saneName)) {\n schemaName = names.fromRef;\n }\n }\n // CASE: name from schema (i.e., \"title\" property in schema)\n if (!schemaName && typeof names.fromSchema === 'string') {\n const saneName = Oas3Tools.sanitize(names.fromSchema, caseStyle);\n if (!usedNames.includes(saneName)) {\n schemaName = names.fromSchema;\n }\n }\n // CASE: name from path\n if (!schemaName && typeof names.fromPath === 'string') {\n const saneName = Oas3Tools.sanitize(names.fromPath, caseStyle);\n if (!usedNames.includes(saneName)) {\n schemaName = names.fromPath;\n }\n }\n // CASE: all names are already used - create approximate name\n if (!schemaName) {\n schemaName = Oas3Tools.sanitize(typeof names.fromRef === 'string'\n ? names.fromRef\n : typeof names.fromSchema === 'string'\n ? names.fromSchema\n : typeof names.fromPath === 'string'\n ? names.fromPath\n : 'PlaceholderName', caseStyle);\n }\n if (usedNames.includes(schemaName)) {\n let appendix = 2;\n /**\n * GraphQL Objects cannot share the name so if the name already exists in\n * the master list append an incremental number until the name does not\n * exist anymore.\n */\n while (usedNames.includes(`${schemaName}${appendix}`)) {\n appendix++;\n }\n schemaName = `${schemaName}${appendix}`;\n }\n return schemaName;\n}\n/**\n * Recursively add all of the properties of an object to the data definition\n */\nfunction addObjectPropertiesToDataDef(def, schema, required, isInputObjectType, data, oas) {\n /**\n * Resolve all required properties\n *\n * TODO: required may contain duplicates, which is not necessarily a problem\n */\n if (Array.isArray(schema.required)) {\n schema.required.forEach(requiredProperty => {\n required.push(requiredProperty);\n });\n }\n for (const propertyKey in schema.properties) {\n let propSchemaName = propertyKey;\n let propSchema = schema.properties[propertyKey];\n if ('$ref' in propSchema) {\n propSchemaName = propSchema.$ref.split('/').pop();\n propSchema = Oas3Tools.resolveRef(propSchema.$ref, oas);\n }\n if (!(propertyKey in def.subDefinitions)) {\n const subDefinition = createDataDef({\n fromRef: propSchemaName,\n fromSchema: propSchema.title,\n }, propSchema, isInputObjectType, data, oas);\n // Add field type references\n def.subDefinitions[propertyKey] = subDefinition;\n }\n else {\n handleWarning({\n mitigationType: MitigationTypes.DUPLICATE_FIELD_NAME,\n message: `By way of resolving 'allOf', multiple schemas contain ` +\n `properties with the same name, preventing consolidation. Cannot ` +\n `add property '${propertyKey}' from schema '${JSON.stringify(schema)}' ` +\n `to dataDefinition '${JSON.stringify(def)}'`,\n data,\n log: preprocessingLog,\n });\n }\n }\n}\n/**\n * Recursively traverse a schema and resolve allOf by appending the data to the\n * parent schema\n */\nfunction resolveAllOf(schema, references, data, oas) {\n // Dereference schema\n if ('$ref' in schema) {\n const referenceLocation = schema.$ref;\n schema = Oas3Tools.resolveRef(schema.$ref, oas);\n if (referenceLocation in references) {\n return references[referenceLocation];\n }\n else {\n // Store references in case of circular allOf\n references[referenceLocation] = schema;\n }\n }\n const collapsedSchema = JSON.parse(JSON.stringify(schema));\n // Resolve allOf\n if (Array.isArray(collapsedSchema.allOf)) {\n collapsedSchema.allOf.forEach(memberSchema => {\n // Collapse type if applicable\n const resolvedSchema = resolveAllOf(memberSchema, references, data, oas);\n if (resolvedSchema.type) {\n if (!collapsedSchema.type) {\n collapsedSchema.type = resolvedSchema.type;\n // Add type if applicable\n }\n else if (collapsedSchema.type !== resolvedSchema.type) {\n // Incompatible schema type\n handleWarning({\n mitigationType: MitigationTypes.UNRESOLVABLE_SCHEMA,\n message: `Resolving 'allOf' field in schema '${collapsedSchema}' ` +\n `results in incompatible schema type from partial schema '${resolvedSchema}'.`,\n data,\n log: preprocessingLog,\n });\n }\n }\n // Collapse properties if applicable\n if ('properties' in resolvedSchema) {\n if (!('properties' in collapsedSchema)) {\n collapsedSchema.properties = {};\n }\n Object.entries(resolvedSchema.properties).forEach(([propertyName, property]) => {\n if (propertyName in collapsedSchema) {\n // Conflicting property\n handleWarning({\n mitigationType: MitigationTypes.UNRESOLVABLE_SCHEMA,\n message: `Resolving 'allOf' field in schema '${collapsedSchema}' ` +\n `results in incompatible property field from partial schema '${resolvedSchema}'.`,\n data,\n log: preprocessingLog,\n });\n }\n else {\n collapsedSchema.properties[propertyName] = property;\n }\n });\n }\n // Collapse oneOf if applicable\n if ('oneOf' in resolvedSchema) {\n if (!('oneOf' in collapsedSchema)) {\n collapsedSchema.oneOf = [];\n }\n resolvedSchema.oneOf.forEach(oneOfProperty => {\n collapsedSchema.oneOf.push(oneOfProperty);\n });\n }\n // Collapse anyOf if applicable\n if ('anyOf' in resolvedSchema) {\n if (!('anyOf' in collapsedSchema)) {\n collapsedSchema.anyOf = [];\n }\n resolvedSchema.anyOf.forEach(anyOfProperty => {\n collapsedSchema.anyOf.push(anyOfProperty);\n });\n }\n // Collapse required if applicable\n if ('required' in resolvedSchema) {\n if (!('required' in collapsedSchema)) {\n collapsedSchema.required = [];\n }\n resolvedSchema.required.forEach(requiredProperty => {\n if (!collapsedSchema.required.includes(requiredProperty)) {\n collapsedSchema.required.push(requiredProperty);\n }\n });\n }\n });\n }\n return collapsedSchema;\n}\n/**\n * In the context of schemas that use keywords that combine member schemas,\n * collect data on certain aspects so it is all in one place for processing.\n */\nfunction getMemberSchemaData(schemas, data, oas) {\n const result = {\n allTargetGraphQLTypes: [],\n allProperties: [],\n allRequired: [],\n };\n schemas.forEach(schema => {\n // Dereference schemas\n if ('$ref' in schema) {\n schema = Oas3Tools.resolveRef(schema.$ref, oas);\n }\n // Consolidate target GraphQL type\n const memberTargetGraphQLType = Oas3Tools.getSchemaTargetGraphQLType(schema, data);\n if (memberTargetGraphQLType) {\n result.allTargetGraphQLTypes.push(memberTargetGraphQLType);\n }\n // Consolidate properties\n if (schema.properties) {\n result.allProperties.push(schema.properties);\n }\n // Consolidate required\n if (schema.required) {\n result.allRequired = result.allRequired.concat(schema.required);\n }\n });\n return result;\n}\n/**\n * Check to see if there are cases of nested oneOf fields in the member schemas\n *\n * We currently cannot handle complex cases of oneOf and anyOf\n */\nfunction hasNestedOneOfUsage(collapsedSchema, oas) {\n // TODO: Should also consider if the member schema contains type data\n return (Array.isArray(collapsedSchema.oneOf) &&\n collapsedSchema.oneOf.some(memberSchema => {\n // anyOf and oneOf are nested\n if ('$ref' in memberSchema) {\n memberSchema = Oas3Tools.resolveRef(memberSchema.$ref, oas);\n }\n return (Array.isArray(memberSchema.anyOf) || Array.isArray(memberSchema.oneOf) // Nested oneOf would result in nested unions which are not allowed by GraphQL\n );\n }));\n}\n/**\n * Check to see if there are cases of nested anyOf fields in the member schemas\n *\n * We currently cannot handle complex cases of oneOf and anyOf\n */\nfunction hasNestedAnyOfUsage(collapsedSchema, oas) {\n // TODO: Should also consider if the member schema contains type data\n return (Array.isArray(collapsedSchema.anyOf) &&\n collapsedSchema.anyOf.some(memberSchema => {\n // anyOf and oneOf are nested\n if ('$ref' in memberSchema) {\n memberSchema = Oas3Tools.resolveRef(memberSchema.$ref, oas);\n }\n return Array.isArray(memberSchema.anyOf) || Array.isArray(memberSchema.oneOf);\n }));\n}\n/**\n * Create a data definition for anyOf is applicable\n *\n * anyOf should resolve into an object that contains the superset of all\n * properties from the member schemas\n */\nfunction createDataDefFromAnyOf(saneName, saneInputName, collapsedSchema, isInputObjectType, def, data, oas) {\n const anyOfData = getMemberSchemaData(collapsedSchema.anyOf, data, oas);\n if (anyOfData.allTargetGraphQLTypes.some(memberTargetGraphQLType => {\n return memberTargetGraphQLType === 'object';\n })) {\n // Every member type should be an object\n if (anyOfData.allTargetGraphQLTypes.every(memberTargetGraphQLType => {\n return memberTargetGraphQLType === 'object';\n }) &&\n anyOfData.allProperties.length > 0 // Redundant check\n ) {\n // Ensure that parent schema is compatible with oneOf\n if (def.targetGraphQLType === null || def.targetGraphQLType === 'object') {\n const allProperties = {};\n const incompatibleProperties = new Set();\n /**\n * TODO: Check for consistent properties across all member schemas and\n * make them into non-nullable properties by manipulating the\n * required field\n */\n if (typeof collapsedSchema.properties === 'object') {\n Object.keys(collapsedSchema.properties).forEach(propertyName => {\n allProperties[propertyName] = [collapsedSchema.properties[propertyName]];\n });\n }\n // Check if any member schema has conflicting properties\n anyOfData.allProperties.forEach(properties => {\n Object.keys(properties).forEach(propertyName => {\n if (!incompatibleProperties.has(propertyName.toString()) && // Has not been already identified as a problematic property\n typeof allProperties[propertyName] === 'object' &&\n allProperties[propertyName].some(property => {\n // Property does not match a recorded one\n return !deepEqual(property, properties[propertyName]);\n })) {\n incompatibleProperties.add(propertyName.toString());\n }\n // Add property in the store\n if (!(propertyName in allProperties)) {\n allProperties[propertyName] = [];\n }\n allProperties[propertyName].push(properties[propertyName]);\n });\n });\n def.subDefinitions = {};\n if (typeof collapsedSchema.properties === 'object' && Object.keys(collapsedSchema.properties).length > 0) {\n addObjectPropertiesToDataDef(def, collapsedSchema, def.required, isInputObjectType, data, oas);\n }\n anyOfData.allProperties.forEach(properties => {\n Object.keys(properties).forEach(propertyName => {\n if (!incompatibleProperties.has(propertyName.toString())) {\n // Dereferenced by processing anyOfData\n const propertySchema = properties[propertyName];\n const subDefinition = createDataDef({\n fromRef: propertyName.toString(),\n fromSchema: propertySchema.title,\n }, propertySchema, isInputObjectType, data, oas);\n /**\n * Add field type references\n * There should not be any collisions\n */\n def.subDefinitions[propertyName] = subDefinition;\n }\n });\n });\n // Add in incompatible properties\n incompatibleProperties.forEach(propertyName => {\n // TODO: add description\n def.subDefinitions[propertyName] = {\n targetGraphQLType: 'json',\n };\n });\n data.usedTypeNames.push(saneName);\n data.usedTypeNames.push(saneInputName);\n data.defs.push(def);\n def.targetGraphQLType = 'object';\n return def;\n }\n else {\n // The parent schema is incompatible with the member schemas\n handleWarning({\n mitigationType: MitigationTypes.COMBINE_SCHEMAS,\n message: `Schema '${JSON.stringify(def.schema)}' contains 'anyOf' and ` +\n `some member schemas are object types so create a GraphQL ` +\n `object type but the parent schema is a non-object type ` +\n `so they are not compatible.`,\n mitigationAddendum: `Use arbitrary JSON type instead.`,\n data,\n log: preprocessingLog,\n });\n def.targetGraphQLType = 'json';\n return def;\n }\n }\n else {\n // The member schemas are not all object types\n handleWarning({\n mitigationType: MitigationTypes.COMBINE_SCHEMAS,\n message: `Schema '${def.schema}' contains 'anyOf' and ` +\n `some member schemas are object types so create a GraphQL ` +\n `object type but some member schemas are non-object types ` +\n `so they are not compatible.`,\n data,\n log: preprocessingLog,\n });\n def.targetGraphQLType = 'json';\n return def;\n }\n }\n}\nfunction createDataDefFromOneOf(saneName, saneInputName, collapsedSchema, isInputObjectType, def, data, oas) {\n const oneOfData = getMemberSchemaData(collapsedSchema.oneOf, data, oas);\n if (oneOfData.allTargetGraphQLTypes.some(memberTargetGraphQLType => {\n return memberTargetGraphQLType === 'object';\n })) {\n // unions must be created from object types\n if (oneOfData.allTargetGraphQLTypes.every(memberTargetGraphQLType => {\n return memberTargetGraphQLType === 'object';\n }) &&\n oneOfData.allProperties.length > 0 // Redundant check\n ) {\n // Input object types cannot be composed of unions\n if (isInputObjectType) {\n handleWarning({\n mitigationType: MitigationTypes.INPUT_UNION,\n message: `Input object types cannot be composed of union types.`,\n data,\n log: preprocessingLog,\n });\n def.targetGraphQLType = 'json';\n return def;\n }\n // Ensure that parent schema is compatible with oneOf\n if (def.targetGraphQLType === null || def.targetGraphQLType === 'object') {\n def.subDefinitions = [];\n collapsedSchema.oneOf.forEach(memberSchema => {\n // Dereference member schema\n let fromRef;\n if ('$ref' in memberSchema) {\n fromRef = memberSchema.$ref.split('/').pop();\n memberSchema = Oas3Tools.resolveRef(memberSchema.$ref, oas);\n }\n // Member types of GraphQL unions must be object types\n if (Oas3Tools.getSchemaTargetGraphQLType(memberSchema, data) === 'object') {\n const subDefinition = createDataDef({\n fromRef,\n fromSchema: memberSchema.title,\n fromPath: `${saneName}Member`,\n }, memberSchema, isInputObjectType, data, oas);\n def.subDefinitions.push(subDefinition);\n }\n else {\n handleWarning({\n mitigationType: MitigationTypes.COMBINE_SCHEMAS,\n message: `Schema '${JSON.stringify(def.schema)}' contains 'oneOf' so ` +\n `create a GraphQL union type but member schema '${JSON.stringify(memberSchema)}' ` +\n `is not an object type and union member types must be ` +\n `object base types.`,\n data,\n log: preprocessingLog,\n });\n }\n });\n // Not all member schemas may have been turned into GraphQL member types\n if (def.subDefinitions.length > 0 &&\n def.subDefinitions.every(subDefinition => {\n return subDefinition.targetGraphQLType === 'object';\n })) {\n // Ensure all member schemas have been verified as object types\n data.usedTypeNames.push(saneName);\n data.usedTypeNames.push(saneInputName);\n data.defs.push(def);\n def.targetGraphQLType = 'union';\n return def;\n }\n else {\n handleWarning({\n mitigationType: MitigationTypes.COMBINE_SCHEMAS,\n message: `Schema '${JSON.stringify(def.schema)}' contains 'oneOf' so ` +\n `create a GraphQL union type but all member schemas are not` +\n `object types and union member types must be object types.`,\n mitigationAddendum: `Use arbitrary JSON type instead.`,\n data,\n log: preprocessingLog,\n });\n // Default arbitrary JSON type\n def.targetGraphQLType = 'json';\n return def;\n }\n }\n else {\n // The parent schema is incompatible with the member schemas\n handleWarning({\n mitigationType: MitigationTypes.COMBINE_SCHEMAS,\n message: `Schema '${JSON.stringify(def.schema)}' contains 'oneOf' so create ` +\n `a GraphQL union type but the parent schema is a non-object ` +\n `type and member types must be object types.`,\n mitigationAddendum: `Use arbitrary JSON type instead.`,\n data,\n log: preprocessingLog,\n });\n def.targetGraphQLType = 'json';\n return def;\n }\n }\n else {\n // The member schemas are not all object types\n handleWarning({\n mitigationType: MitigationTypes.COMBINE_SCHEMAS,\n message: `Schema '${JSON.stringify(def.schema)}' contains 'oneOf' so create ` +\n `a GraphQL union type but some member schemas are non-object ` +\n `types and union member types must be object types.`,\n mitigationAddendum: `Use arbitrary JSON type instead.`,\n data,\n log: preprocessingLog,\n });\n def.targetGraphQLType = 'json';\n return def;\n }\n }\n}\n//# sourceMappingURL=preprocessor.js.map","/* eslint-disable @typescript-eslint/ban-ts-comment */\n/* eslint-disable no-case-declarations */\n/* eslint-disable no-useless-return */\n/* eslint-disable no-dupe-else-if */\n// Copyright IBM Corp. 2018. All Rights Reserved.\n// Node module: openapi-to-graphql\n// This file is licensed under the MIT License.\n// License text available at https://opensource.org/licenses/MIT\nimport { GraphQLObjectType, GraphQLString, GraphQLID, GraphQLInt, GraphQLFloat, GraphQLBoolean, GraphQLNonNull, GraphQLList, GraphQLInputObjectType, GraphQLEnumType, GraphQLUnionType, } from 'graphql';\n// Imports:\nimport { GraphQLJSON, GraphQLBigInt } from 'graphql-scalars';\nimport * as Oas3Tools from './oas_3_tools';\nimport { getResolver } from './resolver_builder';\nimport { createDataDef } from './preprocessor';\nimport { handleWarning, sortObject, MitigationTypes, mockDebug as debug } from './utils';\nconst translationLog = debug('translation');\n/**\n * Creates and returns a GraphQL type for the given JSON schema.\n */\nexport function getGraphQLType({ def, operation, data, iteration = 0, isInputObjectType = false, includeHttpDetails = false, }) {\n const name = isInputObjectType ? def.graphQLInputObjectTypeName : def.graphQLTypeName;\n // Avoid excessive iterations\n if (iteration === 50) {\n throw new Error(`GraphQL type ${name} has excessive nesting of other types`);\n }\n switch (def.targetGraphQLType) {\n // CASE: object - create object type\n case 'object':\n return createOrReuseOt({\n def,\n operation,\n data,\n iteration,\n isInputObjectType,\n includeHttpDetails,\n });\n // CASE: union - create union type\n case 'union':\n return createOrReuseUnion({\n def,\n operation,\n data,\n iteration,\n includeHttpDetails,\n });\n // CASE: list - create list type\n case 'list':\n return createOrReuseList({\n def,\n operation,\n data,\n iteration,\n isInputObjectType,\n includeHttpDetails,\n });\n // CASE: enum - create enum type\n case 'enum':\n return createOrReuseEnum({\n def,\n data,\n });\n // CASE: scalar - return scalar type\n default:\n return getScalarType({\n def,\n data,\n });\n }\n}\n/**\n * Creates an (input) object type or return an existing one, and stores it\n * in data\n *\n * A returned GraphQLObjectType has the following internal structure:\n *\n * new GraphQLObjectType({\n * name // Optional name of the type\n * description // Optional description of type\n * fields // REQUIRED returning fields\n * type // REQUIRED definition of the field type\n * args // Optional definition of types\n * resolve // Optional function defining how to obtain this type\n * })\n */\nfunction createOrReuseOt({ def, operation, data, iteration, isInputObjectType, includeHttpDetails, }) {\n // Try to reuse a preexisting (input) object type\n // CASE: query - reuse object type\n if (!isInputObjectType) {\n if (def.graphQLType && typeof def.graphQLType !== 'undefined') {\n translationLog(`Reuse object type '${def.graphQLTypeName}'` +\n (typeof operation === 'object' ? ` (for operation '${operation.operationString}')` : ''));\n return def.graphQLType;\n }\n // CASE: mutation - reuse input object type\n }\n else {\n if (def.graphQLInputObjectType && typeof def.graphQLInputObjectType !== 'undefined') {\n translationLog(`Reuse input object type '${def.graphQLInputObjectTypeName}'` +\n (typeof operation === 'object' ? ` (for operation '${operation.operationString}')` : ''));\n return def.graphQLInputObjectType;\n }\n }\n // Cannot reuse preexisting (input) object type, therefore create one\n const schema = def.schema;\n const description = schema.description;\n // CASE: query - create object type\n if (!isInputObjectType) {\n translationLog(`Create object type '${def.graphQLTypeName}'` +\n (typeof operation === 'object' ? ` (for operation '${operation.operationString}')` : ''));\n def.graphQLType = new GraphQLObjectType({\n name: def.graphQLTypeName,\n description,\n fields: () => {\n return createFields({\n def,\n links: def.links,\n operation,\n data,\n iteration,\n isInputObjectType: false,\n includeHttpDetails,\n });\n },\n });\n return def.graphQLType;\n // CASE: mutation - create input object type\n }\n else {\n translationLog(`Create input object type '${def.graphQLInputObjectTypeName}'` +\n (typeof operation === 'object' ? ` (for operation '${operation.operationString}')` : ''));\n def.graphQLInputObjectType = new GraphQLInputObjectType({\n name: def.graphQLInputObjectTypeName,\n description,\n fields: () => {\n return createFields({\n def,\n links: {},\n operation,\n data,\n iteration,\n isInputObjectType: true,\n includeHttpDetails,\n });\n },\n });\n return def.graphQLInputObjectType;\n }\n}\n/**\n * Creates a union type or return an existing one, and stores it in data\n */\nfunction createOrReuseUnion({ def, operation, data, iteration, includeHttpDetails, }) {\n // Try to reuse existing union type\n if (typeof def.graphQLType !== 'undefined') {\n translationLog(`Reuse union type '${def.graphQLTypeName}'` +\n (typeof operation === 'object' ? ` (for operation '${operation.operationString}')` : ''));\n return def.graphQLType;\n }\n else {\n translationLog(`Create union type '${def.graphQLTypeName}'` +\n (typeof operation === 'object' ? ` (for operation '${operation.operationString}')` : ''));\n const schema = def.schema;\n const description = typeof schema.description !== 'undefined' ? schema.description : 'No description available.';\n const memberTypeDefinitions = def.subDefinitions;\n const types = Object.values(memberTypeDefinitions).map(memberTypeDefinition => {\n return getGraphQLType({\n def: memberTypeDefinition,\n operation,\n data,\n iteration: iteration + 1,\n isInputObjectType: false,\n includeHttpDetails,\n });\n });\n /**\n * Check for ambiguous member types\n *\n * i.e. member types that can be confused with each other.\n */\n checkAmbiguousMemberTypes(def, types, data);\n def.graphQLType = new GraphQLUnionType({\n name: def.graphQLTypeName,\n description,\n types,\n resolveType: (source, context, info) => {\n const properties = Object.keys(source)\n // Remove custom _openAPIToGraphQL property used to pass data\n .filter(property => property !== '_openAPIToGraphQL');\n /**\n * Find appropriate member type\n *\n * TODO: currently, the check is performed by only checking the property\n * names. In the future, we should also check the types of those\n * properties.\n *\n * TODO: there is a chance a that an intended member type cannot be\n * identified if, for whatever reason, the return data is a superset\n * of the fields specified in the OAS\n */\n return types.find(type => {\n const typeFields = Object.keys(type.getFields());\n // The type should be a superset of the properties\n if (properties.length <= typeFields.length) {\n return properties.every(property => typeFields.includes(property.toString()));\n }\n return false;\n });\n },\n });\n return def.graphQLType;\n }\n}\n/**\n * Check for ambiguous member types\n *\n * i.e. member types that can be confused with each other.\n */\nfunction checkAmbiguousMemberTypes(def, types, data) {\n types.sort((a, b) => {\n const aFieldLength = Object.keys(a.getFields()).length;\n const bFieldLength = Object.keys(b.getFields()).length;\n if (aFieldLength < bFieldLength) {\n return -1;\n }\n else if (aFieldLength < bFieldLength) {\n return 1;\n }\n else {\n return 0;\n }\n });\n for (let i = 0; i < types.length - 1; i++) {\n const currentType = types[i];\n for (let j = i + 1; j < types.length; j++) {\n const otherType = types[j];\n // TODO: Check the value, not just the field name\n if (Object.keys(currentType.getFields()).every(field => {\n return Object.keys(otherType.getFields()).includes(field);\n })) {\n handleWarning({\n mitigationType: MitigationTypes.AMBIGUOUS_UNION_MEMBERS,\n message: `Union created from schema '${JSON.stringify(def)}' contains ` +\n `member types such as '${currentType}' and '${otherType}' ` +\n `which are ambiguous. Ambiguous member types can cause ` +\n `problems when trying to resolve types.`,\n data,\n log: translationLog,\n });\n return;\n }\n }\n }\n}\n/**\n * Creates a list type or returns an existing one, and stores it in data\n */\nfunction createOrReuseList({ def, operation, iteration, isInputObjectType, data, includeHttpDetails, }) {\n const name = isInputObjectType ? def.graphQLInputObjectTypeName : def.graphQLTypeName;\n // Try to reuse existing Object Type\n if (!isInputObjectType && def.graphQLType && typeof def.graphQLType !== 'undefined') {\n translationLog(`Reuse GraphQLList '${def.graphQLTypeName}'`);\n return def.graphQLType;\n }\n else if (isInputObjectType && def.graphQLInputObjectType && typeof def.graphQLInputObjectType !== 'undefined') {\n translationLog(`Reuse GraphQLList '${def.graphQLInputObjectTypeName}'`);\n return def.graphQLInputObjectType;\n }\n // Create new List Object Type\n translationLog(`Create GraphQLList '${def.graphQLTypeName}'`);\n // Get definition of the list item, which should be in the sub definitions\n const itemDef = def.subDefinitions;\n // Equivalent to schema.items\n const itemsSchema = itemDef.schema;\n // Equivalent to `{name}ListItem`\n const itemsName = itemDef.graphQLTypeName;\n const itemsType = getGraphQLType({\n def: itemDef,\n data,\n operation,\n iteration: iteration + 1,\n isInputObjectType,\n includeHttpDetails,\n });\n if (itemsType !== null) {\n const listObjectType = new GraphQLList(itemsType);\n // Store newly created list type\n if (!isInputObjectType) {\n def.graphQLType = listObjectType;\n }\n else {\n def.graphQLInputObjectType = listObjectType;\n }\n return listObjectType;\n }\n else {\n throw new Error(`Cannot create list item object type '${itemsName}' in list \n '${name}' with schema '${JSON.stringify(itemsSchema)}'`);\n }\n}\n/**\n * Creates an enum type or returns an existing one, and stores it in data\n */\nfunction createOrReuseEnum({ def, }) {\n /**\n * Try to reuse existing enum type\n *\n * Enum types do not have an input variant so only check def.ot\n */\n if (def.graphQLType && typeof def.graphQLType !== 'undefined') {\n translationLog(`Reuse GraphQLEnumType '${def.graphQLTypeName}'`);\n return def.graphQLType;\n }\n else {\n translationLog(`Create GraphQLEnumType '${def.graphQLTypeName}'`);\n const values = {};\n def.schema.enum.forEach(e => {\n // Force enum values to string and value should be in ALL_CAPS\n values[Oas3Tools.sanitize(e.toString(), Oas3Tools.CaseStyle.ALL_CAPS)] = {\n value: e,\n };\n });\n // Store newly created Enum Object Type\n def.graphQLType = new GraphQLEnumType({\n name: def.graphQLTypeName,\n values,\n });\n return def.graphQLType;\n }\n}\n/**\n * Returns the GraphQL scalar type matching the given JSON schema type\n */\nfunction getScalarType({ def, data, }) {\n switch (def.targetGraphQLType) {\n case 'id':\n def.graphQLType = GraphQLID;\n break;\n case 'string':\n def.graphQLType = GraphQLString;\n break;\n case 'integer':\n def.graphQLType = GraphQLInt;\n break;\n case 'int64':\n def.graphQLType = GraphQLBigInt;\n break;\n case 'number':\n def.graphQLType = GraphQLFloat;\n break;\n case 'float':\n def.graphQLType = GraphQLFloat;\n break;\n case 'boolean':\n def.graphQLType = GraphQLBoolean;\n break;\n case 'json':\n def.graphQLType = GraphQLJSON;\n break;\n default:\n throw new Error(`Cannot process schema type '${def.targetGraphQLType}'.`);\n }\n return def.graphQLType;\n}\n/**\n * Creates the fields object to be used by an (input) object type\n */\nfunction createFields({ def, links, operation, data, iteration, isInputObjectType, includeHttpDetails, }) {\n let fields = {};\n if (includeHttpDetails && !isInputObjectType) {\n fields.httpDetails = {\n type: GraphQLJSON,\n resolve: root => { var _a; return (_a = root === null || root === void 0 ? void 0 : root._openAPIToGraphQL) === null || _a === void 0 ? void 0 : _a.data; },\n };\n }\n const fieldTypeDefinitions = def.subDefinitions;\n // Create fields for properties\n for (const fieldTypeKey in fieldTypeDefinitions) {\n const fieldTypeDefinition = fieldTypeDefinitions[fieldTypeKey];\n const fieldSchema = fieldTypeDefinition.schema;\n // Get object type describing the property\n const objectType = getGraphQLType({\n def: fieldTypeDefinition,\n operation,\n data,\n iteration: iteration + 1,\n isInputObjectType,\n includeHttpDetails,\n });\n const requiredProperty = typeof def.required === 'object' && def.required.includes(fieldTypeKey);\n // Finally, add the object type to the fields (using sanitized field name)\n if (objectType) {\n const saneFieldTypeKey = Oas3Tools.sanitize(fieldTypeKey, !data.options.simpleNames ? Oas3Tools.CaseStyle.camelCase : Oas3Tools.CaseStyle.simple);\n const sanePropName = Oas3Tools.storeSaneName(saneFieldTypeKey, fieldTypeKey, data.saneMap);\n fields[sanePropName] = {\n type: requiredProperty ? new GraphQLNonNull(objectType) : objectType,\n description: typeof fieldSchema === 'object' ? fieldSchema.description : null,\n };\n }\n else {\n handleWarning({\n mitigationType: MitigationTypes.CANNOT_GET_FIELD_TYPE,\n message: `Cannot obtain GraphQL type for field '${fieldTypeKey}' in ` +\n `GraphQL type '${JSON.stringify(def.schema)}'.`,\n data,\n log: translationLog,\n });\n }\n }\n if (typeof links === 'object' && // Links are present\n !isInputObjectType // Only object type (input object types cannot make use of links)\n ) {\n for (const saneLinkKey in links) {\n translationLog(`Create link '${saneLinkKey}'...`);\n // Check if key is already in fields\n if (saneLinkKey in fields) {\n handleWarning({\n mitigationType: MitigationTypes.LINK_NAME_COLLISION,\n message: `Cannot create link '${saneLinkKey}' because parent ` +\n `object type already contains a field with the same (sanitized) name.`,\n data,\n log: translationLog,\n });\n }\n else {\n const link = links[saneLinkKey];\n // Get linked operation\n let linkedOpId;\n // TODO: href is yet another alternative to operationRef and operationId\n if (typeof link.operationId === 'string') {\n linkedOpId = link.operationId;\n }\n else if (typeof link.operationRef === 'string') {\n linkedOpId = linkOpRefToOpId({\n links,\n linkKey: saneLinkKey,\n operation,\n data,\n });\n }\n /**\n * linkedOpId may not be initialized because operationRef may lead to an\n * operation object that does not have an operationId\n */\n if (typeof linkedOpId === 'string' && linkedOpId in data.operations) {\n const linkedOp = data.operations[linkedOpId];\n // Determine parameters provided via link\n const argsFromLink = link.parameters;\n // Get arguments that are not provided by the linked operation\n let dynamicParams = linkedOp.parameters;\n if (typeof argsFromLink === 'object') {\n dynamicParams = dynamicParams.filter(param => {\n return typeof argsFromLink[param.name] === 'undefined';\n });\n }\n // Get resolve function for link\n const linkResolver = data.options.resolverMiddleware(() => ({\n operation: linkedOp,\n argsFromLink: argsFromLink,\n data,\n baseUrl: data.options.baseUrl,\n requestOptions: data.options.requestOptions,\n }), getResolver);\n // Get arguments for link\n const args = getArgs({\n parameters: dynamicParams,\n operation: linkedOp,\n data,\n includeHttpDetails,\n });\n // Get response object type\n const resObjectType = linkedOp.responseDefinition.graphQLType !== undefined\n ? linkedOp.responseDefinition.graphQLType\n : getGraphQLType({\n def: linkedOp.responseDefinition,\n operation,\n data,\n iteration: iteration + 1,\n isInputObjectType: false,\n includeHttpDetails,\n });\n let description = link.description;\n if (data.options.equivalentToMessages && description) {\n description += `\\n\\nEquivalent to ${linkedOp.operationString}`;\n }\n // Finally, add the object type to the fields (using sanitized field name)\n // TODO: check if fields already has this field name\n fields[saneLinkKey] = {\n type: resObjectType,\n resolve: linkResolver,\n args,\n description,\n };\n }\n else {\n handleWarning({\n mitigationType: MitigationTypes.UNRESOLVABLE_LINK,\n message: `Cannot resolve target of link '${saneLinkKey}'`,\n data,\n log: translationLog,\n });\n }\n }\n }\n }\n fields = sortObject(fields);\n return fields;\n}\n/**\n * Returns the operationId that an operationRef is associated to\n *\n * NOTE: If the operation does not natively have operationId, this function\n * will try to produce an operationId the same way preprocessor.js does it.\n *\n * Any changes to constructing operationIds in preprocessor.js should be\n * reflected here.\n */\nfunction linkOpRefToOpId({ links, linkKey, operation, data, }) {\n const link = links[linkKey];\n if (typeof link.operationRef === 'string') {\n // TODO: external refs\n const operationRef = link.operationRef;\n let linkLocation;\n let linkRelativePathAndMethod;\n /**\n * Example relative path: '#/paths/~12.0~1repositories~1{username}/get'\n * Example absolute path: 'https://na2.gigantic-server.com/#/paths/~12.0~1repositories~1{username}/get'\n * Extract relative path from relative path\n */\n if (operationRef.substring(0, 8) === '#/paths/') {\n linkRelativePathAndMethod = operationRef;\n // Extract relative path from absolute path\n }\n else {\n /**\n * '#' may exist in other places in the path\n * '/#/' is more likely to point to the beginning of the path\n */\n const firstPathIndex = operationRef.indexOf('#/paths/');\n // Found a relative path candidate\n if (firstPathIndex !== -1) {\n // Check to see if there are other relative path candidates\n const lastPathIndex = operationRef.lastIndexOf('#/paths/');\n if (firstPathIndex !== lastPathIndex) {\n handleWarning({\n mitigationType: MitigationTypes.AMBIGUOUS_LINK,\n message: `The link '${linkKey}' in operation '${operation.operationString}' ` +\n `contains an ambiguous operationRef '${operationRef}', ` +\n `meaning it has multiple instances of the string '#/paths/'`,\n data,\n log: translationLog,\n });\n return null;\n }\n linkLocation = operationRef.substring(0, firstPathIndex);\n linkRelativePathAndMethod = operationRef.substring(firstPathIndex);\n // Cannot find relative path candidate\n }\n else {\n handleWarning({\n mitigationType: MitigationTypes.UNRESOLVABLE_LINK,\n message: `The link '${linkKey}' in operation '${operation.operationString}' ` +\n `does not contain a valid path in operationRef '${operationRef}', ` +\n `meaning it does not contain a string '#/paths/'`,\n data,\n log: translationLog,\n });\n return null;\n }\n }\n // Infer operationId from relative path\n if (typeof linkRelativePathAndMethod === 'string') {\n let linkPath;\n let linkMethod;\n /**\n * NOTE: I wish we could extract the linkedOpId by matching the\n * linkedOpObject with an operation in data and extracting the operationId\n * there but that does not seem to be possible especiially because you\n * need to know the operationId just to access the operations so what I\n * have to do is reconstruct the operationId the same way preprocessing\n * does it\n */\n /**\n * linkPath should be the path followed by the method\n *\n * Find the slash that divides the path from the method\n */\n const pivotSlashIndex = linkRelativePathAndMethod.lastIndexOf('/');\n // Check if there are any '/' in the linkPath\n if (pivotSlashIndex !== -1) {\n // Get method\n // Check if there is a method at the end of the linkPath\n if (pivotSlashIndex !== linkRelativePathAndMethod.length - 1) {\n try {\n // Start at +1 because we do not want the starting '/'\n linkMethod = Oas3Tools.methodToHttpMethod(linkRelativePathAndMethod.substring(pivotSlashIndex + 1));\n }\n catch (_a) {\n handleWarning({\n mitigationType: MitigationTypes.UNRESOLVABLE_LINK,\n message: `The operationRef '${operationRef}' contains an ` + `invalid HTTP method '${linkMethod}'`,\n data,\n log: translationLog,\n });\n return null;\n }\n // There is no method at the end of the path\n }\n else {\n handleWarning({\n mitigationType: MitigationTypes.UNRESOLVABLE_LINK,\n message: `The operationRef '${operationRef}' does not contain an` + `HTTP method`,\n data,\n log: translationLog,\n });\n return null;\n }\n /**\n * Get path\n *\n * Substring starts at index 8 and ends at pivotSlashIndex to exclude\n * the '/'s at the ends of the path\n *\n * TODO: improve removing '/#/paths'?\n */\n linkPath = linkRelativePathAndMethod.substring(8, pivotSlashIndex);\n /**\n * linkPath is currently a JSON Pointer\n *\n * Revert the escaped '/', represented by '~1', to form intended path\n */\n linkPath = linkPath.replace(/~1/g, '/');\n // Find the right oas\n const oas = typeof linkLocation === 'undefined' ? operation.oas : getOasFromLinkLocation(linkLocation, link, data);\n // If the link was external, make sure that an OAS could be identified\n if (typeof oas !== 'undefined') {\n if (typeof linkMethod === 'string' && typeof linkPath === 'string') {\n let linkedOpId;\n if (linkPath in oas.paths && linkMethod in oas.paths[linkPath]) {\n const linkedOpObject = oas.paths[linkPath][linkMethod];\n if ('operationId' in linkedOpObject) {\n linkedOpId = linkedOpObject.operationId;\n }\n }\n if (typeof linkedOpId !== 'string') {\n linkedOpId = Oas3Tools.generateOperationId(linkMethod, linkPath);\n }\n if (linkedOpId in data.operations) {\n return linkedOpId;\n }\n else {\n handleWarning({\n mitigationType: MitigationTypes.UNRESOLVABLE_LINK,\n message: `The link '${linkKey}' references an operation with ` +\n `operationId '${linkedOpId}' but no such operation exists. ` +\n `Note that the operationId may be autogenerated but ` +\n `regardless, the link could not be matched to an operation.`,\n data,\n log: translationLog,\n });\n return null;\n }\n // Path and method could not be found\n }\n else {\n handleWarning({\n mitigationType: MitigationTypes.UNRESOLVABLE_LINK,\n message: `Cannot identify path and/or method, '${linkPath} and ` +\n `'${linkMethod}' respectively, from operationRef ` +\n `'${operationRef}' in link '${linkKey}'`,\n data,\n log: translationLog,\n });\n return null;\n }\n // External link could not be resolved\n }\n else {\n handleWarning({\n mitigationType: MitigationTypes.UNRESOLVABLE_LINK,\n message: `The link '${link.operationRef}' references an external OAS ` + `but it was not provided`,\n data,\n log: translationLog,\n });\n return null;\n }\n // Cannot split relative path into path and method sections\n }\n else {\n handleWarning({\n mitigationType: MitigationTypes.UNRESOLVABLE_LINK,\n message: `Cannot extract path and/or method from operationRef ` + `'${operationRef}' in link '${linkKey}'`,\n data,\n log: translationLog,\n });\n return null;\n }\n // Cannot extract relative path from absolute path\n }\n else {\n handleWarning({\n mitigationType: MitigationTypes.UNRESOLVABLE_LINK,\n message: `Cannot extract path and/or method from operationRef ` + `'${operationRef}' in link '${linkKey}'`,\n data,\n log: translationLog,\n });\n return null;\n }\n }\n}\n/**\n * Determin if an argument should be created if the argument has already been\n * provided through the options\n */\nfunction skipArg(parameter, operation, data, includeHttpDetails) {\n var _a;\n if (typeof data.options === 'object') {\n switch (parameter.in) {\n case 'header':\n // Check header option\n if (typeof data.options.headers === 'object' && parameter.name in data.options.headers) {\n return true;\n }\n else if (typeof data.options.headers === 'function') {\n const headers = data.options.headers(operation.method, operation.path, (_a = operation.oas.info) === null || _a === void 0 ? void 0 : _a.title);\n if (typeof headers === 'object') {\n return true;\n }\n // Check requestOptions option\n }\n else if (typeof data.options.requestOptions === 'object') {\n if (typeof data.options.requestOptions.headers === 'object' &&\n parameter.name in data.options.requestOptions.headers) {\n return true;\n } /* else if (\n typeof data.options.requestOptions.headers === 'function'\n ) {\n const headers = data.options.requestOptions.headers(\n operation.method,\n operation.path,\n operation.oas.info?.title\n )\n \n if (typeof headers === 'object') {\n return true\n }\n } */\n }\n break;\n case 'query':\n // Check header option\n if (typeof data.options.qs === 'object' && parameter.name in data.options.qs) {\n return true;\n // Check requestOptions option\n } /* else if (\n typeof data.options.requestOptions === 'object' &&\n typeof data.options.requestOptions.qs === 'object' &&\n parameter.name in data.options.requestOptions.qs\n ) {\n return true\n } */\n break;\n }\n }\n return false;\n}\n/**\n * Creates the arguments for resolving a field\n *\n * Arguments that are provided via options will be ignored\n */\nexport function getArgs({ requestPayloadDef, parameters, operation, data, includeHttpDetails, }) {\n let args = {};\n // Handle params:\n parameters.forEach(parameter => {\n // We need at least a name\n if (typeof parameter.name !== 'string') {\n handleWarning({\n mitigationType: MitigationTypes.INVALID_OAS,\n message: `The operation '${operation.operationString}' contains a ` +\n `parameter '${JSON.stringify(parameter)}' with no 'name' property`,\n data,\n log: translationLog,\n });\n return;\n }\n // If this parameter is provided via options, ignore\n if (skipArg(parameter, operation, data, includeHttpDetails)) {\n return;\n }\n /**\n * Determine type of parameter\n *\n * The type of the parameter can either be contained in the \"schema\" field\n * or the \"content\" field (but not both)\n */\n let schema;\n if (typeof parameter.schema === 'object') {\n schema = parameter.schema;\n }\n else if (typeof parameter.content === 'object') {\n if (typeof parameter.content['application/json'] === 'object' &&\n typeof parameter.content['application/json'].schema === 'object') {\n schema = parameter.content['application/json'].schema;\n }\n else {\n handleWarning({\n mitigationType: MitigationTypes.NON_APPLICATION_JSON_SCHEMA,\n message: `The operation '${operation.operationString}' contains a ` +\n `parameter '${JSON.stringify(parameter)}' that has a 'content' ` +\n `property but no schemas in application/json format. The ` +\n `parameter will not be created`,\n data,\n log: translationLog,\n });\n return;\n }\n }\n else {\n // Invalid OAS according to 3.0.2\n handleWarning({\n mitigationType: MitigationTypes.INVALID_OAS,\n message: `The operation '${operation.operationString}' contains a ` +\n `parameter '${JSON.stringify(parameter)}' with no 'schema' or ` +\n `'content' property`,\n data,\n log: translationLog,\n });\n return;\n }\n /**\n * Resolving the reference is necessary later in the code and by doing it,\n * we can avoid doing it a second time in resolveRev()\n */\n if ('$ref' in schema) {\n schema = Oas3Tools.resolveRef(schema.$ref, operation.oas);\n }\n const paramDef = createDataDef({ fromSchema: parameter.name }, schema, true, data, operation.oas);\n // @ts-ignore\n const type = getGraphQLType({\n def: paramDef,\n operation,\n data,\n iteration: 0,\n isInputObjectType: true,\n });\n /**\n * Sanitize the argument name\n *\n * NOTE: when matching these parameters back to requests, we need to again\n * use the real parameter name\n */\n const saneName = Oas3Tools.sanitize(parameter.name, !data.options.simpleNames ? Oas3Tools.CaseStyle.camelCase : Oas3Tools.CaseStyle.simple);\n // Parameters are not required when a default exists:\n let hasDefault = false;\n if (typeof parameter.schema === 'object') {\n let schema = parameter.schema;\n if (typeof schema.$ref === 'string') {\n schema = Oas3Tools.resolveRef(parameter.schema.$ref, operation.oas);\n }\n if (typeof schema.default !== 'undefined') {\n hasDefault = true;\n }\n }\n const paramRequired = parameter.required && !hasDefault;\n args[saneName] = {\n type: paramRequired ? new GraphQLNonNull(type) : type,\n description: parameter.description,\n };\n });\n // Add limit argument\n if (data.options.addLimitArgument &&\n typeof operation.responseDefinition === 'object' &&\n operation.responseDefinition.schema.type === 'array' &&\n // Only add limit argument to lists of object types, not to lists of scalar types\n (operation.responseDefinition.subDefinitions.schema.type === 'object' ||\n operation.responseDefinition.subDefinitions.schema.type === 'array' ||\n (operation.responseDefinition.subDefinitions.schema.type === undefined &&\n (operation.responseDefinition.subDefinitions.schema.allOf ||\n operation.responseDefinition.subDefinitions.schema.anyOf ||\n operation.responseDefinition.subDefinitions.schema.oneOf)))) {\n // Make sure slicing arguments will not overwrite preexisting arguments\n if ('limit' in args) {\n handleWarning({\n mitigationType: MitigationTypes.LIMIT_ARGUMENT_NAME_COLLISION,\n message: `The 'limit' argument cannot be added ` +\n `because of a preexisting argument in ` +\n `operation ${operation.operationString}`,\n data,\n log: translationLog,\n });\n }\n else {\n args.limit = {\n type: GraphQLInt,\n description: `Auto-generated argument that limits the size of ` +\n `returned list of objects/list, selecting the first \\`n\\` ` +\n `elements of the list`,\n };\n }\n }\n // Handle request payload (if present):\n if (typeof requestPayloadDef === 'object') {\n const reqObjectType = getGraphQLType({\n def: requestPayloadDef,\n data,\n operation,\n isInputObjectType: true,\n includeHttpDetails,\n });\n // Sanitize the argument name\n const saneName = data.options.genericPayloadArgName\n ? 'requestBody'\n : Oas3Tools.uncapitalize(requestPayloadDef.graphQLInputObjectTypeName); // Already sanitized\n const reqRequired = typeof operation === 'object' && typeof operation.payloadRequired === 'boolean'\n ? operation.payloadRequired\n : false;\n args[saneName] = {\n type: reqRequired ? new GraphQLNonNull(reqObjectType) : reqObjectType,\n // TODO: addendum to the description explaining this is the request body\n description: requestPayloadDef.schema.description,\n };\n }\n args = sortObject(args);\n return args;\n}\n/**\n * Used in the context of links, specifically those using an external operationRef\n * If the reference is an absolute reference, determine the type of location\n *\n * For example, name reference, file path, web-hosted OAS link, etc.\n */\nfunction getLinkLocationType(linkLocation) {\n // TODO: currently we only support the title as a link location\n return 'title';\n}\n/**\n * Used in the context of links, specifically those using an external operationRef\n * Based on the location of the OAS, retrieve said OAS\n */\nfunction getOasFromLinkLocation(linkLocation, link, data) {\n // May be an external reference\n switch (getLinkLocationType(linkLocation)) {\n case 'title':\n // Get the possible\n const possibleOass = data.oass.filter(oas => {\n var _a;\n return ((_a = oas.info) === null || _a === void 0 ? void 0 : _a.title) === linkLocation;\n });\n // Check if there are an ambiguous OASs\n if (possibleOass.length === 1) {\n // No ambiguity\n return possibleOass[0];\n }\n else if (possibleOass.length > 1) {\n // Some ambiguity\n handleWarning({\n mitigationType: MitigationTypes.AMBIGUOUS_LINK,\n message: `The operationRef '${link.operationRef}' references an ` +\n `OAS '${linkLocation}' but multiple OASs share the same title`,\n data,\n log: translationLog,\n });\n }\n else {\n // No OAS had the expected title\n handleWarning({\n mitigationType: MitigationTypes.UNRESOLVABLE_LINK,\n message: `The operationRef '${link.operationRef}' references an ` +\n `OAS '${linkLocation}' but no such OAS was provided`,\n data,\n log: translationLog,\n });\n }\n break;\n // // TODO\n // case 'url':\n // break\n // // TODO\n // case 'file':\n // break\n // TODO: should title be default?\n // In cases of names like api.io\n default:\n handleWarning({\n mitigationType: MitigationTypes.UNRESOLVABLE_LINK,\n message: `The link location of the operationRef ` +\n `'${link.operationRef}' is currently not supported\\n` +\n `Currently only the title of the OAS is supported`,\n data,\n log: translationLog,\n });\n }\n}\n//# sourceMappingURL=schema_builder.js.map","// Copyright IBM Corp. 2018. All Rights Reserved.\n// Node module: openapi-to-graphql\n// This file is licensed under the MIT License.\n// License text available at https://opensource.org/licenses/MIT\n/**\n * Utilities related to GraphQL.\n */\nimport { GraphQLObjectType, GraphQLString } from 'graphql';\n/**\n * Returns empty GraphQLObjectType.\n */\nexport function getEmptyObjectType(name) {\n return new GraphQLObjectType({\n name: name + 'Placeholder',\n description: 'Placeholder object',\n fields: {\n message: {\n type: GraphQLString,\n description: 'Placeholder field',\n resolve: () => {\n return 'This is a placeholder field.';\n },\n },\n },\n });\n}\n//# sourceMappingURL=graphql_tools.js.map","// Copyright IBM Corp. 2018. All Rights Reserved.\n// Node module: openapi-to-graphql\n// This file is licensed under the MIT License.\n// License text available at https://opensource.org/licenses/MIT\n/**\n * Functions to create viewers that allow users to pass credentials to resolve\n * functions used by OpenAPI-to-GraphQL.\n */\n// Type imports:\nimport { GraphQLString, GraphQLObjectType, GraphQLNonNull } from 'graphql';\nimport { GraphQLOperationType } from './types/graphql';\n// Imports:\nimport { getGraphQLType } from './schema_builder';\nimport * as Oas3Tools from './oas_3_tools';\nimport { handleWarning, sortObject, MitigationTypes, mockDebug as debug } from './utils';\nimport { createDataDef } from './preprocessor';\nconst translationLog = debug('translation');\n/**\n * Load the field object in the appropriate root object\n *\n * i.e. inside either rootQueryFields/rootMutationFields or inside\n * rootQueryFields/rootMutationFields for further processing\n */\nexport function createAndLoadViewer(queryFields, operationType, data, includeHttpDetails) {\n const results = {};\n /**\n * To ensure that viewers have unique names, we add a numerical postfix.\n *\n * This object keeps track of what the postfix should be.\n *\n * The key is the security scheme type and the value is\n * the current highest postfix used for viewers of that security scheme type.\n */\n const viewerNamePostfix = {};\n /**\n * Used to collect all fields in the given querFields object, no matter which\n * protocol. Used to populate anyAuthViewer.\n */\n const anyAuthFields = {};\n for (const protocolName in queryFields) {\n Object.assign(anyAuthFields, queryFields[protocolName]);\n /**\n * Check if the name has already been used (i.e. in the list)\n * if so, create a new name and add it to the list\n */\n const securityType = data.security[protocolName].def.type;\n let viewerType;\n /**\n * HTTP is not an authentication protocol\n * HTTP covers a number of different authentication type\n * change the typeName to match the exact authentication type (e.g. basic\n * authentication)\n */\n if (securityType === 'http') {\n const scheme = data.security[protocolName].def.scheme;\n switch (scheme) {\n case 'basic':\n viewerType = 'basicAuth';\n break;\n default:\n handleWarning({\n mitigationType: MitigationTypes.UNSUPPORTED_HTTP_SECURITY_SCHEME,\n message: `Currently unsupported HTTP authentication protocol ` + `type 'http' and scheme '${scheme}'`,\n data,\n log: translationLog,\n });\n continue;\n }\n }\n else {\n viewerType = securityType;\n }\n // Create name for the viewer\n let viewerName = operationType === GraphQLOperationType.Query\n ? Oas3Tools.sanitize(`viewer ${viewerType}`, Oas3Tools.CaseStyle.camelCase)\n : operationType === GraphQLOperationType.Mutation\n ? Oas3Tools.sanitize(`mutation viewer ${viewerType}`, Oas3Tools.CaseStyle.camelCase)\n : Oas3Tools.sanitize(`subscription viewer ${viewerType}`, Oas3Tools.CaseStyle.camelCase);\n // Ensure unique viewer name\n // If name already exists, append a number at the end of the name\n if (!(viewerType in viewerNamePostfix)) {\n viewerNamePostfix[viewerType] = 1;\n }\n else {\n viewerName += ++viewerNamePostfix[viewerType];\n }\n // Add the viewer object type to the specified root query object type\n results[viewerName] = getViewerOT(viewerName, protocolName, securityType, queryFields[protocolName], data);\n }\n // Create name for the AnyAuth viewer\n const anyAuthObjectName = operationType === GraphQLOperationType.Query\n ? 'viewerAnyAuth'\n : operationType === GraphQLOperationType.Mutation\n ? 'mutationViewerAnyAuth'\n : 'subscriptionViewerAnyAuth';\n // Add the AnyAuth object type to the specified root query object type\n results[anyAuthObjectName] = getViewerAnyAuthOT(anyAuthObjectName, anyAuthFields, data, includeHttpDetails);\n return results;\n}\n/**\n * Gets the viewer Object, resolve function, and arguments\n */\nfunction getViewerOT(name, protocolName, securityType, queryFields, data) {\n var _a, _b;\n const scheme = data.security[protocolName];\n // Resolve function:\n const resolve = (root, args, context) => {\n const security = {};\n const saneProtocolName = Oas3Tools.sanitize(protocolName, Oas3Tools.CaseStyle.camelCase);\n security[Oas3Tools.storeSaneName(saneProtocolName, protocolName, data.saneMap)] = args;\n /**\n * Viewers are always root, so we can instantiate _openAPIToGraphQL here without\n * previously checking for its existence\n */\n return {\n _openAPIToGraphQL: {\n security,\n },\n };\n };\n // Arguments:\n /**\n * Do not sort because they are already \"sorted\" in preprocessing.\n * Otherwise, for basic auth, \"password\" will appear before \"username\"\n */\n const args = {};\n if (typeof scheme === 'object') {\n for (const parameterName in scheme.parameters) {\n args[parameterName] = { type: new GraphQLNonNull(GraphQLString) };\n }\n }\n let typeDescription = `A viewer for security scheme '${protocolName}'`;\n /**\n * HTTP authentication uses different schemes. It is not sufficient to name\n * only the security type\n */\n let description = securityType === 'http'\n ? `A viewer that wraps all operations authenticated via security scheme ` +\n `'${protocolName}', which is of type 'http' '${scheme.def.scheme}'`\n : `A viewer that wraps all operations authenticated via security scheme ` +\n `'${protocolName}', which is of type '${securityType}'`;\n if (data.oass.length !== 1) {\n typeDescription += ` in OAS '${(_a = scheme.oas.info) === null || _a === void 0 ? void 0 : _a.title}'`;\n description = `, in OAS '${(_b = scheme.oas.info) === null || _b === void 0 ? void 0 : _b.title}`;\n }\n return {\n type: new GraphQLObjectType({\n name: Oas3Tools.capitalize(name),\n description: typeDescription,\n fields: () => queryFields,\n }),\n resolve,\n args,\n description,\n };\n}\n/**\n * Create an object containing an AnyAuth viewer, its resolve function,\n * and its args.\n */\nfunction getViewerAnyAuthOT(name, queryFields, data, includeHttpDetails) {\n let args = {};\n for (const protocolName in data.security) {\n // Create input object types for the viewer arguments\n const def = createDataDef({ fromRef: protocolName }, data.security[protocolName].schema, true, data, data.security[protocolName].oas);\n const type = getGraphQLType({\n def,\n data,\n isInputObjectType: true,\n includeHttpDetails,\n });\n const saneProtocolName = Oas3Tools.sanitize(protocolName, Oas3Tools.CaseStyle.camelCase);\n args[Oas3Tools.storeSaneName(saneProtocolName, protocolName, data.saneMap)] = { type };\n }\n args = sortObject(args);\n // Pass object containing security information to fields\n const resolve = (root, args, context) => {\n return {\n _openAPIToGraphQL: {\n security: args,\n },\n };\n };\n return {\n type: new GraphQLObjectType({\n name: Oas3Tools.capitalize(name),\n description: 'Warning: Not every request will work with this viewer type',\n fields: () => queryFields,\n }),\n resolve,\n args,\n description: `A viewer that wraps operations for all available ` + `authentication mechanisms`,\n };\n}\n//# sourceMappingURL=auth_builder.js.map","// Copyright IBM Corp. 2018. All Rights Reserved.\n// Node module: openapi-to-graphql\n// This file is licensed under the MIT License.\n// License text available at https://opensource.org/licenses/MIT\nimport { GraphQLOperationType } from './types/graphql';\nimport { GraphQLSchema, GraphQLObjectType } from 'graphql';\n// Imports:\nimport { getGraphQLType, getArgs } from './schema_builder';\nimport { getPublishResolver, getResolver, getSubscribe } from './resolver_builder';\nimport * as GraphQLTools from './graphql_tools';\nimport { preprocessOas } from './preprocessor';\nimport * as Oas3Tools from './oas_3_tools';\nimport { createAndLoadViewer } from './auth_builder';\nimport { sortObject, handleWarning, mockDebug as debug, MitigationTypes } from './utils';\nconst translationLog = debug('translation');\n/**\n * Creates a GraphQL interface from the given OpenAPI Specification (2 or 3).\n */\nexport async function createGraphQLSchema(spec, options = {}) {\n // Setting default options\n options.strict = typeof options.strict === 'boolean' ? options.strict : false;\n // Schema options\n options.operationIdFieldNames =\n typeof options.operationIdFieldNames === 'boolean' ? options.operationIdFieldNames : false;\n options.fillEmptyResponses = typeof options.fillEmptyResponses === 'boolean' ? options.fillEmptyResponses : false;\n options.addLimitArgument = typeof options.addLimitArgument === 'boolean' ? options.addLimitArgument : false;\n options.genericPayloadArgName =\n typeof options.genericPayloadArgName === 'boolean' ? options.genericPayloadArgName : false;\n options.simpleNames = typeof options.simpleNames === 'boolean' ? options.simpleNames : false;\n options.singularNames = typeof options.singularNames === 'boolean' ? options.singularNames : false;\n // Authentication options\n options.viewer = typeof options.viewer === 'boolean' ? options.viewer : true;\n options.sendOAuthTokenInQuery =\n typeof options.sendOAuthTokenInQuery === 'boolean' ? options.sendOAuthTokenInQuery : false;\n // Logging options\n options.provideErrorExtensions =\n typeof options.provideErrorExtensions === 'boolean' ? options.provideErrorExtensions : true;\n options.equivalentToMessages =\n typeof options.equivalentToMessages === 'boolean' ? options.equivalentToMessages : true;\n options.resolverMiddleware =\n typeof options.resolverMiddleware === 'function'\n ? options.resolverMiddleware\n : (resolverFactoryParams, factory) => factory(resolverFactoryParams);\n options.report = {\n warnings: [],\n numOps: 0,\n numOpsQuery: 0,\n numOpsMutation: 0,\n numOpsSubscription: 0,\n numQueriesCreated: 0,\n numMutationsCreated: 0,\n numSubscriptionsCreated: 0,\n };\n options.includeHttpDetails = typeof options.includeHttpDetails === 'boolean' ? options.includeHttpDetails : false;\n let oass;\n if (Array.isArray(spec)) {\n /**\n * Convert all non-OAS 3.0.x into OAS 3.0.x\n */\n oass = await Promise.all(spec.map(ele => {\n return Oas3Tools.getValidOAS3(ele);\n }));\n }\n else {\n /**\n * Check if the spec is a valid OAS 3.0.x\n * If the spec is OAS 2.0, attempt to translate it into 3.0.x, then try to\n * translate the spec into a GraphQL schema\n */\n oass = [await Oas3Tools.getValidOAS3(spec)];\n }\n const { schema, report } = await translateOpenAPIToGraphQL(oass, options);\n return {\n schema,\n report,\n };\n}\n/**\n * Creates a GraphQL interface from the given OpenAPI Specification 3.0.x\n */\nasync function translateOpenAPIToGraphQL(oass, { strict, report, \n// Schema options\noperationIdFieldNames, fillEmptyResponses, addLimitArgument, idFormats, selectQueryOrMutationField, genericPayloadArgName, simpleNames, singularNames, includeHttpDetails, \n// Resolver options\nheaders, qs, requestOptions, connectOptions, baseUrl, customResolvers, fetch, resolverMiddleware, pubsub, \n// Authentication options\nviewer, tokenJSONpath, sendOAuthTokenInQuery, \n// Logging options\nprovideErrorExtensions, equivalentToMessages, }) {\n const options = {\n strict,\n report,\n // Schema options\n operationIdFieldNames,\n fillEmptyResponses,\n addLimitArgument,\n idFormats,\n selectQueryOrMutationField,\n genericPayloadArgName,\n simpleNames,\n singularNames,\n includeHttpDetails,\n // Resolver options\n headers,\n qs,\n requestOptions,\n connectOptions,\n baseUrl,\n customResolvers,\n fetch,\n resolverMiddleware,\n pubsub,\n // Authentication options\n viewer,\n tokenJSONpath,\n sendOAuthTokenInQuery,\n // Logging options\n provideErrorExtensions,\n equivalentToMessages,\n };\n translationLog(`Options: ${JSON.stringify(options)}`);\n /**\n * Extract information from the OASs and put it inside a data structure that\n * is easier for OpenAPI-to-GraphQL to use\n */\n const data = preprocessOas(oass, options);\n preliminaryChecks(options, data);\n // Query, Mutation, and Subscription fields\n let queryFields = {};\n let mutationFields = {};\n let subscriptionFields = {};\n // Authenticated Query, Mutation, and Subscription fields\n let authQueryFields = {};\n let authMutationFields = {};\n let authSubscriptionFields = {};\n // Add Query and Mutation fields\n Object.entries(data.operations).forEach(([operationId, operation]) => {\n translationLog(`Process operation '${operation.operationString}'...`);\n const field = getFieldForOperation(operation, options.baseUrl, data, requestOptions, connectOptions, includeHttpDetails, pubsub);\n const saneOperationId = Oas3Tools.sanitize(operationId, Oas3Tools.CaseStyle.camelCase);\n // Check if the operation should be added as a Query or Mutation\n if (operation.operationType === GraphQLOperationType.Query) {\n let fieldName = !singularNames\n ? Oas3Tools.uncapitalize(operation.responseDefinition.graphQLTypeName)\n : Oas3Tools.sanitize(Oas3Tools.inferResourceNameFromPath(operation.path), Oas3Tools.CaseStyle.camelCase);\n if (operation.inViewer) {\n for (const securityRequirement of operation.securityRequirements) {\n if (typeof authQueryFields[securityRequirement] !== 'object') {\n authQueryFields[securityRequirement] = {};\n }\n // Avoid overwriting fields that return the same data:\n if (fieldName in authQueryFields[securityRequirement] ||\n /**\n * If the option is set operationIdFieldNames, the fieldName is\n * forced to be the operationId\n */\n operationIdFieldNames) {\n fieldName = Oas3Tools.storeSaneName(saneOperationId, operationId, data.saneMap);\n }\n if (fieldName in authQueryFields[securityRequirement]) {\n handleWarning({\n mitigationType: MitigationTypes.DUPLICATE_FIELD_NAME,\n message: `Multiple operations have the same name ` +\n `'${fieldName}' and security requirement ` +\n `'${securityRequirement}'. GraphQL field names must be ` +\n `unique so only one can be added to the authentication ` +\n `viewer. Operation '${operation.operationString}' will be ignored.`,\n data,\n log: translationLog,\n });\n }\n else {\n authQueryFields[securityRequirement][fieldName] = field;\n }\n }\n }\n else {\n // Avoid overwriting fields that return the same data:\n if (fieldName in queryFields ||\n /**\n * If the option is set operationIdFieldNames, the fieldName is\n * forced to be the operationId\n */\n operationIdFieldNames) {\n fieldName = Oas3Tools.storeSaneName(saneOperationId, operationId, data.saneMap);\n }\n if (fieldName in queryFields) {\n handleWarning({\n mitigationType: MitigationTypes.DUPLICATE_FIELD_NAME,\n message: `Multiple operations have the same name ` +\n `'${fieldName}'. GraphQL field names must be ` +\n `unique so only one can be added to the Query object. ` +\n `Operation '${operation.operationString}' will be ignored.`,\n data,\n log: translationLog,\n });\n }\n else {\n queryFields[fieldName] = field;\n }\n }\n }\n else {\n let saneFieldName;\n if (!singularNames) {\n /**\n * Use operationId to avoid problems differentiating operations with the\n * same path but differnet methods\n */\n saneFieldName = Oas3Tools.storeSaneName(saneOperationId, operationId, data.saneMap);\n }\n else {\n const fieldName = `${operation.method}${Oas3Tools.inferResourceNameFromPath(operation.path)}`;\n saneFieldName = Oas3Tools.storeSaneName(Oas3Tools.sanitize(fieldName, Oas3Tools.CaseStyle.camelCase), fieldName, data.saneMap);\n }\n if (operation.inViewer) {\n for (const securityRequirement of operation.securityRequirements) {\n if (typeof authMutationFields[securityRequirement] !== 'object') {\n authMutationFields[securityRequirement] = {};\n }\n if (saneFieldName in authMutationFields[securityRequirement]) {\n handleWarning({\n mitigationType: MitigationTypes.DUPLICATE_FIELD_NAME,\n message: `Multiple operations have the same name ` +\n `'${saneFieldName}' and security requirement ` +\n `'${securityRequirement}'. GraphQL field names must be ` +\n `unique so only one can be added to the authentication ` +\n `viewer. Operation '${operation.operationString}' will be ignored.`,\n data,\n log: translationLog,\n });\n }\n else {\n authMutationFields[securityRequirement][saneFieldName] = field;\n }\n }\n }\n else {\n if (saneFieldName in mutationFields) {\n handleWarning({\n mitigationType: MitigationTypes.DUPLICATE_FIELD_NAME,\n message: `Multiple operations have the same name ` +\n `'${saneFieldName}'. GraphQL field names must be ` +\n `unique so only one can be added to the Mutation object. ` +\n `Operation '${operation.operationString}' will be ignored.`,\n data,\n log: translationLog,\n });\n }\n else {\n mutationFields[saneFieldName] = field;\n }\n }\n }\n });\n // Add Subscription fields\n Object.entries(data.callbackOperations).forEach(([operationId, operation]) => {\n translationLog(`Process operation '${operationId}'...`);\n const field = getFieldForOperation(operation, options.baseUrl, data, requestOptions, connectOptions, includeHttpDetails, pubsub);\n const saneOperationId = Oas3Tools.sanitize(operationId, Oas3Tools.CaseStyle.camelCase);\n const saneFieldName = Oas3Tools.storeSaneName(saneOperationId, operationId, data.saneMap);\n if (operation.inViewer) {\n for (const securityRequirement of operation.securityRequirements) {\n if (typeof authSubscriptionFields[securityRequirement] !== 'object') {\n authSubscriptionFields[securityRequirement] = {};\n }\n if (saneFieldName in authSubscriptionFields[securityRequirement]) {\n handleWarning({\n mitigationType: MitigationTypes.DUPLICATE_FIELD_NAME,\n message: `Multiple operations have the same name ` +\n `'${saneFieldName}' and security requirement ` +\n `'${securityRequirement}'. GraphQL field names must be ` +\n `unique so only one can be added to the authentication ` +\n `viewer. Operation '${operation.operationString}' will be ignored.`,\n data,\n log: translationLog,\n });\n }\n else {\n authSubscriptionFields[securityRequirement][saneFieldName] = field;\n }\n }\n }\n else {\n if (saneFieldName in subscriptionFields) {\n handleWarning({\n mitigationType: MitigationTypes.DUPLICATE_FIELD_NAME,\n message: `Multiple operations have the same name ` +\n `'${saneFieldName}'. GraphQL field names must be ` +\n `unique so only one can be added to the Mutation object. ` +\n `Operation '${operation.operationString}' will be ignored.`,\n data,\n log: translationLog,\n });\n }\n else {\n subscriptionFields[saneFieldName] = field;\n }\n }\n });\n // Sorting fields\n queryFields = sortObject(queryFields);\n mutationFields = sortObject(mutationFields);\n subscriptionFields = sortObject(subscriptionFields);\n authQueryFields = sortObject(authQueryFields);\n Object.keys(authQueryFields).forEach(key => {\n authQueryFields[key] = sortObject(authQueryFields[key]);\n });\n authMutationFields = sortObject(authMutationFields);\n Object.keys(authMutationFields).forEach(key => {\n authMutationFields[key] = sortObject(authMutationFields[key]);\n });\n authSubscriptionFields = sortObject(authSubscriptionFields);\n Object.keys(authSubscriptionFields).forEach(key => {\n authSubscriptionFields[key] = sortObject(authSubscriptionFields[key]);\n });\n // Count created Query, Mutation, and Subscription fields\n options.report.numQueriesCreated =\n Object.keys(queryFields).length +\n Object.keys(authQueryFields).reduce((sum, key) => {\n return sum + Object.keys(authQueryFields[key]).length;\n }, 0);\n options.report.numMutationsCreated =\n Object.keys(mutationFields).length +\n Object.keys(authMutationFields).reduce((sum, key) => {\n return sum + Object.keys(authMutationFields[key]).length;\n }, 0);\n options.report.numSubscriptionsCreated =\n Object.keys(subscriptionFields).length +\n Object.keys(authSubscriptionFields).reduce((sum, key) => {\n return sum + Object.keys(authSubscriptionFields[key]).length;\n }, 0);\n /**\n * Organize authenticated Query, Mutation, and Subscriptions fields into\n * viewer objects.\n */\n if (Object.keys(authQueryFields).length > 0) {\n Object.assign(queryFields, createAndLoadViewer(authQueryFields, GraphQLOperationType.Query, data, includeHttpDetails));\n }\n if (Object.keys(authMutationFields).length > 0) {\n Object.assign(mutationFields, createAndLoadViewer(authMutationFields, GraphQLOperationType.Mutation, data, includeHttpDetails));\n }\n if (Object.keys(authSubscriptionFields).length > 0) {\n Object.assign(subscriptionFields, createAndLoadViewer(authSubscriptionFields, GraphQLOperationType.Subscription, data, includeHttpDetails));\n }\n // Build up the schema\n const schemaConfig = {\n query: Object.keys(queryFields).length > 0\n ? new GraphQLObjectType({\n name: 'Query',\n fields: queryFields,\n })\n : GraphQLTools.getEmptyObjectType('Query'),\n mutation: Object.keys(mutationFields).length > 0\n ? new GraphQLObjectType({\n name: 'Mutation',\n fields: mutationFields,\n })\n : null,\n subscription: Object.keys(subscriptionFields).length > 0\n ? new GraphQLObjectType({\n name: 'Subscription',\n fields: subscriptionFields,\n })\n : null,\n };\n /**\n * Fill in yet undefined object types to avoid GraphQLSchema from breaking.\n *\n * The reason: once creating the schema, the 'fields' thunks will resolve and\n * if a field references an undefined object type, GraphQL will throw.\n */\n Object.entries(data.operations).forEach(([, operation]) => {\n if (typeof operation.responseDefinition.graphQLType === 'undefined') {\n operation.responseDefinition.graphQLType = GraphQLTools.getEmptyObjectType(operation.responseDefinition.graphQLTypeName);\n }\n });\n const schema = new GraphQLSchema(schemaConfig);\n return { schema, report: options.report };\n}\n/**\n * Creates the field object for the given operation.\n */\nfunction getFieldForOperation(operation, baseUrl, data, requestOptions, connectOptions, includeHttpDetails, pubsub) {\n // Create GraphQL Type for response:\n const type = getGraphQLType({\n def: operation.responseDefinition,\n data,\n operation,\n includeHttpDetails,\n });\n const payloadSchemaName = operation.payloadDefinition ? operation.payloadDefinition.graphQLInputObjectTypeName : null;\n const args = getArgs({\n /**\n * Even though these arguments seems redundent because of the operation\n * argument, the function cannot be refactored because it is also used to\n * create arguments for links. The operation argument is really used to pass\n * data to other functions.\n */\n requestPayloadDef: operation.payloadDefinition,\n parameters: operation.parameters,\n operation,\n data,\n includeHttpDetails,\n });\n // Get resolver and subscribe function for Subscription fields\n if (operation.operationType === GraphQLOperationType.Subscription) {\n const responseSchemaName = operation.responseDefinition ? operation.responseDefinition.graphQLTypeName : null;\n const resolve = getPublishResolver({\n operation,\n responseName: responseSchemaName,\n data,\n });\n const subscribe = getSubscribe({\n operation,\n payloadName: payloadSchemaName,\n data,\n baseUrl,\n connectOptions,\n pubsub,\n });\n return {\n type,\n resolve,\n subscribe,\n args,\n description: operation.description,\n };\n // Get resolver for Query and Mutation fields\n }\n else {\n const resolve = data.options.resolverMiddleware(() => ({\n operation,\n payloadName: payloadSchemaName,\n data,\n baseUrl,\n requestOptions,\n }), getResolver);\n return {\n type,\n resolve,\n args,\n description: operation.description,\n };\n }\n}\n/**\n * Ensure that the customResolvers/customSubscriptionResolvers object is a\n * triply nested object using the name of the OAS, the path, and the method\n * as keys.\n */\nfunction checkCustomResolversStructure(customResolvers, data) {\n if (typeof customResolvers === 'object') {\n // Check that all OASs that are referenced in the customResolvers are provided\n Object.keys(customResolvers)\n .filter(title => {\n // If no OAS contains this title\n return !data.oass.some(oas => {\n var _a;\n return title === ((_a = oas.info) === null || _a === void 0 ? void 0 : _a.title);\n });\n })\n .forEach(title => {\n handleWarning({\n mitigationType: MitigationTypes.CUSTOM_RESOLVER_UNKNOWN_OAS,\n message: `Custom resolvers reference OAS '${title.toString()}' but no such ` + `OAS was provided`,\n data,\n log: translationLog,\n });\n });\n // TODO: Only run the following test on OASs that exist. See previous check.\n Object.keys(customResolvers).forEach(title => {\n // Get all operations from a particular OAS\n const operations = Object.values(data.operations).filter(operation => {\n var _a;\n return title === ((_a = operation.oas.info) === null || _a === void 0 ? void 0 : _a.title);\n });\n Object.keys(customResolvers[title]).forEach(path => {\n Object.keys(customResolvers[title][path]).forEach(method => {\n if (!operations.some(operation => {\n return path === operation.path && method === operation.method;\n })) {\n handleWarning({\n mitigationType: MitigationTypes.CUSTOM_RESOLVER_UNKNOWN_PATH_METHOD,\n message: `A custom resolver references an operation with ` +\n `path '${path.toString()}' and method '${method.toString()}' but no such operation ` +\n `exists in OAS '${title.toString()}'`,\n data,\n log: translationLog,\n });\n }\n });\n });\n });\n }\n}\n/**\n * Ensures that the options are valid\n */\nfunction preliminaryChecks(options, data) {\n // Check if OASs have unique titles\n const titles = data.oass.map(oas => {\n var _a;\n return (_a = oas.info) === null || _a === void 0 ? void 0 : _a.title;\n });\n // Find duplicates among titles\n new Set(titles.filter((title, index) => {\n return titles.indexOf(title) !== index;\n })).forEach(title => {\n handleWarning({\n mitigationType: MitigationTypes.MULTIPLE_OAS_SAME_TITLE,\n message: `Multiple OAS share the same title '${title}'`,\n data,\n log: translationLog,\n });\n });\n // Check customResolvers\n checkCustomResolversStructure(options.customResolvers, data);\n // Check customSubscriptionResolvers\n checkCustomResolversStructure(options.customSubscriptionResolvers, data);\n}\nexport { sanitize, CaseStyle } from './oas_3_tools';\nexport { GraphQLOperationType } from './types/graphql';\n//# sourceMappingURL=index.js.map","import { readFileOrUrlWithCache, parseInterpolationStrings, getInterpolatedHeadersFactory, getInterpolatedStringFactory, getHeadersObject, loadFromModuleExportExpression, } from '@graphql-mesh/utils';\nimport { createGraphQLSchema } from './openapi-to-graphql';\nimport { fetchache, Request } from 'fetchache';\nexport default class OpenAPIHandler {\n constructor({ config, cache, pubsub }) {\n this.config = config;\n this.cache = cache;\n this.pubsub = pubsub;\n }\n async getMeshSource() {\n var _a, _b, _c;\n const path = this.config.source;\n const spec = await readFileOrUrlWithCache(path, this.cache, {\n headers: this.config.schemaHeaders,\n fallbackFormat: this.config.sourceFormat,\n });\n let fetch;\n if (this.config.customFetch) {\n fetch = await loadFromModuleExportExpression(this.config.customFetch, 'default');\n }\n else {\n fetch = (...args) => fetchache(args[0] instanceof Request ? args[0] : new Request(...args), this.cache);\n }\n const baseUrlFactory = getInterpolatedStringFactory(this.config.baseUrl);\n const headersFactory = getInterpolatedHeadersFactory(this.config.operationHeaders);\n const queryStringFactoryMap = new Map();\n for (const queryName in this.config.qs || {}) {\n queryStringFactoryMap.set(queryName, getInterpolatedStringFactory(this.config.qs[queryName]));\n }\n const searchParamsFactory = (resolverData, searchParams) => {\n for (const queryName in this.config.qs || {}) {\n searchParams.set(queryName, queryStringFactoryMap.get(queryName)(resolverData));\n }\n return searchParams;\n };\n const { schema } = await createGraphQLSchema(spec, {\n fetch,\n baseUrl: this.config.baseUrl,\n operationIdFieldNames: true,\n fillEmptyResponses: true,\n includeHttpDetails: this.config.includeHttpDetails,\n addLimitArgument: this.config.addLimitArgument === undefined ? true : this.config.addLimitArgument,\n sendOAuthTokenInQuery: true,\n viewer: false,\n equivalentToMessages: true,\n pubsub: this.pubsub,\n resolverMiddleware: (getResolverParams, originalFactory) => (root, args, context, info) => {\n const resolverData = { root, args, context, info };\n const resolverParams = getResolverParams();\n resolverParams.requestOptions = {\n headers: getHeadersObject(headersFactory(resolverData)),\n };\n if (context === null || context === void 0 ? void 0 : context.baseUrl) {\n resolverParams.baseUrl = context.baseUrl;\n }\n if (!resolverParams.baseUrl && this.config.baseUrl) {\n resolverParams.baseUrl = baseUrlFactory(resolverData);\n }\n if (resolverParams.baseUrl) {\n const urlObj = new URL(resolverParams.baseUrl);\n searchParamsFactory(resolverData, urlObj.searchParams);\n }\n else {\n console.warn(`There is no 'baseUrl' defined for this OpenAPI definition. We recommend you to define one manually!`);\n }\n if (context === null || context === void 0 ? void 0 : context.fetch) {\n resolverParams.fetch = context.fetch;\n }\n if (context === null || context === void 0 ? void 0 : context.qs) {\n resolverParams.qs = context.qs;\n }\n return originalFactory(() => resolverParams)(root, args, context, info);\n },\n });\n const { args, contextVariables } = parseInterpolationStrings(Object.values(this.config.operationHeaders || {}));\n const rootFields = [\n ...Object.values(((_a = schema.getQueryType()) === null || _a === void 0 ? void 0 : _a.getFields()) || {}),\n ...Object.values(((_b = schema.getMutationType()) === null || _b === void 0 ? void 0 : _b.getFields()) || {}),\n ...Object.values(((_c = schema.getSubscriptionType()) === null || _c === void 0 ? void 0 : _c.getFields()) || {}),\n ];\n for (const rootField of rootFields) {\n for (const argName in args) {\n const argConfig = args[argName];\n rootField.args.push({\n name: argName,\n description: undefined,\n defaultValue: undefined,\n extensions: undefined,\n astNode: undefined,\n deprecationReason: undefined,\n ...argConfig,\n });\n }\n }\n contextVariables.push('fetch', 'baseUrl');\n return {\n schema,\n contextVariables,\n };\n }\n}\n//# sourceMappingURL=index.js.map"],"names":["debug","Swagger2OpenAPI.convertObj","jsonptr.JsonPointer","pluralize.singular","translationLog","httpLog","Oas3Tools.getBaseUrl","Oas3Tools.sanitize","Oas3Tools.CaseStyle","Oas3Tools.desanitizeObjectKeys","Oas3Tools.sanitizeObjectKeys","Oas3Tools.resolveRef","Oas3Tools.trim","Oas3Tools.getResponseObject","JSONPath.JSONPath","GraphQLError","Oas3Tools.generateOperationId","Oas3Tools.getRequestSchemaAndNames","Oas3Tools.getResponseSchemaAndNames","Oas3Tools.getLinks","Oas3Tools.getParameters","Oas3Tools.getSecurityRequirements","Oas3Tools.getServers","Oas3Tools.countOperations","Oas3Tools.countOperationsMutation","Oas3Tools.countOperationsQuery","Oas3Tools.countOperationsSubscription","Oas3Tools.isHttpMethod","Oas3Tools.formatOperationString","Oas3Tools.HTTP_METHODS","Oas3Tools.getSecuritySchemes","Oas3Tools.storeSaneName","Oas3Tools.capitalize","Oas3Tools.getSchemaTargetGraphQLType","GraphQLObjectType","GraphQLInputObjectType","GraphQLUnionType","GraphQLList","GraphQLEnumType","GraphQLID","GraphQLString","GraphQLInt","GraphQLBigInt","GraphQLFloat","GraphQLBoolean","GraphQLJSON","GraphQLNonNull","Oas3Tools.methodToHttpMethod","Oas3Tools.uncapitalize","Oas3Tools.getValidOAS3","Oas3Tools.inferResourceNameFromPath","GraphQLTools.getEmptyObjectType","GraphQLSchema","readFileOrUrlWithCache","loadFromModuleExportExpression","fetchache","Request","getInterpolatedStringFactory","getInterpolatedHeadersFactory","getHeadersObject","parseInterpolationStrings"],"mappings":"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"}
\No newline at end of file