Hex Artifact Content
Not logged in

Artifact 625239abba2c2410aee7799e175db6da9cb7a1eb:


0000: 69 6d 70 6f 72 74 20 70 61 74 68 20 66 72 6f 6d  import path from
0010: 20 27 70 61 74 68 27 3b 0a 69 6d 70 6f 72 74 20   'path';.import 
0020: 66 73 20 66 72 6f 6d 20 27 66 73 27 3b 0a 69 6d  fs from 'fs';.im
0030: 70 6f 72 74 20 75 72 6c 20 66 72 6f 6d 20 27 75  port url from 'u
0040: 72 6c 27 3b 0a 2f 2a 20 65 73 6c 69 6e 74 2d 64  rl';./* eslint-d
0050: 69 73 61 62 6c 65 20 69 6d 70 6f 72 74 2f 65 78  isable import/ex
0060: 74 65 6e 73 69 6f 6e 73 20 2a 2f 0a 69 6d 70 6f  tensions */.impo
0070: 72 74 20 7b 20 70 72 6f 74 6f 63 6f 6c 2c 20 61  rt { protocol, a
0080: 70 70 20 7d 20 66 72 6f 6d 20 27 65 6c 65 63 74  pp } from 'elect
0090: 72 6f 6e 27 3b 0a 2f 2a 20 65 73 6c 69 6e 74 2d  ron';./* eslint-
00a0: 65 6e 61 62 6c 65 20 69 6d 70 6f 72 74 2f 65 78  enable import/ex
00b0: 74 65 6e 73 69 6f 6e 73 20 2a 2f 0a 69 6d 70 6f  tensions */.impo
00c0: 72 74 20 63 6c 69 65 6e 74 20 66 72 6f 6d 20 27  rt client from '
00d0: 2e 2e 2f 66 66 69 2f 63 6c 69 65 6e 74 5f 6d 61  ../ffi/client_ma
00e0: 6e 61 67 65 72 27 3b 0a 0a 63 6f 6e 73 74 20 73  nager';..const s
00f0: 61 66 65 41 75 74 68 53 63 68 65 6d 65 20 3d 20  afeAuthScheme = 
0100: 27 73 61 66 65 2d 61 75 74 68 27 3b 0a 0a 63 6f  'safe-auth';..co
0110: 6e 73 74 20 69 73 44 65 76 4d 6f 64 65 20 3d 20  nst isDevMode = 
0120: 70 72 6f 63 65 73 73 2e 65 78 65 63 50 61 74 68  process.execPath
0130: 2e 6d 61 74 63 68 28 2f 5b 5c 5c 2f 5d 65 6c 65  .match(/[\\/]ele
0140: 63 74 72 6f 6e 2f 29 3b 0a 0a 63 6f 6e 73 74 20  ctron/);..const 
0150: 61 70 70 49 6e 66 6f 20 3d 20 7b 0a 20 20 69 64  appInfo = {.  id
0160: 3a 20 27 6e 65 74 2e 6d 61 69 64 73 61 66 65 2e  : 'net.maidsafe.
0170: 73 61 66 65 62 72 6f 77 73 65 72 27 2c 0a 20 20  safebrowser',.  
0180: 65 78 65 63 3a 20 69 73 44 65 76 4d 6f 64 65 20  exec: isDevMode 
0190: 3f 20 60 24 7b 70 72 6f 63 65 73 73 2e 65 78 65  ? `${process.exe
01a0: 63 50 61 74 68 7d 20 24 7b 61 70 70 2e 67 65 74  cPath} ${app.get
01b0: 41 70 70 50 61 74 68 28 29 7d 60 20 3a 20 61 70  AppPath()}` : ap
01c0: 70 2e 67 65 74 50 61 74 68 28 27 65 78 65 27 29  p.getPath('exe')
01d0: 2c 0a 20 20 76 65 6e 64 6f 72 3a 20 27 6d 61 69  ,.  vendor: 'mai
01e0: 64 73 61 66 65 27 2c 0a 20 20 6e 61 6d 65 3a 20  dsafe',.  name: 
01f0: 27 73 61 66 65 2d 62 72 6f 77 73 65 72 27 2c 0a  'safe-browser',.
0200: 20 20 69 63 6f 6e 3a 20 27 69 63 6f 6e 50 61 74    icon: 'iconPat
0210: 68 27 0a 7d 3b 0a 0a 63 6f 6e 73 74 20 72 65 67  h'.};..const reg
0220: 69 73 74 65 72 53 61 66 65 41 75 74 68 50 72 6f  isterSafeAuthPro
0230: 74 6f 63 6f 6c 20 3d 20 28 29 20 3d 3e 20 7b 0a  tocol = () => {.
0240: 20 20 63 6c 69 65 6e 74 2e 72 65 67 69 73 74 65    client.registe
0250: 72 55 72 69 53 63 68 65 6d 65 28 61 70 70 49 6e  rUriScheme(appIn
0260: 66 6f 2c 20 73 61 66 65 41 75 74 68 53 63 68 65  fo, safeAuthSche
0270: 6d 65 29 3b 0a 0a 20 20 70 72 6f 74 6f 63 6f 6c  me);..  protocol
0280: 2e 72 65 67 69 73 74 65 72 42 75 66 66 65 72 50  .registerBufferP
0290: 72 6f 74 6f 63 6f 6c 28 73 61 66 65 41 75 74 68  rotocol(safeAuth
02a0: 53 63 68 65 6d 65 2c 20 28 72 65 71 2c 20 63 62  Scheme, (req, cb
02b0: 29 20 3d 3e 20 7b 0a 20 20 20 20 63 6f 6e 73 74  ) => {.    const
02c0: 20 70 61 72 73 65 64 55 72 6c 20 3d 20 75 72 6c   parsedUrl = url
02d0: 2e 70 61 72 73 65 28 72 65 71 2e 75 72 6c 29 3b  .parse(req.url);
02e0: 0a 20 20 20 20 73 77 69 74 63 68 20 28 70 61 72  .    switch (par
02f0: 73 65 64 55 72 6c 2e 70 61 74 68 6e 61 6d 65 29  sedUrl.pathname)
0300: 20 7b 0a 20 20 20 20 20 20 63 61 73 65 20 27 2f   {.      case '/
0310: 62 75 6e 64 6c 65 2e 6a 73 27 3a 0a 20 20 20 20  bundle.js':.    
0320: 20 20 20 20 63 62 28 7b 0a 20 20 20 20 20 20 20      cb({.       
0330: 20 20 20 6d 69 6d 65 54 79 70 65 3a 20 27 61 70     mimeType: 'ap
0340: 70 6c 69 63 61 74 69 6f 6e 2f 6a 61 76 61 73 63  plication/javasc
0350: 72 69 70 74 27 2c 0a 20 20 20 20 20 20 20 20 20  ript',.         
0360: 20 64 61 74 61 3a 20 66 73 2e 72 65 61 64 46 69   data: fs.readFi
0370: 6c 65 53 79 6e 63 28 70 61 74 68 2e 72 65 73 6f  leSync(path.reso
0380: 6c 76 65 28 5f 5f 64 69 72 6e 61 6d 65 2c 20 27  lve(__dirname, '
0390: 62 75 6e 64 6c 65 2e 6a 73 27 29 29 0a 20 20 20  bundle.js')).   
03a0: 20 20 20 20 20 7d 29 3b 0a 20 20 20 20 20 20 20       });.       
03b0: 20 62 72 65 61 6b 3b 0a 20 20 20 20 20 20 63 61   break;.      ca
03c0: 73 65 20 27 2f 62 75 6e 64 6c 65 2e 6a 73 2e 6d  se '/bundle.js.m
03d0: 61 70 27 3a 0a 20 20 20 20 20 20 20 20 63 62 28  ap':.        cb(
03e0: 7b 0a 20 20 20 20 20 20 20 20 20 20 6d 69 6d 65  {.          mime
03f0: 54 79 70 65 3a 20 27 61 70 70 6c 69 63 61 74 69  Type: 'applicati
0400: 6f 6e 2f 6f 63 74 65 74 2d 73 74 72 65 61 6d 27  on/octet-stream'
0410: 2c 0a 20 20 20 20 20 20 20 20 20 20 64 61 74 61  ,.          data
0420: 3a 20 66 73 2e 72 65 61 64 46 69 6c 65 53 79 6e  : fs.readFileSyn
0430: 63 28 70 61 74 68 2e 72 65 73 6f 6c 76 65 28 5f  c(path.resolve(_
0440: 5f 64 69 72 6e 61 6d 65 2c 20 27 62 75 6e 64 6c  _dirname, 'bundl
0450: 65 2e 6a 73 2e 6d 61 70 27 29 29 0a 20 20 20 20  e.js.map')).    
0460: 20 20 20 20 7d 29 3b 0a 20 20 20 20 20 20 20 20      });.        
0470: 62 72 65 61 6b 3b 0a 20 20 20 20 20 20 64 65 66  break;.      def
0480: 61 75 6c 74 3a 0a 20 20 20 20 20 20 20 20 63 62  ault:.        cb
0490: 28 7b 20 6d 69 6d 65 54 79 70 65 3a 20 27 74 65  ({ mimeType: 'te
04a0: 78 74 2f 68 74 6d 6c 27 2c 20 64 61 74 61 3a 20  xt/html', data: 
04b0: 66 73 2e 72 65 61 64 46 69 6c 65 53 79 6e 63 28  fs.readFileSync(
04c0: 70 61 74 68 2e 72 65 73 6f 6c 76 65 28 5f 5f 64  path.resolve(__d
04d0: 69 72 6e 61 6d 65 2c 20 27 61 70 70 2e 68 74 6d  irname, 'app.htm
04e0: 6c 27 29 29 20 7d 29 3b 0a 20 20 20 20 20 20 20  l')) });.       
04f0: 20 62 72 65 61 6b 3b 0a 20 20 20 20 7d 0a 20 20   break;.    }.  
0500: 7d 2c 20 28 65 72 72 29 20 3d 3e 20 7b 0a 20 20  }, (err) => {.  
0510: 20 20 69 66 20 28 65 72 72 29 20 63 6f 6e 73 6f    if (err) conso
0520: 6c 65 2e 65 72 72 6f 72 28 27 46 61 69 6c 65 64  le.error('Failed
0530: 20 74 6f 20 72 65 67 69 73 74 65 72 20 70 72 6f   to register pro
0540: 74 6f 63 6f 6c 27 29 3b 0a 20 20 7d 29 3b 0a 7d  tocol');.  });.}
0550: 3b 0a 0a 63 6f 6e 73 74 20 73 63 68 65 6d 65 20  ;..const scheme 
0560: 3d 20 7b 0a 20 20 73 63 68 65 6d 65 3a 20 73 61  = {.  scheme: sa
0570: 66 65 41 75 74 68 53 63 68 65 6d 65 2c 0a 20 20  feAuthScheme,.  
0580: 6c 61 62 65 6c 3a 20 27 53 41 46 45 20 41 75 74  label: 'SAFE Aut
0590: 68 65 6e 74 69 63 61 74 6f 72 27 2c 0a 20 20 69  henticator',.  i
05a0: 73 53 74 61 6e 64 61 72 64 55 52 4c 3a 20 74 72  sStandardURL: tr
05b0: 75 65 2c 0a 20 20 69 73 49 6e 74 65 72 6e 61 6c  ue,.  isInternal
05c0: 3a 20 74 72 75 65 2c 0a 20 20 72 65 67 69 73 74  : true,.  regist
05d0: 65 72 3a 20 72 65 67 69 73 74 65 72 53 61 66 65  er: registerSafe
05e0: 41 75 74 68 50 72 6f 74 6f 63 6f 6c 0a 7d 3b 0a  AuthProtocol.};.
05f0: 0a 65 78 70 6f 72 74 20 64 65 66 61 75 6c 74 20  .export default 
0600: 73 63 68 65 6d 65 3b 0a                          scheme;.