23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
# File 'lib/opal-webpack-compile-server/exe.rb', line 23
def receive_data(data)
if data.start_with?('command:stop')
EventMachine.stop
exit(0)
end
filename = data.chop
operation = proc do
begin
source = File.read(filename)
c = Opal::Compiler.new(source, file: filename, es6_modules: true)
c.compile
result = { 'javascript' => c.result }
result['source_map'] = c.source_map.as_json
result['source_map']['sourcesContent'] = [source]
result['source_map']['file'] = filename
result['source_map']['names'] = result['source_map']['names'].map(&:to_s)
result['required_trees'] = c.required_trees
Oj.dump(result)
rescue Exception => e
Oj.dump({ 'error' => { 'name' => e.class, 'message' => e.message, 'backtrace' => e.backtrace } })
end
end
callback = proc do |json|
self.send_data(json + "\n")
close_connection_after_writing
end
EM.defer(operation, callback)
end
|