isomorfeus-speednode 0.2.3 → 0.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bdd2542ef4c9781efd0fcf05335ddba35005290a0e0ae56e496966422d66c604
4
- data.tar.gz: dd3745924f0713663d23af5ace489a3e36ac7193de2dc2719d76036d1dc5b6c5
3
+ metadata.gz: 31ef61f35fb553a911c8a0438028e1f30a42a39f67f6eac785009b9bca24ca16
4
+ data.tar.gz: 184188cc475fe8cc293857f5090a36f6df100f9592385f3b84ee5af52308991b
5
5
  SHA512:
6
- metadata.gz: 718ac1be86fce89b46ba2a957af7d1c7c8fefdbcdce86a04e715a60045c3d44913569e433114c22a4de7d827d9a789fe2c91a40f8ac402690d8cf7654300ecfc
7
- data.tar.gz: 47cf6b06bf4d37dbb24c1184f25f8a008db3bd6b646282a4f43079bef4eb55cfe52fa537c923986569bc0fdb2bd8fa442112d22a6f5f4b205f8edcddf8f76251
6
+ metadata.gz: a40508924ae7c642f72bfe8db638c3b57d36ac15e9d7c35f1db8976cd57f1a5d4b415e69c93a3e316425a993095610355cb7bd8d907ccce9d0f11f93c32c7c43
7
+ data.tar.gz: 66d5c937dc96c5bc69f1ad59ea1e67b65e77a22c308635da78d4ea7ff9e1577077820466152d079dc3cbdce9baad561ad23c304317a9b7d08af3b83487e6c285
@@ -1,7 +1,9 @@
1
+ 'use strict';
2
+
1
3
  const vm = require('vm');
2
4
  const net = require('net');
3
- var contexts = {};
4
- var process_exit = false;
5
+ let contexts = {};
6
+ let process_exit = false;
5
7
 
6
8
  /*** circular-json, originally taken from https://raw.githubusercontent.com/WebReflection/circular-json/
7
9
  Copyright (C) 2013-2017 by Andrea Giammarchi - @WebReflection
@@ -37,12 +39,12 @@ CircularJSON.safeSpecialChar = '\\x' + ('0' + CircularJSON.specialChar.charCode
37
39
  CircularJSON.escapedSafeSpecialChar = '\\' + CircularJSON.safeSpecialChar;
38
40
  CircularJSON.specialCharRG = new RegExp(CircularJSON.safeSpecialChar, 'g');
39
41
  CircularJSON.indexOf = [].indexOf || function(v){
40
- for(var i=this.length;i--&&this[i]!==v;);
42
+ for(let i=this.length;i--&&this[i]!==v;);
41
43
  return i;
42
44
  };
43
45
 
44
46
  CircularJSON.generateReplacer = function (value, replacer, resolve) {
45
- var
47
+ let
46
48
  doNotIgnore = false,
47
49
  inspect = !!replacer,
48
50
  path = [],
@@ -142,7 +144,7 @@ function massageStackTrace(stack) {
142
144
  }
143
145
 
144
146
  function createCompatibleContext() {
145
- var c = vm.createContext();
147
+ let c = vm.createContext();
146
148
  vm.runInContext('delete this.console', c, "(execjs)");
147
149
  return c;
148
150
  }
@@ -154,11 +156,12 @@ function createPermissiveContext() {
154
156
  function getCompatibleContext(uuid) {
155
157
  return contexts[uuid] || (contexts[uuid] = createCompatibleContext());
156
158
  }
159
+
157
160
  function getPermissiveContext(uuid) {
158
161
  return contexts[uuid] || (contexts[uuid] = createPermissiveContext());
159
162
  }
160
163
 
161
- var commands = {
164
+ let commands = {
162
165
  deleteContext: function(uuid) {
163
166
  delete contexts[uuid];
164
167
  return [1];
@@ -168,10 +171,10 @@ var commands = {
168
171
  return ['ok'];
169
172
  },
170
173
  execp: function execJS(input) {
171
- var context = getPermissiveContext(input.context);
174
+ let context = getPermissiveContext(input.context);
172
175
  try {
173
- var program = function(){ return vm.runInContext(input.source, context, "(execjs)"); };
174
- var result = program();
176
+ let program = function(){ return vm.runInContext(input.source, context, "(execjs)"); };
177
+ let result = program();
175
178
  if (typeof result == 'undefined' && result !== null) { return ['ok']; }
176
179
  else {
177
180
  try { return ['ok', result]; }
@@ -180,10 +183,10 @@ var commands = {
180
183
  } catch (err) { return ['err', '' + err, massageStackTrace(err.stack)]; }
181
184
  },
182
185
  exec: function execJS(input) {
183
- var context = getCompatibleContext(input.context);
186
+ let context = getCompatibleContext(input.context);
184
187
  try {
185
- var program = function(){ return vm.runInContext(input.source, context, "(execjs)"); };
186
- var result = program();
188
+ let program = function(){ return vm.runInContext(input.source, context, "(execjs)"); };
189
+ let result = program();
187
190
  if (typeof result == 'undefined' && result !== null) { return ['ok']; }
188
191
  else {
189
192
  try { return ['ok', result]; }
@@ -193,19 +196,18 @@ var commands = {
193
196
  }
194
197
  };
195
198
 
196
- var server = net.createServer(function(s) {
197
- var received_data = '';
199
+ let server = net.createServer(function(s) {
200
+ let received_data = Buffer.alloc(0);
198
201
 
199
202
  s.on('data', function (data) {
200
- received_data += data;
201
-
202
- if (!received_data.endsWith("\x04")) { return; }
203
- var request = received_data.substring(0, received_data.length - 1);
204
- received_data = '';
203
+ received_data = Buffer.concat([received_data, data]);
204
+ if (received_data[received_data.length - 1] !== 4) { return; }
205
+ let request = received_data.slice(0, received_data.length - 1).toString('utf8');
206
+ received_data = Buffer.alloc(0);
205
207
 
206
- var input = JSON.parse(request);
207
- var result = commands[input.cmd].apply(null, input.args);
208
- var outputJSON = '';
208
+ let input = JSON.parse(request);
209
+ let result = commands[input.cmd].apply(null, input.args);
210
+ let outputJSON = '';
209
211
 
210
212
  try { outputJSON = JSON.stringify(result); }
211
213
  catch(err) {
@@ -218,6 +220,6 @@ var server = net.createServer(function(s) {
218
220
  });
219
221
  });
220
222
 
221
- var socket_path = process.env.SOCKET_PATH;
223
+ let socket_path = process.env.SOCKET_PATH;
222
224
  if (!socket_path) { throw 'No SOCKET_PATH given!'; };
223
225
  server.listen(socket_path);
@@ -97,7 +97,11 @@ module Isomorfeus
97
97
 
98
98
  ObjectSpace.define_finalizer(self, self.class.finalize(@runtime, @uuid))
99
99
 
100
- source = encode(source)
100
+ begin
101
+ source = encode(source)
102
+ rescue
103
+ source = source.force_encoding('UTF-8')
104
+ end
101
105
 
102
106
  @permissive ? raw_execp(source) : raw_exec(source)
103
107
  end
@@ -1,5 +1,5 @@
1
1
  module Isomorfeus
2
2
  module Speednode
3
- VERSION = '0.2.3'
3
+ VERSION = '0.2.4'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: isomorfeus-speednode
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jan Biedermann
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-05-30 00:00:00.000000000 Z
11
+ date: 2019-06-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: execjs