HEX
Server: Microsoft-IIS/8.5
System: Windows NT YDAWBH120 6.3 build 9600 (Windows Server 2012 R2 Standard Edition) AMD64
User: tentjecom_web (0)
PHP: 7.4.14
Disabled: NONE
Upload Files
File: D:/HostingSpaces/SBogers10/shop.komma.nl/node_modules/apollo-upload-client/lib/index.js
'use strict'

var _interopRequireDefault = require('@babel/runtime/helpers/interopRequireDefault')

var _extends2 = _interopRequireDefault(
  require('@babel/runtime/helpers/extends')
)

var _require = require('apollo-link'),
  ApolloLink = _require.ApolloLink,
  Observable = _require.Observable

var _require2 = require('apollo-link-http-common'),
  selectURI = _require2.selectURI,
  selectHttpOptionsAndBody = _require2.selectHttpOptionsAndBody,
  fallbackHttpConfig = _require2.fallbackHttpConfig,
  serializeFetchParameter = _require2.serializeFetchParameter,
  createSignalIfSupported = _require2.createSignalIfSupported,
  parseAndCheckHttpResponse = _require2.parseAndCheckHttpResponse

var _require3 = require('extract-files'),
  extractFiles = _require3.extractFiles,
  ReactNativeFile = _require3.ReactNativeFile

exports.ReactNativeFile = ReactNativeFile

exports.createUploadLink = function(_temp) {
  var _ref = _temp === void 0 ? {} : _temp,
    _ref$uri = _ref.uri,
    fetchUri = _ref$uri === void 0 ? '/graphql' : _ref$uri,
    _ref$fetch = _ref.fetch,
    linkFetch = _ref$fetch === void 0 ? fetch : _ref$fetch,
    fetchOptions = _ref.fetchOptions,
    credentials = _ref.credentials,
    headers = _ref.headers,
    includeExtensions = _ref.includeExtensions

  var linkConfig = {
    http: {
      includeExtensions: includeExtensions
    },
    options: fetchOptions,
    credentials: credentials,
    headers: headers
  }
  return new ApolloLink(function(operation) {
    var uri = selectURI(operation, fetchUri)
    var context = operation.getContext()
    var _context$clientAwaren = context.clientAwareness
    _context$clientAwaren =
      _context$clientAwaren === void 0 ? {} : _context$clientAwaren
    var name = _context$clientAwaren.name,
      version = _context$clientAwaren.version,
      headers = context.headers
    var contextConfig = {
      http: context.http,
      options: context.fetchOptions,
      credentials: context.credentials,
      headers: (0, _extends2.default)(
        {},
        name && {
          'apollographql-client-name': name
        },
        {},
        version && {
          'apollographql-client-version': version
        },
        {},
        headers
      )
    }

    var _selectHttpOptionsAnd = selectHttpOptionsAndBody(
        operation,
        fallbackHttpConfig,
        linkConfig,
        contextConfig
      ),
      options = _selectHttpOptionsAnd.options,
      body = _selectHttpOptionsAnd.body

    var _extractFiles = extractFiles(body),
      clone = _extractFiles.clone,
      files = _extractFiles.files

    var payload = serializeFetchParameter(clone, 'Payload')

    if (files.size) {
      delete options.headers['content-type']
      var form = new FormData()
      form.append('operations', payload)
      var map = {}
      var i = 0
      files.forEach(function(paths) {
        map[++i] = paths
      })
      form.append('map', JSON.stringify(map))
      i = 0
      files.forEach(function(paths, file) {
        form.append(++i, file, file.name)
      })
      options.body = form
    } else options.body = payload

    return new Observable(function(observer) {
      var _createSignalIfSuppor = createSignalIfSupported(),
        controller = _createSignalIfSuppor.controller,
        signal = _createSignalIfSuppor.signal

      if (controller) options.signal = signal
      linkFetch(uri, options)
        .then(function(response) {
          operation.setContext({
            response: response
          })
          return response
        })
        .then(parseAndCheckHttpResponse(operation))
        .then(function(result) {
          observer.next(result)
          observer.complete()
        })
        .catch(function(error) {
          if (error.name === 'AbortError') return
          if (error.result && error.result.errors && error.result.data)
            observer.next(error.result)
          observer.error(error)
        })
      return function() {
        if (controller) controller.abort()
      }
    })
  })
}