done purchases remove, ocr scan, read image
This commit is contained in:
		
							
								
								
									
										53
									
								
								express-server/node_modules/append-field/lib/parse-path.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										53
									
								
								express-server/node_modules/append-field/lib/parse-path.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,53 @@
 | 
			
		||||
var reFirstKey = /^[^\[]*/
 | 
			
		||||
var reDigitPath = /^\[(\d+)\]/
 | 
			
		||||
var reNormalPath = /^\[([^\]]+)\]/
 | 
			
		||||
 | 
			
		||||
function parsePath (key) {
 | 
			
		||||
  function failure () {
 | 
			
		||||
    return [{ type: 'object', key: key, last: true }]
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  var firstKey = reFirstKey.exec(key)[0]
 | 
			
		||||
  if (!firstKey) return failure()
 | 
			
		||||
 | 
			
		||||
  var len = key.length
 | 
			
		||||
  var pos = firstKey.length
 | 
			
		||||
  var tail = { type: 'object', key: firstKey }
 | 
			
		||||
  var steps = [tail]
 | 
			
		||||
 | 
			
		||||
  while (pos < len) {
 | 
			
		||||
    var m
 | 
			
		||||
 | 
			
		||||
    if (key[pos] === '[' && key[pos + 1] === ']') {
 | 
			
		||||
      pos += 2
 | 
			
		||||
      tail.append = true
 | 
			
		||||
      if (pos !== len) return failure()
 | 
			
		||||
      continue
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    m = reDigitPath.exec(key.substring(pos))
 | 
			
		||||
    if (m !== null) {
 | 
			
		||||
      pos += m[0].length
 | 
			
		||||
      tail.nextType = 'array'
 | 
			
		||||
      tail = { type: 'array', key: parseInt(m[1], 10) }
 | 
			
		||||
      steps.push(tail)
 | 
			
		||||
      continue
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    m = reNormalPath.exec(key.substring(pos))
 | 
			
		||||
    if (m !== null) {
 | 
			
		||||
      pos += m[0].length
 | 
			
		||||
      tail.nextType = 'object'
 | 
			
		||||
      tail = { type: 'object', key: m[1] }
 | 
			
		||||
      steps.push(tail)
 | 
			
		||||
      continue
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return failure()
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  tail.last = true
 | 
			
		||||
  return steps
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
module.exports = parsePath
 | 
			
		||||
							
								
								
									
										64
									
								
								express-server/node_modules/append-field/lib/set-value.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										64
									
								
								express-server/node_modules/append-field/lib/set-value.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,64 @@
 | 
			
		||||
function valueType (value) {
 | 
			
		||||
  if (value === undefined) return 'undefined'
 | 
			
		||||
  if (Array.isArray(value)) return 'array'
 | 
			
		||||
  if (typeof value === 'object') return 'object'
 | 
			
		||||
  return 'scalar'
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function setLastValue (context, step, currentValue, entryValue) {
 | 
			
		||||
  switch (valueType(currentValue)) {
 | 
			
		||||
    case 'undefined':
 | 
			
		||||
      if (step.append) {
 | 
			
		||||
        context[step.key] = [entryValue]
 | 
			
		||||
      } else {
 | 
			
		||||
        context[step.key] = entryValue
 | 
			
		||||
      }
 | 
			
		||||
      break
 | 
			
		||||
    case 'array':
 | 
			
		||||
      context[step.key].push(entryValue)
 | 
			
		||||
      break
 | 
			
		||||
    case 'object':
 | 
			
		||||
      return setLastValue(currentValue, { type: 'object', key: '', last: true }, currentValue[''], entryValue)
 | 
			
		||||
    case 'scalar':
 | 
			
		||||
      context[step.key] = [context[step.key], entryValue]
 | 
			
		||||
      break
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  return context
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function setValue (context, step, currentValue, entryValue) {
 | 
			
		||||
  if (step.last) return setLastValue(context, step, currentValue, entryValue)
 | 
			
		||||
 | 
			
		||||
  var obj
 | 
			
		||||
  switch (valueType(currentValue)) {
 | 
			
		||||
    case 'undefined':
 | 
			
		||||
      if (step.nextType === 'array') {
 | 
			
		||||
        context[step.key] = []
 | 
			
		||||
      } else {
 | 
			
		||||
        context[step.key] = Object.create(null)
 | 
			
		||||
      }
 | 
			
		||||
      return context[step.key]
 | 
			
		||||
    case 'object':
 | 
			
		||||
      return context[step.key]
 | 
			
		||||
    case 'array':
 | 
			
		||||
      if (step.nextType === 'array') {
 | 
			
		||||
        return currentValue
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      obj = Object.create(null)
 | 
			
		||||
      context[step.key] = obj
 | 
			
		||||
      currentValue.forEach(function (item, i) {
 | 
			
		||||
        if (item !== undefined) obj['' + i] = item
 | 
			
		||||
      })
 | 
			
		||||
 | 
			
		||||
      return obj
 | 
			
		||||
    case 'scalar':
 | 
			
		||||
      obj = Object.create(null)
 | 
			
		||||
      obj[''] = currentValue
 | 
			
		||||
      context[step.key] = obj
 | 
			
		||||
      return obj
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
module.exports = setValue
 | 
			
		||||
		Reference in New Issue
	
	Block a user