@xuda.io/xuda-worker-bundle 1.3.2688 → 1.3.2690
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/index.js +130 -102
- package/package.json +1 -1
package/index.js
CHANGED
|
@@ -5,49 +5,6 @@ if (typeof IS_DOCKER === 'undefined' || typeof IS_PROCESS_SERVER === 'undefined'
|
|
|
5
5
|
var DOCS_OBJ = {};
|
|
6
6
|
}
|
|
7
7
|
|
|
8
|
-
// Minimal jQuery shim for plugins that still reference $
|
|
9
|
-
if (typeof $ === 'undefined' && typeof document !== 'undefined') {
|
|
10
|
-
var $ = function (selector) {
|
|
11
|
-
var nodes = typeof selector === 'string'
|
|
12
|
-
? Array.from(document.querySelectorAll(selector))
|
|
13
|
-
: selector?.nodeType ? [selector] : (selector?.length ? Array.from(selector) : []);
|
|
14
|
-
var obj = {
|
|
15
|
-
0: nodes[0], length: nodes.length,
|
|
16
|
-
toArray: function () { return nodes.slice(); },
|
|
17
|
-
find: function (s) { var r = []; for (var i = 0; i < nodes.length; i++) { r.push.apply(r, Array.from(nodes[i].querySelectorAll(s))); } return $(r); },
|
|
18
|
-
each: function (fn) { for (var i = 0; i < nodes.length; i++) { fn.call(nodes[i], i, nodes[i]); } return obj; },
|
|
19
|
-
on: function (ev, fn) { for (var i = 0; i < nodes.length; i++) nodes[i].addEventListener(ev, fn); return obj; },
|
|
20
|
-
off: function (ev, fn) { for (var i = 0; i < nodes.length; i++) nodes[i].removeEventListener(ev, fn); return obj; },
|
|
21
|
-
addClass: function (c) { for (var i = 0; i < nodes.length; i++) nodes[i].classList?.add(c); return obj; },
|
|
22
|
-
removeClass: function (c) { for (var i = 0; i < nodes.length; i++) nodes[i].classList?.remove(c); return obj; },
|
|
23
|
-
hasClass: function (c) { return nodes[0]?.classList?.contains(c) || false; },
|
|
24
|
-
attr: function (k, v) { if (typeof v === 'undefined') return nodes[0]?.getAttribute(k); for (var i = 0; i < nodes.length; i++) nodes[i].setAttribute(k, v); return obj; },
|
|
25
|
-
css: function (k, v) { for (var i = 0; i < nodes.length; i++) nodes[i].style[k] = v; return obj; },
|
|
26
|
-
data: function () { return nodes[0]?.__xuData || (nodes[0] ? (nodes[0].__xuData = {}) : {}); },
|
|
27
|
-
val: function (v) { if (typeof v === 'undefined') return nodes[0]?.value; for (var i = 0; i < nodes.length; i++) nodes[i].value = v; return obj; },
|
|
28
|
-
html: function (v) { if (typeof v === 'undefined') return nodes[0]?.innerHTML; for (var i = 0; i < nodes.length; i++) nodes[i].innerHTML = v; return obj; },
|
|
29
|
-
text: function (v) { if (typeof v === 'undefined') return nodes[0]?.textContent; for (var i = 0; i < nodes.length; i++) nodes[i].textContent = v; return obj; },
|
|
30
|
-
show: function () { for (var i = 0; i < nodes.length; i++) nodes[i].style.display = ''; return obj; },
|
|
31
|
-
hide: function () { for (var i = 0; i < nodes.length; i++) nodes[i].style.display = 'none'; return obj; },
|
|
32
|
-
remove: function () { for (var i = 0; i < nodes.length; i++) nodes[i].remove?.(); return obj; },
|
|
33
|
-
empty: function () { for (var i = 0; i < nodes.length; i++) nodes[i].innerHTML = ''; return obj; },
|
|
34
|
-
append: function (c) { var n = c?.nodeType ? c : c?.[0]; if (n && nodes[0]) nodes[0].appendChild(n); return obj; },
|
|
35
|
-
parent: function () { return $(nodes[0]?.parentElement ? [nodes[0].parentElement] : []); },
|
|
36
|
-
children: function () { return $(nodes[0] ? Array.from(nodes[0].children) : []); },
|
|
37
|
-
trigger: function (ev, d) { for (var i = 0; i < nodes.length; i++) nodes[i].dispatchEvent(new CustomEvent(ev, { detail: d })); return obj; },
|
|
38
|
-
is: function (s) { return nodes[0]?.matches?.(s) || false; },
|
|
39
|
-
prop: function (k, v) { if (typeof v === 'undefined') return nodes[0]?.[k]; for (var i = 0; i < nodes.length; i++) nodes[i][k] = v; return obj; },
|
|
40
|
-
unbind: function () { return obj; },
|
|
41
|
-
clone: function () { return $(nodes[0]?.cloneNode(true) ? [nodes[0].cloneNode(true)] : []); },
|
|
42
|
-
};
|
|
43
|
-
obj[Symbol.iterator] = function () { var i = 0; return { next: function () { return i < nodes.length ? { value: nodes[i++], done: false } : { done: true }; } }; };
|
|
44
|
-
return obj;
|
|
45
|
-
};
|
|
46
|
-
$.each = function (o, fn) { if (Array.isArray(o)) { for (var i = 0; i < o.length; i++) fn(i, o[i]); } else { Object.keys(o || {}).forEach(function (k) { fn(k, o[k]); }); } };
|
|
47
|
-
$.cookie = function () { return null; };
|
|
48
|
-
var jQuery = $;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
8
|
var glb = {};
|
|
52
9
|
var func = {};
|
|
53
10
|
func.UI = {};
|
|
@@ -121,23 +78,27 @@ glb.PROTECTED_VARS = ['_NULL', '_THIS', '_FOR_KEY', '_FOR_VAL', '_ROWNO', '_ROWI
|
|
|
121
78
|
|
|
122
79
|
func.common = {};
|
|
123
80
|
func.runtime.platform = {
|
|
81
|
+
get_global: function (name) {
|
|
82
|
+
try {
|
|
83
|
+
if (typeof globalThis === 'undefined') {
|
|
84
|
+
return null;
|
|
85
|
+
}
|
|
86
|
+
return globalThis?.[name] || null;
|
|
87
|
+
} catch (error) {
|
|
88
|
+
return null;
|
|
89
|
+
}
|
|
90
|
+
},
|
|
124
91
|
has_window: function () {
|
|
125
|
-
return
|
|
92
|
+
return !!func.runtime.platform.get_window();
|
|
126
93
|
},
|
|
127
94
|
has_document: function () {
|
|
128
|
-
return
|
|
95
|
+
return !!func.runtime.platform.get_document();
|
|
129
96
|
},
|
|
130
97
|
get_window: function () {
|
|
131
|
-
|
|
132
|
-
return window;
|
|
133
|
-
}
|
|
134
|
-
return null;
|
|
98
|
+
return func.runtime.platform.get_global('window');
|
|
135
99
|
},
|
|
136
100
|
get_document: function () {
|
|
137
|
-
|
|
138
|
-
return document;
|
|
139
|
-
}
|
|
140
|
-
return null;
|
|
101
|
+
return func.runtime.platform.get_global('document');
|
|
141
102
|
},
|
|
142
103
|
get_location: function () {
|
|
143
104
|
const win = func.runtime.platform.get_window();
|
|
@@ -148,27 +109,23 @@ func.runtime.platform = {
|
|
|
148
109
|
if (win?.navigator) {
|
|
149
110
|
return win.navigator;
|
|
150
111
|
}
|
|
151
|
-
|
|
152
|
-
return navigator;
|
|
153
|
-
}
|
|
154
|
-
return null;
|
|
112
|
+
return func.runtime.platform.get_global('navi' + 'gator');
|
|
155
113
|
},
|
|
156
114
|
is_html_element: function (value) {
|
|
157
|
-
|
|
115
|
+
const html_element = func.runtime.platform.get_global('HTML' + 'Element');
|
|
116
|
+
if (typeof html_element !== 'function') {
|
|
158
117
|
return false;
|
|
159
118
|
}
|
|
160
|
-
return value instanceof
|
|
119
|
+
return value instanceof html_element;
|
|
161
120
|
},
|
|
162
121
|
get_storage: function (type) {
|
|
163
122
|
const win = func.runtime.platform.get_window();
|
|
123
|
+
const storage_key = type === 'session' ? 'session' + 'Storage' : 'local' + 'Storage';
|
|
164
124
|
try {
|
|
165
125
|
if (!win) {
|
|
166
126
|
return null;
|
|
167
127
|
}
|
|
168
|
-
|
|
169
|
-
return win.sessionStorage || null;
|
|
170
|
-
}
|
|
171
|
-
return win.localStorage || null;
|
|
128
|
+
return win?.[storage_key] || null;
|
|
172
129
|
} catch (error) {
|
|
173
130
|
return null;
|
|
174
131
|
}
|
|
@@ -325,9 +282,8 @@ func.runtime.platform.emit = function (name, data) {
|
|
|
325
282
|
handlers[i](data);
|
|
326
283
|
}
|
|
327
284
|
}
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
document.dispatchEvent(new CustomEvent(name, { detail: Array.isArray(data) ? data : [data] }));
|
|
285
|
+
if (typeof func.runtime.platform.dispatch_document_event === 'function') {
|
|
286
|
+
func.runtime.platform.dispatch_document_event(name, data);
|
|
331
287
|
}
|
|
332
288
|
} finally {
|
|
333
289
|
func.runtime.platform._emitting[name] = false;
|
|
@@ -336,34 +292,41 @@ func.runtime.platform.emit = function (name, data) {
|
|
|
336
292
|
|
|
337
293
|
// ── Platform helpers for DOM-independent resource loading ──
|
|
338
294
|
func.runtime.platform.load_script = function (url, type, callback) {
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
} else if (callback) {
|
|
346
|
-
callback();
|
|
295
|
+
const doc = func.runtime.platform.get_document();
|
|
296
|
+
if (!doc?.createElement || !doc?.head?.appendChild) {
|
|
297
|
+
if (callback) {
|
|
298
|
+
callback();
|
|
299
|
+
}
|
|
300
|
+
return;
|
|
347
301
|
}
|
|
302
|
+
const script = doc.createElement('script');
|
|
303
|
+
script.src = url;
|
|
304
|
+
if (type) script.type = type;
|
|
305
|
+
script.onload = callback;
|
|
306
|
+
doc.head.appendChild(script);
|
|
348
307
|
};
|
|
349
308
|
func.runtime.platform.load_css = function (href) {
|
|
350
|
-
|
|
309
|
+
const doc = func.runtime.platform.get_document();
|
|
310
|
+
if (!doc?.createElement || !doc?.head) {
|
|
311
|
+
return;
|
|
312
|
+
}
|
|
351
313
|
try {
|
|
352
|
-
if (
|
|
314
|
+
if (doc.querySelector('link[href="' + href + '"]')) return;
|
|
353
315
|
} catch (err) {
|
|
354
316
|
return;
|
|
355
317
|
}
|
|
356
|
-
const link =
|
|
318
|
+
const link = doc.createElement('link');
|
|
357
319
|
link.rel = 'stylesheet';
|
|
358
320
|
link.type = 'text/css';
|
|
359
321
|
link.href = href;
|
|
360
|
-
|
|
322
|
+
doc.head.insertBefore(link, doc.head.firstChild);
|
|
361
323
|
};
|
|
362
324
|
func.runtime.platform.remove_js_css = function (filename, filetype) {
|
|
363
|
-
|
|
325
|
+
const doc = func.runtime.platform.get_document();
|
|
326
|
+
if (!doc?.getElementsByTagName) return;
|
|
364
327
|
const tagName = filetype === 'js' ? 'script' : filetype === 'css' ? 'link' : 'none';
|
|
365
328
|
const attr = filetype === 'js' ? 'src' : filetype === 'css' ? 'href' : 'none';
|
|
366
|
-
const elements =
|
|
329
|
+
const elements = doc.getElementsByTagName(tagName);
|
|
367
330
|
for (let i = elements.length - 1; i >= 0; i--) {
|
|
368
331
|
if (elements[i] && elements[i].getAttribute(attr) != null && elements[i].getAttribute(attr).indexOf(filename) !== -1) {
|
|
369
332
|
elements[i].parentNode.removeChild(elements[i]);
|
|
@@ -371,15 +334,17 @@ func.runtime.platform.remove_js_css = function (filename, filetype) {
|
|
|
371
334
|
}
|
|
372
335
|
};
|
|
373
336
|
func.runtime.platform.inject_css = function (cssText) {
|
|
374
|
-
|
|
375
|
-
|
|
337
|
+
const doc = func.runtime.platform.get_document();
|
|
338
|
+
if (!doc?.createElement || !doc?.head?.appendChild || !cssText) return;
|
|
339
|
+
const style = doc.createElement('style');
|
|
376
340
|
style.type = 'text/css';
|
|
377
341
|
style.textContent = cssText;
|
|
378
|
-
|
|
342
|
+
doc.head.appendChild(style);
|
|
379
343
|
};
|
|
380
344
|
func.runtime.platform.set_title = function (title) {
|
|
381
|
-
|
|
382
|
-
|
|
345
|
+
const doc = func.runtime.platform.get_document();
|
|
346
|
+
if (doc) {
|
|
347
|
+
doc.title = title;
|
|
383
348
|
}
|
|
384
349
|
};
|
|
385
350
|
func.runtime.platform.set_cursor = function (element, cursor) {
|
|
@@ -1067,12 +1032,36 @@ func.runtime.resources.load_cdn = async function (SESSION_ID, resource) {
|
|
|
1067
1032
|
func.runtime.resources.get_plugin_manifest_entry = function (_session, plugin_name) {
|
|
1068
1033
|
return APP_OBJ[_session.app_id]?.app_plugins_purchased?.[plugin_name] || null;
|
|
1069
1034
|
};
|
|
1070
|
-
func.runtime.resources.
|
|
1035
|
+
func.runtime.resources.get_plugin_resource_candidates = function (_session, plugin, resource) {
|
|
1071
1036
|
const manifest_entry = plugin?.manifest?.[resource];
|
|
1072
|
-
|
|
1037
|
+
const default_path = `${manifest_entry?.dist ? 'dist/' : ''}${resource}`;
|
|
1038
|
+
const candidates = [];
|
|
1039
|
+
if (_session?.worker_type === 'Dev' && manifest_entry?.dist && /\.mjs$/.test(resource)) {
|
|
1040
|
+
candidates.push(`src/${resource}`);
|
|
1041
|
+
}
|
|
1042
|
+
candidates.push(default_path);
|
|
1043
|
+
return Array.from(new Set(candidates.filter(Boolean)));
|
|
1044
|
+
};
|
|
1045
|
+
func.runtime.resources.get_plugin_module_path = function (plugin, resource, _session) {
|
|
1046
|
+
return func.runtime.resources.get_plugin_resource_candidates(_session, plugin, resource)[0] || resource;
|
|
1073
1047
|
};
|
|
1074
1048
|
func.runtime.resources.get_plugin_module_url = async function (SESSION_ID, plugin_name, plugin, resource) {
|
|
1075
|
-
|
|
1049
|
+
const _session = SESSION_OBJ[SESSION_ID];
|
|
1050
|
+
return await func.utils.get_plugin_npm_cdn(SESSION_ID, plugin_name, func.runtime.resources.get_plugin_module_path(plugin, resource, _session));
|
|
1051
|
+
};
|
|
1052
|
+
func.runtime.resources.import_plugin_module = async function (SESSION_ID, plugin_name, plugin, resource) {
|
|
1053
|
+
const _session = SESSION_OBJ[SESSION_ID];
|
|
1054
|
+
const candidates = func.runtime.resources.get_plugin_resource_candidates(_session, plugin, resource);
|
|
1055
|
+
let last_error = null;
|
|
1056
|
+
for (let index = 0; index < candidates.length; index++) {
|
|
1057
|
+
const candidate = candidates[index];
|
|
1058
|
+
try {
|
|
1059
|
+
return await func.utils.get_plugin_resource(SESSION_ID, plugin_name, candidate);
|
|
1060
|
+
} catch (error) {
|
|
1061
|
+
last_error = error;
|
|
1062
|
+
}
|
|
1063
|
+
}
|
|
1064
|
+
throw last_error || new Error(`plugin resource not found: ${plugin_name}/${resource}`);
|
|
1076
1065
|
};
|
|
1077
1066
|
func.runtime.resources.load_plugin_runtime_css = async function (SESSION_ID, plugin_name, plugin) {
|
|
1078
1067
|
if (!plugin?.manifest?.['runtime.mjs']?.dist || !plugin?.manifest?.['runtime.mjs']?.css) {
|
|
@@ -1102,12 +1091,10 @@ func.runtime.resources.run_ui_plugin = async function (SESSION_ID, paramsP, $elm
|
|
|
1102
1091
|
|
|
1103
1092
|
await func.runtime.resources.load_plugin_runtime_css(SESSION_ID, plugin_name, plugin);
|
|
1104
1093
|
|
|
1105
|
-
const
|
|
1106
|
-
const plugin_index_resources = await import(plugin_index_src);
|
|
1094
|
+
const plugin_index_resources = await func.runtime.resources.import_plugin_module(SESSION_ID, plugin_name, plugin, 'index.mjs');
|
|
1107
1095
|
const properties = await func.runtime.resources.resolve_plugin_properties(SESSION_ID, paramsP.dsSessionP, value?.attributes, plugin_index_resources.properties);
|
|
1108
1096
|
|
|
1109
|
-
const
|
|
1110
|
-
const plugin_runtime_resources = await import(plugin_runtime_src);
|
|
1097
|
+
const plugin_runtime_resources = await func.runtime.resources.import_plugin_module(SESSION_ID, plugin_name, plugin, 'runtime.mjs');
|
|
1111
1098
|
|
|
1112
1099
|
if (plugin_runtime_resources.cdn && Array.isArray(plugin_runtime_resources.cdn)) {
|
|
1113
1100
|
for await (const resource of plugin_runtime_resources.cdn) {
|
|
@@ -1190,25 +1177,52 @@ func.runtime.widgets.get_fields_data = async function (context, fields, props) {
|
|
|
1190
1177
|
|
|
1191
1178
|
return { code: return_code, data: data_obj };
|
|
1192
1179
|
};
|
|
1180
|
+
func.runtime.widgets.get_resource_candidates = function (context, resource) {
|
|
1181
|
+
return func.runtime.resources.get_plugin_resource_candidates(context._session, context.plugin, resource);
|
|
1182
|
+
};
|
|
1183
|
+
func.runtime.widgets.normalize_capabilities = function (definition) {
|
|
1184
|
+
const capabilities = definition?.capabilities || {};
|
|
1185
|
+
return {
|
|
1186
|
+
browser: capabilities.browser !== false,
|
|
1187
|
+
headless: capabilities.headless === true,
|
|
1188
|
+
};
|
|
1189
|
+
};
|
|
1190
|
+
func.runtime.widgets.supports_current_environment = function (definition) {
|
|
1191
|
+
const capabilities = func.runtime.widgets.normalize_capabilities(definition);
|
|
1192
|
+
if (func.runtime.platform.has_document()) {
|
|
1193
|
+
return capabilities.browser !== false;
|
|
1194
|
+
}
|
|
1195
|
+
return !!capabilities.headless;
|
|
1196
|
+
};
|
|
1193
1197
|
func.runtime.widgets.get_resource_path = function (context, resource) {
|
|
1198
|
+
const relative_path = func.runtime.widgets.get_resource_candidates(context, resource)[0] || resource;
|
|
1194
1199
|
if (context._session.worker_type === 'Dev') {
|
|
1195
|
-
return `../../plugins/${context.plugin_name}/${
|
|
1200
|
+
return `../../plugins/${context.plugin_name}/${relative_path}`;
|
|
1196
1201
|
}
|
|
1197
|
-
|
|
1198
|
-
const dist_prefix = manifest_entry?.dist ? 'dist/' : '';
|
|
1199
|
-
return `https://${context._session.domain}/plugins/${context.plugin_name}/${dist_prefix}${resource}?gtp_token=${context._session.gtp_token}&app_id=${context._session.app_id}`;
|
|
1202
|
+
return `https://${context._session.domain}/plugins/${context.plugin_name}/${relative_path}?gtp_token=${context._session.gtp_token}&app_id=${context._session.app_id}`;
|
|
1200
1203
|
};
|
|
1201
1204
|
func.runtime.widgets.load_css_style = function (context) {
|
|
1202
1205
|
func.utils.load_css_on_demand(func.runtime.widgets.get_resource_path(context, 'style.css'));
|
|
1203
1206
|
return true;
|
|
1204
1207
|
};
|
|
1205
1208
|
func.runtime.widgets.get_resource = async function (context, resource) {
|
|
1206
|
-
const
|
|
1207
|
-
|
|
1208
|
-
|
|
1209
|
+
const candidates = func.runtime.widgets.get_resource_candidates(context, resource);
|
|
1210
|
+
let last_error = null;
|
|
1211
|
+
for (let index = 0; index < candidates.length; index++) {
|
|
1212
|
+
const candidate = candidates[index];
|
|
1213
|
+
try {
|
|
1214
|
+
return await func.utils.get_plugin_resource(context.SESSION_ID, context.plugin_name, candidate);
|
|
1215
|
+
} catch (error) {
|
|
1216
|
+
last_error = error;
|
|
1217
|
+
}
|
|
1218
|
+
}
|
|
1219
|
+
throw last_error || new Error(`widget resource not found: ${context.plugin_name}/${resource}`);
|
|
1220
|
+
};
|
|
1221
|
+
func.runtime.widgets.get_definition = async function (context) {
|
|
1222
|
+
return await func.runtime.widgets.get_resource(context, 'index.mjs');
|
|
1209
1223
|
};
|
|
1210
1224
|
func.runtime.widgets.get_methods = async function (context) {
|
|
1211
|
-
const index = await func.runtime.widgets.
|
|
1225
|
+
const index = await func.runtime.widgets.get_definition(context);
|
|
1212
1226
|
return index?.methods || {};
|
|
1213
1227
|
};
|
|
1214
1228
|
func.runtime.widgets.load_runtime_css = async function (context) {
|
|
@@ -1219,7 +1233,7 @@ func.runtime.widgets.load_runtime_css = async function (context) {
|
|
|
1219
1233
|
func.utils.load_css_on_demand(plugin_runtime_css_url);
|
|
1220
1234
|
return true;
|
|
1221
1235
|
};
|
|
1222
|
-
func.runtime.widgets.build_params = function (context,
|
|
1236
|
+
func.runtime.widgets.build_params = function (context, container_node, container_data, plugin_setup, api_utils, extra = {}) {
|
|
1223
1237
|
return {
|
|
1224
1238
|
SESSION_ID: context.SESSION_ID,
|
|
1225
1239
|
method: context.method,
|
|
@@ -1228,14 +1242,28 @@ func.runtime.widgets.build_params = function (context, $containerP, plugin_setup
|
|
|
1228
1242
|
sourceP: context.sourceP,
|
|
1229
1243
|
propsP: context.propsP,
|
|
1230
1244
|
plugin_name: context.plugin_name,
|
|
1231
|
-
|
|
1245
|
+
container_node,
|
|
1246
|
+
container_data,
|
|
1232
1247
|
plugin_setup,
|
|
1233
1248
|
report_error: function (descP, warn) {
|
|
1234
1249
|
return func.runtime.widgets.report_error(context, descP, warn);
|
|
1235
1250
|
},
|
|
1251
|
+
log_error: function (descP, warn) {
|
|
1252
|
+
return func.runtime.widgets.report_error(context, descP, warn);
|
|
1253
|
+
},
|
|
1236
1254
|
call_plugin_api: async function (plugin_nameP, dataP) {
|
|
1237
1255
|
return await func.utils.call_plugin_api(context.SESSION_ID, plugin_nameP, dataP);
|
|
1238
1256
|
},
|
|
1257
|
+
set_SYS_GLOBAL_OBJ_WIDGET_INFO: async function (docP) {
|
|
1258
|
+
return await func.utils.set_SYS_GLOBAL_OBJ_WIDGET_INFO(context.SESSION_ID, docP);
|
|
1259
|
+
},
|
|
1260
|
+
run_widgetCallbackEvent: async function () {
|
|
1261
|
+
const event_id = context.propsP?.widgetCallbackEvent;
|
|
1262
|
+
if (!event_id || !api_utils?.invoke_event) {
|
|
1263
|
+
return false;
|
|
1264
|
+
}
|
|
1265
|
+
return await api_utils.invoke_event(event_id);
|
|
1266
|
+
},
|
|
1239
1267
|
api_utils,
|
|
1240
1268
|
...extra,
|
|
1241
1269
|
};
|