import enigma from 'enigma.js';

export default function connect() {
  const loadSchema = () =>
    fetch('https://unpkg.com/enigma.js/schemas/12.2015.0.json').then((response) => response.json());

  const createConnection = () =>
    loadSchema().then((schema) =>
      enigma
        .create({
          schema,
          url: `ws://${window.location.hostname || 'localhost'}:9076/app/${Date.now()}`,
        })
        .open()
        .then((qix) => qix.createSessionApp())
    );

  return createConnection().then((app) =>
    app
      .setScript(
        `
        Characters:
        Load Chr(RecNo()+Ord('A')-1) as Alpha, RecNo() as Num autogenerate 26;

        ASCII:
        Load
         if(RecNo()>=65 and RecNo()<=90,RecNo()-64) as Num,
         Chr(RecNo()) as AsciiAlpha,
         RecNo() as AsciiNum
        autogenerate 255
         Where (RecNo()>=32 and RecNo()<=126) or RecNo()>=160 ;

        Transactions:
        Load
         TransLineID,
         TransID,
         mod(TransID,26)+1 as Num,
         Pick(Ceil(3*Rand1),'A','B','C') as Dim1,
         Pick(Ceil(6*Rand1),'a','b','c','d','e','f') as Dim2,
         Pick(Ceil(3*Rand()),'X','Y','Z') as Dim3,
         Round(1000*Rand()*Rand()*Rand1) as Expression1,
         Round(  10*Rand()*Rand()*Rand1) as Expression2,
         Round(Rand()*Rand1,0.00001) as Expression3;
        Load
         Rand() as Rand1,
         IterNo() as TransLineID,
         RecNo() as TransID
        Autogenerate 1000
         While Rand()<=0.5 or IterNo()=1;
        `
      )
      .then(() => app.doReload().then(() => app))
  );
}
