{"version":3,"sources":["jsdelivr-header.js","/npm/waterline-adapter-tests@1.0.1/lib/index.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACFA,IAAI,KAAO,QAAQ,QACf,GAAK,QAAQ,MACb,EAAI,QAAQ,mBACZ,MAAQ,QAAQ,SAChB,MAAQ,QAAQ,WASpB,OAAO,QAAU,SAAS,EAAS,GACjC,IAAK,EAAQ,QACX,MAAM,IAAI,MAAM,0BAGlB,IAAK,EAAQ,WACX,MAAM,IAAI,MAAM,8CAGlB,IAAK,EAAE,QAAQ,EAAQ,YACrB,MAAM,IAAI,MAAM,8CAGlB,IAAI,EAAU,EAAQ,QAClB,EAAS,EAAQ,QAAU,CAAC,EAC5B,EAAa,EAAQ,WACrB,EAAW,EAAQ,UAAY,GAGnC,EAAW,EAAE,QAAQ,EAAU,eAAgB,iBAI/C,IAKI,EALA,EAAoB,EAAE,QAAQ,EAAU,gBACxC,EAAoB,IACtB,EAAoB,EAAE,QAAQ,EAAU,kBAIvC,GAAqB,IACtB,EAAS,OAAO,EAAmB,GACnC,GAAuB,GAIzB,OAAO,YAAc,CACnB,KAAQ,GAGV,OAAO,YAAY,KAAK,QAAU,WAGlC,OAAO,QAAU,EAGjB,IAAI,EAAS,OAAS,CAAC,MAAM,KAAK,KAAO,KAErC,EAAQ,GAEZ,EAAE,KAAK,GAAY,SAAS,GAC1B,IAAI,EAAgB,KAAK,QAAQ,UAAU,iBAAmB,GAC9D,EAAQ,EAAM,OAAO,MAAM,WAAW,EAAe,GAAQ,GAC/D,IAEA,EAAE,KAAK,GAAU,SAAS,GACxB,IAAI,EAAQ,EAAQ,MAAM,KAC1B,GAAI,EAAM,OAAS,EACjB,MAAM,IAAI,MAAM,yEAA2E,GAG7F,IAAI,EAAc,KAAK,QAAQ,UAAU,eAAiB,EAAM,GAAK,SACjE,GAAG,WAAW,KAChB,EAAQ,EAAM,OAAO,MAAM,WAAW,EAAa,GAAQ,IAEvC,GAAhB,EAAM,SACR,EAAc,KAAK,QAAQ,UAAU,eAAiB,EAAM,GAAK,IAAM,EAAM,IAC7E,EAAQ,EAAM,OAAO,MAAM,WAAW,EAAa,GAAQ,KAGjE,IAGA,EAAQ,EAAE,OAAO,GAGjB,IAAI,EAAe,EAAQ,OAAS,CAAC,EACjC,EAAO,IAAI,MAAM,EAAE,MAAM,CAC3B,QAAS,KACR,IAEC,EAAQ,uBACV,EAAE,KAAK,EAAQ,uBAAuB,SAAS,EAAK,GAClD,EAAK,GAAQ,EACf,IAIF,OAAO,aAAe,CAAC,EACvB,OAAO,SAAW,CAAC,EACnB,OAAO,UAAY,CAAC,EACpB,OAAO,WAAa,CAAC,EACrB,OAAO,IAAM,CAAC,EACd,OAAO,gBAAkB,EAGzB,EAAK,QAAQ,CAAC,QAAS,YAAa,aAAc,SAAU,UAAW,IAAK,kBAC5E,EAAK,MAAQ,EAEb,IAAI,EAAO,SAAS,EAAK,EAAa,GACpC,GAAI,EAAE,WAAW,GACf,OAAO,EAAG,GAEP,GAAI,GAAO,EAAa,CAC3B,IAAI,EAAW,MAAM,GAAO,EAAI,EAChC,QAAQ,KAAK,EACf,MACE,QAAQ,KAAK,EAEjB,EAEA,QAAQ,KAAK,gBACA,EAAK,KAAI,SAAS,GAG7B,GAFA,QAAQ,QAAQ,gBAEZ,EAAsB,CACxB,IAAI,EAAqB,QAAQ,8CACjC,EAAmB,eAAe,EAAK,OACvC,EAAmB,GAAS,SAAS,GACnC,EAAK,GAAO,EAAiB,EAAQ,YAAa,EACpD,GACF,MACE,EAAK,EAAK,EAAQ,YAAa,EAEnC,IAEO,GAAG,QAAQ,SAAU,GAC1B,QAAQ,MAAM,EAAE,IAClB,GACF","file":"/npm/waterline-adapter-tests@1.0.1/lib/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.37.0.\n * Original file: /npm/waterline-adapter-tests@1.0.1/lib/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","/**\n * Dependencies\n */\n\nvar path = require('path');\nvar fs = require('fs');\nvar _ = require('@sailshq/lodash');\nvar mocha = require('mocha');\nvar utils = require('./utils');\n\n/**\n * Test Runner\n *\n * @param {Object} options\n * @api public\n */\n\nmodule.exports = function(options, cb) {\n  if (!options.adapter) {\n    throw new Error('Must supply an adapter');\n  }\n\n  if (!options.interfaces) {\n    throw new Error('Must supply a list of supported interfaces');\n  }\n\n  if (!_.isArray(options.interfaces)) {\n    throw new Error('Must supply a list of supported interfaces');\n  }\n\n  var adapter = options.adapter;\n  var config = options.config || {};\n  var interfaces = options.interfaces;\n  var features = options.features || [];\n\n  // Turn off cross-adapter tests for now.\n  features = _.without(features, 'crossAdapter', 'cross-adapter');\n  \n  // cross-adapter is a special case since it requires a clean test cache for\n  // running existing associations tests\n  var crossAdapterIndex = _.indexOf(features, 'crossAdapter');\n  if (crossAdapterIndex < 0) {\n    crossAdapterIndex = _.indexOf(features, 'cross-adapter');\n  }\n\n  var runCrossAdapterTests;\n  if(crossAdapterIndex >= 0){\n    features.splice(crossAdapterIndex, 1);\n    runCrossAdapterTests = true;\n  }\n  \n  // Attach config to adapter\n  global.Connections = {\n    'test': config\n  };\n\n  global.Connections.test.adapter = 'wl_tests';\n\n  // Globalize Adapter\n  global.Adapter = adapter;\n\n  // Build an array of files to test\n  var filter = '\\\\.(' + ['js'].join('|') + ')$';\n\n  var files = [];\n\n  _.each(interfaces, function(interface) {\n    var interfacePath = path.resolve(__dirname,'../interfaces/' + interface);\n    files = files.concat(utils.fileLookup(interfacePath, filter, true));\n  });\n\n  _.each(features, function(feature) {\n    var parts = feature.split('.');\n    if (parts.length > 2) {\n      throw new Error(\"Only one level of sub-features is supported, please use only one '.': \" + feature);\n    }\n\n    var featurePath = path.resolve(__dirname,'../features/' + parts[0] + '/core');\n    if (fs.existsSync(featurePath)) {\n      files = files.concat(utils.fileLookup(featurePath, filter, true));\n\n      if (parts.length == 2) {\n        featurePath = path.resolve(__dirname,'../features/' + parts[0] + '/' + parts[1]);\n        files = files.concat(utils.fileLookup(featurePath, filter, true));\n      }      \n    }\n  });\n\n  // There might be duplicate files if multiple sub-features of a single feature is being tested.\n  files = _.unique(files);\n\n  // Build a Mocha Runner\n  var mochaOptions = options.mocha || {};\n  var test = new mocha(_.merge({\n    timeout: 6000\n  }, mochaOptions));\n  \n  if (options.mochaChainableMethods){\n    _.each(options.mochaChainableMethods, function(arg, method){\n      test[method](arg);\n    });\n  }\n\n  // Set Global Placeholders for Ontologies\n  global.Associations = {};\n  global.Semantic = {};\n  global.Queryable = {};\n  global.Migratable = {};\n  global.Sql = {};\n  global.adapterFeatures = features;\n\n  // Allow Adapter to be a global without warning about a leak\n  test.globals([Adapter, Connections, Associations, Semantic, Queryable, Sql, adapterFeatures]);\n  test.files = files;\n  \n  var exit = function(err, failOnError, cb){\n    if (_.isFunction(cb)) {\n      return cb(err);\n    }\n    else if (err && failOnError) {\n      var exitCode = isNaN(err) ? 1 : err;\n      process.exit(exitCode);\n    } else {\n      process.exit(0);\n    }\n  };\n\n  console.time('time elapsed');\n  var runner = test.run(function(err) {\n    console.timeEnd('time elapsed');\n    \n    if (runCrossAdapterTests) {\n      var crossAdapterRunner = require('../features/crossAdapter/core/crossAdapter');\n      crossAdapterRunner.cleanTestCache(test.files);\n      crossAdapterRunner(options, function(crossAdapterErr){\n        exit(err || crossAdapterErr, options.failOnError, cb);\n      });\n    } else {\n      exit(err, options.failOnError, cb);\n    }\n  });\n\n  runner.on('fail', function (e) {\n    console.error(e.err);\n  });\n};\n"]}