snow-flow 10.0.1-dev.475 → 10.0.1-dev.476
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/package.json
CHANGED
|
@@ -1148,102 +1148,114 @@ async function getFlowTriggerInfo(
|
|
|
1148
1148
|
var tableLabel = '';
|
|
1149
1149
|
var debug: any = {};
|
|
1150
1150
|
|
|
1151
|
+
// PRIMARY: Read flow via ProcessFlow REST API (same endpoint as Flow Designer UI)
|
|
1152
|
+
// This is how the UI loads the flow — returns JSON/XML with full trigger data
|
|
1151
1153
|
try {
|
|
1152
|
-
|
|
1153
|
-
var
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
|
|
1163
|
-
|
|
1164
|
-
|
|
1165
|
-
|
|
1166
|
-
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
|
|
1171
|
-
|
|
1172
|
-
|
|
1173
|
-
|
|
1174
|
-
|
|
1175
|
-
|
|
1176
|
-
|
|
1177
|
-
)
|
|
1178
|
-
|
|
1154
|
+
debug.processflow_api = 'attempting';
|
|
1155
|
+
var pfResp = await client.get('/api/now/processflow/flow/' + flowId);
|
|
1156
|
+
var pfData = pfResp.data?.result || pfResp.data;
|
|
1157
|
+
debug.processflow_api = 'success';
|
|
1158
|
+
debug.processflow_type = typeof pfData;
|
|
1159
|
+
debug.processflow_keys = pfData && typeof pfData === 'object' ? Object.keys(pfData).slice(0, 20) : null;
|
|
1160
|
+
|
|
1161
|
+
// The ProcessFlow API returns the flow with trigger instances
|
|
1162
|
+
// Try multiple possible structures for trigger data
|
|
1163
|
+
var pfTriggers = pfData?.triggerInstances || pfData?.trigger_instances || pfData?.triggers || [];
|
|
1164
|
+
if (!Array.isArray(pfTriggers) && pfData?.model?.triggerInstances) {
|
|
1165
|
+
pfTriggers = pfData.model.triggerInstances;
|
|
1166
|
+
}
|
|
1167
|
+
if (!Array.isArray(pfTriggers) && pfData?.definition?.triggerInstances) {
|
|
1168
|
+
pfTriggers = pfData.definition.triggerInstances;
|
|
1169
|
+
}
|
|
1170
|
+
debug.processflow_triggers = Array.isArray(pfTriggers) ? pfTriggers.length : typeof pfTriggers;
|
|
1171
|
+
|
|
1172
|
+
if (Array.isArray(pfTriggers) && pfTriggers.length > 0) {
|
|
1173
|
+
var pfTrig = pfTriggers[0];
|
|
1174
|
+
debug.processflow_trigger_keys = Object.keys(pfTrig);
|
|
1175
|
+
debug.processflow_trigger_name = pfTrig.name;
|
|
1176
|
+
triggerName = pfTrig.name || pfTrig.triggerName || '';
|
|
1177
|
+
if (pfTrig.inputs && Array.isArray(pfTrig.inputs)) {
|
|
1178
|
+
for (var pfi = 0; pfi < pfTrig.inputs.length; pfi++) {
|
|
1179
|
+
if (pfTrig.inputs[pfi].name === 'table') {
|
|
1180
|
+
table = pfTrig.inputs[pfi].value?.value || str(pfTrig.inputs[pfi].value) || '';
|
|
1181
|
+
break;
|
|
1182
|
+
}
|
|
1179
1183
|
}
|
|
1180
1184
|
}
|
|
1181
|
-
|
|
1182
|
-
|
|
1183
|
-
|
|
1184
|
-
|
|
1185
|
-
|
|
1186
|
-
|
|
1187
|
-
|
|
1188
|
-
|
|
1189
|
-
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
|
|
1193
|
-
|
|
1185
|
+
}
|
|
1186
|
+
|
|
1187
|
+
// If trigger not found in expected structure, search recursively in the response
|
|
1188
|
+
if (!triggerName && pfData) {
|
|
1189
|
+
var searchForTrigger = function (obj: any, depth: number): void {
|
|
1190
|
+
if (depth > 4 || triggerName) return;
|
|
1191
|
+
if (!obj || typeof obj !== 'object') return;
|
|
1192
|
+
// Look for objects that have triggerDefinitionId or triggerType + name
|
|
1193
|
+
if (obj.triggerDefinitionId && obj.name) {
|
|
1194
|
+
triggerName = obj.name;
|
|
1195
|
+
debug.processflow_trigger_found_at = 'recursive_search';
|
|
1196
|
+
if (obj.inputs && Array.isArray(obj.inputs)) {
|
|
1197
|
+
for (var ri = 0; ri < obj.inputs.length; ri++) {
|
|
1198
|
+
if (obj.inputs[ri].name === 'table') {
|
|
1199
|
+
table = obj.inputs[ri].value?.value || str(obj.inputs[ri].value) || '';
|
|
1200
|
+
break;
|
|
1201
|
+
}
|
|
1194
1202
|
}
|
|
1195
1203
|
}
|
|
1204
|
+
return;
|
|
1205
|
+
}
|
|
1206
|
+
if (Array.isArray(obj)) {
|
|
1207
|
+
for (var ai = 0; ai < obj.length; ai++) searchForTrigger(obj[ai], depth + 1);
|
|
1196
1208
|
} else {
|
|
1197
|
-
|
|
1209
|
+
for (var key of Object.keys(obj)) searchForTrigger(obj[key], depth + 1);
|
|
1198
1210
|
}
|
|
1199
|
-
}
|
|
1200
|
-
|
|
1201
|
-
debug.payload_raw = 'null_or_empty';
|
|
1211
|
+
};
|
|
1212
|
+
searchForTrigger(pfData, 0);
|
|
1202
1213
|
}
|
|
1203
|
-
} catch (
|
|
1204
|
-
debug.
|
|
1214
|
+
} catch (pfErr: any) {
|
|
1215
|
+
debug.processflow_api = 'error: ' + pfErr.message;
|
|
1205
1216
|
}
|
|
1206
1217
|
|
|
1207
|
-
// Fallback 1:
|
|
1208
|
-
// Sending just flowId with no changes returns the current state including trigger instances
|
|
1218
|
+
// Fallback 1: Read version payload (legacy approach)
|
|
1209
1219
|
if (!triggerName || !table) {
|
|
1210
|
-
debug.
|
|
1220
|
+
debug.version_fallback = 'attempting';
|
|
1211
1221
|
try {
|
|
1212
|
-
var
|
|
1213
|
-
|
|
1214
|
-
|
|
1215
|
-
|
|
1216
|
-
|
|
1217
|
-
|
|
1218
|
-
|
|
1219
|
-
|
|
1220
|
-
|
|
1221
|
-
|
|
1222
|
-
|
|
1223
|
-
|
|
1224
|
-
|
|
1225
|
-
|
|
1226
|
-
|
|
1222
|
+
var resp = await client.get('/api/now/table/sys_hub_flow_version', {
|
|
1223
|
+
params: {
|
|
1224
|
+
sysparm_query: 'flow=' + flowId + '^ORDERBYDESCsys_created_on',
|
|
1225
|
+
sysparm_fields: 'sys_id,payload',
|
|
1226
|
+
sysparm_limit: 1
|
|
1227
|
+
}
|
|
1228
|
+
});
|
|
1229
|
+
var payload = resp.data.result?.[0]?.payload;
|
|
1230
|
+
if (payload) {
|
|
1231
|
+
var parsed = typeof payload === 'string' ? JSON.parse(payload) : payload;
|
|
1232
|
+
debug.version_payload_keys = Object.keys(parsed);
|
|
1233
|
+
var trigInst = parsed.triggerInstances || parsed.trigger_instances || [];
|
|
1234
|
+
if (Array.isArray(trigInst) && trigInst.length > 0) {
|
|
1235
|
+
if (!triggerName) triggerName = trigInst[0].name || trigInst[0].triggerName || '';
|
|
1236
|
+
if (!table && trigInst[0].inputs) {
|
|
1237
|
+
for (var vi = 0; vi < trigInst[0].inputs.length; vi++) {
|
|
1238
|
+
if (trigInst[0].inputs[vi].name === 'table') {
|
|
1239
|
+
table = trigInst[0].inputs[vi].value?.value || '';
|
|
1240
|
+
break;
|
|
1241
|
+
}
|
|
1227
1242
|
}
|
|
1228
1243
|
}
|
|
1229
1244
|
}
|
|
1230
1245
|
}
|
|
1231
|
-
} catch (
|
|
1232
|
-
debug.fallback_noop_mutation = 'error: ' + noopErr.message;
|
|
1233
|
-
}
|
|
1246
|
+
} catch (_) {}
|
|
1234
1247
|
}
|
|
1235
1248
|
|
|
1236
1249
|
// Fallback 2: query sys_hub_flow for table + trigger definition for name
|
|
1237
1250
|
if (!triggerName || !table) {
|
|
1238
|
-
debug.
|
|
1251
|
+
debug.flow_record_fallback = 'attempting';
|
|
1239
1252
|
try {
|
|
1240
1253
|
var flowResp = await client.get('/api/now/table/sys_hub_flow', {
|
|
1241
1254
|
params: { sysparm_query: 'sys_id=' + flowId, sysparm_fields: 'sys_id,name,table,trigger_type', sysparm_limit: 1 }
|
|
1242
1255
|
});
|
|
1243
1256
|
var flowRec = flowResp.data.result?.[0];
|
|
1244
|
-
debug.
|
|
1257
|
+
debug.flow_record = { table: str(flowRec?.table), trigger_type: str(flowRec?.trigger_type) };
|
|
1245
1258
|
if (!table && flowRec?.table) table = str(flowRec.table);
|
|
1246
|
-
// Try to resolve trigger name from trigger_type reference
|
|
1247
1259
|
var trigTypeId = str(flowRec?.trigger_type);
|
|
1248
1260
|
if (!triggerName && trigTypeId) {
|
|
1249
1261
|
try {
|
|
@@ -1252,7 +1264,7 @@ async function getFlowTriggerInfo(
|
|
|
1252
1264
|
});
|
|
1253
1265
|
var trigDef = trigDefResp.data.result?.[0];
|
|
1254
1266
|
if (trigDef?.name) triggerName = str(trigDef.name);
|
|
1255
|
-
debug.
|
|
1267
|
+
debug.trigger_def = { name: str(trigDef?.name), type: str(trigDef?.type) };
|
|
1256
1268
|
} catch (_) {}
|
|
1257
1269
|
}
|
|
1258
1270
|
} catch (_) {}
|