snow-flow-test 10.0.1-test.149 → 10.0.1-test.153
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
|
@@ -62,36 +62,56 @@ async function addTriggerViaGraphQL(
|
|
|
62
62
|
): Promise<{ success: boolean; triggerId?: string; steps?: any; error?: string }> {
|
|
63
63
|
const steps: any = {};
|
|
64
64
|
|
|
65
|
-
|
|
66
|
-
'record_created': { type: 'record_create', name: 'Created', triggerType: 'Record' },
|
|
67
|
-
'record_updated': { type: 'record_update', name: 'Updated', triggerType: 'Record' },
|
|
68
|
-
'record_create_or_update': { type: 'record_create_or_update', name: 'Created or Updated', triggerType: 'Record' },
|
|
69
|
-
'scheduled': { type: 'scheduled', name: 'Scheduled', triggerType: 'Scheduled' },
|
|
70
|
-
};
|
|
71
|
-
|
|
72
|
-
const config = triggerMap[triggerType] || triggerMap['record_create_or_update'];
|
|
73
|
-
|
|
74
|
-
// Trigger definitions live in sys_hub_trigger_definition, keyed by `type` field
|
|
65
|
+
// Dynamically look up trigger definition in sys_hub_trigger_definition
|
|
75
66
|
let trigDefId: string | null = null;
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
67
|
+
let trigName = '';
|
|
68
|
+
let trigType = triggerType;
|
|
69
|
+
let trigCategory = '';
|
|
70
|
+
// Try exact match on type first, then name
|
|
71
|
+
for (const field of ['type', 'name']) {
|
|
72
|
+
if (trigDefId) break;
|
|
73
|
+
try {
|
|
74
|
+
const resp = await client.get('/api/now/table/sys_hub_trigger_definition', {
|
|
75
|
+
params: {
|
|
76
|
+
sysparm_query: field + '=' + triggerType,
|
|
77
|
+
sysparm_fields: 'sys_id,type,name,category',
|
|
78
|
+
sysparm_display_value: 'true',
|
|
79
|
+
sysparm_limit: 1
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
const found = resp.data.result?.[0];
|
|
83
|
+
if (found?.sys_id) {
|
|
84
|
+
trigDefId = found.sys_id;
|
|
85
|
+
trigName = found.name || triggerType;
|
|
86
|
+
trigType = found.type || triggerType;
|
|
87
|
+
trigCategory = found.category || '';
|
|
88
|
+
steps.def_lookup = { id: found.sys_id, type: found.type, name: found.name, category: found.category, matched: field + '=' + triggerType };
|
|
89
|
+
}
|
|
90
|
+
} catch (_) {}
|
|
91
|
+
}
|
|
92
|
+
// Fallback: LIKE search on both fields
|
|
84
93
|
if (!trigDefId) {
|
|
85
94
|
try {
|
|
86
95
|
const resp = await client.get('/api/now/table/sys_hub_trigger_definition', {
|
|
87
|
-
params: {
|
|
96
|
+
params: {
|
|
97
|
+
sysparm_query: 'typeLIKE' + triggerType + '^ORnameLIKE' + triggerType,
|
|
98
|
+
sysparm_fields: 'sys_id,type,name,category',
|
|
99
|
+
sysparm_display_value: 'true',
|
|
100
|
+
sysparm_limit: 5
|
|
101
|
+
}
|
|
88
102
|
});
|
|
89
|
-
|
|
90
|
-
steps.
|
|
103
|
+
const results = resp.data.result || [];
|
|
104
|
+
steps.def_lookup_fallback_candidates = results.map((r: any) => ({ sys_id: r.sys_id, type: r.type, name: r.name, category: r.category }));
|
|
105
|
+
if (results[0]?.sys_id) {
|
|
106
|
+
trigDefId = results[0].sys_id;
|
|
107
|
+
trigName = results[0].name || triggerType;
|
|
108
|
+
trigType = results[0].type || triggerType;
|
|
109
|
+
trigCategory = results[0].category || '';
|
|
110
|
+
steps.def_lookup = { id: results[0].sys_id, type: results[0].type, name: results[0].name, category: results[0].category, matched: 'LIKE ' + triggerType };
|
|
111
|
+
}
|
|
91
112
|
} catch (_) {}
|
|
92
113
|
}
|
|
93
114
|
if (!trigDefId) return { success: false, error: 'Trigger definition not found for: ' + triggerType, steps };
|
|
94
|
-
steps.def_lookup = { id: trigDefId };
|
|
95
115
|
|
|
96
116
|
const triggerResponseFields = 'triggerInstances { inserts { sysId uiUniqueIdentifier __typename } updates deletes __typename }';
|
|
97
117
|
try {
|
|
@@ -100,10 +120,10 @@ async function addTriggerViaGraphQL(
|
|
|
100
120
|
triggerInstances: {
|
|
101
121
|
insert: [{
|
|
102
122
|
flowSysId: flowId,
|
|
103
|
-
name:
|
|
104
|
-
triggerType:
|
|
123
|
+
name: trigName,
|
|
124
|
+
triggerType: trigCategory,
|
|
105
125
|
triggerDefinitionId: trigDefId,
|
|
106
|
-
type:
|
|
126
|
+
type: trigType,
|
|
107
127
|
hasDynamicOutputs: false,
|
|
108
128
|
metadata: '{"predicates":[]}',
|
|
109
129
|
inputs: [],
|
|
@@ -157,41 +177,40 @@ async function addActionViaGraphQL(
|
|
|
157
177
|
): Promise<{ success: boolean; actionId?: string; steps?: any; error?: string }> {
|
|
158
178
|
const steps: any = {};
|
|
159
179
|
|
|
160
|
-
|
|
161
|
-
'log': ['sn_fd.action.log', 'global.sn_fd.action.log', 'global.log'],
|
|
162
|
-
'create_record': ['sn_fd.action.create_record', 'global.sn_fd.action.create_record'],
|
|
163
|
-
'update_record': ['sn_fd.action.update_record', 'global.sn_fd.action.update_record'],
|
|
164
|
-
'notification': ['sn_fd.action.send_notification', 'global.sn_fd.action.send_notification'],
|
|
165
|
-
'script': ['sn_fd.action.script', 'global.sn_fd.action.script', 'global.script_action'],
|
|
166
|
-
'field_update': ['sn_fd.action.field_update', 'global.sn_fd.action.field_update'],
|
|
167
|
-
'wait': ['sn_fd.action.wait', 'global.sn_fd.action.wait'],
|
|
168
|
-
'approval': ['sn_fd.action.create_approval', 'global.sn_fd.action.create_approval'],
|
|
169
|
-
};
|
|
170
|
-
|
|
180
|
+
// Dynamically look up action definition in sys_hub_action_type_snapshot
|
|
171
181
|
let actionDefId: string | null = null;
|
|
172
|
-
|
|
173
|
-
for (const
|
|
182
|
+
// Try exact match on internal_name first, then name
|
|
183
|
+
for (const field of ['internal_name', 'name']) {
|
|
184
|
+
if (actionDefId) break;
|
|
174
185
|
try {
|
|
175
|
-
const resp = await client.get('/api/now/table/
|
|
176
|
-
params: { sysparm_query: '
|
|
186
|
+
const resp = await client.get('/api/now/table/sys_hub_action_type_snapshot', {
|
|
187
|
+
params: { sysparm_query: field + '=' + actionType, sysparm_fields: 'sys_id,internal_name,name', sysparm_limit: 1 }
|
|
177
188
|
});
|
|
178
|
-
|
|
179
|
-
if (
|
|
189
|
+
const found = resp.data.result?.[0];
|
|
190
|
+
if (found?.sys_id) {
|
|
191
|
+
actionDefId = found.sys_id;
|
|
192
|
+
steps.def_lookup = { id: found.sys_id, internal_name: found.internal_name, name: found.name, matched: field + '=' + actionType };
|
|
193
|
+
}
|
|
180
194
|
} catch (_) {}
|
|
181
195
|
}
|
|
196
|
+
// Fallback: LIKE search on both fields
|
|
182
197
|
if (!actionDefId) {
|
|
183
198
|
try {
|
|
184
|
-
const resp = await client.get('/api/now/table/
|
|
199
|
+
const resp = await client.get('/api/now/table/sys_hub_action_type_snapshot', {
|
|
185
200
|
params: {
|
|
186
201
|
sysparm_query: 'internal_nameLIKE' + actionType + '^ORnameLIKE' + actionType,
|
|
187
|
-
sysparm_fields: 'sys_id,internal_name', sysparm_limit: 5
|
|
202
|
+
sysparm_fields: 'sys_id,internal_name,name', sysparm_limit: 5
|
|
188
203
|
}
|
|
189
204
|
});
|
|
190
|
-
|
|
205
|
+
const results = resp.data.result || [];
|
|
206
|
+
steps.def_lookup_fallback_candidates = results.map((r: any) => ({ sys_id: r.sys_id, internal_name: r.internal_name, name: r.name }));
|
|
207
|
+
if (results[0]?.sys_id) {
|
|
208
|
+
actionDefId = results[0].sys_id;
|
|
209
|
+
steps.def_lookup = { id: results[0].sys_id, internal_name: results[0].internal_name, name: results[0].name, matched: 'LIKE ' + actionType };
|
|
210
|
+
}
|
|
191
211
|
} catch (_) {}
|
|
192
212
|
}
|
|
193
213
|
if (!actionDefId) return { success: false, error: 'Action definition not found for: ' + actionType, steps };
|
|
194
|
-
steps.def_lookup = { id: actionDefId };
|
|
195
214
|
|
|
196
215
|
const uuid = generateUUID();
|
|
197
216
|
const actionResponseFields = 'actions { inserts { sysId uiUniqueIdentifier __typename } updates deletes __typename }';
|