'use strict'

const loader = require('./lib/loader')
const dumper = require('./lib/dumper')

function renamed (from, to) {
  return function () {
    throw new Error('Function yaml.' + from + ' is removed in js-yaml 4. ' +
      'Use yaml.' + to + ' instead, which is now safe by default.')
  }
}

module.exports.Type = require('./lib/type')
module.exports.Schema = require('./lib/schema')
module.exports.FAILSAFE_SCHEMA = require('./lib/schema/failsafe')
module.exports.JSON_SCHEMA = require('./lib/schema/json')
module.exports.CORE_SCHEMA = require('./lib/schema/core')
module.exports.DEFAULT_SCHEMA = require('./lib/schema/default')
module.exports.load = loader.load
module.exports.loadAll = loader.loadAll
module.exports.dump = dumper.dump
module.exports.YAMLException = require('./lib/exception')

// Re-export all types in case user wants to create custom schema
module.exports.types = {
  binary: require('./lib/type/binary'),
  float: require('./lib/type/float'),
  map: require('./lib/type/map'),
  null: require('./lib/type/null'),
  pairs: require('./lib/type/pairs'),
  set: require('./lib/type/set'),
  timestamp: require('./lib/type/timestamp'),
  bool: require('./lib/type/bool'),
  int: require('./lib/type/int'),
  merge: require('./lib/type/merge'),
  omap: require('./lib/type/omap'),
  seq: require('./lib/type/seq'),
  str: require('./lib/type/str')
}

// Removed functions from JS-YAML 3.0.x
module.exports.safeLoad = renamed('safeLoad', 'load')
module.exports.safeLoadAll = renamed('safeLoadAll', 'loadAll')
module.exports.safeDump = renamed('safeDump', 'dump')
