Best JavaScript code snippet using ava
request.js
Source:request.js  
1import axios from 'axios';2import moment from 'moment';3import { history } from 'react-router-dom';4import { stringify, parse } from 'qs';5import { notification } from 'antd';6import jsCookie from 'js-cookie';7import { startURL } from '../config/constant';8import store, { storeKeys } from './persistent-store';9let refreshTimeout;10let lastAccessTime;11export const baseURL = '/api';12export const contentType = {13  form: 'application/x-www-form-urlencoded',14  json: 'application/json',15};16export const headerKeys = {17  ContentType: 'Content-Type',18  Authorization: 'Authorization',19};20export const methods = {21  GET: 'GET',22  POST: 'POST',23  PUT: 'PUT',24  DELETE: 'DELETE',25  PATCH: 'PATCH',26  HEAD: 'HEAD',27  OPTIONS: 'OPTIONS',28};29// Get access token30export function getAccessToken() {31  const token = store.get(storeKeys.AccessToken);32  if (!token) {33    return '';34  }35  return token.access_token;36}37// Wrap the URL with the token38export function wrapURLWithToken(url) {39  const ss = url.split('?');40  const query = parse(ss[1]);41  query.accessToken = getAccessToken();42  return `${ss[0]}?${stringify(query)}`;43}44// ç»åº45export function logout() {46  console.log('Logout event');47  if (refreshTimeout) {48    clearTimeout(refreshTimeout);49  }50  //binhnt: Remove cookie51  jsCookie.remove('token');52  //Remove AccessToken53  store.remove(storeKeys.AccessToken);54  window.location = '#/login'55  // const { redirect } = parse(window.location.href.split('?')[1]);56  console.log("binhnt.request.logout: redirect = ", startURL)57  // if (window.location.pathname !== startURL + '/login' && !redirect) {58  // window.location = startURL + '/login';59  // window.history.replace({60  //   pathname: '/user/login',61  //   search: stringify({62  //     redirect: window.location.href,63  //   }),64  // });65  // }66}67// request æ¦æªå¨68function requestInterceptors(c) {69  const config = { ...c };70  const token = store.get(storeKeys.AccessToken);71  if (token) {72    // console.log(73    //   'binhnt.requestInterceptors: Token = ',74    //   token.access_token,75    //   headerKeys.Authorization76    // );77    config.headers[headerKeys.Authorization] = `${token.token_type} ${token.access_token}`;78  }79  return config;80}81// ajax请æ±82export default function request(url, options = {}) {83  // console.log('AccessToken: ', storeKeys.AccessToken);84  const oldToken = store.get(storeKeys.AccessToken);85  console.log("oldToken: ", oldToken);86  if (oldToken && oldToken.expires_at - lastAccessTime <= 0) {87    if (refreshTimeout) {88      clearTimeout(refreshTimeout);89    }90    console.log("binhnt.request: out of access time ")91    logout();92    // eslint-disable-next-line compat/compat93    return Promise.reject(new Error('The token has expired'));94  }95  lastAccessTime = moment().unix();96  const opts = { ...options };97  let showNotify = true;98  if (opts.hideNotify) {99    showNotify = false;100    delete opts.hideNotify;101  }102  const config = {103    method: methods.GET,104    baseURL,105    headers: {},106    transformRequest: (data, headers) => {107      switch (headers[headerKeys.ContentType]) {108        case contentType.json:109          return JSON.stringify(data);110        case contentType.form:111          return stringify(data);112        default:113          return data;114      }115    },116    paramsSerializer: params => {117      return stringify(params);118    },119    timeout: 60000,120    ...opts,121  };122  if (123    !(config.headers && config.headers[headerKeys.ContentType]) &&124    [methods.POST, methods.PUT, methods.PATCH].indexOf(config.method) > -1125  ) {126    config.headers[headerKeys.ContentType] = contentType.json;127  }128  const instance = axios.create(config);129  instance.interceptors.request.use(requestInterceptors);130  return instance131    .request({ url })132    .then(res => {133      const { data } = res;134      // console.log('request.request: Data: ', data, 'url', url);135      return data;136    })137    .catch(error => {138      const { response } = error;139      const { status, data } = response;140      if (status === 401 && data.error && data.error.code === 9999) {141        logout();142        return response;143      }144      if (showNotify) {145        let msg = 'Request error';146        if (status === 504) {147          msg = 'Not connected to server';148        } else if (data && data.error) {149          msg = data.error.message;150        }151        notification.error({152          message: `${config.baseURL}${url}`,153          description: msg,154        });155      }156      return response;157    });158}159// Put in the access token160export function setToken(token) {161  //binhnt: 1. Add cookies to access nextjs162  jsCookie.set('token', token.access_token);163  //binhnt: 2. Add Token to access Backend164  console.log("Set access token = ", token.expires_at)165  lastAccessTime = moment().unix();166  store.set(storeKeys.AccessToken, token);167  if (refreshTimeout) {168    clearTimeout(refreshTimeout);169  }170  // Renew the token 10 minutes in advance171  const timeout = token.expires_at - moment().unix() - 10;172  if (timeout > 0) {173    refreshTimeout = setTimeout(() => {174      const oldToken = store.get(storeKeys.AccessToken);175      if (oldToken && oldToken.expires_at - lastAccessTime <= 0) {176        if (refreshTimeout) {177          clearTimeout(refreshTimeout);178        }179        return;180      }181      request('/v1/pub/refresh-token', {182        method: methods.POST,183      }).then(res => {184        setToken(res);185      });186    }, timeout * 1000);187  }...request_cms.js
Source:request_cms.js  
1import axios from 'axios';2import moment from 'moment';3import { history } from 'react-router-dom';4import { stringify, parse } from 'qs';5import { notification } from 'antd';6import store, { storeKeys } from './persistent-store';7let refreshTimeout;8let lastAccessTime;9export const baseURL = '/cms';10export const contentType = {11  form: 'application/x-www-form-urlencoded',12  json: 'application/json',13};14export const headerKeys = {15  ContentType: 'Content-Type',16  Authorization: 'Authorization',17};18export const methods = {19  GET: 'GET',20  POST: 'POST',21  PUT: 'PUT',22  DELETE: 'DELETE',23  PATCH: 'PATCH',24  HEAD: 'HEAD',25  OPTIONS: 'OPTIONS',26};27// Get access token28export function getAccessToken() {29  const token = store.get(storeKeys.AccessToken);30  if (!token) {31    return '';32  }33  return token.access_token;34  return '';35}36// Wrap the URL with the token37export function wrapURLWithToken(url) {38  const ss = url.split('?');39  const query = parse(ss[1]);40  query.accessToken = getAccessToken();41  return `${ss[0]}?${stringify(query)}`;42}43// Sign out44export function logout() {45  if (refreshTimeout) {46    clearTimeout(refreshTimeout);47  }48  store.remove(storeKeys.AccessToken);49  const { redirect } = parse(window.location.href.split('?')[1]);50  if (window.location.pathname !== '/login' && !redirect) {51    window.location = '/login';52    // window.history.replace({53    //   pathname: '/user/login',54    //   search: stringify({55    //     redirect: window.location.href,56    //   }),57    // });58  }59}60// request Interceptor61function requestInterceptors(c) {62  const config = { ...c };63  const token = store.get(storeKeys.AccessToken);64  if (token) {65    config.headers[headerKeys.Authorization] = `${token.token_type} ${token.access_token}`;66  }67  return config;68}69// ajax request70export default function request(url, options = {}) {71  // console.log('request_cms.request: AccessToken: ', storeKeys.AccessToken);72  const oldToken = store.get(storeKeys.AccessToken);73  // console.log("oldToken: ", oldToken);74  if (oldToken && oldToken.expires_at - lastAccessTime <= 0) {75    if (refreshTimeout) {76      clearTimeout(refreshTimeout);77    }78    logout();79    // eslint-disable-next-line compat/compat80    return Promise.reject(new Error('The token has expired'));81  }82  lastAccessTime = moment().unix();83  const opts = { ...options };84  let showNotify = true;85  if (opts.hideNotify) {86    showNotify = false;87    delete opts.hideNotify;88  }89  const config = {90    method: methods.GET,91    baseURL,92    headers: {},93    transformRequest: (data, headers) => {94      switch (headers[headerKeys.ContentType]) {95        case contentType.json:96          return JSON.stringify(data);97        case contentType.form:98          return stringify(data);99        default:100          return data;101      }102    },103    paramsSerializer: params => {104      return stringify(params);105    },106    timeout: 60000,107    ...opts,108  };109  if (110    !(config.headers && config.headers[headerKeys.ContentType]) &&111    [methods.POST, methods.PUT, methods.PATCH].indexOf(config.method) > -1112  ) {113    config.headers[headerKeys.ContentType] = contentType.json;114  }115  const instance = axios.create(config);116  instance.interceptors.request.use(requestInterceptors);117  return instance118    .request({ url })119    .then(res => {120      const { data } = res;121      // console.log('request_cms.request: Data', data);122      return data;123    })124    .catch(error => {125      const { response } = error;126      const { status, data } = response;127      if (status === 401 && data.error && data.error.code === 9999) {128        logout();129        return response;130      }131      if (showNotify) {132        let msg = 'Request error';133        if (status === 504) {134          msg = 'Not connected to server';135        } else if (data && data.error) {136          msg = data.error.message;137        }138        notification.error({139          message: `${config.baseURL}${url}`,140          description: msg,141        });142      }143      return response;144    });145}146// Put in the access token147export function setToken(token) {148  lastAccessTime = token.expires_at;149  store.set(storeKeys.AccessToken, token);150  if (refreshTimeout) {151    clearTimeout(refreshTimeout);152  }153  // Renew the token 10 minutes in advance154  const timeout = token.expires_at - moment().unix() - 10;155  if (timeout > 0) {156    refreshTimeout = setTimeout(() => {157      const oldToken = store.get(storeKeys.AccessToken);158      if (oldToken && oldToken.expires_at - lastAccessTime <= 0) {159        if (refreshTimeout) {160          clearTimeout(refreshTimeout);161        }162        return;163      }164      request('/v1/pub/refresh-token', {165        method: methods.POST,166      }).then(res => {167        setToken(res);168      });169    }, timeout * 1000);170  }...index.js
Source:index.js  
1/* eslint-disable no-undef */2import EventEmitter from './EventEmitter';3export default class TokenManagement {4  event = null;5  isRefreshing = false;6  refreshTimeout = 3000;7  constructor({ isTokenValid, getAccessToken, onRefreshToken, refreshTimeout = 3000 }) {8    const event = new EventEmitter();9    this.refreshTimeout = refreshTimeout;10    event.on('refresh', () => {11      (async () => {12        try {13          const token = await getAccessToken();14          if (isTokenValid(token)) {15            event.emit('refreshDone', token);16          } else {17            event.emit('refreshing');18          }19        } catch (e) {}20      })();21    });22    event.on('refreshing', () => {23      if (this.isRefreshing) {24        return;25      }26      // fetch27      this.isRefreshing = true;28      const evtFire = false;29      onRefreshToken((newToken) => {30        this.event.emit('refreshDone', newToken);31        this.isRefreshing = false;32      });33      if (this.refreshTimeout) {34        setTimeout(() => {35          if (!evtFire) {36            this.event.emit('refreshDone', null);37            this.isRefreshing = false;38          }39        }, this.refreshTimeout);40      }41    });42    this.event = event;43  }44  getToken() {45    return new Promise((resolve) => {46      let isCalled = false;47      const refreshDoneHandler = (token) => {48        resolve(token);49        isCalled = true;50      };51      this.event.once('refreshDone', refreshDoneHandler);52      if (!isCalled) {53        this.event.emit('refresh');54      }55    });56  }57  inject(service) {58    return async (...args) => {59      const token = await this.getToken();60      const response = await service(token, ...args);61      return response;62    };63  }...Using AI Code Generation
1import {Component} from '@angular/core';2import {Idle, DEFAULT_INTERRUPTSOURCES} from '@ng-idle/core';3import {Keepalive} from '@ng-idle/keepalive';4@Component({5})6export class AppComponent {7  idleState = 'Not started.';8  timedOut = false;9  lastPing?: Date = null;10  constructor(private idle: Idle, private keepalive: Keepalive) {11    idle.setIdle(5);12    idle.setTimeout(5);13    idle.setInterrupts(DEFAULT_INTERRUPTSOURCES);14    idle.onIdleEnd.subscribe(() => this.idleState = 'No longer idle.');15    idle.onTimeout.subscribe(() => {16      this.idleState = 'Timed out!';17      this.timedOut = true;18    });19    idle.onIdleStart.subscribe(() => this.idleState = 'You\'ve gone idle!');20    idle.onTimeoutWarning.subscribe((countdown) => this.idleState = 'You will time out in ' + countdown + ' seconds!');21    keepalive.interval(15);22    keepalive.onPing.subscribe(() => this.lastPing = new Date());23    this.reset();24  }25  reset() {26    this.idle.watch();27    this.idleState = 'Started.';28    this.timedOut = false;29  }30  refreshTimeout() {31    this.idle.refreshTimeout();32  }33}Using AI Code Generation
1test('test', t => {2    t.plan(2);3    t.refreshTimeout(10000);4    const promise = new Promise((resolve, reject) => {5        setTimeout(() => {6            resolve('done');7        }, 2000);8    });9    return promise.then(result => {10        t.is(result, 'done');11    });12});13### .log(message)14test('test', t => {15    t.log('hello');16    t.log('world');17    t.pass();18});19### .debug(message)20test('test', t => {21    t.debug('hello');22    t.debug('world');23    t.pass();24});25### .snapshot([message], snapshot)26import fs from 'fs';27test('test', t => {28    t.snapshot(fs.readFileSync('test.js'));29});30### .throws(function|promise, [error, [message]])31import fs from 'fs';32test('test', t => {33    t.throws(() => {34        fs.readFileSync('non-existent-file.js');35    });36});37### .notThrows(function|promise, [message])38import fs from 'fs';39test('test', t => {40    t.notThrows(() => {41        fs.readFileSync('test.js');42    });43});44### .ifError(error, [message])45import fs from 'fs';46test('test', t =>Using AI Code Generation
1var refreshTimeout = require('refresh-timeout');2var timeout = refreshTimeout(function() {3  console.log('timeout expired');4}, 1000);5var interval = setInterval(function() {6  console.log('refreshing timeout');7  timeout.refresh();8}, 500);9setTimeout(function() {10  console.log('clearing interval');11  clearInterval(interval);12}, 10000);Using AI Code Generation
1var available = require('available');2available.refreshTimeout();3module.exports.refreshTimeout = function(){4}5var available = require('./available');6var available = require('available');7available.refreshTimeout();8module.exports.refreshTimeout = function(){9}10var available = require('available');11available.refreshTimeout();12module.exports.refreshTimeout = function(){13}Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!
