{"version":3,"sources":["jsdelivr-header.js","/npm/gulp-protractor-qa@0.2.0/index.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACNA,IAAI,KAAO,QAAQ,QACf,MAAQ,QAAQ,aAChB,QAAU,QAAQ,WAClB,MAAQ,QAAQ,SAChB,aAAe,QAAQ,UACvB,EAAI,QAAQ,cAGZ,iBAAmB,QAAQ,4BAC3B,cAAgB,QAAQ,wBACxB,gBAAkB,QAAQ,2BAC1B,cAAgB,QAAQ,wBACxB,iBAAmB,QAAQ,4BAG3B,YAAc,qBAIlB,SAAS,mBACR,KAAK,UAAY,GACjB,KAAK,UAAY,GACjB,KAAK,UAAY,GACjB,KAAK,eAAiB,EACtB,KAAK,YAAc,CACpB,CA0BA,SAAS,YACR,IAAI,EAAO,KAEX,MAAM,UAAU,CACf,SAAS,GACR,iBAAiB,KAAK,EAAK,QAAQ,QAAS,EAC7C,EACA,SAAS,EAAM,GACd,EAAK,UAAY,EACjB,iBAAiB,KAAK,EAAK,QAAQ,QAAS,EAC7C,EACA,SAAS,EAAM,GACd,EAAK,UAAY,EACjB,EAAS,KAAM,UAChB,IACE,SAAS,EAAK,GAChB,qBAAqB,KAAK,EAC3B,GACD,CAKA,SAAS,uBACR,IAAI,EAAO,KAEX,KAAK,UAAY,GAEjB,KAAK,UAAU,SAAQ,SAAS,GAC/B,EAAK,UAAY,EAAK,UAAU,OAAO,cAAc,KAAK,GAC3D,IAEA,yBAAyB,KAAK,KAC/B,CAEA,SAAS,2BACR,IAAI,EAAO,KAGX,KAAK,UAAU,SAAQ,SAAS,GAC/B,EAAK,MAAQ,CACd,IAGA,KAAK,UAAU,SAAQ,SAAS,GAC/B,gBAAgB,EAAK,UAAW,EAAK,QACtC,IAEA,aAAa,KAAK,KACnB,CAEA,SAAS,eACR,IAAI,EAAgB,EAAE,OAAO,KAAK,WAAW,SAAS,GACrD,OAAS,EAAK,QAAU,EAAK,QAC9B,IAEA,cAAc,gBAAgB,GAG1B,KAAK,cACR,qBAAqB,KAAK,MAC1B,KAAK,YAAc,GAGf,KAAK,QAAQ,SAAY,KAAK,gBAClC,mBAAmB,KAAK,KAE1B,CAEA,SAAS,qBACR,KAAK,eAAiB,EAGtB,iBAAiB,KAAK,MAGtB,KAAK,GAAG,SAAU,aAAa,KAAK,MACrC,CAEA,SAAS,aAAa,GACC,SAAlB,EAAK,UACR,gBAAgB,KAAK,KAAM,GAG5B,yBAAyB,KAAK,KAC/B,CAEA,SAAS,gBAAgB,GACxB,IAII,EAJA,EAAW,EAAE,OAAO,KAAK,WAAW,SAAS,GAChD,QAAS,EAAS,OAAS,EAAK,KACjC,IACI,EAAkB,KAAK,UAAU,EAAK,OAGtC,IACH,EAAe,cAAc,KAAK,GAClC,KAAK,UAAY,EAAS,OAAO,GAEnC,CAEA,SAAS,uBACR,IAAI,EAAQ,KAAK,UAAU,OAEvB,EAAW,EAAE,OAAO,KAAK,WAAW,SAAS,GAChD,OAAQ,EAAS,QAClB,IAGA,cAAc,gBAAgB,EAAS,OAAQ,EAChD,CApIA,KAAK,SAAS,iBAAkB,cAQhC,iBAAiB,UAAU,KAAO,SAAS,GAG1C,GAFA,KAAK,QAAU,GAAW,CAAC,GAEtB,KAAK,QAAQ,QACjB,MAAM,IAAI,MAAM,YAAY,YAAa,sBAE1C,IAAK,KAAK,QAAQ,QACjB,MAAM,IAAI,MAAM,YAAY,YAAa,uBAG1C,UAAU,KAAK,KAChB,EAoHA,OAAO,QAAU,IAAI","file":"/npm/gulp-protractor-qa@0.2.0/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/gulp-protractor-qa@0.2.0/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","var util = require('util');\nvar gutil = require('gulp-util');\nvar cheerio = require('cheerio');\nvar async = require('async');\nvar EventEmitter = require('events');\nvar _ = require('underscore');\n\n// `GulpProtractorQA` sub-modules dependecies\nvar storeFileContent = require('./lib/store-file-content');\nvar findSelectors = require('./lib/find-selectors');\nvar findViewMatches = require('./lib/find-view-matches');\nvar consoleOutput = require('./lib/console-output');\nvar watchFilesChange = require('./lib/watch-files-change');\n\n// Constant\nvar PLUGIN_NAME = 'gulp-protractor-qa';\n\n// Define `GulpProtractorQA` class.\n// @class\nfunction GulpProtractorQA() {\n\tthis.testFiles = [];\n\tthis.viewFiles = [];\n\tthis.selectors = [];\n\tthis.watchIsRunning = 0;\n\tthis.isFirstLoad = 1;\n}\n\n// Inherit EventEmitter.\nutil.inherits(GulpProtractorQA, EventEmitter);\n\n// Init application.\n//\n// @param {Object} options\n// @param {string} options.testSrc - Glob pattern string point to test files\n// @param {string} options.viewSrc - Glob pattern string point to view files\n// @param {boolean} options.runOnce - Flag to decide whether it should watch files changes or not\nGulpProtractorQA.prototype.init = function(options) {\n\tthis.options = options || {};\n\n\tif (!this.options.testSrc) {\n\t\tthrow new gutil.PluginError(PLUGIN_NAME, '`testSrc` required');\n\t}\n\tif (!this.options.viewSrc) {\n\t\tthrow new gutil.PluginError(PLUGIN_NAME, '`viewSrc` required!');\n\t}\n\n\treadFiles.call(this);\n}\n\n\n// Read `testSrc` and `viewSrc` files content.\nfunction readFiles() {\n\tvar self = this;\n\n\tasync.waterfall([\n\t\tfunction(callback) {\n\t\t\tstoreFileContent.init(self.options.testSrc, callback);\n\t\t},\n\t\tfunction(data, callback) {\n\t\t\tself.testFiles = data;\n\t\t\tstoreFileContent.init(self.options.viewSrc, callback);\n\t\t},\n\t\tfunction(data, callback) {\n\t\t\tself.viewFiles = data;\n\t\t\tcallback(null, 'success');\n\t\t}\n\t], function(err, data) {\n\t\tfindElementSelectors.call(self);\n\t});\n}\n\n\n// Loop through test files and find protractor\n// selectors (e.g.: by.css('[href=\"/\"]')).\nfunction findElementSelectors() {\n\tvar self = this;\n\t// reset selectors\n\tthis.selectors = [];\n\n\tthis.testFiles.forEach(function(item) {\n\t\tself.selectors = self.selectors.concat(findSelectors.init(item));\n\t});\n\n\tcheckSelectorViewMatches.call(this);\n}\n\nfunction checkSelectorViewMatches() {\n\tvar self = this;\n\n\t// Set all selectors to not found\n\tthis.selectors.forEach(function(item) {\n\t\titem.found = 0;\n\t});\n\n\t// Check if selectors are findable\n\tthis.viewFiles.forEach(function(item) {\n\t\tfindViewMatches(self.selectors, item.content);\n\t});\n\n\toutputResult.call(this);\n}\n\nfunction outputResult() {\n\tvar notFoundItems = _.filter(this.selectors, function(item) {\n\t\treturn (!item.found && !item.disabled);\n\t});\n\n\tconsoleOutput.printFoundItems(notFoundItems);\n\n\t// On first run warn watched selectors.\n\tif (this.isFirstLoad) {\n\t\twarnWatchedSelectors.call(this);\n\t\tthis.isFirstLoad = 0;\n\t}\n\n\tif (!this.options.runOnce && !this.watchIsRunning) {\n\t\tstartWatchingFiles.call(this);\n\t}\n}\n\nfunction startWatchingFiles() {\n\tthis.watchIsRunning = 1;\n\n\t// Init gaze.\n\twatchFilesChange.call(this);\n\n\t// Listen to change event\n\tthis.on('change', onFileChange.bind(this));\n}\n\nfunction onFileChange(data) {\n\tif (data.fileType === 'test') {\n\t\tupdateSelectors.call(this, data);\n\t}\n\n\tcheckSelectorViewMatches.call(this);\n}\n\nfunction updateSelectors(data) {\n\tvar filtered = _.filter(this.selectors, function(selector) {\n\t\treturn !(selector.path === data.path);\n\t});\n\tvar updatedTestFile = this.testFiles[data.index];\n\tvar newSelectors;\n\n\tif (updatedTestFile) {\n\t\tnewSelectors = findSelectors.init(updatedTestFile);\n\t\tthis.selectors = filtered.concat(newSelectors);\n\t}\n}\n\nfunction warnWatchedSelectors() {\n\tvar total = this.selectors.length;\n\n\tvar filtered = _.filter(this.selectors, function(selector) {\n\t\treturn !selector.disabled;\n\t});\n\n\t// Output `X` out `total` are being watched.\n\tconsoleOutput.watchedLocators(filtered.length, total);\n}\n\n// Exporting the plugin main function\nmodule.exports = new GulpProtractorQA();"]}