Example #1
0
export async function generateTypescript (columns: IColumn[], dir: string) {
  const DIR = resolve(dir);
  await removeAsync(DIR);
  await ensureDirAsync(DIR);

  const schemas = mapSchemas(columns);

  // tslint:disable-next-line:forin
  for (const schema in schemas) {
    const schemaDir = resolve(DIR, schema);

    let outputInterfaces = '';

    // tslint:disable-next-line:forin
    for (const table in schemas[schema]) {

      const interfaceName = normalizeTableName(table);
      const interfaceContent = schemas[schema][table].map(col => col.type).join('\n');

      outputInterfaces += `
        export interface ${ interfaceName } {
          ${ interfaceContent }
        }
      `;

    }

    await ensureDirAsync(schemaDir);
    await writeTypescriptFile(join(schemaDir, INDEX), outputInterfaces);
  }

  await writeTypescriptFile(join(DIR, INDEX), `
    ${ Object.keys(schemas).map(schema => `
      import * as ${ schema } from './${ schema }';
      export { ${ schema } };
    ` ).join('') }
  `);
}
Example #2
0
 promptToAddAssets().then(addAssets => {
     if (!addAssets) {
         return;
     }
     
     const paths = getPaths();
     
     return fs.ensureDirAsync(paths.vscodeFolder).then(() => {
         return Promise.all([
             addTasksJsonIfNecessary(info.DotNet, paths, operations),
             addLaunchJsonIfNecessary(info.DotNet, paths, operations)
         ]);
     });
 });
Example #3
0
async function writeTypescriptFile (filename: string, output: string) {
  const result = await processString('', output.trim(), {
    replace: false,
    verify: false,
    tsconfig: false,
    tslint: false,
    editorconfig: false,
    tsfmt: true,
    tsconfigFile: null,
    tslintFile: null,
    tsfmtFile: null,
    vscode: false,
    vscodeFile: null
  });

  await ensureDirAsync(dirname(filename));
  await writeFileAsync(filename, result.dest, { encoding: 'utf-8' });
}