Skip to content

Commit 4b3cd4c

Browse files
author
Esteban Munoz Facusse
committed
cleaning up code, transpiling needs work
1 parent a398425 commit 4b3cd4c

File tree

7 files changed

+160
-56
lines changed

7 files changed

+160
-56
lines changed

prettier.config.json .prettierrc

File renamed without changes.

package-lock.json

+127
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+1
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242
"@types/react-dom": "~16.8.0",
4343
"css-loader": "^2.1.1",
4444
"just-stack-uifabric": ">=0.9.0",
45+
"pretty-quick": "^1.11.1",
4546
"ts-loader": "^6.0.1",
4647
"typescript": "^3.5.1",
4748
"webpack-bundle-analyzer": "^3.3.2"

src/components/App.tsx

+6-15
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import React from 'react';
22
import { PrimaryButton, Stack, Label, mergeStyleSets } from 'office-ui-fabric-react';
3-
// import { ITranspileOutput } from '../transpiler/transpile.types';
4-
import { transpile, _evalCode, transpileTSW } from '../transpiler/transpile';
3+
import { transpileTSW, _evalCode } from '../transpiler/transpile';
4+
import { IEvalCode, ITranspileOutput } from '../transpiler/transpile.types'
55

66
const classNames = mergeStyleSets({
77
code: {
@@ -42,20 +42,10 @@ export class App extends React.Component {
4242
editorHidden: true
4343
};
4444

45-
public componentDidmount(){
46-
const reactInit = `{
47-
react: "React"
48-
},`;
49-
try{
50-
eval(reactInit);
51-
}catch(ex){
52-
console.log(ex.message)
53-
}
54-
}
55-
5645
private onChange = (newVal: string, editor: any) => {
57-
const rendered = _evalCode(transpile(newVal)!.outputString!);
58-
transpileTSW(newVal, editor)
46+
console.log( transpileTSW(editor).outputString)
47+
const transpiledCode: ITranspileOutput = transpileTSW(editor)
48+
const rendered: IEvalCode = transpiledCode.outputString ? _evalCode(transpiledCode.outputString) : { error: transpiledCode.error };
5949
if(rendered.outputHTML){
6050
this.setState({
6151
renderedCode: rendered.outputHTML,
@@ -67,6 +57,7 @@ export class App extends React.Component {
6757
error: rendered.error
6858
});
6959
}
60+
console.log(transpiledCode)
7061
};
7162

7263
private buttonClicked = (): void => {

src/components/Editor.tsx

+7-7
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,13 @@ export class Editor extends React.Component<IEditorProps> {
3131
language: this.props.language
3232
});
3333

34-
monaco.languages.typescript.typescriptDefaults.setCompilerOptions({
35-
target: monaco.languages.typescript.ScriptTarget.ES2015,
36-
jsx: monaco.languages.typescript.JsxEmit.React,
37-
experimentalDecorators: true,
38-
preserveConstEnums: true,
39-
lib: ['es5', 'dom']
40-
})
34+
// monaco.languages.typescript.typescriptDefaults.setCompilerOptions({
35+
// target: monaco.languages.typescript.ScriptTarget.ES2015,
36+
// jsx: monaco.languages.typescript.JsxEmit.React,
37+
// experimentalDecorators: true,
38+
// preserveConstEnums: true,
39+
// lib: ['es5', 'dom']
40+
// })
4141

4242
this.editor.onDidChangeModelContent(event => {
4343
this.props.onChange(this.editor!.getValue(), this.editor.getModel().uri);

src/transpiler/monacoTypescriptWorker.d.ts

+11-1
Original file line numberDiff line numberDiff line change
@@ -45,4 +45,14 @@ export interface ICreateData {
4545
compilerOptions: ts.CompilerOptions;
4646
extraLibs: IExtraLibs;
4747
}
48-
export declare function create(ctx: IWorkerContext, createData: ICreateData): TypeScriptWorker;
48+
export declare function create(ctx: IWorkerContext, createData: ICreateData): TypeScriptWorker;
49+
50+
export interface EmitOutput {
51+
outputFiles: OutputFile[];
52+
emitSkipped: boolean;
53+
}
54+
interface OutputFile {
55+
name: string;
56+
writeByteOrderMark: boolean;
57+
text: string;
58+
}

src/transpiler/transpile.tsx

+8-33
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,21 @@
1-
import * as ts from 'typescript';
21
import { ITranspileOutput, IEvalCode } from './transpile.types';
3-
// import * as typescriptServices from 'monaco-editor/esm/vs/language/typescript/lib/typescriptServices';
42
import * as monaco from 'monaco-editor';
5-
import {TypeScriptWorker} from './monacoTypescriptWorker';
3+
import { TypeScriptWorker, EmitOutput } from './monacoTypescriptWorker';
64

7-
export function transpile(code: string): ITranspileOutput {
8-
let output: ITranspileOutput ={
9-
outputString: undefined,
10-
error: undefined
11-
};
12-
try{
13-
output.outputString =
14-
// ts.transpile(code, )
15-
ts.transpileModule(code, {
16-
compilerOptions: {
17-
module: ts.ModuleKind.ES2015,
18-
alwaysStrict: true,
19-
jsxFactory: 'React.createElement',
20-
jsx: ts.JsxEmit.React,
21-
}
22-
}).outputText;
23-
return output
24-
}catch(ex){
25-
output.error = ex.message;
26-
return output;
27-
}
28-
}
29-
30-
//const text: string = "hello world";
31-
// ReactDOM.render(<div>{text}</div>, document.getElementById('output'));
32-
33-
export function transpileTSW(code: string, model: any): ITranspileOutput {
5+
export function transpileTSW(model: any): ITranspileOutput {
346
let transpiledOutput: ITranspileOutput ={
357
outputString: undefined,
368
error: undefined
379
};
3810
try{
3911
monaco.languages.typescript.getTypeScriptWorker()
4012
.then(_worker=>{_worker(model)
41-
.then((worker: TypeScriptWorker)=>{
42-
worker.getEmitOutput(model.toString()).then((output: ts.EmitOutput) =>{ transpiledOutput.outputString = output.outputFiles[0].text});
43-
})})
13+
.then((worker: TypeScriptWorker)=>{ worker.getEmitOutput(model.toString())
14+
.then((output: EmitOutput) =>{
15+
transpiledOutput.outputString = output.outputFiles[0].text;
16+
});
17+
});
18+
});
4419
}catch(ex){
4520
transpiledOutput.error = ex.message;
4621
}

0 commit comments

Comments
 (0)