@bonsae/node-red-salesforce 0.4.1 → 0.6.0
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.
- package/README.md +82 -4
- package/icons/salesforce-apex-code.png +0 -0
- package/icons/salesforce-apex-invocation.png +0 -0
- package/index.d.ts +89 -39
- package/index.html +2 -1
- package/index.mjs +902 -403
- package/index.mjs.map +1 -1
- package/locales/de/index.html +68 -15
- package/locales/de/index.json +54 -12
- package/locales/en-US/index.html +69 -16
- package/locales/en-US/index.json +57 -16
- package/locales/es-ES/index.html +75 -22
- package/locales/es-ES/index.json +61 -19
- package/locales/fr/index.html +75 -22
- package/locales/fr/index.json +63 -21
- package/locales/ja/index.html +74 -21
- package/locales/ja/index.json +60 -18
- package/locales/ko/index.html +74 -21
- package/locales/ko/index.json +60 -18
- package/locales/pt-BR/index.html +70 -17
- package/locales/pt-BR/index.json +57 -15
- package/locales/ru/index.html +74 -21
- package/locales/ru/index.json +60 -18
- package/locales/zh-CN/index.html +74 -21
- package/locales/zh-CN/index.json +60 -18
- package/locales/zh-TW/index.html +74 -21
- package/locales/zh-TW/index.json +60 -18
- package/package.json +2 -2
- package/resources/index.C1dzx4s2.js +49 -0
- package/resources/index.zXteTlSH.css +48 -0
- package/resources/index.FDBQSjT7.js +0 -1
package/locales/zh-TW/index.json
CHANGED
|
@@ -1,10 +1,45 @@
|
|
|
1
1
|
{
|
|
2
|
-
"salesforce-apex": {
|
|
2
|
+
"salesforce-apex-code": {
|
|
3
3
|
"configs": {
|
|
4
4
|
"name": "名稱",
|
|
5
|
-
"connection": "
|
|
5
|
+
"connection": "連線",
|
|
6
|
+
"apexType": "類型",
|
|
7
|
+
"className": "類別名稱",
|
|
8
|
+
"urlMapping": "URL對應",
|
|
9
|
+
"httpMethod": "HTTP 方法",
|
|
10
|
+
"code": "Apex程式碼"
|
|
11
|
+
},
|
|
12
|
+
"toggles": {
|
|
13
|
+
"validateInput": "驗證輸入",
|
|
14
|
+
"validateOutput": "驗證輸出",
|
|
15
|
+
"errorPort": "錯誤端口",
|
|
16
|
+
"completePort": "完成端口",
|
|
17
|
+
"statusPort": "狀態端口"
|
|
18
|
+
},
|
|
19
|
+
"$schema": "https://unpkg.com/@bonsae/nrg/schemas/labels.schema.json",
|
|
20
|
+
"label": "Apex Code",
|
|
21
|
+
"description": "在Salesforce組織上部署並執行自訂Apex程式碼。支援Invocable和REST類型。",
|
|
22
|
+
"inputLabels": "輸入",
|
|
23
|
+
"outputLabels": [
|
|
24
|
+
"回應"
|
|
25
|
+
],
|
|
26
|
+
"input": {
|
|
27
|
+
"payload": "以JSON字串形式傳遞給Apex方法的輸入資料"
|
|
28
|
+
},
|
|
29
|
+
"outputs": [
|
|
30
|
+
{
|
|
31
|
+
"payload": "Apex執行回應"
|
|
32
|
+
}
|
|
33
|
+
]
|
|
34
|
+
},
|
|
35
|
+
"salesforce-apex-invocation": {
|
|
36
|
+
"configs": {
|
|
37
|
+
"name": "名稱",
|
|
38
|
+
"connection": "連線",
|
|
39
|
+
"apexType": "類型",
|
|
6
40
|
"method": "方法",
|
|
7
|
-
"path": "
|
|
41
|
+
"path": "端點",
|
|
42
|
+
"actionName": "動作"
|
|
8
43
|
},
|
|
9
44
|
"toggles": {
|
|
10
45
|
"validateInput": "驗證輸入",
|
|
@@ -14,28 +49,34 @@
|
|
|
14
49
|
"statusPort": "狀態端口"
|
|
15
50
|
},
|
|
16
51
|
"$schema": "https://unpkg.com/@bonsae/nrg/schemas/labels.schema.json",
|
|
17
|
-
"label": "Apex",
|
|
18
|
-
"description": "呼叫Salesforce
|
|
52
|
+
"label": "Apex Invocation",
|
|
53
|
+
"description": "呼叫Salesforce組織中現有的Apex REST端點或Invocable Action。",
|
|
19
54
|
"inputLabels": "請求",
|
|
20
55
|
"outputLabels": [
|
|
21
56
|
"回應"
|
|
22
57
|
],
|
|
23
58
|
"input": {
|
|
24
|
-
"payload": "
|
|
59
|
+
"payload": "POST/PUT/PATCH的請求主體,GET/DELETE時忽略"
|
|
25
60
|
},
|
|
26
61
|
"outputs": [
|
|
27
62
|
{
|
|
28
|
-
"payload": "Apex
|
|
63
|
+
"payload": "Apex端點回應"
|
|
29
64
|
}
|
|
30
65
|
]
|
|
31
66
|
},
|
|
32
67
|
"salesforce-bulk": {
|
|
33
68
|
"configs": {
|
|
34
69
|
"name": "名稱",
|
|
35
|
-
"connection": "
|
|
70
|
+
"connection": "連線",
|
|
36
71
|
"operation": "操作",
|
|
37
72
|
"sObjectType": "SObject類型",
|
|
38
|
-
"
|
|
73
|
+
"query": "SOQL查詢",
|
|
74
|
+
"externalIdField": "外部ID欄位",
|
|
75
|
+
"assignmentRuleId": "指派規則ID",
|
|
76
|
+
"columnDelimiter": "欄位分隔符",
|
|
77
|
+
"lineEnding": "行結尾",
|
|
78
|
+
"pollInterval": "輪詢間隔 (ms)",
|
|
79
|
+
"pollTimeout": "輪詢逾時 (ms)"
|
|
39
80
|
},
|
|
40
81
|
"toggles": {
|
|
41
82
|
"validateInput": "驗證輸入",
|
|
@@ -53,11 +94,11 @@
|
|
|
53
94
|
"工作完成"
|
|
54
95
|
],
|
|
55
96
|
"input": {
|
|
56
|
-
"payload": "
|
|
97
|
+
"payload": "記錄陣列、CSV字串、可讀串流(擷取)或觸發器(查詢)"
|
|
57
98
|
},
|
|
58
99
|
"outputs": [
|
|
59
100
|
{
|
|
60
|
-
"payload": "
|
|
101
|
+
"payload": "查詢:個別記錄。擷取:{ successfulResults, failedResults, unprocessedRecords }"
|
|
61
102
|
}
|
|
62
103
|
]
|
|
63
104
|
},
|
|
@@ -88,7 +129,7 @@
|
|
|
88
129
|
"salesforce-describe": {
|
|
89
130
|
"configs": {
|
|
90
131
|
"name": "名稱",
|
|
91
|
-
"connection": "
|
|
132
|
+
"connection": "連線",
|
|
92
133
|
"sObjectType": "SObject類型"
|
|
93
134
|
},
|
|
94
135
|
"toggles": {
|
|
@@ -106,21 +147,22 @@
|
|
|
106
147
|
"SObject中繼資料"
|
|
107
148
|
],
|
|
108
149
|
"input": {
|
|
109
|
-
"payload": "
|
|
150
|
+
"payload": "SObject API名稱(如果提供則覆蓋配置)"
|
|
110
151
|
},
|
|
111
152
|
"outputs": [
|
|
112
153
|
{
|
|
113
|
-
"payload": "SObject
|
|
154
|
+
"payload": "SObject描述結果,包含欄位、子關聯和記錄類型資訊"
|
|
114
155
|
}
|
|
115
156
|
]
|
|
116
157
|
},
|
|
117
158
|
"salesforce-dml": {
|
|
118
159
|
"configs": {
|
|
119
160
|
"name": "名稱",
|
|
120
|
-
"connection": "
|
|
161
|
+
"connection": "連線",
|
|
121
162
|
"operation": "操作",
|
|
122
163
|
"sObjectType": "SObject類型",
|
|
123
|
-
"externalIdField": "外部ID欄位"
|
|
164
|
+
"externalIdField": "外部ID欄位",
|
|
165
|
+
"record": "記錄"
|
|
124
166
|
},
|
|
125
167
|
"toggles": {
|
|
126
168
|
"validateInput": "驗證輸入",
|
|
@@ -148,7 +190,7 @@
|
|
|
148
190
|
"salesforce-soql": {
|
|
149
191
|
"configs": {
|
|
150
192
|
"name": "名稱",
|
|
151
|
-
"connection": "
|
|
193
|
+
"connection": "連線",
|
|
152
194
|
"query": "查詢"
|
|
153
195
|
},
|
|
154
196
|
"toggles": {
|
|
@@ -179,7 +221,7 @@
|
|
|
179
221
|
"salesforce-streaming": {
|
|
180
222
|
"configs": {
|
|
181
223
|
"name": "名稱",
|
|
182
|
-
"connection": "
|
|
224
|
+
"connection": "連線",
|
|
183
225
|
"channelName": "頻道",
|
|
184
226
|
"subscribeType": "訂閱起點",
|
|
185
227
|
"replayId": "重播ID",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bonsae/node-red-salesforce",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"description": "Salesforce nodes for Node-RED built with @bonsae/nrg",
|
|
5
5
|
"author": "Allan Oricil <allanoricil@duck.com>",
|
|
6
6
|
"license": "BUSL-1.1",
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
]
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@bonsae/nrg": "^0.
|
|
33
|
+
"@bonsae/nrg": "^0.16.0",
|
|
34
34
|
"jsforce": "^3.10.14",
|
|
35
35
|
"salesforce-pubsub-api-client": "^5.5.2"
|
|
36
36
|
},
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import{defineNode as O,__setSchemas as we,__setForms as Oe,registerTypes as Ce}from"/nrg/assets/nrg-client.js";import{defineComponent as D,ref as R,onMounted as ke,onUnmounted as pe,resolveComponent as b,openBlock as y,createElementBlock as m,Fragment as w,createElementVNode as a,createVNode as p,createTextVNode as I,normalizeStyle as $e,toDisplayString as V,createCommentVNode as S,computed as C,watch as J,createBlock as se,normalizeClass as re,withCtx as Ne,unref as k}from"/nrg/assets/vue.esm-browser.prod.js";const je={"salesforce-connection":{type:"salesforce-connection",category:"config",configSchema:{$id:"salesforce-connection:config",type:"object",required:["name","loginUrl","clientId","apiVersion"],properties:{name:{default:"",type:"string"},loginUrl:{default:"https://login.salesforce.com","x-nrg-form":{icon:"globe"},type:"string"},clientId:{default:"","x-nrg-form":{icon:"key"},type:"string"},apiVersion:{default:"62.0","x-nrg-form":{icon:"code-fork"},anyOf:[{const:"62.0",type:"string"},{const:"61.0",type:"string"},{const:"60.0",type:"string"},{const:"59.0",type:"string"},{const:"58.0",type:"string"},{const:"57.0",type:"string"},{const:"56.0",type:"string"},{const:"55.0",type:"string"}]},callbackUrl:{default:"","x-nrg-form":{icon:"exchange"},type:"string"}}},credentialsSchema:{$id:"salesforce-connection:credentials",type:"object",required:["accessToken","refreshToken","instanceUrl"],properties:{accessToken:{default:"",format:"password",type:"string"},refreshToken:{default:"",format:"password",type:"string"},instanceUrl:{default:"",type:"string"}}},settingsSchema:null,defaults:{name:{required:!1,value:""},loginUrl:{required:!1,value:"https://login.salesforce.com"},clientId:{required:!1,value:""},apiVersion:{required:!1,value:"62.0"},callbackUrl:{required:!1,value:""}},credentials:{accessToken:{required:!1,type:"password",value:""},refreshToken:{required:!1,type:"password",value:""},instanceUrl:{required:!1,type:"text",value:""}},icon:"salesforce-connection.png",inputSchema:null,outputsSchema:null},"salesforce-soql":{type:"salesforce-soql",category:"salesforce",configSchema:{$id:"salesforce-soql:config",type:"object",required:["name","connection","query","errorPort","completePort","statusPort"],properties:{name:{default:"","x-nrg-form":{icon:"tag"},type:"string"},connection:{description:"Reference to salesforce-connection",format:"node-id",type:"string","x-nrg-node-type":"salesforce-connection","x-nrg-form":{icon:"cloud"}},query:{description:"Represents a Node-RED TypedInput value and its type.",default:{type:"str",value:""},type:"object",required:["value","type"],properties:{value:{description:"The actual value entered or selected.",default:"",anyOf:[{type:"string"},{type:"number"},{type:"boolean"},{type:"null"}]},type:{description:"The type of the value (string, number, message property, etc.)",default:"str",anyOf:[{const:"msg",type:"string"},{const:"flow",type:"string"},{const:"global",type:"string"},{const:"str",type:"string"},{const:"num",type:"string"},{const:"bool",type:"string"},{const:"json",type:"string"},{const:"bin",type:"string"},{const:"re",type:"string"},{const:"jsonata",type:"string"},{const:"date",type:"string"},{const:"env",type:"string"},{const:"node",type:"string"},{const:"cred",type:"string"}]}},"x-nrg-typed-input":!0,"x-nrg-form":{icon:"search",typedInputTypes:["str","msg","flow","global"]}},errorPort:{default:!1,type:"boolean"},completePort:{default:!1,type:"boolean"},statusPort:{default:!1,type:"boolean"}}},credentialsSchema:null,settingsSchema:null,defaults:{name:{required:!1,value:""},connection:{required:!1,type:"salesforce-connection"},query:{required:!1,value:{type:"str",value:""}},errorPort:{required:!1,value:!1},completePort:{required:!1,value:!1},statusPort:{required:!1,value:!1},validateInput:{required:!1,value:!1},validateOutput:{required:!1,value:!1}},color:"#FFFFFF",icon:"salesforce-soql.png",inputs:1,outputs:1,inputSchema:{$id:"salesforce-soql:input",type:"object",required:["payload"],properties:{payload:{}}},outputsSchema:{$id:"salesforce-soql:output",type:"object",required:["payload","totalSize","done"],properties:{payload:{type:"array",items:{}},totalSize:{type:"number"},done:{type:"boolean"}}}},"salesforce-dml":{type:"salesforce-dml",category:"salesforce",configSchema:{$id:"salesforce-dml:config",if:{type:"object",required:["operation"],properties:{operation:{const:"upsert",type:"string"}}},then:{type:"object",required:["externalIdField"],properties:{externalIdField:{minLength:1,type:"string"}}},errorMessage:{properties:{externalIdField:"External ID Field is required for upsert operations"}},type:"object",required:["name","connection","operation","sObjectType","record","errorPort","completePort","statusPort"],properties:{name:{default:"","x-nrg-form":{icon:"tag"},type:"string"},connection:{description:"Reference to salesforce-connection",format:"node-id",type:"string","x-nrg-node-type":"salesforce-connection","x-nrg-form":{icon:"cloud"}},operation:{default:"create","x-nrg-form":{icon:"pencil"},anyOf:[{const:"create",type:"string"},{const:"read",type:"string"},{const:"update",type:"string"},{const:"delete",type:"string"},{const:"upsert",type:"string"}]},sObjectType:{description:"Represents a Node-RED TypedInput value and its type.",default:{type:"str",value:""},type:"object",required:["value","type"],properties:{value:{description:"The actual value entered or selected.",default:"",anyOf:[{type:"string"},{type:"number"},{type:"boolean"},{type:"null"}]},type:{description:"The type of the value (string, number, message property, etc.)",default:"str",anyOf:[{const:"msg",type:"string"},{const:"flow",type:"string"},{const:"global",type:"string"},{const:"str",type:"string"},{const:"num",type:"string"},{const:"bool",type:"string"},{const:"json",type:"string"},{const:"bin",type:"string"},{const:"re",type:"string"},{const:"jsonata",type:"string"},{const:"date",type:"string"},{const:"env",type:"string"},{const:"node",type:"string"},{const:"cred",type:"string"}]}},"x-nrg-typed-input":!0,"x-nrg-form":{icon:"cube",typedInputTypes:["str","msg"]}},record:{description:"Represents a Node-RED TypedInput value and its type.",default:{type:"str",value:""},type:"object",required:["value","type"],properties:{value:{description:"The actual value entered or selected.",default:"",anyOf:[{type:"string"},{type:"number"},{type:"boolean"},{type:"null"}]},type:{description:"The type of the value (string, number, message property, etc.)",default:"str",anyOf:[{const:"msg",type:"string"},{const:"flow",type:"string"},{const:"global",type:"string"},{const:"str",type:"string"},{const:"num",type:"string"},{const:"bool",type:"string"},{const:"json",type:"string"},{const:"bin",type:"string"},{const:"re",type:"string"},{const:"jsonata",type:"string"},{const:"date",type:"string"},{const:"env",type:"string"},{const:"node",type:"string"},{const:"cred",type:"string"}]}},"x-nrg-typed-input":!0,"x-nrg-form":{icon:"file-code-o",typedInputTypes:["json","msg"]}},externalIdField:{default:"","x-nrg-form":{icon:"key"},type:"string"},errorPort:{default:!1,type:"boolean"},completePort:{default:!1,type:"boolean"},statusPort:{default:!1,type:"boolean"}}},credentialsSchema:null,settingsSchema:null,defaults:{name:{required:!1,value:""},connection:{required:!1,type:"salesforce-connection"},operation:{required:!1,value:"create"},sObjectType:{required:!1,value:{type:"str",value:""}},record:{required:!1,value:{type:"str",value:""}},externalIdField:{required:!1,value:""},errorPort:{required:!1,value:!1},completePort:{required:!1,value:!1},statusPort:{required:!1,value:!1},validateInput:{required:!1,value:!1},validateOutput:{required:!1,value:!1}},color:"#FFFFFF",icon:"salesforce-dml.png",inputs:1,outputs:1,inputSchema:{$id:"salesforce-dml:input",type:"object",required:["payload"],properties:{payload:{}}},outputsSchema:{$id:"salesforce-dml:output",type:"object",required:["payload"],properties:{payload:{}}}},"salesforce-bulk":{type:"salesforce-bulk",category:"salesforce",configSchema:{$id:"salesforce-bulk:config",if:{type:"object",required:["operation"],properties:{operation:{const:"upsert",type:"string"}}},then:{type:"object",required:["externalIdField"],properties:{externalIdField:{minLength:1,type:"string"}}},errorMessage:{properties:{externalIdField:"External ID Field is required for upsert operations"}},type:"object",required:["name","connection","operation","sObjectType","query","columnDelimiter","lineEnding","pollInterval","pollTimeout","errorPort","completePort","statusPort"],properties:{name:{default:"","x-nrg-form":{icon:"tag"},type:"string"},connection:{description:"Reference to salesforce-connection",format:"node-id",type:"string","x-nrg-node-type":"salesforce-connection","x-nrg-form":{icon:"cloud"}},operation:{default:"insert","x-nrg-form":{icon:"database"},anyOf:[{const:"insert",type:"string"},{const:"update",type:"string"},{const:"upsert",type:"string"},{const:"delete",type:"string"},{const:"hardDelete",type:"string"},{const:"query",type:"string"}]},sObjectType:{description:"Represents a Node-RED TypedInput value and its type.",default:{type:"str",value:""},type:"object",required:["value","type"],properties:{value:{description:"The actual value entered or selected.",default:"",anyOf:[{type:"string"},{type:"number"},{type:"boolean"},{type:"null"}]},type:{description:"The type of the value (string, number, message property, etc.)",default:"str",anyOf:[{const:"msg",type:"string"},{const:"flow",type:"string"},{const:"global",type:"string"},{const:"str",type:"string"},{const:"num",type:"string"},{const:"bool",type:"string"},{const:"json",type:"string"},{const:"bin",type:"string"},{const:"re",type:"string"},{const:"jsonata",type:"string"},{const:"date",type:"string"},{const:"env",type:"string"},{const:"node",type:"string"},{const:"cred",type:"string"}]}},"x-nrg-typed-input":!0,"x-nrg-form":{icon:"cube",typedInputTypes:["str","msg"]}},query:{description:"Represents a Node-RED TypedInput value and its type.",default:{type:"str",value:""},type:"object",required:["value","type"],properties:{value:{description:"The actual value entered or selected.",default:"",anyOf:[{type:"string"},{type:"number"},{type:"boolean"},{type:"null"}]},type:{description:"The type of the value (string, number, message property, etc.)",default:"str",anyOf:[{const:"msg",type:"string"},{const:"flow",type:"string"},{const:"global",type:"string"},{const:"str",type:"string"},{const:"num",type:"string"},{const:"bool",type:"string"},{const:"json",type:"string"},{const:"bin",type:"string"},{const:"re",type:"string"},{const:"jsonata",type:"string"},{const:"date",type:"string"},{const:"env",type:"string"},{const:"node",type:"string"},{const:"cred",type:"string"}]}},"x-nrg-typed-input":!0,"x-nrg-form":{icon:"search",typedInputTypes:["str","msg","jsonata"]}},externalIdField:{default:"","x-nrg-form":{icon:"key"},type:"string"},assignmentRuleId:{default:"","x-nrg-form":{icon:"gavel"},type:"string"},columnDelimiter:{default:"COMMA","x-nrg-form":{icon:"columns"},anyOf:[{const:"COMMA",type:"string"},{const:"TAB",type:"string"},{const:"PIPE",type:"string"},{const:"SEMICOLON",type:"string"},{const:"CARET",type:"string"},{const:"BACKQUOTE",type:"string"}]},lineEnding:{default:"LF","x-nrg-form":{icon:"level-down"},anyOf:[{const:"LF",type:"string"},{const:"CRLF",type:"string"}]},pollInterval:{default:5e3,minimum:1e3,"x-nrg-form":{icon:"clock-o"},type:"number"},pollTimeout:{default:6e4,minimum:5e3,"x-nrg-form":{icon:"hourglass"},type:"number"},errorPort:{default:!1,type:"boolean"},completePort:{default:!1,type:"boolean"},statusPort:{default:!1,type:"boolean"}}},credentialsSchema:null,settingsSchema:null,defaults:{name:{required:!1,value:""},connection:{required:!1,type:"salesforce-connection"},operation:{required:!1,value:"insert"},sObjectType:{required:!1,value:{type:"str",value:""}},query:{required:!1,value:{type:"str",value:""}},externalIdField:{required:!1,value:""},assignmentRuleId:{required:!1,value:""},columnDelimiter:{required:!1,value:"COMMA"},lineEnding:{required:!1,value:"LF"},pollInterval:{required:!1,value:5e3},pollTimeout:{required:!1,value:6e4},errorPort:{required:!1,value:!1},completePort:{required:!1,value:!1},statusPort:{required:!1,value:!1},validateInput:{required:!1,value:!1},validateOutput:{required:!1,value:!1}},color:"#FFFFFF",icon:"salesforce-bulk.png",inputs:1,outputs:1,inputSchema:{$id:"salesforce-bulk:input",type:"object",required:["payload"],properties:{payload:{description:"Records array, CSV string, readable stream (ingest) or SOQL string (query)"}}},outputsSchema:{$id:"salesforce-bulk:output",type:"object",required:["payload"],properties:{payload:{description:"Query: individual record. Ingest: { successfulResults, failedResults, unprocessedRecords }"}}}},"salesforce-describe":{type:"salesforce-describe",category:"salesforce",configSchema:{$id:"salesforce-describe:config",type:"object",required:["name","connection","sObjectType","errorPort","completePort","statusPort"],properties:{name:{default:"","x-nrg-form":{icon:"tag"},type:"string"},connection:{description:"Reference to salesforce-connection",format:"node-id",type:"string","x-nrg-node-type":"salesforce-connection","x-nrg-form":{icon:"cloud"}},sObjectType:{description:"Represents a Node-RED TypedInput value and its type.",default:{type:"str",value:""},type:"object",required:["value","type"],properties:{value:{description:"The actual value entered or selected.",default:"",anyOf:[{type:"string"},{type:"number"},{type:"boolean"},{type:"null"}]},type:{description:"The type of the value (string, number, message property, etc.)",default:"str",anyOf:[{const:"msg",type:"string"},{const:"flow",type:"string"},{const:"global",type:"string"},{const:"str",type:"string"},{const:"num",type:"string"},{const:"bool",type:"string"},{const:"json",type:"string"},{const:"bin",type:"string"},{const:"re",type:"string"},{const:"jsonata",type:"string"},{const:"date",type:"string"},{const:"env",type:"string"},{const:"node",type:"string"},{const:"cred",type:"string"}]}},"x-nrg-typed-input":!0,"x-nrg-form":{icon:"cube",typedInputTypes:["str","msg"]}},errorPort:{default:!1,type:"boolean"},completePort:{default:!1,type:"boolean"},statusPort:{default:!1,type:"boolean"}}},credentialsSchema:null,settingsSchema:null,defaults:{name:{required:!1,value:""},connection:{required:!1,type:"salesforce-connection"},sObjectType:{required:!1,value:{type:"str",value:""}},errorPort:{required:!1,value:!1},completePort:{required:!1,value:!1},statusPort:{required:!1,value:!1},validateInput:{required:!1,value:!1},validateOutput:{required:!1,value:!1}},color:"#FFFFFF",icon:"salesforce-describe.png",inputs:1,outputs:1,inputSchema:{$id:"salesforce-describe:input",type:"object",required:["payload"],properties:{payload:{}}},outputsSchema:{$id:"salesforce-describe:output",type:"object",required:["payload"],properties:{payload:{type:"object",required:["name","fields","childRelationships","recordTypeInfos"],properties:{name:{type:"string"},fields:{type:"array",items:{}},childRelationships:{type:"array",items:{}},recordTypeInfos:{type:"array",items:{}}}}}}},"salesforce-streaming":{type:"salesforce-streaming",category:"salesforce",configSchema:{$id:"salesforce-streaming:config",if:{type:"object",required:["subscribeType"],properties:{subscribeType:{const:"CUSTOM",type:"string"}}},then:{type:"object",required:["replayId"],properties:{replayId:{minLength:1,type:"string"}}},errorMessage:{properties:{replayId:"Replay ID is required when Subscribe Type is CUSTOM"}},type:"object",required:["name","connection","channelName","subscribeType","numRequested","errorPort","completePort","statusPort"],properties:{name:{default:"","x-nrg-form":{icon:"tag"},type:"string"},connection:{description:"Reference to salesforce-connection",format:"node-id",type:"string","x-nrg-node-type":"salesforce-connection","x-nrg-form":{icon:"cloud"}},channelName:{default:"","x-nrg-form":{icon:"rss"},type:"string"},subscribeType:{default:"LATEST","x-nrg-form":{icon:"history"},anyOf:[{const:"LATEST",type:"string"},{const:"EARLIEST",type:"string"},{const:"CUSTOM",type:"string"}]},replayId:{default:"","x-nrg-form":{icon:"bookmark"},type:"string"},numRequested:{default:100,minimum:1,maximum:100,"x-nrg-form":{icon:"sort-numeric-asc"},type:"number"},errorPort:{default:!1,type:"boolean"},completePort:{default:!1,type:"boolean"},statusPort:{default:!1,type:"boolean"}}},credentialsSchema:null,settingsSchema:null,defaults:{name:{required:!1,value:""},connection:{required:!1,type:"salesforce-connection"},channelName:{required:!1,value:""},subscribeType:{required:!1,value:"LATEST"},replayId:{required:!1,value:""},numRequested:{required:!1,value:100},errorPort:{required:!1,value:!1},completePort:{required:!1,value:!1},statusPort:{required:!1,value:!1},validateOutput:{required:!1,value:!1}},color:"#FFFFFF",icon:"salesforce-streaming.png",inputs:0,outputs:1,inputSchema:null,outputsSchema:{$id:"salesforce-streaming:output",type:"object",required:["payload","replayId","channel","topic"],properties:{payload:{},replayId:{},channel:{type:"string"},topic:{type:"string"}}}},"salesforce-apex-invocation":{type:"salesforce-apex-invocation",category:"salesforce",configSchema:{$id:"salesforce-apex-invocation:config",type:"object",required:["name","connection","apexType","method","path","actionName","errorPort","completePort","statusPort"],properties:{name:{default:"","x-nrg-form":{icon:"tag"},type:"string"},connection:{description:"Reference to salesforce-connection",format:"node-id",type:"string","x-nrg-node-type":"salesforce-connection","x-nrg-form":{icon:"cloud"}},apexType:{default:"rest","x-nrg-form":{icon:"cog"},anyOf:[{const:"rest",type:"string"},{const:"invocable",type:"string"}]},method:{default:"POST","x-nrg-form":{icon:"random"},anyOf:[{const:"GET",type:"string"},{const:"POST",type:"string"},{const:"PUT",type:"string"},{const:"PATCH",type:"string"},{const:"DELETE",type:"string"}]},path:{description:"Represents a Node-RED TypedInput value and its type.",default:{type:"str",value:""},type:"object",required:["value","type"],properties:{value:{description:"The actual value entered or selected.",default:"",anyOf:[{type:"string"},{type:"number"},{type:"boolean"},{type:"null"}]},type:{description:"The type of the value (string, number, message property, etc.)",default:"str",anyOf:[{const:"msg",type:"string"},{const:"flow",type:"string"},{const:"global",type:"string"},{const:"str",type:"string"},{const:"num",type:"string"},{const:"bool",type:"string"},{const:"json",type:"string"},{const:"bin",type:"string"},{const:"re",type:"string"},{const:"jsonata",type:"string"},{const:"date",type:"string"},{const:"env",type:"string"},{const:"node",type:"string"},{const:"cred",type:"string"}]}},"x-nrg-typed-input":!0,"x-nrg-form":{icon:"link",typedInputTypes:["str","msg"]}},actionName:{default:"","x-nrg-form":{icon:"bolt"},type:"string"},errorPort:{default:!1,type:"boolean"},completePort:{default:!1,type:"boolean"},statusPort:{default:!1,type:"boolean"}}},credentialsSchema:null,settingsSchema:null,defaults:{name:{required:!1,value:""},connection:{required:!1,type:"salesforce-connection"},apexType:{required:!1,value:"rest"},method:{required:!1,value:"POST"},path:{required:!1,value:{type:"str",value:""}},actionName:{required:!1,value:""},errorPort:{required:!1,value:!1},completePort:{required:!1,value:!1},statusPort:{required:!1,value:!1},validateInput:{required:!1,value:!1},validateOutput:{required:!1,value:!1}},color:"#FFFFFF",icon:"salesforce-apex-invocation.png",inputs:1,outputs:1,inputSchema:{$id:"salesforce-apex-invocation:input",type:"object",required:["payload"],properties:{payload:{}}},outputsSchema:{$id:"salesforce-apex-invocation:output",type:"object",required:["payload"],properties:{payload:{}}}},"salesforce-apex-code":{type:"salesforce-apex-code",category:"salesforce",configSchema:{$id:"salesforce-apex-code:config",type:"object",required:["name","connection","apexType","className","urlMapping","httpMethod","code","errorPort","completePort","statusPort"],properties:{name:{default:"","x-nrg-form":{icon:"tag"},type:"string"},connection:{description:"Reference to salesforce-connection",format:"node-id",type:"string","x-nrg-node-type":"salesforce-connection","x-nrg-form":{icon:"cloud"}},apexType:{default:"invocable","x-nrg-form":{icon:"cog"},anyOf:[{const:"invocable",type:"string"},{const:"rest",type:"string"}]},className:{default:"","x-nrg-form":{icon:"file-code-o"},type:"string"},urlMapping:{default:"","x-nrg-form":{icon:"link"},type:"string"},httpMethod:{default:"HttpPost","x-nrg-form":{icon:"random"},anyOf:[{const:"HttpGet",type:"string"},{const:"HttpPost",type:"string"},{const:"HttpPut",type:"string"},{const:"HttpPatch",type:"string"},{const:"HttpDelete",type:"string"}]},code:{default:`private static Object run(String payload) {
|
|
2
|
+
// Your code here
|
|
3
|
+
return payload;
|
|
4
|
+
}`,"x-nrg-form":{editorLanguage:"apex"},type:"string"},errorPort:{default:!1,type:"boolean"},completePort:{default:!1,type:"boolean"},statusPort:{default:!1,type:"boolean"}}},credentialsSchema:null,settingsSchema:{$id:"salesforce-apex-code:settings",type:"object",required:["classPrefix","languageServerUrl"],properties:{classPrefix:{default:"NRG_",type:"string"},languageServerUrl:{default:"",exportable:!0,type:"string"}}},defaults:{name:{required:!1,value:""},connection:{required:!1,type:"salesforce-connection"},apexType:{required:!1,value:"invocable"},className:{required:!1,value:""},urlMapping:{required:!1,value:""},httpMethod:{required:!1,value:"HttpPost"},code:{required:!1,value:`private static Object run(String payload) {
|
|
5
|
+
// Your code here
|
|
6
|
+
return payload;
|
|
7
|
+
}`},errorPort:{required:!1,value:!1},completePort:{required:!1,value:!1},statusPort:{required:!1,value:!1},validateInput:{required:!1,value:!1},validateOutput:{required:!1,value:!1}},color:"#FFFFFF",icon:"salesforce-apex-code.png",inputs:1,outputs:1,inputSchema:{$id:"salesforce-apex-code:input",type:"object",required:["payload"],properties:{payload:{}}},outputsSchema:{$id:"salesforce-apex-code:output",type:"object",required:["payload"],properties:{payload:{}}}}},Ee={class:"form-row"},De={class:"form-row"},Ue={class:"form-row"},Fe={class:"form-row"},Me={class:"form-row"},Le={class:"form-row",style:{border:"1px solid var(--red-ui-primary-border-color, #ddd)","border-radius":"4px",padding:"12px","margin-top":"8px"}},Ae={style:{display:"flex","align-items":"center",gap:"8px","margin-bottom":"8px"}},He={style:{"font-weight":"500"}},ze={style:{display:"flex",gap:"8px"}},Ve=["disabled"],fe=D({__name:"salesforce-connection",props:{node:{}},setup(e){const n=R("unknown"),t=R(""),o=R(!1);async function l(){if(!e.node.id){n.value="disconnected";return}try{const u=await $.ajax({url:`salesforce/auth/status/${e.node.id}`,type:"GET",dataType:"json"});n.value=u.authenticated?"connected":"disconnected",u.instanceUrl&&(t.value=u.instanceUrl)}catch{n.value="disconnected"}}async function i(){if(!e.node.loginUrl||!e.node.clientId){RED.notify("Please fill in Login URL and Client ID before authorizing.","warning");return}o.value=!0;try{const u=await $.ajax({url:"salesforce/auth/start",type:"POST",contentType:"application/json",data:JSON.stringify({nodeId:e.node.id,loginUrl:e.node.loginUrl,clientId:e.node.clientId,callbackUrl:e.node.callbackUrl||void 0}),dataType:"json"});window.open(u.authorizationUrl,"salesforce-auth","width=600,height=700,menubar=no,toolbar=no")}catch{RED.notify("Failed to start authorization. Check the logs.","error")}finally{o.value=!1}}function c(u){var r;((r=u.data)==null?void 0:r.type)==="salesforce-auth-success"&&u.data.nodeId===e.node.id&&(n.value="connected",u.data.instanceUrl&&(t.value=u.data.instanceUrl),e.node.credentials||(e.node.credentials={}),e.node.credentials.accessToken=u.data.accessToken,e.node.credentials.refreshToken=u.data.refreshToken,e.node.credentials.instanceUrl=u.data.instanceUrl,RED.notify("Salesforce authorization successful!","success"))}function g(){t.value&&window.open(t.value,"_blank")}ke(()=>{window.addEventListener("message",c),l()}),pe(()=>{window.removeEventListener("message",c)});const d=[{value:"62.0",label:"62.0"},{value:"61.0",label:"61.0"},{value:"60.0",label:"60.0"},{value:"59.0",label:"59.0"},{value:"58.0",label:"58.0"},{value:"57.0",label:"57.0"},{value:"56.0",label:"56.0"},{value:"55.0",label:"55.0"}];return(u,r)=>{const s=b("NodeRedInput"),f=b("NodeRedSelectInput");return y(),m(w,null,[a("div",Ee,[p(s,{value:e.node.name,"onUpdate:value":r[0]||(r[0]=x=>e.node.name=x),label:"Name",icon:"tag"},null,8,["value"])]),a("div",De,[p(s,{value:e.node.loginUrl,"onUpdate:value":r[1]||(r[1]=x=>e.node.loginUrl=x),label:"Login URL",icon:"globe"},null,8,["value"])]),a("div",Ue,[p(s,{value:e.node.clientId,"onUpdate:value":r[2]||(r[2]=x=>e.node.clientId=x),label:"Client ID",icon:"key"},null,8,["value"])]),a("div",Fe,[p(f,{value:e.node.apiVersion,"onUpdate:value":r[3]||(r[3]=x=>e.node.apiVersion=x),label:"API Version",icon:"code-fork",options:d},null,8,["value"])]),a("div",Me,[p(s,{value:e.node.callbackUrl,"onUpdate:value":r[4]||(r[4]=x=>e.node.callbackUrl=x),label:"Callback URL",icon:"exchange"},null,8,["value"]),r[5]||(r[5]=a("div",{class:"form-tips",style:{"max-width":"100%",width:"100%","box-sizing":"border-box","margin-top":"4px"}},[a("i",{class:"fa fa-info-circle"}),I(" Optional. Override the auto-detected callback URL for reverse proxy setups. ")],-1))]),a("div",Le,[a("div",Ae,[a("i",{class:"fa fa-circle",style:$e({color:n.value==="connected"?"#22c55e":n.value==="disconnected"?"#ef4444":"#9ca3af",fontSize:"10px"})},null,4),a("span",He,[n.value==="connected"?(y(),m(w,{key:0},[I(" Connected to "+V(t.value),1)],64)):n.value==="disconnected"?(y(),m(w,{key:1},[I(" Not Connected ")],64)):(y(),m(w,{key:2},[I(" Checking... ")],64))])]),a("div",ze,[a("button",{class:"red-ui-button",disabled:o.value,style:{flex:"1"},onClick:i},[r[6]||(r[6]=a("i",{class:"fa fa-sign-in"},null,-1)),I(" "+V(o.value?"Opening Salesforce...":n.value==="connected"?"Re-authorize":"Authorize with Salesforce"),1)],8,Ve),n.value==="connected"&&t.value?(y(),m("button",{key:0,class:"red-ui-button",style:{flex:"1"},onClick:g},[...r[7]||(r[7]=[a("i",{class:"fa fa-external-link"},null,-1),I(" Open Org ",-1)])])):S("",!0)])])],64)}}}),Be={class:"form-row"},Ge={class:"form-row"},Qe={class:"form-row"},We={class:"form-row"},Je={class:"form-row"},Ke={key:0,class:"form-row"},ye=D({__name:"salesforce-dml",props:{node:{}},setup(e){const n=[{value:"create",label:"create"},{value:"read",label:"read"},{value:"update",label:"update"},{value:"delete",label:"delete"},{value:"upsert",label:"upsert"}];return(t,o)=>{const l=b("NodeRedInput"),i=b("NodeRedConfigInput"),c=b("NodeRedSelectInput"),g=b("NodeRedTypedInput");return y(),m(w,null,[a("div",Be,[p(l,{value:e.node.name,"onUpdate:value":o[0]||(o[0]=d=>e.node.name=d),label:"Name",icon:"tag"},null,8,["value"])]),a("div",Ge,[p(i,{value:e.node.connection,type:"salesforce-connection",node:e.node,"prop-name":"connection",label:"Connection",icon:"cloud","onUpdate:value":o[1]||(o[1]=d=>e.node.connection=d)},null,8,["value","node"])]),a("div",Qe,[p(c,{value:e.node.operation,"onUpdate:value":o[2]||(o[2]=d=>e.node.operation=d),label:"Operation",icon:"pencil",options:n},null,8,["value"])]),a("div",We,[p(g,{value:e.node.sObjectType,label:"SObject Type",icon:"cube",types:["str","msg"],"onUpdate:value":o[3]||(o[3]=d=>e.node.sObjectType=d)},null,8,["value"])]),a("div",Je,[p(g,{value:e.node.record,label:"Record",icon:"file-code-o",types:["json","msg"],"onUpdate:value":o[4]||(o[4]=d=>e.node.record=d)},null,8,["value"])]),e.node.operation==="upsert"?(y(),m("div",Ke,[p(l,{value:e.node.externalIdField,"onUpdate:value":o[5]||(o[5]=d=>e.node.externalIdField=d),label:"External ID Field",icon:"key"},null,8,["value"])])):S("",!0)],64)}}}),Ye={class:"form-row"},Ze={class:"form-row"},Xe={class:"form-row"},_e={key:0,class:"form-row"},et={key:1,class:"form-row"},tt={key:2,class:"form-row"},nt={key:3,class:"form-row"},ot={class:"form-row"},at={class:"form-row"},lt={class:"form-row"},st={class:"form-row"},me=D({__name:"salesforce-bulk",props:{node:{}},setup(e){const n=()=>e.node.operation!=="query",t=[{value:"insert",label:"Insert"},{value:"update",label:"Update"},{value:"upsert",label:"Upsert"},{value:"delete",label:"Delete"},{value:"hardDelete",label:"Hard Delete"},{value:"query",label:"Query"}],o=[{value:"COMMA",label:"Comma (,)"},{value:"TAB",label:"Tab"},{value:"PIPE",label:"Pipe (|)"},{value:"SEMICOLON",label:"Semicolon (;)"},{value:"CARET",label:"Caret (^)"},{value:"BACKQUOTE",label:"Backquote (`)"}],l=[{value:"LF",label:"LF (Unix)"},{value:"CRLF",label:"CRLF (Windows)"}];return(i,c)=>{const g=b("NodeRedInput"),d=b("NodeRedConfigInput"),u=b("NodeRedSelectInput"),r=b("NodeRedTypedInput");return y(),m(w,null,[a("div",Ye,[p(g,{value:e.node.name,"onUpdate:value":c[0]||(c[0]=s=>e.node.name=s),label:"Name",icon:"tag"},null,8,["value"])]),a("div",Ze,[p(d,{value:e.node.connection,type:"salesforce-connection",node:e.node,"prop-name":"connection",label:"Connection",icon:"cloud","onUpdate:value":c[1]||(c[1]=s=>e.node.connection=s)},null,8,["value","node"])]),a("div",Xe,[p(u,{value:e.node.operation,"onUpdate:value":c[2]||(c[2]=s=>e.node.operation=s),label:"Operation",icon:"database",options:t},null,8,["value"])]),n()?(y(),m("div",_e,[p(r,{value:e.node.sObjectType,label:"SObject Type",icon:"cube",types:["str","msg"],"onUpdate:value":c[3]||(c[3]=s=>e.node.sObjectType=s)},null,8,["value"])])):S("",!0),n()?S("",!0):(y(),m("div",et,[p(r,{value:e.node.query,label:"SOQL Query",icon:"search",types:["str","msg","jsonata"],"onUpdate:value":c[4]||(c[4]=s=>e.node.query=s)},null,8,["value"])])),e.node.operation==="upsert"?(y(),m("div",tt,[p(g,{value:e.node.externalIdField,"onUpdate:value":c[5]||(c[5]=s=>e.node.externalIdField=s),label:"External ID Field",icon:"key"},null,8,["value"])])):S("",!0),n()&&e.node.operation!=="delete"&&e.node.operation!=="hardDelete"?(y(),m("div",nt,[p(g,{value:e.node.assignmentRuleId,"onUpdate:value":c[6]||(c[6]=s=>e.node.assignmentRuleId=s),label:"Assignment Rule ID",icon:"gavel"},null,8,["value"])])):S("",!0),a("div",ot,[p(u,{value:e.node.columnDelimiter,"onUpdate:value":c[7]||(c[7]=s=>e.node.columnDelimiter=s),label:"Column Delimiter",icon:"columns",options:o},null,8,["value"])]),a("div",at,[p(u,{value:e.node.lineEnding,"onUpdate:value":c[8]||(c[8]=s=>e.node.lineEnding=s),label:"Line Ending",icon:"level-down",options:l},null,8,["value"])]),a("div",lt,[p(g,{value:e.node.pollInterval,"onUpdate:value":c[9]||(c[9]=s=>e.node.pollInterval=s),label:"Poll Interval (ms)",icon:"clock-o",type:"number"},null,8,["value"])]),a("div",st,[p(g,{value:e.node.pollTimeout,"onUpdate:value":c[10]||(c[10]=s=>e.node.pollTimeout=s),label:"Poll Timeout (ms)",icon:"hourglass",type:"number"},null,8,["value"])])],64)}}}),rt=3e4,ie=new Map;async function it(e,n=!1){if(!n){const l=ie.get(e);if(l&&Date.now()-l.timestamp<rt)return l.data}const t=await fetch(`salesforce/list-streaming-channels/${e}`);if(!t.ok)throw new Error(`Failed to fetch channels: ${t.statusText}`);const o=await t.json();return ie.set(e,{data:o,timestamp:Date.now()}),o}function ct(e){ie.delete(e)}const ut={class:"form-row"},dt={class:"form-row"},pt={class:"form-row"},ft={style:{display:"flex",gap:"4px","align-items":"flex-end"}},yt={style:{flex:"1"}},mt={key:1,style:{padding:"8px 0",color:"var(--red-ui-text-color-disabled)"}},gt={key:2,style:{padding:"8px 0",color:"var(--red-ui-text-color-disabled)"}},vt=["disabled"],bt={class:"form-row"},xt={key:0,class:"form-row"},ht={class:"form-row"},ge=D({__name:"salesforce-streaming",props:{node:{}},setup(e){const n=[{value:"LATEST",label:"Latest"},{value:"EARLIEST",label:"Earliest"},{value:"CUSTOM",label:"Custom (Replay ID)"}],t=R([]),o=R(!1),l=C(()=>t.value.map(g=>({value:g.value,label:g.label})));async function i(g=!1){if(e.node.connection){o.value=!0;try{t.value=await it(e.node.connection,g)}catch{t.value=[]}finally{o.value=!1}}}function c(){e.node.connection&&(ct(e.node.connection),i(!0))}return J(()=>e.node.connection,()=>i(),{immediate:!0}),(g,d)=>{const u=b("NodeRedInput"),r=b("NodeRedConfigInput"),s=b("NodeRedSelectInput");return y(),m(w,null,[a("div",ut,[p(u,{value:e.node.name,"onUpdate:value":d[0]||(d[0]=f=>e.node.name=f),label:"Name",icon:"tag"},null,8,["value"])]),a("div",dt,[p(r,{value:e.node.connection,type:"salesforce-connection",node:e.node,"prop-name":"connection",label:"Connection",icon:"cloud","onUpdate:value":d[1]||(d[1]=f=>e.node.connection=f)},null,8,["value","node"])]),a("div",pt,[a("div",ft,[a("div",yt,[l.value.length>0?(y(),se(s,{key:l.value.length,value:e.node.channelName,"onUpdate:value":d[2]||(d[2]=f=>e.node.channelName=f),label:"Channel",icon:"rss",options:l.value},null,8,["value","options"])):o.value?(y(),m("div",mt,[...d[6]||(d[6]=[a("i",{class:"fa fa-spinner fa-spin"},null,-1),I(" Loading channels... ",-1)])])):(y(),m("div",gt," No channels found. Select a connection first. "))]),a("button",{class:"red-ui-button",style:{height:"34px","margin-bottom":"0"},disabled:o.value,onClick:c},[a("i",{class:re(["fa fa-refresh",{"fa-spin":o.value}])},null,2)],8,vt)])]),a("div",bt,[p(s,{value:e.node.subscribeType,"onUpdate:value":d[3]||(d[3]=f=>e.node.subscribeType=f),label:"Subscribe Type",icon:"history",options:n},null,8,["value"])]),e.node.subscribeType==="CUSTOM"?(y(),m("div",xt,[p(u,{value:e.node.replayId,"onUpdate:value":d[4]||(d[4]=f=>e.node.replayId=f),label:"Replay ID",icon:"bookmark"},null,8,["value"])])):S("",!0),a("div",ht,[p(u,{value:e.node.numRequested,"onUpdate:value":d[5]||(d[5]=f=>e.node.numRequested=f),label:"Batch Size",icon:"sort-numeric-asc",type:"number"},null,8,["value"])])],64)}}}),St=3e4,ce=new Map;async function Tt(e,n=!1){if(!n){const l=ce.get(e);if(l&&Date.now()-l.timestamp<St)return l.data}const t=await fetch(`salesforce/list-apex-classes/${e}`);if(!t.ok)throw new Error(`Failed to fetch apex classes: ${t.statusText}`);const o=await t.json();return ce.set(e,{data:o,timestamp:Date.now()}),o}function It(e){ce.delete(e)}const qt={class:"form-row"},Pt={class:"form-row"},Rt={class:"form-row"},wt={class:"form-row"},Ot={style:{display:"flex",gap:"4px","align-items":"flex-end"}},Ct={style:{flex:"1"}},kt={key:1,style:{padding:"8px 0",color:"var(--red-ui-text-color-disabled)"}},$t={key:2,style:{padding:"8px 0",color:"var(--red-ui-text-color-disabled)"}},Nt=["disabled"],jt={class:"form-row"},Et={key:1,class:"form-row"},Dt={style:{display:"flex",gap:"4px","align-items":"flex-end"}},Ut={style:{flex:"1"}},Ft={key:1,style:{padding:"8px 0",color:"var(--red-ui-text-color-disabled)"}},Mt={key:2,style:{padding:"8px 0",color:"var(--red-ui-text-color-disabled)"}},Lt=["disabled"],ve=D({__name:"salesforce-apex-invocation",props:{node:{}},setup(e){var n;const t=[{value:"rest",label:"REST"},{value:"invocable",label:"Invocable"}],o=[{value:"GET",label:"GET"},{value:"POST",label:"POST"},{value:"PUT",label:"PUT"},{value:"PATCH",label:"PATCH"},{value:"DELETE",label:"DELETE"}],l=R({rest:[],invocable:[]}),i=R(!1),c=C(()=>l.value.rest.map(s=>({value:s.urlMapping||s.name,label:s.urlMapping?`${s.name} (${s.urlMapping})`:s.name}))),g=C(()=>l.value.invocable.map(s=>({value:s.name,label:s.name}))),d=R(typeof e.node.path=="object"?((n=e.node.path)==null?void 0:n.value)||"":e.node.path||"");J(d,s=>{e.node.path={type:"str",value:s}});async function u(s=!1){if(e.node.connection){i.value=!0;try{l.value=await Tt(e.node.connection,s)}catch{l.value={rest:[],invocable:[]}}finally{i.value=!1}}}function r(){e.node.connection&&(It(e.node.connection),u(!0))}return J(()=>e.node.connection,()=>u(),{immediate:!0}),(s,f)=>{const x=b("NodeRedInput"),le=b("NodeRedConfigInput"),v=b("NodeRedSelectInput");return y(),m(w,null,[a("div",qt,[p(x,{value:e.node.name,"onUpdate:value":f[0]||(f[0]=P=>e.node.name=P),label:"Name",icon:"tag"},null,8,["value"])]),a("div",Pt,[p(le,{value:e.node.connection,type:"salesforce-connection",node:e.node,"prop-name":"connection",label:"Connection",icon:"cloud","onUpdate:value":f[1]||(f[1]=P=>e.node.connection=P)},null,8,["value","node"])]),a("div",Rt,[p(v,{value:e.node.apexType,"onUpdate:value":f[2]||(f[2]=P=>e.node.apexType=P),label:"Type",icon:"cog",options:t},null,8,["value"])]),e.node.apexType==="rest"?(y(),m(w,{key:0},[a("div",wt,[a("div",Ot,[a("div",Ct,[c.value.length>0?(y(),se(v,{key:"rest-"+c.value.length,value:d.value,"onUpdate:value":f[3]||(f[3]=P=>d.value=P),label:"Endpoint",icon:"link",options:c.value},null,8,["value","options"])):i.value?(y(),m("div",kt,[...f[6]||(f[6]=[a("i",{class:"fa fa-spinner fa-spin"},null,-1),I(" Loading endpoints... ",-1)])])):(y(),m("div",$t," No REST endpoints found. "))]),a("button",{class:"red-ui-button",style:{height:"34px","margin-bottom":"0"},disabled:i.value,onClick:r},[a("i",{class:re(["fa fa-refresh",{"fa-spin":i.value}])},null,2)],8,Nt)])]),a("div",jt,[p(v,{value:e.node.method,"onUpdate:value":f[4]||(f[4]=P=>e.node.method=P),label:"Method",icon:"random",options:o},null,8,["value"])])],64)):S("",!0),e.node.apexType==="invocable"?(y(),m("div",Et,[a("div",Dt,[a("div",Ut,[g.value.length>0?(y(),se(v,{key:"inv-"+g.value.length,value:e.node.actionName,"onUpdate:value":f[5]||(f[5]=P=>e.node.actionName=P),label:"Action",icon:"bolt",options:g.value},null,8,["value","options"])):i.value?(y(),m("div",Ft,[...f[7]||(f[7]=[a("i",{class:"fa fa-spinner fa-spin"},null,-1),I(" Loading actions... ",-1)])])):(y(),m("div",Mt," No invocable actions found. "))]),a("button",{class:"red-ui-button",style:{height:"34px","margin-bottom":"0"},disabled:i.value,onClick:r},[a("i",{class:re(["fa fa-refresh",{"fa-spin":i.value}])},null,2)],8,Lt)])])):S("",!0)],64)}}}),Fn=`private static Object run(String payload) {
|
|
8
|
+
// Your code here
|
|
9
|
+
return payload;
|
|
10
|
+
}`;function At(e,n){return`public class ${e} {
|
|
11
|
+
public class Input {
|
|
12
|
+
@InvocableVariable(required=true)
|
|
13
|
+
public String payload;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
public class Output {
|
|
17
|
+
@InvocableVariable
|
|
18
|
+
public String result;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
@InvocableMethod(label='${e}' description='Generated by NRG')
|
|
22
|
+
public static List<Output> execute(List<Input> inputs) {
|
|
23
|
+
Output out = new Output();
|
|
24
|
+
Object returnValue = run(inputs[0].payload);
|
|
25
|
+
out.result = returnValue instanceof String
|
|
26
|
+
? (String) returnValue
|
|
27
|
+
: JSON.serialize(returnValue);
|
|
28
|
+
return new List<Output>{ out };
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
${n}
|
|
32
|
+
}`}const Ht={HttpGet:"doGet",HttpPost:"doPost",HttpPut:"doPut",HttpPatch:"doPatch",HttpDelete:"doDelete"},zt={HttpGet:!1,HttpPost:!0,HttpPut:!0,HttpPatch:!0,HttpDelete:!1};function Vt(e,n,t,o){const l=Ht[t],c=zt[t]?` String payload = RestContext.request.requestBody != null
|
|
33
|
+
? RestContext.request.requestBody.toString()
|
|
34
|
+
: null;`:` String payload = RestContext.request.params != null
|
|
35
|
+
? JSON.serialize(RestContext.request.params)
|
|
36
|
+
: null;`;return`@RestResource(urlMapping='${n}')
|
|
37
|
+
global class ${e} {
|
|
38
|
+
@${t}
|
|
39
|
+
global static String ${l}() {
|
|
40
|
+
${c}
|
|
41
|
+
Object returnValue = run(payload);
|
|
42
|
+
return returnValue instanceof String
|
|
43
|
+
? (String) returnValue
|
|
44
|
+
: JSON.serialize(returnValue);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
${o}
|
|
48
|
+
}`}const be=1800*1e3,K=new Map;async function Bt(e,n=!1){if(!n){const i=K.get(e);if(i&&Date.now()-i.timestamp<be)return i.data}const t=await fetch(`salesforce/describe-sobjects/${e}`);if(!t.ok)throw new Error(`Failed to fetch SObject definitions: ${t.statusText}`);const l=(await t.json()).sobjects||{};return K.set(e,{data:l,timestamp:Date.now()}),l}function Gt(e){K.delete(e)}function Qt(e){const n=K.get(e);return n?Date.now()-n.timestamp>=be:!1}const M=R(""),L=R(!1),B=R(!1),ue=5,Wt=1e3,Y="\0__USER_CODE__\0";let T=null,q=null,Jt=0;const N=new Map;let G=0,Z=!1,X=!1,U=0,_=null,ee=null,te=null,ne=null,F=null,j=null,A=0,Q=null;const Kt=Math.random().toString(36).slice(2,10),H=`file:///apex/${Kt}.cls`;let h=null,xe=()=>"Untitled";function Yt(){return++Jt}function W(e,n){return new Promise(t=>{if(!T||T.readyState!==WebSocket.OPEN){t(null);return}const o=Yt();N.set(o,t),T.send(JSON.stringify({jsonrpc:"2.0",id:o,method:e,params:n})),setTimeout(()=>{N.has(o)&&(N.delete(o),t(null))},5e3)})}function z(e,n){!T||T.readyState!==WebSocket.OPEN||T.send(JSON.stringify({jsonrpc:"2.0",method:e,params:n}))}function E(){return window.monaco}function Zt(e){const n=E();if(!n)return 0;const t=n.languages.CompletionItemKind;return{1:t.Text,2:t.Method,3:t.Function,4:t.Constructor,5:t.Field,6:t.Variable,7:t.Class,8:t.Interface,9:t.Module,10:t.Property,11:t.Unit,12:t.Value,13:t.Enum,14:t.Keyword,15:t.Snippet,16:t.Color,17:t.File,18:t.Reference,19:t.Folder,20:t.EnumMember,21:t.Constant,22:t.Struct,23:t.Event,24:t.Operator,25:t.TypeParameter}[e]??t.Text}function Xt(e){const n=E();return n?{1:n.MarkerSeverity.Error,2:n.MarkerSeverity.Warning,3:n.MarkerSeverity.Info,4:n.MarkerSeverity.Hint}[e]??n.MarkerSeverity.Info:0}function de(e){return{textDocument:{uri:H},position:{line:e.lineNumber-1+U,character:e.column-1}}}function _t(e){const n=E();if(!(!n||!e))return new n.Range(e.start.line-U+1,e.start.character+1,e.end.line-U+1,e.end.character+1)}function oe(e){return e?typeof e=="string"?e:e.value||"":""}function en(e){const n=xe(),o=(h?.apexType||"invocable")==="rest"?Vt(n,h?.urlMapping||"/placeholder",h?.httpMethod||"HttpPost",Y):At(n,Y),l=o.indexOf(Y),i=o.substring(0,l),c=o.substring(l+Y.length),g=i.split(`
|
|
49
|
+
`).length-1;return{text:i+e+c,lineOffset:g}}function he(){var e;const n=((e=q?.getValue)==null?void 0:e.call(q))||"",t=en(n);return U=t.lineOffset,t.text}function tn(){const e=E();e&&(_=e.languages.registerCompletionItemProvider("apex",{triggerCharacters:[".",":"],provideCompletionItems:async(n,t)=>{const o=await W("textDocument/completion",de(t));return o?{suggestions:(Array.isArray(o)?o:o.items||[]).map(i=>({label:i.label,kind:Zt(i.kind||1),insertText:i.insertText||i.label,insertTextRules:i.insertTextFormat===2?e.languages.CompletionItemInsertTextRule.InsertAsSnippet:void 0,detail:i.detail||"",documentation:oe(i.documentation),range:void 0,_lspItem:i}))}:{suggestions:[]}},resolveCompletionItem:async n=>{if(!n._lspItem)return n;const t=await W("completionItem/resolve",n._lspItem);return t&&(t.detail&&(n.detail=t.detail),t.documentation&&(n.documentation=oe(t.documentation))),n}}))}function nn(){const e=E();e&&(ee=e.languages.registerHoverProvider("apex",{provideHover:async(n,t)=>{const o=await W("textDocument/hover",de(t));return!o||!o.contents?null:{contents:(Array.isArray(o.contents)?o.contents:[o.contents]).map(i=>({value:typeof i=="string"?i:i.value||""})),range:_t(o.range)}}}))}function on(){const e=E();e&&(te=e.languages.registerSignatureHelpProvider("apex",{signatureHelpTriggerCharacters:["(",","],provideSignatureHelp:async(n,t)=>{var o;const l=await W("textDocument/signatureHelp",de(t));return!l||!((o=l.signatures)!=null&&o.length)?null:{value:{signatures:l.signatures.map(i=>({label:i.label,documentation:oe(i.documentation),parameters:(i.parameters||[]).map(c=>({label:c.label,documentation:oe(c.documentation)}))})),activeSignature:l.activeSignature??0,activeParameter:l.activeParameter??0},dispose(){}}}}))}function an(e){const n=E();if(!n||!q)return;const t=q.getModel();if(!t||e.uri&&e.uri!==H)return;const o=t.getLineCount(),l=(e.diagnostics||[]).filter(i=>{var c,g;const d=(((g=(c=i.range)==null?void 0:c.start)==null?void 0:g.line)??0)-U;return d>=0&&d<o}).map(i=>{var c,g,d,u,r,s,f,x;return{severity:Xt(i.severity??1),startLineNumber:(((g=(c=i.range)==null?void 0:c.start)==null?void 0:g.line)??0)-U+1,startColumn:(((u=(d=i.range)==null?void 0:d.start)==null?void 0:u.character)??0)+1,endLineNumber:(((s=(r=i.range)==null?void 0:r.end)==null?void 0:s.line)??0)-U+1,endColumn:(((x=(f=i.range)==null?void 0:f.end)==null?void 0:x.character)??0)+1,message:i.message,source:"Apex LSP"}});n.editor.setModelMarkers(t,"apex-lsp",l)}function ln(){G=1,z("textDocument/didOpen",{textDocument:{uri:H,languageId:"apex",version:G,text:he()}})}function Se(){G++,z("textDocument/didChange",{textDocument:{uri:H,version:G},contentChanges:[{text:he()}]})}function sn(){z("textDocument/didSave",{textDocument:{uri:H}})}async function ae(e=!1){if(h?.connection)try{B.value=!1,M.value=e?"Refreshing SObject definitions...":"Loading SObject definitions...",e&&Gt(h.connection);const n=await Bt(h.connection,e),t=Object.keys(n).length;M.value=`Indexing ${t} SObjects...`,z("custom/loadSObjects",{sobjects:n}),console.log(`[Apex LSP] Loaded ${t} SObject definitions${e?" (refreshed)":" (cached)"}`),setTimeout(()=>{Se(),M.value="",j&&clearInterval(j),j=setInterval(()=>{h?.connection&&Qt(h.connection)&&(B.value=!0,clearInterval(j),j=null)},5e3)},5e3)}catch(n){console.warn("[Apex LSP] Failed to load SObject definitions:",n),M.value="",B.value=!0}}function rn(){W("initialize",{processId:null,rootUri:null,capabilities:{textDocument:{completion:{completionItem:{snippetSupport:!0,resolveSupport:{properties:["documentation","detail"]}}},hover:{contentFormat:["markdown","plaintext"]},signatureHelp:{signatureInformation:{documentationFormat:["markdown","plaintext"],parameterInformation:{labelOffsetSupport:!0}}},publishDiagnostics:{relatedInformation:!0},synchronization:{didSave:!0,dynamicRegistration:!1}}}}).then(e=>{e&&(Z=!0,L.value=!0,z("initialized",{}),tn(),nn(),on(),ln(),q?.onDidChangeModelContent&&(ne=q.onDidChangeModelContent(()=>{Se(),F&&clearTimeout(F),F=setTimeout(()=>{F=null,sn()},1e3)})),console.log("[Apex LSP] Initialized \u2014 completions, hover, and signature help active"),h?.connection&&ae())})}function Te(){if(X||A>=ue){A>=ue&&console.warn("[Apex LSP] Max reconnect attempts reached");return}const e=Wt*Math.pow(2,A);A++,console.log(`[Apex LSP] Reconnecting in ${e}ms (attempt ${A}/${ue})`),Q=setTimeout(()=>{Q=null,!X&&q&&Ie()},e)}function Ie(){const e=RED.settings.salesforceApexCodeLanguageServerUrl;if(e)try{T=new WebSocket(e),T.onopen=()=>{console.log("[Apex LSP] Connected to",e),A=0,Z=!1,L.value=!1,G=0,rn()},T.onmessage=n=>{try{const t=JSON.parse(n.data);if(t.id!=null&&N.has(t.id)){const o=N.get(t.id);N.delete(t.id),o(t.result);return}t.method==="textDocument/publishDiagnostics"&&an(t.params)}catch{}},T.onerror=n=>{console.warn("[Apex LSP] Connection error:",n)},T.onclose=()=>{console.log("[Apex LSP] Disconnected"),T=null,Z=!1,L.value=!1,N.clear(),Te()}}catch(n){console.warn("[Apex LSP] Failed to connect:",n),Te()}}function cn(){j&&(clearInterval(j),j=null),F&&(clearTimeout(F),F=null),ne&&(ne.dispose(),ne=null),_&&(_.dispose(),_=null),ee&&(ee.dispose(),ee=null),te&&(te.dispose(),te=null)}function un(e,n,t){q=e,h=n,xe=t,X=!1,Ie()}function dn(){X=!0,Q&&(clearTimeout(Q),Q=null),cn();const e=E();if(e&&q){const n=q.getModel();n&&e.editor.setModelMarkers(n,"apex-lsp",[])}T&&(Z&&z("textDocument/didClose",{textDocument:{uri:H}}),T.close(),T=null),N.clear(),q=null,h=null}const pn={class:"apex-lsp-statusbar"},fn={key:0,class:"apex-lsp-error"},yn={key:0,class:"apex-lsp-info"},mn={key:2,class:"apex-lsp-info"},gn=D({name:"SalesforceApexCodeStatusBar",__name:"salesforce-apex-code-status-bar",props:{status:{},initialized:{type:Boolean},stale:{type:Boolean},error:{},connected:{type:Boolean}},emits:["refresh"],setup(e,{emit:n}){const t=n;return(o,l)=>(y(),m("div",pn,[e.error?(y(),m("span",fn,[l[1]||(l[1]=a("i",{class:"fa fa-exclamation-triangle"},null,-1)),I(V(e.error),1)])):S("",!0),e.connected?(y(),m(w,{key:1},[e.status?(y(),m("span",yn,[l[2]||(l[2]=a("i",{class:"fa fa-spinner fa-spin"},null,-1)),I(V(e.status),1)])):e.initialized&&e.stale?(y(),m("span",{key:1,class:"apex-lsp-stale",onClick:l[0]||(l[0]=i=>t("refresh"))},[...l[3]||(l[3]=[a("i",{class:"fa fa-exclamation-circle"},null,-1),I("SObject definitions may be outdated. ",-1),a("span",{class:"apex-lsp-refresh-link"},"Refresh",-1)])])):e.initialized?(y(),m("span",mn,[...l[4]||(l[4]=[a("i",{class:"fa fa-check"},null,-1),I("Apex LSP ",-1)])])):S("",!0)],64)):S("",!0)]))}}),qe=(e,n)=>{const t=e.__vccOpts||e;for(const[o,l]of n)t[o]=l;return t},Pe=qe(gn,[["__scopeId","data-v-c3c61b53"]]),vn={class:"form-row"},bn={class:"form-row"},xn={class:"form-row"},hn={class:"form-row"},Sn={key:0,class:"form-row"},Tn={style:{color:"var(--red-ui-text-color-disabled)","font-size":"0.85em"}},In={key:1,class:"form-row"},qn={key:2,class:"form-row"},Pn={class:"form-row"},Rn=D({name:"SalesforceApexCode",__name:"salesforce-apex-code",props:{node:{}},setup(e){const n=[{value:"invocable",label:"Invocable Method"},{value:"rest",label:"REST Resource"}],t=[{value:"HttpGet",label:"GET"},{value:"HttpPost",label:"POST"},{value:"HttpPut",label:"PUT"},{value:"HttpPatch",label:"PATCH"},{value:"HttpDelete",label:"DELETE"}],o=C(()=>RED.settings.salesforceApexCodeClassPrefix||"NRG_"),l=C(()=>{const u=e.node.className||"";return o.value+u}),i=C(()=>{if(e.node.apexType!=="rest")return"";const u=e.node.urlMapping||"";if(!u)return"";if(!u.startsWith("/"))return"Must start with /";if(!/^\/[a-zA-Z0-9_\-/*]*$/.test(u))return"Only letters, numbers, hyphens, underscores, slashes, and wildcards (*) allowed";const r=u.split("/").filter(Boolean);for(let s=0;s<r.length;s++){const f=r[s];if(f.includes("*")&&f!=="*")return"Wildcard (*) must be a full path segment (e.g., /accounts/*/contacts)"}return""}),c=C(()=>{if(!e.node.className)return"";if(!/^[a-zA-Z][a-zA-Z0-9_]*$/.test(e.node.className))return"Must start with a letter and contain only letters, numbers, and underscores";const u=l.value;return/^[a-zA-Z][a-zA-Z0-9_]*$/.test(u)?u.length>40?`Full class name is ${u.length} chars (max 40)`:"":"Full class name (prefix + name) must start with a letter"}),g=C(()=>{const u=e.node.code||"";return u.trim()?/\brun\s*\(\s*String\s+\w+\s*\)/.test(u)?"":"Code must contain a run(String payload) method":""});function d(u){un(u,e.node,()=>l.value)}return J(()=>e.node.connection,u=>{u&&L.value&&ae()}),pe(()=>{dn()}),(u,r)=>{const s=b("NodeRedInput"),f=b("NodeRedConfigInput"),x=b("NodeRedSelectInput"),le=b("NodeRedEditorInput");return y(),m("div",null,[a("div",vn,[p(s,{value:e.node.name,"onUpdate:value":r[0]||(r[0]=v=>e.node.name=v),label:"Name",icon:"tag"},null,8,["value"])]),a("div",bn,[p(f,{value:e.node.connection,type:"salesforce-connection",node:e.node,"prop-name":"connection",label:"Connection",icon:"cloud","onUpdate:value":r[1]||(r[1]=v=>e.node.connection=v)},null,8,["value","node"])]),a("div",xn,[p(x,{value:e.node.apexType,"onUpdate:value":r[2]||(r[2]=v=>e.node.apexType=v),label:"Type",icon:"cog",options:n},null,8,["value"])]),a("div",hn,[p(s,{value:e.node.className,"onUpdate:value":r[3]||(r[3]=v=>e.node.className=v),label:"Class Name",icon:"file-code-o",error:c.value,required:""},null,8,["value","error"])]),l.value?(y(),m("div",Sn,[a("span",Tn,[r[9]||(r[9]=I(" Deployed as: ",-1)),a("strong",null,V(l.value),1)])])):S("",!0),e.node.apexType==="rest"?(y(),m("div",In,[p(s,{value:e.node.urlMapping,"onUpdate:value":r[4]||(r[4]=v=>e.node.urlMapping=v),label:"URL Mapping",icon:"link",placeholder:"/my/endpoint/*",error:i.value,required:""},null,8,["value","error"])])):S("",!0),e.node.apexType==="rest"?(y(),m("div",qn,[p(x,{value:e.node.httpMethod,"onUpdate:value":r[5]||(r[5]=v=>e.node.httpMethod=v),label:"HTTP Method",icon:"random",options:t},null,8,["value"])])):S("",!0),a("div",Pn,[p(le,{value:e.node.code,language:"apex",label:"Apex Code",icon:"code","onUpdate:value":r[7]||(r[7]=v=>e.node.code=v),onEditorReady:d},{"tray-footer":Ne(()=>[p(Pe,{status:k(M),initialized:k(L),stale:k(B),error:g.value,connected:!!e.node.connection,onRefresh:r[6]||(r[6]=v=>k(ae)(!0))},null,8,["status","initialized","stale","error","connected"])]),_:1},8,["value"]),p(Pe,{class:"apex-lsp-statusbar-inline",status:k(M),initialized:k(L),stale:k(B),error:g.value,connected:!!e.node.connection,onRefresh:r[8]||(r[8]=v=>k(ae)(!0))},null,8,["status","initialized","stale","error","connected"])])])}}}),Re=qe(Rn,[["__scopeId","data-v-20fff764"]]),wn=O({type:"salesforce-connection",form:{component:fe}}),On=O({type:"salesforce-soql"}),Cn=O({type:"salesforce-dml",form:{component:ye}}),kn=O({type:"salesforce-bulk",form:{component:me}}),$n=O({type:"salesforce-describe"}),Nn=O({type:"salesforce-streaming",form:{component:ge}}),jn=O({type:"salesforce-apex-invocation",form:{component:ve}}),En=O({type:"salesforce-apex-code",form:{component:Re}});we(je),Oe({"salesforce-connection":fe,"salesforce-dml":ye,"salesforce-bulk":me,"salesforce-streaming":ge,"salesforce-apex-invocation":ve,"salesforce-apex-code":Re}),Ce([wn,On,Cn,kn,$n,Nn,jn,En]);
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
|
|
2
|
+
.apex-lsp-statusbar[data-v-c3c61b53] {
|
|
3
|
+
display: flex;
|
|
4
|
+
align-items: center;
|
|
5
|
+
justify-content: space-between;
|
|
6
|
+
padding: 3px 8px;
|
|
7
|
+
font-size: 12px;
|
|
8
|
+
font-family: var(--red-ui-monospace-font);
|
|
9
|
+
background: var(--red-ui-secondary-background-color);
|
|
10
|
+
}
|
|
11
|
+
.apex-lsp-statusbar i[data-v-c3c61b53] {
|
|
12
|
+
margin-right: 5px;
|
|
13
|
+
font-size: 10px;
|
|
14
|
+
}
|
|
15
|
+
.apex-lsp-info[data-v-c3c61b53] {
|
|
16
|
+
color: var(--red-ui-text-color-disabled);
|
|
17
|
+
}
|
|
18
|
+
.apex-lsp-error[data-v-c3c61b53] {
|
|
19
|
+
color: var(--red-ui-text-color-error, #f48771);
|
|
20
|
+
}
|
|
21
|
+
.apex-lsp-stale[data-v-c3c61b53] {
|
|
22
|
+
color: var(--red-ui-text-color-warning, #cca700);
|
|
23
|
+
cursor: pointer;
|
|
24
|
+
}
|
|
25
|
+
.apex-lsp-refresh-link[data-v-c3c61b53] {
|
|
26
|
+
text-decoration: underline;
|
|
27
|
+
margin-left: 4px;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
.apex-lsp-statusbar-inline[data-v-20fff764] {
|
|
31
|
+
border: 1px solid var(--red-ui-primary-border-color);
|
|
32
|
+
border-top: none;
|
|
33
|
+
border-bottom-left-radius: 4px;
|
|
34
|
+
border-bottom-right-radius: 4px;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.red-ui-tray-footer {
|
|
38
|
+
position: relative;
|
|
39
|
+
z-index: 10;
|
|
40
|
+
}
|
|
41
|
+
.red-ui-tray-footer .apex-lsp-statusbar {
|
|
42
|
+
padding: 2px 8px;
|
|
43
|
+
font-size: 11px;
|
|
44
|
+
line-height: 1;
|
|
45
|
+
}
|
|
46
|
+
.red-ui-tray-footer .apex-lsp-statusbar i {
|
|
47
|
+
font-size: 9px;
|
|
48
|
+
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{defineNode as f,__setSchemas as F,__setForms as O,registerTypes as U}from"/nrg/assets/nrg-client.js";import{defineComponent as T,ref as x,onMounted as k,onUnmounted as w,resolveComponent as c,openBlock as u,createElementBlock as p,Fragment as v,createElementVNode as r,createVNode as s,createTextVNode as b,normalizeStyle as N,toDisplayString as S,createCommentVNode as I}from"/nrg/assets/vue.esm-browser.prod.js";const E={"salesforce-connection":{type:"salesforce-connection",category:"config",configSchema:{$id:"salesforce-connection:config",type:"object",required:["name","loginUrl","clientId","apiVersion"],properties:{name:{default:"",type:"string"},loginUrl:{default:"https://login.salesforce.com","x-nrg-form":{icon:"globe"},type:"string"},clientId:{default:"","x-nrg-form":{icon:"key"},type:"string"},apiVersion:{default:"62.0","x-nrg-form":{icon:"code-fork"},anyOf:[{const:"62.0",type:"string"},{const:"61.0",type:"string"},{const:"60.0",type:"string"},{const:"59.0",type:"string"},{const:"58.0",type:"string"},{const:"57.0",type:"string"},{const:"56.0",type:"string"},{const:"55.0",type:"string"}]},callbackUrl:{default:"","x-nrg-form":{icon:"exchange"},type:"string"}}},credentialsSchema:{$id:"salesforce-connection:credentials",type:"object",required:["accessToken","refreshToken","instanceUrl"],properties:{accessToken:{default:"",format:"password",type:"string"},refreshToken:{default:"",format:"password",type:"string"},instanceUrl:{default:"",type:"string"}}},settingsSchema:null,defaults:{name:{required:!1,value:""},loginUrl:{required:!1,value:"https://login.salesforce.com"},clientId:{required:!1,value:""},apiVersion:{required:!1,value:"62.0"},callbackUrl:{required:!1,value:""}},credentials:{accessToken:{required:!1,type:"password",value:""},refreshToken:{required:!1,type:"password",value:""},instanceUrl:{required:!1,type:"text",value:""}},icon:"salesforce-connection.png",inputSchema:null,outputsSchema:null},"salesforce-soql":{type:"salesforce-soql",category:"salesforce",configSchema:{$id:"salesforce-soql:config",type:"object",required:["name","connection","query","errorPort","completePort","statusPort"],properties:{name:{default:"","x-nrg-form":{icon:"tag"},type:"string"},connection:{description:"Reference to salesforce-connection",format:"node-id",type:"string","x-nrg-node-type":"salesforce-connection","x-nrg-form":{icon:"cloud"}},query:{description:"Represents a Node-RED TypedInput value and its type.",default:{type:"str",value:""},type:"object",required:["value","type"],properties:{value:{description:"The actual value entered or selected.",default:"",anyOf:[{type:"string"},{type:"number"},{type:"boolean"},{type:"null"}]},type:{description:"The type of the value (string, number, message property, etc.)",default:"str",anyOf:[{const:"msg",type:"string"},{const:"flow",type:"string"},{const:"global",type:"string"},{const:"str",type:"string"},{const:"num",type:"string"},{const:"bool",type:"string"},{const:"json",type:"string"},{const:"bin",type:"string"},{const:"re",type:"string"},{const:"jsonata",type:"string"},{const:"date",type:"string"},{const:"env",type:"string"},{const:"node",type:"string"},{const:"cred",type:"string"}]}},"x-nrg-typed-input":!0,"x-nrg-form":{icon:"search",typedInputTypes:["str","msg","flow","global"]}},errorPort:{default:!1,type:"boolean"},completePort:{default:!1,type:"boolean"},statusPort:{default:!1,type:"boolean"}}},credentialsSchema:null,settingsSchema:null,defaults:{name:{required:!1,value:""},connection:{required:!1,type:"salesforce-connection"},query:{required:!1,value:{type:"str",value:""}},errorPort:{required:!1,value:!1},completePort:{required:!1,value:!1},statusPort:{required:!1,value:!1},validateInput:{required:!1,value:!1},validateOutput:{required:!1,value:!1}},color:"#FFFFFF",icon:"salesforce-soql.png",inputs:1,outputs:1,inputSchema:{$id:"salesforce-soql:input",type:"object",required:["payload"],properties:{payload:{}}},outputsSchema:{$id:"salesforce-soql:output",type:"object",required:["payload","totalSize","done"],properties:{payload:{type:"array",items:{}},totalSize:{type:"number"},done:{type:"boolean"}}}},"salesforce-dml":{type:"salesforce-dml",category:"salesforce",configSchema:{$id:"salesforce-dml:config",if:{type:"object",required:["operation"],properties:{operation:{const:"upsert",type:"string"}}},then:{type:"object",required:["externalIdField"],properties:{externalIdField:{minLength:1,type:"string"}}},errorMessage:{properties:{externalIdField:"External ID Field is required for upsert operations"}},type:"object",required:["name","connection","operation","sObjectType","record","errorPort","completePort","statusPort"],properties:{name:{default:"","x-nrg-form":{icon:"tag"},type:"string"},connection:{description:"Reference to salesforce-connection",format:"node-id",type:"string","x-nrg-node-type":"salesforce-connection","x-nrg-form":{icon:"cloud"}},operation:{default:"create","x-nrg-form":{icon:"pencil"},anyOf:[{const:"create",type:"string"},{const:"read",type:"string"},{const:"update",type:"string"},{const:"delete",type:"string"},{const:"upsert",type:"string"}]},sObjectType:{description:"Represents a Node-RED TypedInput value and its type.",default:{type:"str",value:""},type:"object",required:["value","type"],properties:{value:{description:"The actual value entered or selected.",default:"",anyOf:[{type:"string"},{type:"number"},{type:"boolean"},{type:"null"}]},type:{description:"The type of the value (string, number, message property, etc.)",default:"str",anyOf:[{const:"msg",type:"string"},{const:"flow",type:"string"},{const:"global",type:"string"},{const:"str",type:"string"},{const:"num",type:"string"},{const:"bool",type:"string"},{const:"json",type:"string"},{const:"bin",type:"string"},{const:"re",type:"string"},{const:"jsonata",type:"string"},{const:"date",type:"string"},{const:"env",type:"string"},{const:"node",type:"string"},{const:"cred",type:"string"}]}},"x-nrg-typed-input":!0,"x-nrg-form":{icon:"cube",typedInputTypes:["str","msg"]}},record:{description:"Represents a Node-RED TypedInput value and its type.",default:{type:"str",value:""},type:"object",required:["value","type"],properties:{value:{description:"The actual value entered or selected.",default:"",anyOf:[{type:"string"},{type:"number"},{type:"boolean"},{type:"null"}]},type:{description:"The type of the value (string, number, message property, etc.)",default:"str",anyOf:[{const:"msg",type:"string"},{const:"flow",type:"string"},{const:"global",type:"string"},{const:"str",type:"string"},{const:"num",type:"string"},{const:"bool",type:"string"},{const:"json",type:"string"},{const:"bin",type:"string"},{const:"re",type:"string"},{const:"jsonata",type:"string"},{const:"date",type:"string"},{const:"env",type:"string"},{const:"node",type:"string"},{const:"cred",type:"string"}]}},"x-nrg-typed-input":!0,"x-nrg-form":{icon:"file-code-o",typedInputTypes:["json","msg"]}},externalIdField:{default:"","x-nrg-form":{icon:"key"},type:"string"},errorPort:{default:!1,type:"boolean"},completePort:{default:!1,type:"boolean"},statusPort:{default:!1,type:"boolean"}}},credentialsSchema:null,settingsSchema:null,defaults:{name:{required:!1,value:""},connection:{required:!1,type:"salesforce-connection"},operation:{required:!1,value:"create"},sObjectType:{required:!1,value:{type:"str",value:""}},record:{required:!1,value:{type:"str",value:""}},externalIdField:{required:!1,value:""},errorPort:{required:!1,value:!1},completePort:{required:!1,value:!1},statusPort:{required:!1,value:!1},validateInput:{required:!1,value:!1},validateOutput:{required:!1,value:!1}},color:"#FFFFFF",icon:"salesforce-dml.png",inputs:1,outputs:1,inputSchema:{$id:"salesforce-dml:input",type:"object",required:["payload"],properties:{payload:{}}},outputsSchema:{$id:"salesforce-dml:output",type:"object",required:["payload"],properties:{payload:{}}}},"salesforce-bulk":{type:"salesforce-bulk",category:"salesforce",configSchema:{$id:"salesforce-bulk:config",if:{type:"object",required:["operation"],properties:{operation:{const:"upsert",type:"string"}}},then:{type:"object",required:["externalIdField"],properties:{externalIdField:{minLength:1,type:"string"}}},errorMessage:{properties:{externalIdField:"External ID Field is required for upsert operations"}},type:"object",required:["name","connection","operation","sObjectType","columnDelimiter","lineEnding","pollInterval","pollTimeout","errorPort","completePort","statusPort"],properties:{name:{default:"","x-nrg-form":{icon:"tag"},type:"string"},connection:{description:"Reference to salesforce-connection",format:"node-id",type:"string","x-nrg-node-type":"salesforce-connection","x-nrg-form":{icon:"cloud"}},operation:{default:"insert","x-nrg-form":{icon:"database"},anyOf:[{const:"insert",type:"string"},{const:"update",type:"string"},{const:"upsert",type:"string"},{const:"delete",type:"string"},{const:"query",type:"string"}]},sObjectType:{description:"Represents a Node-RED TypedInput value and its type.",default:{type:"str",value:""},type:"object",required:["value","type"],properties:{value:{description:"The actual value entered or selected.",default:"",anyOf:[{type:"string"},{type:"number"},{type:"boolean"},{type:"null"}]},type:{description:"The type of the value (string, number, message property, etc.)",default:"str",anyOf:[{const:"msg",type:"string"},{const:"flow",type:"string"},{const:"global",type:"string"},{const:"str",type:"string"},{const:"num",type:"string"},{const:"bool",type:"string"},{const:"json",type:"string"},{const:"bin",type:"string"},{const:"re",type:"string"},{const:"jsonata",type:"string"},{const:"date",type:"string"},{const:"env",type:"string"},{const:"node",type:"string"},{const:"cred",type:"string"}]}},"x-nrg-typed-input":!0,"x-nrg-form":{icon:"cube",typedInputTypes:["str","msg"]}},externalIdField:{default:"","x-nrg-form":{icon:"key"},type:"string"},assignmentRuleId:{default:"","x-nrg-form":{icon:"gavel"},type:"string"},columnDelimiter:{default:"COMMA","x-nrg-form":{icon:"columns"},anyOf:[{const:"COMMA",type:"string"},{const:"TAB",type:"string"},{const:"PIPE",type:"string"},{const:"SEMICOLON",type:"string"},{const:"CARET",type:"string"},{const:"BACKQUOTE",type:"string"}]},lineEnding:{default:"LF","x-nrg-form":{icon:"level-down"},anyOf:[{const:"LF",type:"string"},{const:"CRLF",type:"string"}]},pollInterval:{default:5e3,minimum:1e3,"x-nrg-form":{icon:"clock-o"},type:"number"},pollTimeout:{default:6e4,minimum:5e3,"x-nrg-form":{icon:"hourglass"},type:"number"},errorPort:{default:!1,type:"boolean"},completePort:{default:!0,type:"boolean"},statusPort:{default:!1,type:"boolean"}}},credentialsSchema:null,settingsSchema:null,defaults:{name:{required:!1,value:""},connection:{required:!1,type:"salesforce-connection"},operation:{required:!1,value:"insert"},sObjectType:{required:!1,value:{type:"str",value:""}},externalIdField:{required:!1,value:""},assignmentRuleId:{required:!1,value:""},columnDelimiter:{required:!1,value:"COMMA"},lineEnding:{required:!1,value:"LF"},pollInterval:{required:!1,value:5e3},pollTimeout:{required:!1,value:6e4},errorPort:{required:!1,value:!1},completePort:{required:!1,value:!0},statusPort:{required:!1,value:!1},validateInput:{required:!1,value:!1},validateOutput:{required:!1,value:!1}},color:"#FFFFFF",icon:"salesforce-bulk.png",inputs:1,outputs:2,inputSchema:{$id:"salesforce-bulk:input",type:"object",required:["payload"],properties:{payload:{}}},outputsSchema:{record:{$id:"salesforce-bulk:record-output",type:"object",properties:{}},jobCreated:{$id:"salesforce-bulk:job-created-output",type:"object",properties:{}}}},"salesforce-describe":{type:"salesforce-describe",category:"salesforce",configSchema:{$id:"salesforce-describe:config",type:"object",required:["name","connection","sObjectType","errorPort","completePort","statusPort"],properties:{name:{default:"","x-nrg-form":{icon:"tag"},type:"string"},connection:{description:"Reference to salesforce-connection",format:"node-id",type:"string","x-nrg-node-type":"salesforce-connection","x-nrg-form":{icon:"cloud"}},sObjectType:{description:"Represents a Node-RED TypedInput value and its type.",default:{type:"str",value:""},type:"object",required:["value","type"],properties:{value:{description:"The actual value entered or selected.",default:"",anyOf:[{type:"string"},{type:"number"},{type:"boolean"},{type:"null"}]},type:{description:"The type of the value (string, number, message property, etc.)",default:"str",anyOf:[{const:"msg",type:"string"},{const:"flow",type:"string"},{const:"global",type:"string"},{const:"str",type:"string"},{const:"num",type:"string"},{const:"bool",type:"string"},{const:"json",type:"string"},{const:"bin",type:"string"},{const:"re",type:"string"},{const:"jsonata",type:"string"},{const:"date",type:"string"},{const:"env",type:"string"},{const:"node",type:"string"},{const:"cred",type:"string"}]}},"x-nrg-typed-input":!0,"x-nrg-form":{icon:"cube",typedInputTypes:["str","msg"]}},errorPort:{default:!1,type:"boolean"},completePort:{default:!1,type:"boolean"},statusPort:{default:!1,type:"boolean"}}},credentialsSchema:null,settingsSchema:null,defaults:{name:{required:!1,value:""},connection:{required:!1,type:"salesforce-connection"},sObjectType:{required:!1,value:{type:"str",value:""}},errorPort:{required:!1,value:!1},completePort:{required:!1,value:!1},statusPort:{required:!1,value:!1},validateInput:{required:!1,value:!1},validateOutput:{required:!1,value:!1}},color:"#FFFFFF",icon:"salesforce-describe.png",inputs:1,outputs:1,inputSchema:{$id:"salesforce-describe:input",type:"object",required:["payload"],properties:{payload:{}}},outputsSchema:{$id:"salesforce-describe:output",type:"object",required:["payload"],properties:{payload:{type:"object",required:["name","fields","childRelationships","recordTypeInfos"],properties:{name:{type:"string"},fields:{type:"array",items:{}},childRelationships:{type:"array",items:{}},recordTypeInfos:{type:"array",items:{}}}}}}},"salesforce-streaming":{type:"salesforce-streaming",category:"salesforce",configSchema:{$id:"salesforce-streaming:config",if:{type:"object",required:["subscribeType"],properties:{subscribeType:{const:"CUSTOM",type:"string"}}},then:{type:"object",required:["replayId"],properties:{replayId:{minLength:1,type:"string"}}},errorMessage:{properties:{replayId:"Replay ID is required when Subscribe Type is CUSTOM"}},type:"object",required:["name","connection","channelName","subscribeType","numRequested","errorPort","completePort","statusPort"],properties:{name:{default:"","x-nrg-form":{icon:"tag"},type:"string"},connection:{description:"Reference to salesforce-connection",format:"node-id",type:"string","x-nrg-node-type":"salesforce-connection","x-nrg-form":{icon:"cloud"}},channelName:{default:"","x-nrg-form":{icon:"rss"},type:"string"},subscribeType:{default:"LATEST","x-nrg-form":{icon:"history"},anyOf:[{const:"LATEST",type:"string"},{const:"EARLIEST",type:"string"},{const:"CUSTOM",type:"string"}]},replayId:{default:"","x-nrg-form":{icon:"bookmark"},type:"string"},numRequested:{default:100,minimum:1,maximum:100,"x-nrg-form":{icon:"sort-numeric-asc"},type:"number"},errorPort:{default:!1,type:"boolean"},completePort:{default:!1,type:"boolean"},statusPort:{default:!1,type:"boolean"}}},credentialsSchema:null,settingsSchema:null,defaults:{name:{required:!1,value:""},connection:{required:!1,type:"salesforce-connection"},channelName:{required:!1,value:""},subscribeType:{required:!1,value:"LATEST"},replayId:{required:!1,value:""},numRequested:{required:!1,value:100},errorPort:{required:!1,value:!1},completePort:{required:!1,value:!1},statusPort:{required:!1,value:!1},validateOutput:{required:!1,value:!1}},color:"#FFFFFF",icon:"salesforce-streaming.png",inputs:0,outputs:1,inputSchema:null,outputsSchema:{$id:"salesforce-streaming:output",type:"object",required:["payload","replayId","channel","topic"],properties:{payload:{},replayId:{},channel:{type:"string"},topic:{type:"string"}}}},"salesforce-apex":{type:"salesforce-apex",category:"salesforce",configSchema:{$id:"salesforce-apex:config",type:"object",required:["name","connection","method","path","errorPort","completePort","statusPort"],properties:{name:{default:"","x-nrg-form":{icon:"tag"},type:"string"},connection:{description:"Reference to salesforce-connection",format:"node-id",type:"string","x-nrg-node-type":"salesforce-connection","x-nrg-form":{icon:"cloud"}},method:{default:"POST","x-nrg-form":{icon:"random"},anyOf:[{const:"GET",type:"string"},{const:"POST",type:"string"},{const:"PUT",type:"string"},{const:"PATCH",type:"string"},{const:"DELETE",type:"string"}]},path:{description:"Represents a Node-RED TypedInput value and its type.",default:{type:"str",value:""},type:"object",required:["value","type"],properties:{value:{description:"The actual value entered or selected.",default:"",anyOf:[{type:"string"},{type:"number"},{type:"boolean"},{type:"null"}]},type:{description:"The type of the value (string, number, message property, etc.)",default:"str",anyOf:[{const:"msg",type:"string"},{const:"flow",type:"string"},{const:"global",type:"string"},{const:"str",type:"string"},{const:"num",type:"string"},{const:"bool",type:"string"},{const:"json",type:"string"},{const:"bin",type:"string"},{const:"re",type:"string"},{const:"jsonata",type:"string"},{const:"date",type:"string"},{const:"env",type:"string"},{const:"node",type:"string"},{const:"cred",type:"string"}]}},"x-nrg-typed-input":!0,"x-nrg-form":{icon:"link",typedInputTypes:["str","msg"]}},errorPort:{default:!1,type:"boolean"},completePort:{default:!1,type:"boolean"},statusPort:{default:!1,type:"boolean"}}},credentialsSchema:null,settingsSchema:null,defaults:{name:{required:!1,value:""},connection:{required:!1,type:"salesforce-connection"},method:{required:!1,value:"POST"},path:{required:!1,value:{type:"str",value:""}},errorPort:{required:!1,value:!1},completePort:{required:!1,value:!1},statusPort:{required:!1,value:!1},validateInput:{required:!1,value:!1},validateOutput:{required:!1,value:!1}},color:"#FFFFFF",icon:"salesforce-apex.png",inputs:1,outputs:1,inputSchema:{$id:"salesforce-apex:input",type:"object",required:["payload"],properties:{payload:{}}},outputsSchema:{$id:"salesforce-apex:output",type:"object",required:["payload"],properties:{payload:{}}}}},C={class:"form-row"},D={class:"form-row"},L={class:"form-row"},A={class:"form-row"},M={class:"form-row"},z={class:"form-row",style:{border:"1px solid var(--red-ui-primary-border-color, #ddd)","border-radius":"4px",padding:"12px","margin-top":"8px"}},V={style:{display:"flex","align-items":"center",gap:"8px","margin-bottom":"8px"}},B={style:{"font-weight":"500"}},J=["disabled"],j=T({__name:"salesforce-connection",props:{node:{}},setup(e){const i=x("unknown"),y=x(""),a=x(!1);async function g(){if(!e.node.id){i.value="disconnected";return}try{const n=await $.ajax({url:`salesforce/auth/status/${e.node.id}`,type:"GET",dataType:"json"});i.value=n.authenticated?"connected":"disconnected",n.instanceUrl&&(y.value=n.instanceUrl)}catch{i.value="disconnected"}}async function q(){if(!e.node.loginUrl||!e.node.clientId){RED.notify("Please fill in Login URL and Client ID before authorizing.","warning");return}a.value=!0;try{const n=await $.ajax({url:"salesforce/auth/start",type:"POST",contentType:"application/json",data:JSON.stringify({nodeId:e.node.id,loginUrl:e.node.loginUrl,clientId:e.node.clientId,callbackUrl:e.node.callbackUrl||void 0}),dataType:"json"});window.open(n.authorizationUrl,"salesforce-auth","width=600,height=700,menubar=no,toolbar=no")}catch{RED.notify("Failed to start authorization. Check the logs.","error")}finally{a.value=!1}}function o(n){var l;((l=n.data)==null?void 0:l.type)==="salesforce-auth-success"&&n.data.nodeId===e.node.id&&(i.value="connected",n.data.instanceUrl&&(y.value=n.data.instanceUrl),e.node.credentials||(e.node.credentials={}),e.node.credentials.accessToken=n.data.accessToken,e.node.credentials.refreshToken=n.data.refreshToken,e.node.credentials.instanceUrl=n.data.instanceUrl,RED.notify("Salesforce authorization successful!","success"))}k(()=>{window.addEventListener("message",o),g()}),w(()=>{window.removeEventListener("message",o)});const d=[{value:"62.0",label:"62.0"},{value:"61.0",label:"61.0"},{value:"60.0",label:"60.0"},{value:"59.0",label:"59.0"},{value:"58.0",label:"58.0"},{value:"57.0",label:"57.0"},{value:"56.0",label:"56.0"},{value:"55.0",label:"55.0"}];return(n,l)=>{const m=c("NodeRedInput"),h=c("NodeRedSelectInput");return u(),p(v,null,[r("div",C,[s(m,{value:e.node.name,"onUpdate:value":l[0]||(l[0]=t=>e.node.name=t),label:"Name",icon:"tag"},null,8,["value"])]),r("div",D,[s(m,{value:e.node.loginUrl,"onUpdate:value":l[1]||(l[1]=t=>e.node.loginUrl=t),label:"Login URL",icon:"globe"},null,8,["value"])]),r("div",L,[s(m,{value:e.node.clientId,"onUpdate:value":l[2]||(l[2]=t=>e.node.clientId=t),label:"Client ID",icon:"key"},null,8,["value"])]),r("div",A,[s(h,{value:e.node.apiVersion,"onUpdate:value":l[3]||(l[3]=t=>e.node.apiVersion=t),label:"API Version",icon:"code-fork",options:d},null,8,["value"])]),r("div",M,[s(m,{value:e.node.callbackUrl,"onUpdate:value":l[4]||(l[4]=t=>e.node.callbackUrl=t),label:"Callback URL",icon:"exchange"},null,8,["value"]),l[5]||(l[5]=r("div",{class:"form-tips",style:{"max-width":"100%",width:"100%","box-sizing":"border-box","margin-top":"4px"}},[r("i",{class:"fa fa-info-circle"}),b(" Optional. Override the auto-detected callback URL for reverse proxy setups. ")],-1))]),r("div",z,[r("div",V,[r("i",{class:"fa fa-circle",style:N({color:i.value==="connected"?"#22c55e":i.value==="disconnected"?"#ef4444":"#9ca3af",fontSize:"10px"})},null,4),r("span",B,[i.value==="connected"?(u(),p(v,{key:0},[b(" Connected to "+S(y.value),1)],64)):i.value==="disconnected"?(u(),p(v,{key:1},[b(" Not Connected ")],64)):(u(),p(v,{key:2},[b(" Checking... ")],64))])]),r("button",{class:"red-ui-button",disabled:a.value,style:{width:"100%"},onClick:q},[l[6]||(l[6]=r("i",{class:"fa fa-sign-in"},null,-1)),b(" "+S(a.value?"Opening Salesforce...":i.value==="connected"?"Re-authorize":"Authorize with Salesforce"),1)],8,J)])],64)}}}),G={class:"form-row"},K={class:"form-row"},Q={class:"form-row"},H={class:"form-row"},W={class:"form-row"},X={key:0,class:"form-row"},P=T({__name:"salesforce-dml",props:{node:{}},setup(e){const i=[{value:"create",label:"create"},{value:"read",label:"read"},{value:"update",label:"update"},{value:"delete",label:"delete"},{value:"upsert",label:"upsert"}];return(y,a)=>{const g=c("NodeRedInput"),q=c("NodeRedConfigInput"),o=c("NodeRedSelectInput"),d=c("NodeRedTypedInput");return u(),p(v,null,[r("div",G,[s(g,{value:e.node.name,"onUpdate:value":a[0]||(a[0]=n=>e.node.name=n),label:"Name",icon:"tag"},null,8,["value"])]),r("div",K,[s(q,{value:e.node.connection,type:"salesforce-connection",node:e.node,"prop-name":"connection",label:"Connection",icon:"cloud","onUpdate:value":a[1]||(a[1]=n=>e.node.connection=n)},null,8,["value","node"])]),r("div",Q,[s(o,{value:e.node.operation,"onUpdate:value":a[2]||(a[2]=n=>e.node.operation=n),label:"Operation",icon:"pencil",options:i},null,8,["value"])]),r("div",H,[s(d,{value:e.node.sObjectType,label:"SObject Type",icon:"cube",types:["str","msg"],"onUpdate:value":a[3]||(a[3]=n=>e.node.sObjectType=n)},null,8,["value"])]),r("div",W,[s(d,{value:e.node.record,label:"Record",icon:"file-code-o",types:["json","msg"],"onUpdate:value":a[4]||(a[4]=n=>e.node.record=n)},null,8,["value"])]),e.node.operation==="upsert"?(u(),p("div",X,[s(g,{value:e.node.externalIdField,"onUpdate:value":a[5]||(a[5]=n=>e.node.externalIdField=n),label:"External ID Field",icon:"key"},null,8,["value"])])):I("",!0)],64)}}}),Y={class:"form-row"},Z={class:"form-row"},_={class:"form-row"},ee={class:"form-row"},te={key:0,class:"form-row"},ne={key:1,class:"form-row"},oe={class:"form-row"},re={class:"form-row"},se={class:"form-row"},le={class:"form-row"},ae={class:"form-row"},R=T({__name:"salesforce-bulk",props:{node:{}},setup(e){const i=()=>e.node.operation!=="query",y=[{value:"insert",label:"insert"},{value:"update",label:"update"},{value:"upsert",label:"upsert"},{value:"delete",label:"delete"},{value:"query",label:"query"}],a=[{value:"COMMA",label:"Comma (,)"},{value:"TAB",label:"Tab"},{value:"PIPE",label:"Pipe (|)"},{value:"SEMICOLON",label:"Semicolon (;)"},{value:"CARET",label:"Caret (^)"},{value:"BACKQUOTE",label:"Backquote (`)"}],g=[{value:"LF",label:"LF (Unix)"},{value:"CRLF",label:"CRLF (Windows)"}];return(q,o)=>{const d=c("NodeRedInput"),n=c("NodeRedConfigInput"),l=c("NodeRedSelectInput"),m=c("NodeRedTypedInput"),h=c("NodeRedToggle");return u(),p(v,null,[r("div",Y,[s(d,{value:e.node.name,"onUpdate:value":o[0]||(o[0]=t=>e.node.name=t),label:"Name",icon:"tag"},null,8,["value"])]),r("div",Z,[s(n,{value:e.node.connection,type:"salesforce-connection",node:e.node,"prop-name":"connection",label:"Connection",icon:"cloud","onUpdate:value":o[1]||(o[1]=t=>e.node.connection=t)},null,8,["value","node"])]),r("div",_,[s(l,{value:e.node.operation,"onUpdate:value":o[2]||(o[2]=t=>e.node.operation=t),label:"Operation",icon:"database",options:y},null,8,["value"])]),r("div",ee,[s(m,{value:e.node.sObjectType,label:"SObject Type",icon:"cube",types:["str","msg"],"onUpdate:value":o[3]||(o[3]=t=>e.node.sObjectType=t)},null,8,["value"])]),e.node.operation==="upsert"?(u(),p("div",te,[s(d,{value:e.node.externalIdField,"onUpdate:value":o[4]||(o[4]=t=>e.node.externalIdField=t),label:"External ID Field",icon:"key"},null,8,["value"])])):I("",!0),i()&&e.node.operation!=="delete"?(u(),p("div",ne,[s(d,{value:e.node.assignmentRuleId,"onUpdate:value":o[5]||(o[5]=t=>e.node.assignmentRuleId=t),label:"Assignment Rule ID",icon:"gavel"},null,8,["value"])])):I("",!0),r("div",oe,[s(l,{value:e.node.columnDelimiter,"onUpdate:value":o[6]||(o[6]=t=>e.node.columnDelimiter=t),label:"Column Delimiter",icon:"columns",options:a},null,8,["value"])]),r("div",re,[s(l,{value:e.node.lineEnding,"onUpdate:value":o[7]||(o[7]=t=>e.node.lineEnding=t),label:"Line Ending",icon:"level-down",options:g},null,8,["value"])]),r("div",se,[s(d,{value:e.node.pollInterval,"onUpdate:value":o[8]||(o[8]=t=>e.node.pollInterval=t),label:"Poll Interval (ms)",icon:"clock-o",type:"number"},null,8,["value"])]),r("div",le,[s(d,{value:e.node.pollTimeout,"onUpdate:value":o[9]||(o[9]=t=>e.node.pollTimeout=t),label:"Poll Timeout (ms)",icon:"hourglass",type:"number"},null,8,["value"])]),r("div",ae,[s(h,{"model-value":e.node.emitJobCreated,label:"Emit Job Created",icon:"flag","onUpdate:modelValue":o[10]||(o[10]=t=>{e.node.emitJobCreated=t,e.node.outputs=t?3:2})},null,8,["model-value"])])],64)}}}),ie=f({type:"salesforce-connection",form:{component:j}}),ce=f({type:"salesforce-soql"}),de=f({type:"salesforce-dml",form:{component:P}}),ue=f({type:"salesforce-bulk",form:{component:R}}),pe=f({type:"salesforce-describe"}),fe=f({type:"salesforce-streaming"}),ye=f({type:"salesforce-apex"});F(E),O({"salesforce-connection":j,"salesforce-dml":P,"salesforce-bulk":R}),U([ie,ce,de,ue,pe,fe,ye]);
|