class OpalWebpackCompileServer::Compiler
Public Instance Methods
receive_data(data)
click to toggle source
# 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 # remove newline 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