import time

body = '''
onactivate = (e) => e.waitUntil(clients.claim());
var resolve_wait_until;
var wait_until = new Promise(resolve => {
    resolve_wait_until = resolve;
  });
onmessage = (e) => {
    if (e.data == 'wait')
      e.waitUntil(wait_until);
    if (e.data == 'go')
      resolve_wait_until();
  };'''

def main(request, response):
    headers = [('Cache-Control', 'no-cache, must-revalidate'),
               ('Pragma', 'no-cache'),
               ('Content-Type', 'application/javascript')]

    skipWaiting = ''
    if 'skip-waiting' in request.GET:
      skipWaiting = 'skipWaiting();'

    return headers, '/* %s %s */ %s %s' % (time.time(), time.clock(), skipWaiting, body)