From de0764090db87067f90ad562ae9796e9600dd32b Mon Sep 17 00:00:00 2001
From: Weijie Lin <weijie@gmail.com>
Date: Fri, 28 Jul 2023 10:31:07 -0700
Subject: [PATCH 1/4] updated code to all args be passed to deploy method

---
 .../LaunchConfigParser.Invocations.cs         | 19 ++++++++++++++++++-
 src/adapter3/LaunchConfigParser.cs            |  5 +++--
 2 files changed, 21 insertions(+), 3 deletions(-)

diff --git a/src/adapter3/LaunchConfigParser.Invocations.cs b/src/adapter3/LaunchConfigParser.Invocations.cs
index e4db7a7..44b7161 100644
--- a/src/adapter3/LaunchConfigParser.Invocations.cs
+++ b/src/adapter3/LaunchConfigParser.Invocations.cs
@@ -1,6 +1,6 @@
+using System;
 using Neo.Network.P2P.Payloads;
 using Newtonsoft.Json.Linq;
-using System;
 
 namespace NeoDebug.Neo3
 {
@@ -30,6 +30,13 @@ public static bool TryFromJson(JToken token, out InvokeFileInvocation invocation
 
         public struct ContractDeployInvocation
         {
+            public readonly JArray Args;
+
+            public ContractDeployInvocation(JArray args)
+            {
+                Args = args;
+            }
+
             public static bool TryFromJson(JToken token, out ContractDeployInvocation invocation)
             {
                 if (token.Type == JTokenType.String && token.Value<string>() == "deploy")
@@ -37,6 +44,16 @@ public static bool TryFromJson(JToken token, out ContractDeployInvocation invoca
                     invocation = new ContractDeployInvocation();
                     return true;
                 }
+                else if (token.Type == JTokenType.Object && token.Value<bool>("deploy"))
+                {
+                    var argsJson = token["args"];
+                    var args = argsJson == null
+                        ? new JArray()
+                        : argsJson is JArray ? (JArray)argsJson : new JArray(argsJson);
+
+                    invocation = new ContractDeployInvocation(args);
+                    return true;
+                }
 
                 invocation = default;
                 return false;
diff --git a/src/adapter3/LaunchConfigParser.cs b/src/adapter3/LaunchConfigParser.cs
index 8a4397a..5e0c0cb 100644
--- a/src/adapter3/LaunchConfigParser.cs
+++ b/src/adapter3/LaunchConfigParser.cs
@@ -118,9 +118,10 @@ static async Task<IApplicationEngine> CreateDebugEngineAsync(ConfigProps config,
                 {
                     signers = new[] { deploySigner };
                 }
-
+                var tokenArgs = invocation.AsT3.Args;
+                var args = tokenArgs != null ? paramParser.ParseParameters(tokenArgs).ToArray() : null;
                 using var builder = new ScriptBuilder();
-                builder.EmitDynamicCall(NativeContract.ContractManagement.Hash, "deploy", launchNefFile.ToArray(), launchManifest.ToJson().ToString());
+                builder.EmitDynamicCall(NativeContract.ContractManagement.Hash, "deploy", launchNefFile.ToArray(), launchManifest.ToJson().ToString(), args);
                 invokeScript = builder.ToArray();
             }
             else

From 4477f4bf7f2eacd140624129e5e6cb96f59216c1 Mon Sep 17 00:00:00 2001
From: Weijie Lin <weijie@gmail.com>
Date: Fri, 28 Jul 2023 15:02:44 -0700
Subject: [PATCH 2/4] added deploy-data to the launch schema

---
 src/adapter3/LaunchConfigParser.cs |  2 +-
 src/extension/package.json         | 19 +++++++++++++++++--
 2 files changed, 18 insertions(+), 3 deletions(-)

diff --git a/src/adapter3/LaunchConfigParser.cs b/src/adapter3/LaunchConfigParser.cs
index 5e0c0cb..322fe3f 100644
--- a/src/adapter3/LaunchConfigParser.cs
+++ b/src/adapter3/LaunchConfigParser.cs
@@ -119,7 +119,7 @@ static async Task<IApplicationEngine> CreateDebugEngineAsync(ConfigProps config,
                     signers = new[] { deploySigner };
                 }
                 var tokenArgs = invocation.AsT3.Args;
-                var args = tokenArgs != null ? paramParser.ParseParameters(tokenArgs).ToArray() : null;
+                var args = tokenArgs != null && tokenArgs.Count > 0 ? paramParser.ParseParameters(tokenArgs).ToArray() : null;
                 using var builder = new ScriptBuilder();
                 builder.EmitDynamicCall(NativeContract.ContractManagement.Hash, "deploy", launchNefFile.ToArray(), launchManifest.ToJson().ToString(), args);
                 invokeScript = builder.ToArray();
diff --git a/src/extension/package.json b/src/extension/package.json
index 3a67955..c0bc49f 100644
--- a/src/extension/package.json
+++ b/src/extension/package.json
@@ -79,7 +79,6 @@
                     "default": null,
                     "description": "GitHub release tag. Defaults to extension version"
                 }
-
             }
         },
         "debuggers": [
@@ -105,6 +104,22 @@
                                             "deploy"
                                         ]
                                     },
+                                    {
+                                        "type": "object",
+                                        "required": [
+                                            "deploy-data"
+                                        ],
+                                        "properties": {
+                                            "deploy-data": {
+                                                "type": "object",
+                                                "properties": {
+                                                    "args": {
+                                                        "type": "array"
+                                                    }
+                                                }
+                                            }
+                                        }
+                                    },
                                     {
                                         "type": "object",
                                         "required": [
@@ -556,4 +571,4 @@
         "tslint": "^6.1.3",
         "typescript": "^4.9.4"
     }
-}
+}
\ No newline at end of file

