Best JavaScript code snippet using playwright-internal
async-iteration-yield-star.js
Source:async-iteration-yield-star.js  
1var assert = function (result, expected, message = "") {2  if (result !== expected) {3    throw new Error('Error in assert. Expected "' + expected + '" but was "' + result + '":' + message );4  }5};6const Logger = function () {7    var log = [];8    this.logEvent = (type, value, done) => {9        log.push({ type, value, done});10    };11    this.logFulfilledEvent = (value, done) => {12        this.logEvent('fulfilled', value, done);13    };14    this.logRejectEvent = error => {15        this.logEvent('reject', error.toString(), true);16    };17    this.logCatchEvent = value => {18        this.logEvent('catch', value, true);19    };20    this.logCustomEvent = event => {21        this.logEvent('custom', event, false);22    };23    this.getLogger = () => log;24    this.clear = () => {25        log = [];26    }27};28const fulfillSpy = logger => result => logger.logFulfilledEvent(result.value, result.done);29const rejectSpy = logger => error => logger.logRejectEvent(error);30const catchSpy = logger => error => logger.logCatchEvent(error);31const customSpy = logger => event => logger.logCustomEvent(event);32const assertLogger = function (loggerObject) {33    const logger = loggerObject.getLogger();34    var _assertLogger = function () {35        let index = 0;36        const isNotOutOfLength = () => {37            assert(index < logger.length, true, `Index is greater then log length`);   38        }39        this.fullfilled = function (expectedValue, message = 'on fulfill') {40            isNotOutOfLength();41            const msg = `step: ${index} - ${message}`;42            let step = logger[index];43            assert(step.type, 'fulfilled', msg);44            assert(step.value, expectedValue, msg);45            assert(step.done, false, msg);46            index++;47            return this;48        };49        this.fullfilledDone = function (expectedValue, message = 'on fulfill with done true') {50            isNotOutOfLength();51            const msg = `step: ${index} - ${message}`;52            let step = logger[index];53            assert(step.type, 'fulfilled', msg);54            assert(step.value, expectedValue, msg);55            assert(step.done, true, msg);56            index++;57            return this;58        };59        this.rejected = function (error, message = 'on reject') {60            isNotOutOfLength();61            const msg = `step: ${index} - ${message}`;62            let step = logger[index];63            assert(step.type, 'reject', msg);64            assert(step.value, error.toString(), msg);65            assert(step.done, true, msg);66            index++;67            return this;68        };69        this.catched = function (expectedError, message = 'on catch') {70            isNotOutOfLength();71            const msg = `step: ${index} - ${message}`;72            let step = logger[index];73            assert(step.type, 'catch', msg);74            assert(step.value, expectedError, msg);75            assert(step.done, true, msg);76            index++;77            return this;78        };79        this.custom = function (expectedValue, message = 'on custom event') {80            const msg = `step: ${index} - ${message}`;81            let step = logger[index];82            assert(step.type, 'custom', msg);83            assert(step.value, expectedValue, msg);84            assert(step.done, false, msg);85            index++;86            return this;87        };88        this.isFinal = function (message = '') {89            assert(index, logger.length, `expected final step: ${message}`);90        }; 91    }; 92    93    return new _assertLogger();94};95const getPromise = promiseHolder => {96    return new Promise((resolve, reject) => {97        promiseHolder.resolve = resolve;98        promiseHolder.reject = reject;99    });100};101var logger = new Logger();102const someValue = 'some-value';103const errorMessage = 'error-message';104async function * foo(value) {105  let re = yield '1:' + value;106  re = yield '2:' + re;107  re = yield '3:' + re;108  return 'end foo:' + re;109}110async function * boo(value) {111  let reply = yield '0:' + value;112  reply = yield* foo(reply);113  yield '4:' + reply;114}115var b = boo('init');116b.next('0').then(fulfillSpy(logger));117b.next('1').then(fulfillSpy(logger));118b.next('2').then(fulfillSpy(logger));119b.next('3').then(fulfillSpy(logger));120b.next('4').then(fulfillSpy(logger));121b.next('5').then(fulfillSpy(logger));122drainMicrotasks();123assertLogger(logger)124    .fullfilled('0:init')125    .fullfilled('1:1')126    .fullfilled('2:2')127    .fullfilled('3:3')128    .fullfilled('4:end foo:4')129    .fullfilledDone(undefined)130    .isFinal();131logger.clear();132var b2 = boo(':value');133b2.next(':0').then(fulfillSpy(logger));134b2.next(':1').then(fulfillSpy(logger), rejectSpy(logger));135b2.return(someValue).then(fulfillSpy(logger), rejectSpy(logger));136b2.next(':2').then(fulfillSpy(logger));137b2.next(':3').then(fulfillSpy(logger));138b2.next(':4').then(fulfillSpy(logger));139drainMicrotasks();140assertLogger(logger)141    .fullfilled('0::value')142    .fullfilled('1::1')143    .fullfilledDone(someValue)144    .fullfilledDone(undefined)145    .fullfilledDone(undefined)146    .fullfilledDone(undefined)147    .isFinal();148logger.clear();149var b2 = boo('#value');150b2.next('#0').then(fulfillSpy(logger), rejectSpy(logger));151b2.next('#1').then(fulfillSpy(logger), rejectSpy(logger));152b2.next('#2').then(fulfillSpy(logger), rejectSpy(logger));153b2.throw(new Error(errorMessage)).then(fulfillSpy(logger), rejectSpy(logger));154b2.next('#3').then(fulfillSpy(logger), rejectSpy(logger));155b2.next('#4').then(fulfillSpy(logger), rejectSpy(logger));156drainMicrotasks();157assertLogger(logger)158    .fullfilled('0:#value')159    .fullfilled('1:#1')160    .fullfilled('2:#2')161    .rejected(new Error(errorMessage))162    .fullfilledDone(undefined)163    .fullfilledDone(undefined)164    .isFinal();165async function * bar() {166  yield '1';167  yield '2';168  throw new Error(errorMessage);169  yield '3';170  return 'end foo';171}172async function * baz() {173  yield '0';174  yield* bar();175  yield '4';176}177logger.clear();178var bz1 = baz();179bz1.next().then(fulfillSpy(logger), rejectSpy(logger));180bz1.next().then(fulfillSpy(logger), rejectSpy(logger));181bz1.next().then(fulfillSpy(logger), rejectSpy(logger));182bz1.next().then(fulfillSpy(logger), rejectSpy(logger));183bz1.next().then(fulfillSpy(logger), rejectSpy(logger));184drainMicrotasks();185assertLogger(logger)186    .fullfilled('0')187    .fullfilled('1')188    .fullfilled('2')189    .rejected(new Error(errorMessage))190    .fullfilledDone(undefined)191    .isFinal();192logger.clear();193let promiseHolder = {};194async function *joo() {195    yield '1';196    yield getPromise(promiseHolder);197}198async function *goo () {199    yield '0';200    yield* joo();201    yield '3';202}203let g = goo();204g.next().then(fulfillSpy(logger), rejectSpy(logger));205g.next().then(fulfillSpy(logger), rejectSpy(logger));206g.next().then(fulfillSpy(logger), rejectSpy(logger));207g.next().then(fulfillSpy(logger), rejectSpy(logger));208g.next().then(fulfillSpy(logger), rejectSpy(logger));209drainMicrotasks();210assertLogger(logger)211    .fullfilled('0')212    .fullfilled('1')213    .isFinal();214promiseHolder.resolve('2');215drainMicrotasks();216assertLogger(logger)217    .fullfilled('0')218    .fullfilled('1')219    .fullfilled('2')220    .fullfilled('3')221    .fullfilledDone(undefined)222    .isFinal();223logger.clear();224g = goo();225g.next().then(fulfillSpy(logger), rejectSpy(logger));226g.next().then(fulfillSpy(logger), rejectSpy(logger));227g.next().then(fulfillSpy(logger), rejectSpy(logger));228g.next().then(fulfillSpy(logger), rejectSpy(logger));229g.next().then(fulfillSpy(logger), rejectSpy(logger));230drainMicrotasks();231assertLogger(logger)232    .fullfilled('0')233    .fullfilled('1')234    .isFinal();235promiseHolder.reject('#2');236drainMicrotasks();237assertLogger(logger)238    .fullfilled('0')239    .fullfilled('1')240    .rejected('#2')241    .fullfilledDone(undefined)242    .fullfilledDone(undefined)243    .isFinal();244logger.clear();245g = goo();246g.next().then(fulfillSpy(logger), rejectSpy(logger));247g.next().then(fulfillSpy(logger), rejectSpy(logger));248g.return(someValue).then(fulfillSpy(logger), rejectSpy(logger));249g.next().then(fulfillSpy(logger), rejectSpy(logger));250g.next().then(fulfillSpy(logger), rejectSpy(logger));251drainMicrotasks();252assertLogger(logger)253    .fullfilled('0')254    .fullfilled('1')255    .fullfilledDone(someValue)256    .fullfilledDone(undefined)257    .fullfilledDone(undefined)258    .isFinal();259logger.clear();260g = goo();261g.next().then(fulfillSpy(logger), rejectSpy(logger));262g.next().then(fulfillSpy(logger), rejectSpy(logger));263g.next().then(fulfillSpy(logger), rejectSpy(logger));264g.return(someValue).then(fulfillSpy(logger), rejectSpy(logger));265g.next().then(fulfillSpy(logger), rejectSpy(logger));266g.next().then(fulfillSpy(logger), rejectSpy(logger));267drainMicrotasks();268assertLogger(logger)269    .fullfilled('0')270    .fullfilled('1')271    .isFinal();272promiseHolder.resolve('#2');273drainMicrotasks();274assertLogger(logger)275    .fullfilled('0')276    .fullfilled('1')277    .fullfilled('#2')278    .fullfilledDone(someValue)279    .fullfilledDone(undefined)280    .fullfilledDone(undefined)281    .isFinal();282logger.clear();283g = goo();284g.next().then(fulfillSpy(logger), rejectSpy(logger));285g.next().then(fulfillSpy(logger), rejectSpy(logger));286g.next().then(fulfillSpy(logger), rejectSpy(logger));287g.return(someValue).then(fulfillSpy(logger), rejectSpy(logger));288g.next().then(fulfillSpy(logger), rejectSpy(logger));289g.next().then(fulfillSpy(logger), rejectSpy(logger));290drainMicrotasks();291assertLogger(logger)292    .fullfilled('0')293    .fullfilled('1')294    .isFinal();295promiseHolder.reject('#2');296drainMicrotasks();297assertLogger(logger)298    .fullfilled('0')299    .fullfilled('1')300    .rejected('#2')301    .fullfilledDone(someValue)302    .fullfilledDone(undefined)303    .fullfilledDone(undefined)304    .isFinal();305logger.clear();306g = goo();307g.next().then(fulfillSpy(logger), rejectSpy(logger));308g.next().then(fulfillSpy(logger), rejectSpy(logger));309g.throw(new Error(errorMessage)).then(fulfillSpy(logger), rejectSpy(logger));310g.next().then(fulfillSpy(logger), rejectSpy(logger));311g.next().then(fulfillSpy(logger), rejectSpy(logger));312drainMicrotasks();313assertLogger(logger)314    .fullfilled('0')315    .fullfilled('1')316    .rejected(new Error(errorMessage))317    .fullfilledDone(undefined)318    .fullfilledDone(undefined)319    .isFinal();320promiseHolder.resolve('#2');321drainMicrotasks();322assertLogger(logger)323    .fullfilled('0')324    .fullfilled('1')325    .rejected(new Error(errorMessage))326    .fullfilledDone(undefined)327    .fullfilledDone(undefined)328    .isFinal();329logger.clear();330g = goo();331g.next().then(fulfillSpy(logger), rejectSpy(logger));332g.next().then(fulfillSpy(logger), rejectSpy(logger));333g.next().then(fulfillSpy(logger), rejectSpy(logger));334g.throw(new Error(errorMessage)).then(fulfillSpy(logger), rejectSpy(logger));335g.next().then(fulfillSpy(logger), rejectSpy(logger));336g.next().then(fulfillSpy(logger), rejectSpy(logger));337drainMicrotasks();338assertLogger(logger)339    .fullfilled('0')340    .fullfilled('1')341    .isFinal();342promiseHolder.resolve('#2');343drainMicrotasks();344assertLogger(logger)345    .fullfilled('0')346    .fullfilled('1')347    .fullfilled('#2')348    .rejected(new Error(errorMessage))349    .fullfilledDone(undefined)350    .fullfilledDone(undefined)351    .isFinal();352logger.clear();353g = goo();354g.next().then(fulfillSpy(logger), rejectSpy(logger));355g.next().then(fulfillSpy(logger), rejectSpy(logger));356g.next().then(fulfillSpy(logger), rejectSpy(logger));357g.throw(new Error(errorMessage)).then(fulfillSpy(logger), rejectSpy(logger));358g.next().then(fulfillSpy(logger), rejectSpy(logger));359g.next().then(fulfillSpy(logger), rejectSpy(logger));360drainMicrotasks();361assertLogger(logger)362    .fullfilled('0')363    .fullfilled('1')364    .isFinal();365promiseHolder.reject('#2');366drainMicrotasks();367assertLogger(logger)368    .fullfilled('0')369    .fullfilled('1')370    .rejected('#2')371    .rejected(new Error(errorMessage))372    .fullfilledDone(undefined)373    .fullfilledDone(undefined)374    .isFinal();375logger.clear();376async function *koo() {377    yield '1';378    await getPromise(promiseHolder);379}380async function *loo () {381    yield '0';382    yield* joo();383    yield '3';384}385let l = loo();386l.next().then(fulfillSpy(logger), rejectSpy(logger));387l.next().then(fulfillSpy(logger), rejectSpy(logger));388l.next().then(fulfillSpy(logger), rejectSpy(logger));389l.next().then(fulfillSpy(logger), rejectSpy(logger));390l.next().then(fulfillSpy(logger), rejectSpy(logger));391drainMicrotasks();392 assertLogger(logger)393    .fullfilled("0")394    .fullfilled("1")395    .isFinal();396promiseHolder.resolve('#2');397drainMicrotasks();398assertLogger(logger)399    .fullfilled('0')400    .fullfilled('1')401    .fullfilled('#2')402    .fullfilled("3")403    .fullfilledDone(undefined)404    .isFinal();405logger.clear();406l = loo();407l.next().then(fulfillSpy(logger), rejectSpy(logger));408l.next().then(fulfillSpy(logger), rejectSpy(logger));409l.next().then(fulfillSpy(logger), rejectSpy(logger));410l.next().then(fulfillSpy(logger), rejectSpy(logger));411l.next().then(fulfillSpy(logger), rejectSpy(logger));412drainMicrotasks();413assertLogger(logger)414    .fullfilled("0")415    .fullfilled("1")416    .isFinal();417promiseHolder.reject('#2');418drainMicrotasks();419assertLogger(logger)420    .fullfilled('0')421    .fullfilled('1')422    .rejected('#2')423    .fullfilledDone(undefined)424    .fullfilledDone(undefined)425    .isFinal();426logger.clear();427let asyncIter = {428    [Symbol.asyncIterator]() { return this; },429    next (value) {430        customSpy(logger)('next:' + value);431        return { value: value, done: 'iter:Finish' === value };432    },433    throw (error) {434        customSpy(logger)('throw:' + error);435        return error;436    },437    return(value) {438        customSpy(logger)('return:' + value);439        return { value: value, done: true };440    }441  };442async function *moo () {443    yield '0';444    yield* asyncIter;445    yield '3';446}447let m = moo('Init');448m.next('A').then(fulfillSpy(logger), rejectSpy(logger));449m.next('B').then(fulfillSpy(logger), rejectSpy(logger));450m.next('C').then(fulfillSpy(logger), rejectSpy(logger));451m.next('D').then(fulfillSpy(logger), rejectSpy(logger));452m.next('E').then(fulfillSpy(logger), rejectSpy(logger));453m.next('iter:Finish').then(fulfillSpy(logger), rejectSpy(logger));454m.next('Finish').then(fulfillSpy(logger), rejectSpy(logger));455drainMicrotasks();456assertLogger(logger)457    .custom('next:undefined')458    .fullfilled('0')459    .custom('next:C')460    .fullfilled(undefined)461    .custom('next:D')462    .fullfilled('C')463    .custom('next:E')464    .fullfilled('D')465    .custom('next:iter:Finish')466    .fullfilled('E')467    .fullfilled('3')468    .fullfilledDone(undefined)469    .isFinal();470logger.clear();471m = moo('Init');472m.next('A').then(fulfillSpy(logger), rejectSpy(logger));473m.next('B').then(fulfillSpy(logger), rejectSpy(logger));474m.return('C').then(fulfillSpy(logger), rejectSpy(logger));475m.next('D').then(fulfillSpy(logger), rejectSpy(logger));476m.next('E').then(fulfillSpy(logger), rejectSpy(logger));477m.next('iter:Finish').then(fulfillSpy(logger), rejectSpy(logger));478m.next('Finish').then(fulfillSpy(logger), rejectSpy(logger));479drainMicrotasks();480assertLogger(logger)481    .custom('next:undefined')482    .fullfilled('0')483    .custom('return:C')484    .fullfilled(undefined)485    .fullfilledDone('C')486    .fullfilledDone(undefined)487    .fullfilledDone(undefined)488    .fullfilledDone(undefined)489    .fullfilledDone(undefined)490    .isFinal();491logger.clear();492m = moo('Init');493m.next('A').then(fulfillSpy(logger), rejectSpy(logger));494m.next('B').then(fulfillSpy(logger), rejectSpy(logger));495m.throw(new Error(errorMessage)).then(fulfillSpy(logger), rejectSpy(logger));496m.next('D').then(fulfillSpy(logger), rejectSpy(logger));497m.next('E').then(fulfillSpy(logger), rejectSpy(logger));498m.next('iter:Finish').then(fulfillSpy(logger), rejectSpy(logger));499m.next('Finish').then(fulfillSpy(logger), rejectSpy(logger));500drainMicrotasks();501assertLogger(logger)502    .custom('next:undefined')503    .fullfilled('0')504    .custom('throw:' + new Error(errorMessage))505    .fullfilled(undefined)506    .custom('next:D')507    .fullfilled(undefined)508    .custom('next:E')509    .fullfilled('D')510    .custom('next:iter:Finish')511    .fullfilled('E')512    .fullfilled('3')513    .fullfilledDone(undefined)514    .isFinal();515logger.clear();516async function* noo() {517  try {518    await Promise.reject("doop");519  } finally {520    yield* [1, 2, 3]; // Is this line reachable in this implementation?521  }522}523const n = noo();524n.next().then(fulfillSpy(logger), rejectSpy(logger));525n.next().then(fulfillSpy(logger), rejectSpy(logger));526n.next().then(fulfillSpy(logger), rejectSpy(logger));527n.next().then(fulfillSpy(logger), rejectSpy(logger));528n.next().then(fulfillSpy(logger), rejectSpy(logger));529drainMicrotasks();530assertLogger(logger)531    .fullfilled(1)532    .fullfilled(2)533    .fullfilled(3)...Quote.js
Source:Quote.js  
1var Sequelize = require('sequelize');2var configs = require("../config/configs");3var leadsInfoSchema = require("../mysql/Lead_Info");4var quoteComponent = require("../components/Quote");5var quoteDetailSchema = require("../mysql/Quote_Details");6var SAschema = require("../mysql/ServiceAgreement");7var Q = require('q');8var mysqlCredentials = configs.getMysqlCredentials();9var sequelize = require("../mysql/sequelize");10var quoteSchema = sequelize.define('quote',{11	id: {type:Sequelize.INTEGER,primaryKey:true, autoIncrement: true},12	leads_id: {type:Sequelize.INTEGER},13	created_by: {type:Sequelize.INTEGER},14	created_by_type: {type:Sequelize.STRING},15	status: {type:Sequelize.STRING},16	quote_no: {type:Sequelize.INTEGER},17	date_quoted: {type:Sequelize.DATE},18	date_posted: {type:Sequelize.DATE},19	ran: {type: Sequelize.STRING}20},{21	freezeTableName : true,22	timestamps: false,23	classMethods:24	{25		getLeadsID:function(id,leads_id){26			var willFulfillDeferred = Q.defer();27			var willFulfill = willFulfillDeferred.promise;28			if(id){29				quoteSchema.findOne({30					attributes:[31						'leads_id','created_by','created_by_type',32						'status','date_quoted','date_posted','ran'33					],34					where:{35						id : id36					}37				}).then(function(foundObject){38					willFulfillDeferred.resolve(foundObject);39				});40			}41			else if(leads_id)42			{43				quoteSchema.findAll({44					attributes:[45						'leads_id','created_by','created_by_type',46						'status','date_quoted','date_posted','ran'47					],48					where:{49						leads_id : leads_id50					}51				}).then(function(foundObject){52					willFulfillDeferred.resolve(foundObject);53				});54			}55			else{56				var sql = "SELECT (q.id) as quote_id,q.date_quoted,(l.id) as leads_id,CONCAT(l.fname,' ',l.lname) as fullname,l.email ,l.status,SUM(IF(q.status = 'new', 1,0)) AS 'new_count',"+57					"SUM(IF(q.status = 'posted', 1,0)) AS 'posted_count',"+58					"SUM(IF(q.status = 'draft', 1,0)) AS 'draft_count',"59					+"SUM(IF(q.status = 'deleted', 1,0)) AS 'deleted_count',"60					+"SUM(IF(sa.accepted = 'no', 1,0)) AS 'sa_count_pending' ,"61					+"SUM(IF(sa.accepted = 'yes', 1,0)) AS 'sa_count_accepted' "62					+"FROM leads l "63					+"LEFT JOIN quote q ON q.leads_id = l.id "64					+"LEFT JOIN service_agreement sa ON sa.quote_id = q.id "65					+"WHERE l.status NOT IN ('inactive' , 'REMOVED') "66					+"GROUP BY l.id ORDER by l.id DESC";67				var sql1 = "SELECT * FROM leads";68				sequelize.query(sql69					, { type: sequelize.QueryTypes.SELECT}).then(function(users) {70					if(users)71					{72						willFulfillDeferred.resolve(users);73					}74					users = null;75				});76			}77			return willFulfill;78		},79		searchLead:function(params)80		{81			var willFulfillDeferred = Q.defer();82			var willFulfill = willFulfillDeferred.promise;83			if(!params.filter)84			{85				var sql="SELECT (q.id) as quote_id,q.date_quoted,(l.id) as leads_id,l.fname,l.lname,CONCAT(l.fname,' ',l.lname) as fullname,l.email ,l.status,SUM(IF(q.status = 'new', 1,0)) AS 'new_count',"+86					"SUM(IF(q.status = 'posted', 1,0)) AS 'posted_count',"+87					"SUM(IF(q.status = 'draft', 1,0)) AS 'draft_count',"88					+"SUM(IF(q.status = 'deleted', 1,0)) AS 'deleted_count',"89					// +"SUM(IF(q.status = 'accepted', 1,0)) AS 'accepted_count',"90					+"SUM(IF(sa.accepted = 'no', 1,0)) AS 'sa_count_pending' ,"91					+"SUM(IF(sa.accepted = 'yes', 1,0)) AS 'sa_count_accepted' "92					+"FROM leads l "93					+"LEFT JOIN quote q ON q.leads_id = l.id "94					+"LEFT JOIN service_agreement sa ON sa.quote_id = q.id "95					+"WHERE l.status NOT IN ('inactive' , 'REMOVED') "96					+"AND q.date_quoted BETWEEN '"+params.startDate+"' AND '"+params.endDate+"' "97					+"GROUP BY l.id ORDER by q.id DESC";98			}99			else100			{101				if(params.startDate && params.endDate)102				{103					var sql="SELECT (q.id) as quote_id,q.date_quoted,(l.id) as leads_id,l.fname,l.lname,CONCAT(l.fname,' ',l.lname) as fullname,l.email ,l.status,SUM(IF(q.status = 'new', 1,0)) AS 'new_count',"+104						"SUM(IF(q.status = 'posted', 1,0)) AS 'posted_count',"+105						"SUM(IF(q.status = 'draft', 1,0)) AS 'draft_count',"106						// +"SUM(IF(q.status = 'accepted', 1,0)) AS 'accepted_count',"107						+"SUM(IF(sa.accepted = 'no', 1,0)) AS 'sa_count_pending' ,"108						+"SUM(IF(sa.accepted = 'yes', 1,0)) AS 'sa_count_accepted' "109						+"FROM leads l "110						+"LEFT JOIN quote q ON q.leads_id = l.id "111						+"LEFT JOIN service_agreement sa ON sa.quote_id = q.id "112						+"WHERE l.status NOT IN ('inactive' , 'REMOVED') "113						+"AND q.date_quoted BETWEEN '"+params.startDate+"' AND '"+params.endDate+"' "114						+"AND CONCAT_WS('',q.id, l.id, l.fname,l.lname,CONCAT(l.fname,' ',l.lname),l.email,l.status) LIKE '%"+params.filter+"%' "115						+"GROUP BY l.id ORDER by q.id DESC";116				}117				else118				{119					var sql="SELECT (q.id) as quote_id,q.date_quoted,(l.id) as leads_id,l.fname,l.lname,CONCAT(l.fname,' ',l.lname) as fullname,l.email ,l.status,SUM(IF(q.status = 'new', 1,0)) AS 'new_count',"+120						"SUM(IF(q.status = 'posted', 1,0)) AS 'posted_count',"+121						"SUM(IF(q.status = 'draft', 1,0)) AS 'draft_count',"122						// +"SUM(IF(q.status = 'accepted', 1,0)) AS 'accepted_count',"123						+"SUM(IF(sa.accepted = 'no', 1,0)) AS 'sa_count_pending' ,"124						+"SUM(IF(sa.accepted = 'yes', 1,0)) AS 'sa_count_accepted' "125						+"FROM leads l "126						+"LEFT JOIN quote q ON q.leads_id = l.id "127						+"LEFT JOIN service_agreement sa ON sa.quote_id = q.id "128						+"WHERE l.status NOT IN ('inactive' , 'REMOVED') "129						+"AND l.id="+params.filter+" "130						+"GROUP BY l.id ORDER by q.id DESC";131				}132			}133			sequelize.query(sql134				, { type: sequelize.QueryTypes.SELECT}).then(function(searchData) {135				willFulfillDeferred.resolve(searchData);136			});137			return willFulfill;138//139		},140		getQuotebyLead:function(params){141			var willFulfillDeferred = Q.defer();142			var willFulfill = willFulfillDeferred.promise;143			var status="";144			if(params.status){status=params.status;}145			if(params.status == "no" || params.status == "yes" )146			{147				var sql = "SELECT * FROM quote q LEFT JOIN service_agreement sa on sa.quote_id = q.id "148					+"WHERE q.leads_id ="+params.leads_id+" AND sa.accepted='"+params.status+"' ORDER BY sa.service_agreement_id DESC";149				sequelize.query(sql150					, { type: sequelize.QueryTypes.SELECT}).then(function(searchData) {151					willFulfillDeferred.resolve(searchData);152				});153				return willFulfill;154			}155			quoteSchema.findAll({156				where:{157					leads_id : params.leads_id,158					status:status159				},160				order: [161					['id', 'DESC']162				]163			}).then(function(foundObject){164				willFulfillDeferred.resolve(foundObject);165			});166			return willFulfill;167		},168		getTotalQuote:function(leads_id){169			var willFulfillDeferred = Q.defer();170			var willFulfill = willFulfillDeferred.promise;171			if(leads_id)172			{173				quoteSchema.findAndCountAll({174					where:{175						leads_id : leads_id176					}177				}).then(function(foundObject){178					willFulfillDeferred.resolve(foundObject);179				});180			}181			else {182				quoteSchema.findAndCountAll({183				}).then(function(foundObject){184					willFulfillDeferred.resolve(foundObject);185				});186			}187			return willFulfill;188		},189		insertQuote:function(params){190			var willFulfillDeferred = Q.defer();191			var willFulfill = willFulfillDeferred.promise;192			quoteSchema.create({193				created_by: params.created_by,194				created_by_type: params.created_by_type,195				leads_id: params.leads_id,196				date_quoted: new Date(),197				ran: params.ran,198				status: "draft"199			}).then(function(data){200				if(data){201					data.updateAttributes({202						quote_no: data.id203					}).then(function(result){204						result.id = data.id;205						willFulfillDeferred.resolve(result);206					});207				}208			});209			return willFulfill;210		},211		updateQuote:function(params){212			var willFulfillDeferred = Q.defer();213			var willFulfill = willFulfillDeferred.promise;214			if(!params.status)215			{216				quoteSchema.update({217					status: "new"218				},{219					where:{220						id: params.quote_id,221						status:"draft"222					}223				}).then(function(updatedData){224					willFulfillDeferred.resolve(updatedData);225				});226			}227			else {228				if(params.status == "posted")229				{230					quoteSchema.update({231						status: params.status,232						date_posted:new Date()233					},{234						where:{235							id: params.quote_id236						}237					}).then(function(updatedData){238						willFulfillDeferred.resolve(updatedData);239					});240				}else241				{242					quoteSchema.update({243						status: params.status244					},{245						where:{246							id: params.quote_id247						}248					}).then(function(updatedData){249						willFulfillDeferred.resolve(updatedData);250					});251				}252			}253			return willFulfill;254		},255		acceptQuote:function(params)256		{257			var willFulfillDeferred = Q.defer();258			var willFulfill = willFulfillDeferred.promise;259			quoteSchema.update({260				status: "accepted"261			},{262				where:{263					id: params264				}265			}).then(function(updatedData){266				willFulfillDeferred.resolve(updatedData);267			});268			return willFulfill;269		},270		getStaffSalary:function(params)271		{272			var willFulfillDeferred = Q.defer();273			var willFulfill = willFulfillDeferred.promise;274			if(params.partTime)275			{276				sql = "SELECT p.code FROM products p INNER JOIN staff_rate s ON s.part_time_product_id = p.id WHERE s.userid ="+params.userid;277			}278			else279			{280				sql = "SELECT p.code FROM products p INNER JOIN staff_rate s ON s.product_id = p.id WHERE s.userid ="+params.userid;281			}282			sequelize.query(sql283				, { type: sequelize.QueryTypes.SELECT}).then(function(price) {284				willFulfillDeferred.resolve(price);285			});286			return willFulfill;287		},288		dataForSync:function(offset)289		{290			var willFulfillDeferred = Q.defer();291			var willFulfill = willFulfillDeferred.promise;292			quoteSchema.findOne({293				limit:1,294				offset:offset295			}).then(function(foundObject){296				willFulfillDeferred.resolve(foundObject);297			});298			return willFulfill;299		},300		getQuoteID:function(ran)301		{302			var willFulfillDeferred = Q.defer();303			var willFulfill = willFulfillDeferred.promise;304			quoteSchema.findOne({305				attributes:['id'],306				where:{307					ran:ran308				}309			}).then(function(foundObject){310				willFulfillDeferred.resolve(foundObject);311			});312			return willFulfill;313		},314		getQuoteByLeads:function(leads_id)315		{316			var willFulfillDeferred = Q.defer();317			var willFulfill = willFulfillDeferred.promise;318			quoteSchema.findAll({319				attributes:[320					'id','created_by','created_by_type',321					'status','date_quoted','date_posted','ran'322				],323				where:{324					leads_id : leads_id325				}326			}).then(function(foundObject){327				willFulfillDeferred.resolve(foundObject);328			});329			return willFulfill;330		},331		getQuoteData:function(params)332		{333			var willFulfillDeferred = Q.defer();334			var willFulfill = willFulfillDeferred.promise;335			if(params.id)336			{337				quoteSchema.findOne({338					attributes:[339						'id','created_by','created_by_type',340						'status','date_quoted','date_posted','ran'341					],342					where:{343						id:{$eq:params.id,$notIn:[sequelize.literal('SELECT quote_id FROM quote_sync_mongo')]}344					}345				}).then(function(foundObject){346					willFulfillDeferred.resolve(foundObject);347				});348			}349			else350			{351				quoteSchema.findAll({352					attributes:[353						'id','created_by','created_by_type',354						'status','date_quoted','date_posted','ran'355					],356					offset:((params.page-1)*params.limit),357					limit : params.limit,358					where:{359						id:{$notIn:[sequelize.literal('SELECT quote_id FROM quote_sync_mongo')]}360					},361					order: [362						['id', 'DESC']363					]364				}).then(function(foundObject){365					willFulfillDeferred.resolve(foundObject);366				});367			}368			return willFulfill;369		},370		countTotalQuote:function(params)371		{372			var willFulfillDeferred = Q.defer();373			var willFulfill = willFulfillDeferred.promise;374			if(params.id)375			{376				quoteSchema.count({377					where:{378						id:{$eq:params.id,$notIn:[sequelize.literal('SELECT quote_id FROM quote_sync_mongo')]}379					}380				}).then(function(foundObject){381					willFulfillDeferred.resolve(foundObject);382				});383			}384			else385			{386				quoteSchema.count({387					where:{388						id:{$notIn:[sequelize.literal('SELECT quote_id FROM quote_sync_mongo')]}389					}390				}).then(function(foundObject){391					willFulfillDeferred.resolve(foundObject);392				});393			}394			return willFulfill;395		},396		insertSyncMongo:function(params)397		{398			var willFulfillDeferred = Q.defer();399			var willFulfill = willFulfillDeferred.promise;400			sql="INSERT INTO quote_sync_mongo(date_synced,quote_id)VALUES(NOW(),"+params+")";401			sequelize.query(sql402				, { type: sequelize.QueryTypes.INSERT}).then(function(data) {403				willFulfillDeferred.resolve(data);404			});405			return willFulfill;406		},407		deleteSync:function(id)408		{409			var willFulfillDeferred = Q.defer();410			var willFulfill = willFulfillDeferred.promise;411			sql="DELETE FROM quote_sync_mongo WHERE quote_id="+id;412			sequelize.query(sql413				,{ type: sequelize.QueryTypes.DELETE}).then(function(data) {414				willFulfillDeferred.resolve(data);415			});416			return willFulfill;417		}418	},419	instanceMethods:420	{421		getDetails:function()422		{423			var willFulfillDeferred = Q.defer();424			var willFulfill = willFulfillDeferred.promise;425			var me = this;426			try {427				quoteDetailSchema.getQuoteDetails(this.id).then(function(details){428					me.quote_details = details;429					willFulfillDeferred.resolve(details);430				});431			}catch(e)432			{433				console.log("details null");434				willFulfillDeferred.resolve(false);435			}436			return willFulfill;437		},438		getSA:function()439		{440			var willFulfillDeferred = Q.defer();441			var willFulfill = willFulfillDeferred.promise;442			var me = this;443			try {444				SAschema.getServiceAgreement(this.id).then(function(service_agreement){445					me.sa = service_agreement;446					willFulfillDeferred.resolve(service_agreement);447				});448			}449			catch(e)450			{451				console.log("sa null");452				willFulfillDeferred.resolve(false);453			}454			return willFulfill;455		},456		structureQuoteData:function()457		{458			var temp = {};459			var quote = this;460			var quote_details = this.quote_details;461			var service_agreement = this.sa;462			temp.quote = quote;463			temp.details = quote_details;464			temp.sa = service_agreement;465			return temp;466		}467	}468});469//Only call this function sequelize.sync(); if table does not exists470//IMPORTANT:471//COMMENT OUT OR REMOVE after deployment472//May cause system failure for mysql473// sequelize.sync();...Lead_Info.js
Source:Lead_Info.js  
1var Sequelize = require('sequelize');2var configs = require("../config/configs");3var Q = require('q');4var mysqlCredentials = configs.getMysqlCredentials();5var mongoose = require('mongoose');6var Schema = mongoose.Schema;7var configs = require("../config/configs");8var Q = require('q');9var mongoCredentials = configs.getMongoCredentials();10var quoteSchema = require("../mysql/Quote");11var Admin_Info = require("../mysql/Admin_Info");12var quoteMongoSchema = require("../models/QuoteModel");13var quoteComponent = require("../components/Quote");14var sequelize = require("../mysql/sequelize");15var adminInfoSchema = require("../mysql/Admin_Info");16var leadInfoSchema = sequelize.define('leads',{17		id: {type:Sequelize.INTEGER,primaryKey:true, autoIncrement: true},18		fname: {type: Sequelize.STRING},19		lname: {type: Sequelize.STRING},20		email: {type: Sequelize.STRING},21		hiring_coordinator_id: {type: Sequelize.INTEGER},22		last_updated_date: {type: Sequelize.DATE},23		company_name: {type: Sequelize.STRING},24		company_address: {type: Sequelize.STRING},25		mobile: {type: Sequelize.STRING},26		officenumber: {type: Sequelize.STRING},27		status: {type: Sequelize.STRING},28		csro_id: {type: Sequelize.STRING},29		business_partner_id: {type: Sequelize.STRING},30		abn_number: {type: Sequelize.STRING},31	},32	{33		freezeTableName : true,34		timestamps: false,35		classMethods:36		{37			fetchSingleClientsInfoWithAttributes:function(where, attributes){38				var willFulfillDeferred = Q.defer();39				var willFulfill = willFulfillDeferred.promise;40				leadInfoSchema.findOne({41					attributes:attributes,42					where:where43				}).then(function(foundObject){44					willFulfillDeferred.resolve(foundObject);45				});46				return willFulfill;47			},48			getTotalActiveStaff:function(client_id){49				var willFulfillDeferred = Q.defer();50				var willFulfill = willFulfillDeferred.promise;51				var sql = "SELECT COUNT(id)AS total_active FROM subcontractors WHERE status IN('ACTIVE', 'suspended') AND leads_id="+client_id;52				sequelize.query(sql , { type: sequelize.QueryTypes.SELECT}).then(function(result) {53					if(result)54					{55						willFulfillDeferred.resolve(result);56					}57				});58				return willFulfill;59			},60			getClientInfo:function(client_id)61			{62				var willFulfillDeferred = Q.defer();63				var willFulfill = willFulfillDeferred.promise;64				var sql = "SELECT * FROM leads WHERE id="+client_id;65				sequelize.query(sql , { type: sequelize.QueryTypes.SELECT}).then(function(client) {66					if(client)67					{68						willFulfillDeferred.resolve(client);69					}70				});71				return willFulfill;72			},73			getLeadsInfo:function($leads_id){74				var willFulfillDeferred = Q.defer();75				var willFulfill = willFulfillDeferred.promise;76				if($leads_id)77				{78					leadInfoSchema.find({79						attributes:80							['fname','lname','email','mobile','company_address','company_name','status','hiring_coordinator_id'],81						where:82						{83							id:$leads_id84						}85					}).then(function(foundObject){86						willFulfillDeferred.resolve(foundObject);87					});88				}89				else90				{91					leadInfoSchema.findAll({92						attributes:93							['id','fname','lname','email','mobile','company_address','company_name','status'],94						where:95						{96							status:{$notIn:['inactive' , 'REMOVED']}97						},98						order:99							[100								['id', 'DESC']101							]102					}).then(function(result){103						willFulfillDeferred.resolve(result);104					});105				}106				return willFulfill;107			},108			updateLeads:function(params){109				var willFulfillDeferred = Q.defer();110				var willFulfill = willFulfillDeferred.promise;111				leadInfoSchema.update({112					last_updated_date: new Date()113				},{114					where:{115						id:params116					}117				}).then(function(data){118					willFulfillDeferred.resolve(data);119				});120				return willFulfill;121			},122			countAllLeads:function(params)123			{124				var willFulfillDeferred = Q.defer();125				var willFulfill = willFulfillDeferred.promise;126				leadInfoSchema.findAndCountAll({127					attributes:128						['id','fname','lname','email','mobile','company_address','company_name','status'],129					where:130					{131						status:{$notIn:['inactive' , 'REMOVED']}132					},133					order:134						[135							['id', 'DESC']136						]137				}).then(function(result){138					willFulfillDeferred.resolve(result);139				});140				return willFulfill;141			},142			countData:function(leads_id)143			{144				var willFulfillDeferred = Q.defer();145				var willFulfill = willFulfillDeferred.promise;146				var where = {status:{$notIn:['inactive' , 'REMOVED']}};147				if(leads_id)148				{149					where  = {id:leads_id,status:{$notIn:['inactive' , 'REMOVED']}}150				}151				leadInfoSchema.count({152					where:where153				}).then(function(foundObject){154					willFulfillDeferred.resolve(foundObject);155				});156				return willFulfill;157			},158			countSolr:function(leads_id)159			{160				var willFulfillDeferred = Q.defer();161				var willFulfill = willFulfillDeferred.promise;162				var where = {status:{$notIn:['inactive' , 'REMOVED']}};163				if(leads_id)164				{165					where = {166						id:{$eq:leads_id,$notIn:[sequelize.literal('SELECT leads_id FROM quote_solr_sync')]},167						status:{$notIn:['inactive' , 'REMOVED']}168					}169				}170				else171				{172					where = {173						id:{$notIn:[sequelize.literal('SELECT leads_id FROM quote_solr_sync')]},174						status:{$notIn:['inactive' , 'REMOVED']}175					}176				}177				leadInfoSchema.count({178					where:where179				}).then(function(foundObject){180					willFulfillDeferred.resolve(foundObject);181				});182				return willFulfill;183			},184			getOffsetLeadsData:function(params)185			{186				var willFulfillDeferred = Q.defer();187				var willFulfill = willFulfillDeferred.promise;188				if(params.leads_id)189				{190					leadInfoSchema.find({191						attributes:192							['id','fname','lname','email','mobile','company_address','company_name','status','hiring_coordinator_id'],193						where:194						{195							id:params.leads_id,196							status:{$notIn:['inactive' , 'REMOVED']}197						}198					}).then(function(foundObject){199						willFulfillDeferred.resolve(foundObject);200					});201				}202				else203				{204					leadInfoSchema.findAll({205						attributes:206							['id','fname','lname','email','mobile','company_address','company_name','status'],207						offset:((params.page-1)*params.limit),208						limit : params.limit,209						where:210						{211							status:{$notIn:['inactive' , 'REMOVED']}212						},213						order:214							[215								['id', 'DESC']216							]217					}).then(function(result){218						willFulfillDeferred.resolve(result);219					});220				}221				return willFulfill;222			},223			idForSolrSync:function(params)224			{225				var willFulfillDeferred = Q.defer();226				var willFulfill = willFulfillDeferred.promise;227				if(params.leads_id)228				{229					leadInfoSchema.find({230						attributes:231							['id','fname','lname','email','mobile','company_address','company_name','status','hiring_coordinator_id'],232						where:233						{234							id:{$eq:params.leads_id,$notIn:[sequelize.literal('SELECT leads_id FROM quote_solr_sync')]},235							status:{$notIn:['inactive' , 'REMOVED']}236						}237					}).then(function(foundObject){238						willFulfillDeferred.resolve(foundObject);239					});240				}241				else242				{243					leadInfoSchema.findAll({244						attributes:245							['id','fname','lname','email','mobile','company_address','company_name','status'],246						offset:((params.page-1)*params.limit),247						limit : params.limit,248						where:249						{250							id:{$notIn:[sequelize.literal('SELECT leads_id FROM quote_solr_sync')]},251							status:{$notIn:['inactive' , 'REMOVED']}252						},253						order:254							[255								['id', 'DESC']256							]257					}).then(function(result){258						willFulfillDeferred.resolve(result);259					});260				}261				return willFulfill;262			},263			checkSolr:function(id)264			{265				var willFulfillDeferred = Q.defer();266				var willFulfill = willFulfillDeferred.promise;267				sql="SELECT COUNT(*) as count FROM quote_solr_sync WHERE leads_id="+id;268				sequelize.query(sql269					,{ type: sequelize.QueryTypes.SELECT}).then(function(data) {270					willFulfillDeferred.resolve(data[0].count);271				});272				return willFulfill;273			},274			saveSolr:function(id)275			{276				var willFulfillDeferred = Q.defer();277				var willFulfill = willFulfillDeferred.promise;278				sql="INSERT INTO quote_solr_sync(leads_id,date_synced) VALUES("+id+",NOW())";279				sequelize.query(sql280					,{ type: sequelize.QueryTypes.INSERT}).then(function(data) {281					willFulfillDeferred.resolve(data);282				});283				return willFulfill;284			},285			delSolr:function(id)286			{287				var willFulfillDeferred = Q.defer();288				var willFulfill = willFulfillDeferred.promise;289				sql="DELETE FROM quote_solr_sync WHERE leads_id="+id;290				sequelize.query(sql291					,{ type: sequelize.QueryTypes.DELETE}).then(function(data) {292					willFulfillDeferred.resolve(data);293				});294				return willFulfill;295			}296		},297		instanceMethods:298		{299			getQuote:function()300			{301				var willFulfillDeferred = Q.defer();302				var willFulfill = willFulfillDeferred.promise;303				var me = this;304				var leads = [];305				var promises = [];306				function delay() {307					return Q.delay(100);308				}309				try {310					quoteSchema.getQuoteByLeads(this.id).then(function(quote){311						if(quote)312						{313							for (var i = 0; i < quote.length; i++)314							{315								item = quote[i];316								var per_quote_promises = [];317								var promise_quote_details = item.getDetails();318								var promise_quote_sa = item.getSA();319								per_quote_promises.push(promise_quote_details);320								per_quote_promises.push(delay());321								per_quote_promises.push(promise_quote_sa);322								per_quote_promises.push(delay());323								per_leads_promises_promise = Q.allSettled(per_quote_promises);324								promises.push(per_leads_promises_promise);325								promises.push(delay);326							}327							var allPromise = Q.all(promises);328							allPromise.then(function (results) {329								console.log("Promise Done!");330								for(var i = 0 ; i < quote.length ; i++ )331								{332									leads.push(quote[i].structureQuoteData());333								}334								me.leads_quote = leads;335								willFulfillDeferred.resolve(leads);336								return willFulfill;337							});338						}339						else340						{341							console.log("null quote");342							willFulfillDeferred.resolve(false);343						}344					});345				}346				catch(e)347				{348					console.log(e);349					willFulfillDeferred.resolve(false);350				}351				return willFulfill;352			},353			getQuoteMongo:function()354			{355				this.db = mongoose.createConnection("mongodb://"+mongoCredentials.host+":"+mongoCredentials.port+"/prod",mongoCredentials.options);356				var quote = this.db.model('Quote',quoteMongoSchema);357				var willFulfillDeferred = Q.defer();358				var willFulfill = willFulfillDeferred.promise;359				var leads_id = this.id;360				var me = this;361				this.db.once('open', function () {362					var filter = {leads_id:parseInt(leads_id)};363					try {364						quote.find(filter).lean().sort({"quote_id" : -1}).exec(function(err, quote_data){365							var posted = 0,366								draft = 0,367								New = 0,368								deleted = 0,369								sa_accepted = 0,370								sa_pending = 0;371							if(err)372							{373								willFulfillDeferred.reject(err);374								me.db.close();375							}376							if(quote_data && quote_data.length > 0)377							{378								function getCountStatus(i)379								{380									if(i < quote_data.length)381									{382										data = quote_data[i];383										sa =(data.service_agreement.length > 0 ? data.service_agreement[0] : null);384										if(data.status == "posted"){posted = posted + 1;}385										else if(data.status == "draft"){draft = draft + 1;}386										else if(data.status == "new"){New = New + 1;}387										else if(data.status == "deleted"){deleted = deleted + 1;}388										else{}389										if(sa)390										{391											if(sa.accepted == "yes"){sa_accepted = sa_accepted + 1}392											else if(sa.accepted == "no"){sa_pending = sa_pending + 1}393											// sa.acceptedCount = sa_accepted;394											// sa.pendingCount = sa_pending;395										}396										if(!me.sync)397										{398											quoteComponent.whosThis(data.created_by,data.created_by_type).then(function(admin){399												data.created_by = {400														admin_id : (admin.admin_id ? admin.admin_id : admin.agent_no ? admin.agent_no : null),401														admin_fname: (admin.admin_fname ? admin.admin_fname : admin.fname ? admin.fname : ""),402														admin_lname: (admin.admin_lname ? admin.admin_lname : admin.lname ? admin.lname : ""),403														admin_email:(admin.admin_email ? admin.admin_email : admin.email ? admin.email : ""),404														signature_no: (admin.signature_contact_nos ? admin.signature_contact_nos : ""),405														signature_company: (admin.signature_company ? admin.signature_company : "")406													}407												getCountStatus(i+1);408											});409										}410										else411										{412											getCountStatus(i+1);413										}414									}415									else416									{417										me.leads_quote = quote_data;418										me.countData = {419											postedCount : posted,420											draftCount : draft,421											newCount : New,422											deletedCount : deleted,423											acceptedCount : sa_accepted,424											pendingCount : sa_pending425										}426										willFulfillDeferred.resolve(me);427									}428								}429								getCountStatus(0);430							}431							else432							{433								me.leads_quote = [];434								me.countData = {435									postedCount : posted,436									draftCount : draft,437									newCount : New,438									deletedCount : deleted,439									acceptedCount : sa_accepted,440									pendingCount : sa_pending441								}442								willFulfillDeferred.resolve(me);443							}444							me.db.close();445						});446					}447					catch(e)448					{449						console.log(e);450					}451				});452				return willFulfill;453			},454			structLeadsData:function()455			{456				var temp = {};457				var leads = this;458				var quote_data = this.leads_quote;459				var countData = this.countData;460				temp.leads = leads;461				temp.quote_data = quote_data;462				temp.count_data = countData;463				return temp;464			}465		}466	});467leadInfoSchema.belongsTo(Admin_Info, {foreignKey:"hiring_coordinator_id", targetKey: "admin_id"});468//Only call this function sequelize.sync(); if table does not exists469//IMPORTANT:470//COMMENT OUT OR REMOVE after deployment471//May cause system failure for mysql472// sequelize.sync();...BleManager.js
Source:BleManager.js  
...14        (error, data) => {15          if (error) {16            reject(error);17          } else {18            fulfill(data);19          }20        }21      );22    });23  }24  readRSSI(peripheralId) {25    return new Promise((fulfill, reject) => {26      bleManager.readRSSI(peripheralId, (error, rssi) => {27        if (error) {28          reject(error);29        } else {30          fulfill(rssi);31        }32      });33    });34  }35  refreshCache(peripheralId) {36    return new Promise((fulfill, reject) => {37      bleManager.refreshCache(peripheralId, (error, result) => {38        if (error) {39          reject(error);40        } else {41          fulfill(result);42        }43      });44    });45  }46  retrieveServices(peripheralId, services) {47    return new Promise((fulfill, reject) => {48      bleManager.retrieveServices(49        peripheralId,50        services,51        (error, peripheral) => {52          if (error) {53            reject(error);54          } else {55            fulfill(peripheral);56          }57        }58      );59    });60  }61  write(peripheralId, serviceUUID, characteristicUUID, data, maxByteSize) {62    if (maxByteSize == null) {63      maxByteSize = 20;64    }65    return new Promise((fulfill, reject) => {66      bleManager.write(67        peripheralId,68        serviceUUID,69        characteristicUUID,70        data,71        maxByteSize,72        error => {73          if (error) {74            reject(error);75          } else {76            fulfill();77          }78        }79      );80    });81  }82  writeWithoutResponse(83    peripheralId,84    serviceUUID,85    characteristicUUID,86    data,87    maxByteSize,88    queueSleepTime89  ) {90    if (maxByteSize == null) {91      maxByteSize = 20;92    }93    if (queueSleepTime == null) {94      queueSleepTime = 10;95    }96    return new Promise((fulfill, reject) => {97      bleManager.writeWithoutResponse(98        peripheralId,99        serviceUUID,100        characteristicUUID,101        data,102        maxByteSize,103        queueSleepTime,104        error => {105          if (error) {106            reject(error);107          } else {108            fulfill();109          }110        }111      );112    });113  }114  connect(peripheralId) {115    return new Promise((fulfill, reject) => {116      bleManager.connect(peripheralId, error => {117        if (error) {118          reject(error);119        } else {120          fulfill();121        }122      });123    });124  }125  createBond(peripheralId,peripheralPin=null) {126    return new Promise((fulfill, reject) => {127      bleManager.createBond(peripheralId,peripheralPin, error => {128        if (error) {129          reject(error);130        } else {131          fulfill();132        }133      });134    });135  }136  removeBond(peripheralId) {137    return new Promise((fulfill, reject) => {138      bleManager.removeBond(peripheralId, error => {139        if (error) {140          reject(error);141        } else {142          fulfill();143        }144      });145    });146  }147  disconnect(peripheralId, force = true) {148    return new Promise((fulfill, reject) => {149      bleManager.disconnect(peripheralId, force, error => {150        if (error) {151          reject(error);152        } else {153          fulfill();154        }155      });156    });157  }158  startNotification(peripheralId, serviceUUID, characteristicUUID) {159    return new Promise((fulfill, reject) => {160      bleManager.startNotification(161        peripheralId,162        serviceUUID,163        characteristicUUID,164        error => {165          if (error) {166            reject(error);167          } else {168            fulfill();169          }170        }171      );172    });173  }174  startNotificationUseBuffer(175    peripheralId,176    serviceUUID,177    characteristicUUID,178    buffer179  ) {180    return new Promise((fulfill, reject) => {181      bleManager.startNotificationUseBuffer(182        peripheralId,183        serviceUUID,184        characteristicUUID,185        buffer,186        error => {187          if (error) {188            reject(error);189          } else {190            fulfill();191          }192        }193      );194    });195  }196  stopNotification(peripheralId, serviceUUID, characteristicUUID) {197    return new Promise((fulfill, reject) => {198      bleManager.stopNotification(199        peripheralId,200        serviceUUID,201        characteristicUUID,202        error => {203          if (error) {204            reject(error);205          } else {206            fulfill();207          }208        }209      );210    });211  }212  checkState() {213    bleManager.checkState();214  }215  start(options) {216    return new Promise((fulfill, reject) => {217      if (options == null) {218        options = {};219      }220      bleManager.start(options, error => {221        if (error) {222          reject(error);223        } else {224          fulfill();225        }226      });227    });228  }229  scan(serviceUUIDs, seconds, allowDuplicates, scanningOptions = {}) {230    return new Promise((fulfill, reject) => {231      if (allowDuplicates == null) {232        allowDuplicates = false;233      }234      // (ANDROID) Match as many advertisement per filter as hw could allow235      // dependes on current capability and availability of the resources in hw.236      if (scanningOptions.numberOfMatches == null) {237        scanningOptions.numberOfMatches = 3;238      }239      // (ANDROID) Defaults to MATCH_MODE_AGGRESSIVE240      if (scanningOptions.matchMode == null) {241        scanningOptions.matchMode = 1;242      }243      // (ANDROID) Defaults to SCAN_MODE_LOW_POWER on android244      if (scanningOptions.scanMode == null) {245        scanningOptions.scanMode = 0;246      }247      if (scanningOptions.reportDelay == null) {248        scanningOptions.reportDelay = 0;249      }250      bleManager.scan(251        serviceUUIDs,252        seconds,253        allowDuplicates,254        scanningOptions,255        error => {256          if (error) {257            reject(error);258          } else {259            fulfill();260          }261        }262      );263    });264  }265  stopScan() {266    return new Promise((fulfill, reject) => {267      bleManager.stopScan(error => {268        if (error != null) {269          reject(error);270        } else {271          fulfill();272        }273      });274    });275  }276  enableBluetooth() {277    return new Promise((fulfill, reject) => {278      bleManager.enableBluetooth(error => {279        if (error != null) {280          reject(error);281        } else {282          fulfill();283        }284      });285    });286  }287  disableBluetooth() {288    return new Promise((fulfill, reject) => {289      bleManager.disableBluetooth(error => {290        if (error != null) {291          reject(error);292        } else {293          fulfill();294        }295      });296    });297  }298  getConnectedPeripherals(serviceUUIDs) {299    return new Promise((fulfill, reject) => {300      bleManager.getConnectedPeripherals(serviceUUIDs, (error, result) => {301        if (error) {302          reject(error);303        } else {304          if (result != null) {305            fulfill(result);306          } else {307            fulfill([]);308          }309        }310      });311    });312  }313  getBondedPeripherals() {314    return new Promise((fulfill, reject) => {315      bleManager.getBondedPeripherals((error, result) => {316        if (error) {317          reject(error);318        } else {319          if (result != null) {320            fulfill(result);321          } else {322            fulfill([]);323          }324        }325      });326    });327  }328  getDiscoveredPeripherals() {329    return new Promise((fulfill, reject) => {330      bleManager.getDiscoveredPeripherals((error, result) => {331        if (error) {332          reject(error);333        } else {334          if (result != null) {335            fulfill(result);336          } else {337            fulfill([]);338          }339        }340      });341    });342  }343  removePeripheral(peripheralId) {344    return new Promise((fulfill, reject) => {345      bleManager.removePeripheral(peripheralId, error => {346        if (error) {347          reject(error);348        } else {349          fulfill();350        }351      });352    });353  }354  isPeripheralConnected(peripheralId, serviceUUIDs) {355    return this.getConnectedPeripherals(serviceUUIDs).then(result => {356      if (357        result.find(p => {358          return p.id === peripheralId;359        })360      ) {361        return true;362      } else {363        return false;364      }365    });366  }367  requestConnectionPriority(peripheralId, connectionPriority) {368    return new Promise((fulfill, reject) => {369      bleManager.requestConnectionPriority(370        peripheralId,371        connectionPriority,372        (error, status) => {373          if (error) {374            reject(error);375          } else {376            fulfill(status);377          }378        }379      );380    });381  }382  requestMTU(peripheralId, mtu) {383    return new Promise((fulfill, reject) => {384      bleManager.requestMTU(peripheralId, mtu, (error, mtu) => {385        if (error) {386          reject(error);387        } else {388          fulfill(mtu);389        }390      });391    });392  }393}...Storage.js
Source:Storage.js  
...79    return new Promise((fulfill, reject) => {80      this._execute("SELECT * from " + this.schema + ".bot_sessions WHERE eth_address = $1", [address], (err, result) => {81        if (err) { Logger.error(err) }82        if (!err && result.rows.length > 0) {83          fulfill(result.rows[0].data);84        } else {85          fulfill({86            address: address87          });88        }89      });90    });91  }92  updateBotSession(address, data) {93    let query = `INSERT INTO ${this.schema}.bot_sessions (eth_address, data)94                 VALUES ($1, $2)95                 ON CONFLICT (eth_address) DO UPDATE96                 SET data = $2`;97    return new Promise((fulfill, reject) => {98      this._execute(query, [address, data], (err, result) => {99        if (err) { Logger.error(err); reject(err); }100        else { fulfill(); }101      });102    });103  }104  removeBotSession(address) {105    return new Promise((fulfill, reject) => {106      this._execute("DELETE from " + this.schema + ".bot_sessions WHERE eth_address = $1", [address], (err, result) => {107        if (err) { Logger.error(err); reject(err); }108        else { fulfill(); }109      });110    });111  }112  setKey(key, value) {113    let type = get_type(value);114    if (type == 'json') {115      value = JSON.stringify(value);116    } else {117      value = value.toString();118    }119    let query = `INSERT INTO ${this.schema}.key_value_store (key, value, type)120                 VALUES ($1, $2, $3)121                 ON CONFLICT (key) DO UPDATE122                 SET value = $2, type = $3`;123    return new Promise((fulfill, reject) => {124      this._execute(query, [key, value, type], (err, result) => {125        if (err) { Logger.error(err); reject(err); }126        else { fulfill(); }127      });128    });129  }130  getKey(key) {131    return new Promise((fulfill, reject) => {132      this._execute("SELECT * FROM " + this.schema + ".key_value_store WHERE key = $1", [key], (err, result) => {133        if (err) { Logger.error(err); }134        if (result && result.rows.length > 0) {135          result = result.rows[0];136          if (result.type == 'json') {137            fulfill(JSON.parse(result.value));138          }139          else if (result.type == 'float') {140            fulfill(parseFloat(result.value));141          } else if (result.type == 'int') {142            fulfill(parseInt(result.value));143          } else {144            fulfill(result.value);145          }146        } else {147          fulfill(null);148        }149      });150    });151  }152}153function parse_sqlite_url(u) {154  if (u === 'sqlite://') {155    return {file: ':memory:'};156  } else {157    let p = u.slice(9);158    if (p[0] == '/') {159      p = p.slice(1);160    }161    return {file: p};162  }163}164class SqliteStore {165  constructor(config) {166    if (typeof config === 'object') {167      if (config.url) {168        config = parse_sqlite_url(config.url);169      }170    } else if (typeof config === 'string') {171      config = parse_sqlite_url(config);172    }173    this.config = config;174    this.db = new sqlite3.Database(this.config.file);175  }176  loadBotSession(address) {177    return new Promise((fulfill, reject) => {178      this.db.get("SELECT * from bot_sessions WHERE eth_address = ?", [address], (err, result) => {179        if (err) { Logger.error(err); }180        if (!err && result && result.data) {181          result = JSON.parse(result.data);182        } else {183          result = {184            address: address185          };186        }187        fulfill(result);188      });189    });190  }191  updateBotSession(address, data) {192    data = JSON.stringify(data);193    return new Promise((fulfill, reject) => {194      this.db.get("SELECT 1 FROM bot_sessions WHERE eth_address = ?", [address], (err, result) => {195        if (err) { Logger.error(err); reject(err); }196        else if (result) {197          // update198          this.db.run("UPDATE bot_sessions SET data = ? WHERE eth_address = ?", [data, address], (err, result) => {199            if (err) { Logger.error(err); reject(err); }200            else { fulfill(); }201          });202        } else {203          // insert204          this.db.run("INSERT INTO bot_sessions (eth_address, data) VALUES (?, ?)", [address, data], (err, result) => {205            if (err) { Logger.error(err); }206            else { fulfill(); }207          });208        }209      });210    });211  }212  removeBotSession(address, callback) {213    return new Promise((fulfill, reject) => {214      this.db.run("DELETE from bot_sessions WHERE eth_address = ?", [address], (err, result) => {215        if (err) { Logger.error(err); reject(err); }216        else { fulfill(); }217      });218    });219  }220  setKey(key, value) {221    let type = get_type(value);222    if (type == 'json') {223      value = JSON.stringify(value);224    } else {225      value = value.toString();226    }227    return new Promise((fulfill, reject) => {228      this.db.get("SELECT 1 FROM key_value_store WHERE key = ?", [key], (err, result) => {229        if (err) { Logger.error(err); reject(err); }230        else if (result) {231          this.db.run("UPDATE key_value_store SET value = ?, type = ? WHERE key = ?", [value, type, key], (err, result) => {232            if (err) { Logger.error(err); reject(err); }233            else { fulfill(); }234          });235        } else {236          this.db.run("INSERT INTO key_value_store (key, value, type) VALUES (?, ?, ?)", [key, value, type], (err, result) => {237            if (err) { Logger.error(err); reject(err); }238            else { fulfill(); }239          });240        }241      });242    });243  }244  getKey(key) {245    return new Promise((fulfill, reject) => {246      this.db.get("SELECT * FROM key_value_store WHERE key = ?", [key], (err, result) => {247        if (err) { Logger.error(err); }248        if (result) {249          if (result.type == 'json') {250            fulfill(JSON.parse(result.value));251          }252          else if (result.type == 'float') {253            fulfill(parseFloat(result.value));254          } else if (result.type == 'int') {255            fulfill(parseInt(result.value));256          } else {257            fulfill(result.value);258          }259        } else {260          fulfill(null);261        }262      });263    });264  }265}266module.exports = {267  PSQLStore: PSQLStore,268  SqliteStore: SqliteStore,269  parse_psql_url: parse_psql_url,270  parse_sqlite_url: parse_sqlite_url...can_fulfill_intent.py
Source:can_fulfill_intent.py  
1# coding: utf-82#3# Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.4#5# Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file6# except in compliance with the License. A copy of the License is located at7#8# http://aws.amazon.com/apache2.0/9#10# or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS,11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for12# the specific language governing permissions and limitations under the License.13#14import pprint15import re  # noqa: F40116import six17import typing18from enum import Enum19if typing.TYPE_CHECKING:20    from typing import Dict, List, Optional21    from datetime import datetime22    from ask_sdk_model.canfulfill.can_fulfill_intent_values import CanFulfillIntentValues23    from ask_sdk_model.canfulfill.can_fulfill_slot import CanFulfillSlot24class CanFulfillIntent(object):25    """26    CanFulfillIntent represents the response to canFulfillIntentRequest includes the details about whether the skill can understand and fulfill the intent request with detected slots.27    :param can_fulfill: 28    :type can_fulfill: (optional) ask_sdk_model.canfulfill.can_fulfill_intent_values.CanFulfillIntentValues29    :param slots: A map that represents skill's detailed response to each detected slot within the intent such as if skill can understand and fulfill the detected slot. This supplements the overall canFulfillIntent response and help Alexa make better ranking and arbitration decisions. The key is the name of the slot. The value is an object of type CanFulfillSlot.30    :type slots: (optional) dict(str, ask_sdk_model.canfulfill.can_fulfill_slot.CanFulfillSlot)31    """32    deserialized_types = {33        'can_fulfill': 'ask_sdk_model.canfulfill.can_fulfill_intent_values.CanFulfillIntentValues',34        'slots': 'dict(str, ask_sdk_model.canfulfill.can_fulfill_slot.CanFulfillSlot)'35    }36    attribute_map = {37        'can_fulfill': 'canFulfill',38        'slots': 'slots'39    }40    def __init__(self, can_fulfill=None, slots=None):41        # type: (Optional[CanFulfillIntentValues], Optional[Dict[str, CanFulfillSlot]]) -> None42        """CanFulfillIntent represents the response to canFulfillIntentRequest includes the details about whether the skill can understand and fulfill the intent request with detected slots.43        :param can_fulfill: 44        :type can_fulfill: (optional) ask_sdk_model.canfulfill.can_fulfill_intent_values.CanFulfillIntentValues45        :param slots: A map that represents skill's detailed response to each detected slot within the intent such as if skill can understand and fulfill the detected slot. This supplements the overall canFulfillIntent response and help Alexa make better ranking and arbitration decisions. The key is the name of the slot. The value is an object of type CanFulfillSlot.46        :type slots: (optional) dict(str, ask_sdk_model.canfulfill.can_fulfill_slot.CanFulfillSlot)47        """48        self.__discriminator_value = None49        self.can_fulfill = can_fulfill50        self.slots = slots51    def to_dict(self):52        # type: () -> Dict[str, object]53        """Returns the model properties as a dict"""54        result = {}55        for attr, _ in six.iteritems(self.deserialized_types):56            value = getattr(self, attr)57            if isinstance(value, list):58                result[attr] = list(map(59                    lambda x: x.to_dict() if hasattr(x, "to_dict") else60                    x.value if isinstance(x, Enum) else x,61                    value62                ))63            elif isinstance(value, Enum):64                result[attr] = value.value65            elif hasattr(value, "to_dict"):66                result[attr] = value.to_dict()67            elif isinstance(value, dict):68                result[attr] = dict(map(69                    lambda item: (item[0], item[1].to_dict())70                    if hasattr(item[1], "to_dict") else71                    (item[0], item[1].value)72                    if isinstance(item[1], Enum) else item,73                    value.items()74                ))75            else:76                result[attr] = value77        return result78    def to_str(self):79        # type: () -> str80        """Returns the string representation of the model"""81        return pprint.pformat(self.to_dict())82    def __repr__(self):83        # type: () -> str84        """For `print` and `pprint`"""85        return self.to_str()86    def __eq__(self, other):87        # type: (object) -> bool88        """Returns true if both objects are equal"""89        if not isinstance(other, CanFulfillIntent):90            return False91        return self.__dict__ == other.__dict__92    def __ne__(self, other):93        # type: (object) -> bool94        """Returns true if both objects are not equal"""...can_fulfill_slot.py
Source:can_fulfill_slot.py  
1# coding: utf-82#3# Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.4#5# Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file6# except in compliance with the License. A copy of the License is located at7#8# http://aws.amazon.com/apache2.0/9#10# or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS,11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for12# the specific language governing permissions and limitations under the License.13#14import pprint15import re  # noqa: F40116import six17import typing18from enum import Enum19if typing.TYPE_CHECKING:20    from typing import Dict, List, Optional21    from datetime import datetime22    from ask_sdk_model.canfulfill.can_fulfill_slot_values import CanFulfillSlotValues23    from ask_sdk_model.canfulfill.can_understand_slot_values import CanUnderstandSlotValues24class CanFulfillSlot(object):25    """26    This represents skill's capability to understand and fulfill each detected slot.27    :param can_understand: 28    :type can_understand: (optional) ask_sdk_model.canfulfill.can_understand_slot_values.CanUnderstandSlotValues29    :param can_fulfill: 30    :type can_fulfill: (optional) ask_sdk_model.canfulfill.can_fulfill_slot_values.CanFulfillSlotValues31    """32    deserialized_types = {33        'can_understand': 'ask_sdk_model.canfulfill.can_understand_slot_values.CanUnderstandSlotValues',34        'can_fulfill': 'ask_sdk_model.canfulfill.can_fulfill_slot_values.CanFulfillSlotValues'35    }36    attribute_map = {37        'can_understand': 'canUnderstand',38        'can_fulfill': 'canFulfill'39    }40    def __init__(self, can_understand=None, can_fulfill=None):41        # type: (Optional[CanUnderstandSlotValues], Optional[CanFulfillSlotValues]) -> None42        """This represents skill's capability to understand and fulfill each detected slot.43        :param can_understand: 44        :type can_understand: (optional) ask_sdk_model.canfulfill.can_understand_slot_values.CanUnderstandSlotValues45        :param can_fulfill: 46        :type can_fulfill: (optional) ask_sdk_model.canfulfill.can_fulfill_slot_values.CanFulfillSlotValues47        """48        self.__discriminator_value = None49        self.can_understand = can_understand50        self.can_fulfill = can_fulfill51    def to_dict(self):52        # type: () -> Dict[str, object]53        """Returns the model properties as a dict"""54        result = {}55        for attr, _ in six.iteritems(self.deserialized_types):56            value = getattr(self, attr)57            if isinstance(value, list):58                result[attr] = list(map(59                    lambda x: x.to_dict() if hasattr(x, "to_dict") else60                    x.value if isinstance(x, Enum) else x,61                    value62                ))63            elif isinstance(value, Enum):64                result[attr] = value.value65            elif hasattr(value, "to_dict"):66                result[attr] = value.to_dict()67            elif isinstance(value, dict):68                result[attr] = dict(map(69                    lambda item: (item[0], item[1].to_dict())70                    if hasattr(item[1], "to_dict") else71                    (item[0], item[1].value)72                    if isinstance(item[1], Enum) else item,73                    value.items()74                ))75            else:76                result[attr] = value77        return result78    def to_str(self):79        # type: () -> str80        """Returns the string representation of the model"""81        return pprint.pformat(self.to_dict())82    def __repr__(self):83        # type: () -> str84        """For `print` and `pprint`"""85        return self.to_str()86    def __eq__(self, other):87        # type: (object) -> bool88        """Returns true if both objects are equal"""89        if not isinstance(other, CanFulfillSlot):90            return False91        return self.__dict__ == other.__dict__92    def __ne__(self, other):93        # type: (object) -> bool94        """Returns true if both objects are not equal"""...test-bi-promise-proto-then-arg-validation.js
Source:test-bi-promise-proto-then-arg-validation.js  
1// .then() arguments are checked for callability.  If they are not callable,2// they will behave the same as a missing value with no TypeError.3// https://www.ecma-international.org/ecma-262/6.0/#sec-performpromisethen4/*---5{6    "skip": true7}8---*/9/*===10done11P fulfill 1 12312P fulfill 2 12313P fulfill 3 12314P fulfill 4 12315P fulfill 5 12316P fulfill 6 12317P fulfill 7 12318P fulfill 8 12319P fulfill 9 12320P fulfill 10 12321P fulfill 11 12322P fulfill 12 12323P fulfill 13 12324P fulfill 14 12325P fulfill 15 12326P fulfill 16 12327P fulfill 17 12328P fulfill 18 12329P fulfill 19 12330P fulfill 20 12331P fulfill 21 12332P fulfill 22 12333P fulfill 23 12334P fulfill 24 12335P fulfill 25 12336P fulfill 26 12337Q reject 1 32138Q reject 2 32139Q reject 3 32140Q reject 4 32141Q reject 5 32142Q reject 6 32143Q reject 7 32144Q reject 8 32145Q reject 9 32146Q reject 10 32147Q reject 11 32148Q reject 12 32149Q reject 13 32150Q reject 14 32151Q reject 15 32152Q reject 16 32153Q reject 17 32154Q reject 18 32155Q reject 19 32156Q reject 20 32157Q reject 21 32158Q reject 22 32159Q reject 23 32160Q reject 24 32161Q reject 25 32162Q reject 26 32163===*/64var resolveP, rejectP;65var P = new Promise(function (resolve, reject) {66    resolveP = resolve;67    rejectP = reject;68});69var resolveQ, rejectQ;70var Q = new Promise(function (resolve, reject) {71    resolveQ = resolve;72    rejectQ = reject;73});74var values = [75    void 0, null, true, false, -1/0, -123, -0, 0, 123, 1/0, 0/0,76    { foo: 'bar' }, [ 1, 2, 3 ]77];78var counter = 0;79values.forEach(function (v) {80    var idx = ++counter;81    var prom = P.then(v).then(function (v) {82        print('P fulfill', idx, v);83    }, function (e) {84        print('P reject', idx, e);85    });86    var prom = Q.then(v).then(function (v) {87        print('Q fulfill', idx, v);88    }, function (e) {89        print('Q reject', idx, e);90    });91});92values.forEach(function (v) {93    var idx = ++counter;94    var prom = P.then(void 0, v).then(function (v) {95        print('P fulfill', idx, v);96    }, function (e) {97        print('P reject', idx, e);98    });99    var prom = Q.then(void 0, v).then(function (v) {100        print('Q fulfill', idx, v);101    }, function (e) {102        print('Q reject', idx, e);103    });104});105resolveP(123);106rejectQ(321);...Using AI Code Generation
1const { chromium } = require('playwright');2(async () => {3  const browser = await chromium.launch({ headless: false });4  const context = await browser.newContext();5  const page = await context.newPage();6  await page.fill('input[aria-label="Search"]', 'Playwright');7  await page.click('text=Google Search');8  await page.waitForSelector('text=Playwright is a Node library to automate Chromium, Firefox and WebKit with a single API');9  await page.screenshot({ path: `example.png` });10  await browser.close();11})();12const { chromium } = require('playwright');13(async () => {14  const browser = await chromium.launch({ headless: false });15  const context = await browser.newContext();16  const page = await context.newPage();17  await page.fill('input[aria-label="Search"]', 'Playwright');18  await page.click('text=Google Search');19  await page.waitForSelector('text=Playwright is a Node library to automate Chromium, Firefox and WebKit with a single API');20  await page.screenshot({ path: `example.png` });21  await browser.close();22})();23const { chromium } = require('playwright');24(async () => {25  const browser = await chromium.launch({ headless: false });26  const context = await browser.newContext();Using AI Code Generation
1const { chromium } = require('playwright');2(async () => {3  const browser = await chromium.launch();4  const context = await browser.newContext();5  const page = await context.newPage();6  await page.screenshot({ path: `example.png` });7  await browser.close();8})();Using AI Code Generation
1const { chromium } = require('playwright');2(async () => {3  const browser = await chromium.launch();4  const context = await browser.newContext();5  const page = await context.newPage();6  await page.screenshot({ path: `example.png` });7  await browser.close();8})();9const { chromium } = require('playwright');10(async () => {11  const browser = await chromium.launch();12  const context = await browser.newContext();13  const page = await context.newPage();14  await page.screenshot({ path: `example.png` });15  await browser.close();16})();17const { chromium } = require('playwright');18(async () => {19  const browser = await chromium.launch();20  const context = await browser.newContext();21  const page = await context.newPage();22  await page.screenshot({ path: `example.png` });23  await browser.close();24})();25const { chromium } = require('playwright');26(async () => {27  const browser = await chromium.launch();28  const context = await browser.newContext();29  const page = await context.newPage();30  await page.screenshot({ path: `example.png` });31  await browser.close();32})();33const { chromium } = require('playwright');34(async () => {35  const browser = await chromium.launch();36  const context = await browser.newContext();37  const page = await context.newPage();38  await page.screenshot({ path: `example.png` });39  await browser.close();40})();Using AI Code Generation
1const playwright = require('playwright');2(async () => {3  for (const browserType of ['chromium', 'webkit', 'firefox']) {4    const browser = await playwright[browserType].launch();5    const context = await browser.newContext();6    const page = await context.newPage();7    await page.click('[placeholder="Search"]');8    await page.fill('[placeholder="Search"]', 'Playwright');9    await page.press('[placeholder="Search"]', 'Enter');10    await page.click('text=Playwright');11    await context.close();12    await browser.close();13  }14})();Using AI Code Generation
1const { chromium } = require('playwright');2(async () => {3    const browser = await chromium.launch({ headless: false });4    const context = await browser.newContext();5    const page = await context.newPage();6    const title = await page.title();7    console.log("title is: ", title);8    await browser.close();9})();10const { chromium } = require('playwright');11(async () => {12    const browser = await chromium.launch({ headless: false });13    const context = await browser.newContext();14    const page = await context.newPage();15    const title = await page.title();16    console.log("title is: ", title);17    await browser.close();18})();19const { chromium } = require('playwright');20(async () => {21    const browser = await chromium.launch({ headless: false });22    const context = await browser.newContext();23    const page = await context.newPage();24    const title = await page.title();25    console.log("title is: ", title);26    await browser.close();27})();28const { chromium } = require('playwright');29(async () => {30    const browser = await chromium.launch({ headless: false });31    const context = await browser.newContext();32    const page = await context.newPage();33    const title = await page.title();34    console.log("title is: ", title);35    await browser.close();36})();Using AI Code Generation
1const { chromium } = require('playwright');2(async () => {3  const browser = await chromium.launch({ headless: false });4  const context = await browser.newContext();5  const page = await context.newPage();6  await page.click('#open-popup');7  const popup = await page.waitForEvent('popup');8  await popup.fill('#username', 'myusername');9  await popup.fill('#password', 'mypassword');10  await popup.click('button[type="submit"]');11  await popup.waitForLoadState();12  await browser.close();13})();14const { chromium } = require('playwright');15(async () => {16  const browser = await chromium.launch({ headless: false });17  const context = await browser.newContext();18  const page = await context.newPage();19  await page.click('#open-popup');20  const popup = await page.waitForEvent('popup');21  await popup.fill('#username', 'myusername');22  await popup.fill('#password', 'mypassword');23  await popup.click('button[type="submit"]');24  await popup.waitForLoadState();25  await browser.close();26})();Using AI Code Generation
1const { chromium } = require('playwright');2(async () => {3    const browser = await chromium.launch({headless: false, slowMo: 500});4    const context = await browser.newContext();5    const page = await context.newPage();6    await page.screenshot({ path: `example.png` });7    await browser.close();8  })();Using AI Code Generation
1const { chromium } = require('playwright');2(async () => {3  const browser = await chromium.launch();4  const page = await browser.newPage();5  const pageTitle = await page.title();6  console.log(pageTitle);7  await browser.close();8})();Using AI Code Generation
1const assert = require('assert');2const { chromium } = require('playwright');3const { expect } = require('chai');4const { describe, it } = require('mocha');5(async () => {6  const browser = await chromium.launch({ headless: false });7  const context = await browser.newContext();8  const page = await context.newPage();9  await page.fill('input[aria-label="Search"]', 'Playwright');10  await page.click('text=Google Search');11  await page.waitForNavigation();12  const title = await page.title();13  expect(title).to.contain('Playwright');14  await browser.close();15})();LambdaTest’s Playwright tutorial will give you a broader idea about the Playwright automation framework, its unique features, and use cases with examples to exceed your understanding of Playwright testing. This tutorial will give A to Z guidance, from installing the Playwright framework to some best practices and advanced concepts.
Get 100 minutes of automation test minutes FREE!!
