debugging add module support
This commit is contained in:
parent
0ffb14ec72
commit
20e6f5c96d
@ -15,6 +15,7 @@ import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.WeakHashMap;
|
||||
|
||||
@ -131,6 +132,15 @@ public class DoricDev {
|
||||
.toJSONObject());
|
||||
} else {
|
||||
final DoricContext context = contexts.get(contexts.size() - 1);
|
||||
Map<String, String> bundles = DoricSingleton.getInstance().getJSBundles();
|
||||
for (String key : bundles.keySet()) {
|
||||
wsClient.sendToDebugger(
|
||||
"LOAD_MODULE",
|
||||
new JSONBuilder()
|
||||
.put("name", key)
|
||||
.put("content", bundles.get(key))
|
||||
.toJSONObject());
|
||||
}
|
||||
wsClient.sendToDebugger(
|
||||
"DEBUG_RES",
|
||||
new JSONBuilder()
|
||||
|
@ -19,19 +19,17 @@ import pub.doric.devkit.WSClient;
|
||||
public class RemoteJSExecutor implements WSClient.Interceptor {
|
||||
private final Map<String, JavaFunction> globalFunctions = new HashMap<>();
|
||||
private final WSClient wsClient;
|
||||
private final Thread currentThread;
|
||||
|
||||
private final AtomicInteger callIdCounter = new AtomicInteger();
|
||||
|
||||
private Map<Integer, Thread> mThreads = new HashMap<>();
|
||||
private Map<Integer, JSDecoder> mResults = new HashMap<>();
|
||||
private final Map<Integer, Thread> mThreads = new HashMap<>();
|
||||
private final Map<Integer, JSDecoder> mResults = new HashMap<>();
|
||||
|
||||
public volatile boolean invokingMethod = false;
|
||||
|
||||
public RemoteJSExecutor(WSClient wsClient) {
|
||||
this.wsClient = wsClient;
|
||||
this.wsClient.addInterceptor(this);
|
||||
currentThread = Thread.currentThread();
|
||||
}
|
||||
|
||||
public String loadJS(String script, String source) {
|
||||
|
@ -91,4 +91,8 @@ public class DoricSingleton {
|
||||
public DoricContextManager getContextManager() {
|
||||
return doricContextManager;
|
||||
}
|
||||
|
||||
public Map<String, String> getJSBundles() {
|
||||
return bundles;
|
||||
}
|
||||
}
|
||||
|
@ -226,6 +226,13 @@ - (void)startDebugging:(NSString *)source {
|
||||
@"msg": @"Cannot find suitable alive context for debugging"
|
||||
}];
|
||||
} else {
|
||||
[DoricSingleton.instance.bundles enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
|
||||
[self.wsClient sendToDebugger:@"LOAD_MODULE"
|
||||
payload:@{
|
||||
@"name": key,
|
||||
@"content": obj,
|
||||
}];
|
||||
}];
|
||||
DoricContext *context = contexts.lastObject;
|
||||
[self.wsClient sendToDebugger:@"DEBUG_RES" payload:@{
|
||||
@"contextId": context.contextId
|
||||
|
@ -4644,6 +4644,18 @@ function initNativeEnvironment(source) {
|
||||
const msg = JSON.parse(data);
|
||||
const payload = msg.payload;
|
||||
switch (msg.cmd) {
|
||||
case "":
|
||||
const { name, content } = payload;
|
||||
Reflect.apply(jsRegisterModule, undefined, [
|
||||
name,
|
||||
Reflect.apply((function (__module) {
|
||||
eval(`(function (module, exports, require) {
|
||||
${content}
|
||||
})(__module, __module.exports, doric.__require__)`);
|
||||
return __module.exports;
|
||||
}), undefined, [{ exports: {} }])
|
||||
]);
|
||||
break;
|
||||
case "DEBUG_RES":
|
||||
const contextId = msg.payload.contextId;
|
||||
resolve(contextId);
|
||||
|
@ -53,6 +53,24 @@ async function initNativeEnvironment(source: string) {
|
||||
const msg = JSON.parse(data as string) as MSG
|
||||
const payload = msg.payload
|
||||
switch (msg.cmd) {
|
||||
case "":
|
||||
const { name, content } = payload as {
|
||||
name: string,
|
||||
content: string
|
||||
}
|
||||
Reflect.apply(
|
||||
doric.jsRegisterModule,
|
||||
undefined,
|
||||
[
|
||||
name,
|
||||
Reflect.apply((function (__module: { exports: object }) {
|
||||
eval(`(function (module, exports, require) {
|
||||
${content}
|
||||
})(__module, __module.exports, doric.__require__)`)
|
||||
return __module.exports
|
||||
}), undefined, [{ exports: {} }])
|
||||
]);
|
||||
break;
|
||||
case "DEBUG_RES":
|
||||
const contextId = msg.payload.contextId as string;
|
||||
resolve(contextId);
|
||||
|
@ -54,6 +54,18 @@ function initNativeEnvironment(source) {
|
||||
const msg = JSON.parse(data);
|
||||
const payload = msg.payload;
|
||||
switch (msg.cmd) {
|
||||
case "":
|
||||
const { name, content } = payload;
|
||||
Reflect.apply(doric.jsRegisterModule, undefined, [
|
||||
name,
|
||||
Reflect.apply((function (__module) {
|
||||
eval(`(function (module, exports, require) {
|
||||
${content}
|
||||
})(__module, __module.exports, doric.__require__)`);
|
||||
return __module.exports;
|
||||
}), undefined, [{ exports: {} }])
|
||||
]);
|
||||
break;
|
||||
case "DEBUG_RES":
|
||||
const contextId = msg.payload.contextId;
|
||||
resolve(contextId);
|
||||
|
Reference in New Issue
Block a user