From fe9f21fb1fdb0ad551f12065898e1824f6167456 Mon Sep 17 00:00:00 2001
From: Weijie Lin <weijie@gmail.com>
Date: Fri, 28 Jul 2023 15:47:58 -0700
Subject: [PATCH 3/4] e2e working with deploy-data schema

---
 .../LaunchConfigParser.Invocations.cs         | 21 +++++++++----------
 src/adapter3/LaunchConfigParser.cs            |  6 +++---
 2 files changed, 13 insertions(+), 14 deletions(-)

diff --git a/src/adapter3/LaunchConfigParser.Invocations.cs b/src/adapter3/LaunchConfigParser.Invocations.cs
index 44b7161..02e3374 100644
--- a/src/adapter3/LaunchConfigParser.Invocations.cs
+++ b/src/adapter3/LaunchConfigParser.Invocations.cs
@@ -30,11 +30,10 @@ public static bool TryFromJson(JToken token, out InvokeFileInvocation invocation
 
         public struct ContractDeployInvocation
         {
-            public readonly JArray Args;
-
-            public ContractDeployInvocation(JArray args)
+            public readonly JToken? DeployData;
+            public ContractDeployInvocation(JToken? deployData)
             {
-                Args = args;
+                DeployData = deployData;
             }
 
             public static bool TryFromJson(JToken token, out ContractDeployInvocation invocation)
@@ -44,15 +43,15 @@ public static bool TryFromJson(JToken token, out ContractDeployInvocation invoca
                     invocation = new ContractDeployInvocation();
                     return true;
                 }
-                else if (token.Type == JTokenType.Object && token.Value<bool>("deploy"))
+                else if (token.Type == JTokenType.Object)
                 {
-                    var argsJson = token["args"];
-                    var args = argsJson == null
-                        ? new JArray()
-                        : argsJson is JArray ? (JArray)argsJson : new JArray(argsJson);
+                    var deploy = token["deploy-data"];
+                    if (deploy != null)
+                    {
+                        invocation = new ContractDeployInvocation(deploy["args"]);
+                        return true;
+                    }
 
-                    invocation = new ContractDeployInvocation(args);
-                    return true;
                 }
 
                 invocation = default;
diff --git a/src/adapter3/LaunchConfigParser.cs b/src/adapter3/LaunchConfigParser.cs
index 322fe3f..41c492f 100644
--- a/src/adapter3/LaunchConfigParser.cs
+++ b/src/adapter3/LaunchConfigParser.cs
@@ -118,10 +118,10 @@ static async Task<IApplicationEngine> CreateDebugEngineAsync(ConfigProps config,
                 {
                     signers = new[] { deploySigner };
                 }
-                var tokenArgs = invocation.AsT3.Args;
-                var args = tokenArgs != null && tokenArgs.Count > 0 ? paramParser.ParseParameters(tokenArgs).ToArray() : null;
+                var deployDataToken = invocation.AsT3.DeployData;
+                var deployData = paramParser.ParseParameter(deployDataToken);
                 using var builder = new ScriptBuilder();
-                builder.EmitDynamicCall(NativeContract.ContractManagement.Hash, "deploy", launchNefFile.ToArray(), launchManifest.ToJson().ToString(), args);
+                builder.EmitDynamicCall(NativeContract.ContractManagement.Hash, "deploy", launchNefFile.ToArray(), launchManifest.ToJson().ToString(), deployData);
                 invokeScript = builder.ToArray();
             }
             else

From 4f821e948fb823deecf11ff2b873bb2bd3cbd1a4 Mon Sep 17 00:00:00 2001
From: Weijie Lin <weijie@gmail.com>
Date: Fri, 28 Jul 2023 15:54:07 -0700
Subject: [PATCH 4/4] renamed deploy-data to deploy

---
 src/adapter3/LaunchConfigParser.Invocations.cs |  9 ++-------
 src/extension/package.json                     | 11 ++---------
 2 files changed, 4 insertions(+), 16 deletions(-)

diff --git a/src/adapter3/LaunchConfigParser.Invocations.cs b/src/adapter3/LaunchConfigParser.Invocations.cs
index 02e3374..d3d2423 100644
--- a/src/adapter3/LaunchConfigParser.Invocations.cs
+++ b/src/adapter3/LaunchConfigParser.Invocations.cs
@@ -45,13 +45,8 @@ public static bool TryFromJson(JToken token, out ContractDeployInvocation invoca
                 }
                 else if (token.Type == JTokenType.Object)
                 {
-                    var deploy = token["deploy-data"];
-                    if (deploy != null)
-                    {
-                        invocation = new ContractDeployInvocation(deploy["args"]);
-                        return true;
-                    }
-
+                    invocation = new ContractDeployInvocation(token["deploy"]);
+                    return true;
                 }
 
                 invocation = default;
diff --git a/src/extension/package.json b/src/extension/package.json
index c0bc49f..c46f9bb 100644
--- a/src/extension/package.json
+++ b/src/extension/package.json
@@ -107,17 +107,10 @@
                                     {
                                         "type": "object",
                                         "required": [
-                                            "deploy-data"
+                                            "deploy"
                                         ],
                                         "properties": {
-                                            "deploy-data": {
-                                                "type": "object",
-                                                "properties": {
-                                                    "args": {
-                                                        "type": "array"
-                                                    }
-                                                }
-                                            }
+                                            "deploy": {}
                                         }
                                     },
                                     {