Skip to content

Commit cbe8661

Browse files
save file
1 parent 12c44ba commit cbe8661

1 file changed

Lines changed: 330 additions & 0 deletions

File tree

Lines changed: 330 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,330 @@
1+
2+
3+
<!-- headers
4+
cross-origin-isolate
5+
-->
6+
7+
8+
<html>
9+
10+
11+
<head>
12+
<meta charset=utf-8>
13+
14+
<title>
15+
</title>
16+
17+
<base href='https://ext-code.com/npm/espree-browser/scripts/espree-browser-esm.js'>
18+
<link rel=canonical href='https://ext-code.com/npm/espree-browser/scripts/espree-browser-esm.js'>
19+
20+
<meta name=viewport content='width=device-width, initial-scale=1'>
21+
<link rel=icon type='image/png' href='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAsCAMAAAAgsQpJAAAAWlBMVEVHcExXpP9XpP9XpP9XpP9XpP9XpP9bpv9WpP9XpP9XpP9XpP9XpP9Wo/9XpP9XpP9XpP9XpP9XpP9XpP9Zpv9WpP9XpP+cyv+Txf9/uv91tf9iqv+KwP9rr/9r+fBYAAAAF3RSTlMAHeFk6nAK/Xs0BNNJwicTpLfdP/WSXXgcQWoAAAGfSURBVDjLvZRZtoMgEAWFqCgqGDCRqfe/zQeSAQIZvl7lHPNTQjf2pWkC6HqqMvdNRn8mdbZLbiJhVA1NSG4iofcablvbp9lzzoQulztEeXqYbJ0mQWyJUbsjy7klQxT9K0ONhYBSBgDsEpfsMGpqXIiFsP1uUpFmRBFcNFORreeEpTtEqw0JZiqiy5pyirV7iH7ZugJljEn8g/j4EKlIUQ1aiuOES6axFHltyq68FH+u8Wexl3OJ7CvNiLZEVJqhY43+P5rhXWVyO1SKbJlKlrHhUaTPZnzAMsbjfOSMjXMwzZLReo1XvEVu18DWDrSMQrg4wOUYgYoorKzpF/NyE2jMiihcUCIqozLxhSgq0Lu2GtwX0VnrdgMKrH6KlD8DwOkh6hBqZY3f3UfxLvooiBshAUEE4rd0x8NadRf5tbsTEhBEB35nbVUs4VONyq8JEL0vXWt9lKiSrtMo+AQ8zlGrlwNPoyDGD1+mzxNAV6tzYOLV6RnPcSTF1t5mcw5jJlnBKA/mdojzGWZ8xi1+R4ulH8Hj5//l6T2SPsr5A6avRJ8t3CbuAAAAAElFTkSuQmCC'>
22+
23+
<script src='https://libs.ext-code.com/js/dom/component/v3.0/component.js?hdr'></script>
24+
25+
<script init>
26+
console.clear();
27+
console.log('srcdoc.html');
28+
console.log();
29+
console.json=v=>console.log(JSON.stringify(v));
30+
var df=true,version='v2.0'
31+
;
32+
33+
var ext;
34+
var $;
35+
var datatype;
36+
var menumod;
37+
var keydown;
38+
var debug;
39+
var github;
40+
41+
var menu;
42+
43+
44+
var term;
45+
var webcontainer;
46+
var files = {};
47+
48+
49+
var packages = ['espree'];
50+
var filename = 'espree.m.js';
51+
52+
53+
54+
console.log(typeof ready);
55+
56+
async function ready(){
57+
console.log('ready');
58+
59+
60+
var {Terminal} = await import('https://cdn.jsdelivr.net/npm/@xterm/xterm/+esm');
61+
var {FitAddon} = await import('https://cdn.jsdelivr.net/npm/@xterm/addon-fit/+esm');
62+
63+
term = new Terminal();
64+
var fitAddon = new FitAddon();
65+
term.loadAddon(fitAddon);
66+
term.open(terminal);
67+
fitAddon.fit();
68+
69+
70+
71+
72+
for(var key in files){
73+
74+
files[key] = {file:{contents:files[key]}};
75+
76+
}//for
77+
78+
79+
console.log('download ...');
80+
var {WebContainer} = await import('https://cdn.jsdelivr.net/npm/@webcontainer/api/+esm');
81+
82+
console.log('booting ...');
83+
webcontainer = await WebContainer.boot();
84+
85+
console.log('mounting file system ...');
86+
await webcontainer.mount(files);
87+
88+
89+
await install();
90+
await package_json();
91+
await install_rollup();
92+
93+
94+
await rollup();
95+
96+
await server();
97+
console.log('done.');
98+
99+
100+
async function install(){
101+
var str = packages.join(' ');
102+
console.log('npm install',str,'...');
103+
packages.unshift('install');
104+
var process = await webcontainer.spawn('npm',packages);
105+
var stream = new WritableStream({write(data){term.write(data)}});
106+
process.output.pipeTo(stream)
107+
var code = await process.exit;
108+
if(code!=0){
109+
console.log('an error occurred');
110+
}
111+
return code;
112+
113+
}//install
114+
115+
116+
async function package_json(){
117+
console.log('npm install ( package.json ) ...');
118+
var process = await webcontainer.spawn('npm',['install']);
119+
var stream = new WritableStream({write(data){term.write(data)}});
120+
process.output.pipeTo(stream)
121+
var code = await process.exit;
122+
if(code!=0){
123+
console.log('an error occurred');
124+
}
125+
return code;
126+
127+
}//package_json
128+
129+
130+
async function install_rollup(){
131+
132+
var packages = [
133+
'rollup',
134+
'@rollup/plugin-commonjs',
135+
'@rollup/plugin-node-resolve',
136+
'@rollup/plugin-json',
137+
'rollup-plugin-polyfill-node'
138+
];
139+
console.log('npm install',packages.join(' '),'...');
140+
packages.unshift('install');
141+
142+
var process = await webcontainer.spawn('npm',packages);
143+
var stream = new WritableStream({write(data){term.write(data)}});
144+
process.output.pipeTo(stream)
145+
var code = await process.exit;
146+
if(code!=0){
147+
console.log('an error occurred');
148+
}
149+
return code;
150+
151+
}//install_rollup
152+
153+
154+
async function rollup(){
155+
console.log('perform rollup ...');
156+
var process = await webcontainer.spawn('npx',['-y','rollup','--config','rollup.config.js']);
157+
158+
var stream = new WritableStream({write(data){term.write(data)}});
159+
process.output.pipeTo(stream);
160+
161+
var code = await process.exit;
162+
if(code!=0){
163+
console.log('an error occurred');
164+
}
165+
return code;
166+
167+
}//rollup
168+
169+
170+
async function server(){
171+
console.log('launching server ...');
172+
webcontainer.on('server-ready',(port,url)=>{
173+
console.log('server : ',url,port);
174+
iframe.src = url;
175+
176+
});
177+
178+
var process = await webcontainer.spawn('node',['server.js']);
179+
180+
var stream = new WritableStream({write(data){term.write(data)}});
181+
process.output.pipeTo(stream);
182+
183+
var code = await process.exit;
184+
if(code!=0){
185+
console.log('an error occurred');
186+
}
187+
return code;
188+
189+
}//server
190+
191+
192+
193+
}//ready
194+
195+
196+
//:
197+
198+
199+
200+
files['entry.js'] = `
201+
202+
import * as espree from 'espree';
203+
export {espree};
204+
205+
//export default espree; // iife / umd
206+
207+
`;
208+
209+
210+
files['package.json'] = `
211+
212+
{
213+
"name": "node-test",
214+
"version": "1.0.0",
215+
"scripts": {
216+
}
217+
}
218+
219+
`;
220+
221+
222+
files['rollup.config.js'] = `
223+
224+
import resolve from '@rollup/plugin-node-resolve';
225+
import commonjs from '@rollup/plugin-commonjs';
226+
import json from '@rollup/plugin-json';
227+
import nodePolyfills from 'rollup-plugin-polyfill-node';
228+
229+
export default {
230+
input : 'entry.js',
231+
output : {
232+
file : '${filename}',
233+
format : 'es'
234+
235+
//format : 'iife', // or 'umd'
236+
//name : 'espree', // This becomes window.espree
237+
//exports : 'default',
238+
239+
},
240+
plugins : [
241+
commonjs(),
242+
json(),
243+
nodePolyfills(),
244+
resolve({preferBuiltins:false})
245+
]
246+
};
247+
248+
`;
249+
250+
251+
files['server.js'] = `
252+
253+
var port = 3000;
254+
255+
require('http').createServer(request).listen(port);
256+
257+
var fs = require('fs');
258+
console.log('listening',port);
259+
260+
function request(req,res){
261+
console.log(req.method,req.url);
262+
if(cors(req,res))return;
263+
264+
if(req.url==='/${filename}'){
265+
var stream = fs.createReadStream('${filename}');
266+
res.writeHead(200,{'content-type':'text/javascript'});
267+
stream.pipe(res);
268+
return;
269+
}
270+
271+
if(req.url==='/test.html'){
272+
var stream = fs.createReadStream('test.html');
273+
res.writeHead(200,{'content-type':'text/html'});
274+
stream.pipe(res);
275+
return;
276+
}
277+
if(req.url==='/test2.html'){
278+
var stream = fs.createReadStream('test2.html');
279+
res.writeHead(200,{'content-type':'text/html'});
280+
stream.pipe(res);
281+
return;
282+
}
283+
284+
var stream = fs.createReadStream('index.html');
285+
res.writeHead(200,{'content-type':'text/html'});
286+
stream.pipe(res);
287+
288+
}//request
289+
290+
291+
function cors(req,res){
292+
293+
res.setHeader('access-control-allow-origin','*');
294+
295+
if(req.method!=='OPTIONS'){
296+
return;
297+
}
298+
299+
res.writeHead(204);
300+
res.end();
301+
return true;
302+
303+
}//cors
304+
305+
306+
`;
307+
308+
309+
<script>
310+
311+
312+
<style>
313+
314+
315+
</style>
316+
317+
318+
</head>
319+
320+
321+
<body>
322+
323+
<div id=terminal>
324+
</div>
325+
326+
327+
</body>
328+
329+
330+
</html>

0 commit comments

Comments
 (0)