@domql/utils 3.8.1 → 3.8.6

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/dist/cjs/if.js CHANGED
@@ -22,9 +22,19 @@ __export(if_exports, {
22
22
  });
23
23
  module.exports = __toCommonJS(if_exports);
24
24
  var import_types = require("./types.js");
25
+ var import_object = require("./object.js");
25
26
  const createIfConditionFlag = (element, parent) => {
26
27
  const { __ref: ref } = element;
27
- if ((0, import_types.isFunction)(element.if) && !element.if(element, element.state, element.context)) {
28
- delete ref.__if;
29
- } else ref.__if = true;
28
+ const ifVal = element.if;
29
+ if ((0, import_types.isFunction)(ifVal)) {
30
+ if (!ifVal(element, element.state, element.context)) {
31
+ delete ref.__if;
32
+ } else ref.__if = true;
33
+ } else if (ifVal != null && typeof ifVal === "object") {
34
+ const result = (0, import_object.exec)(ifVal, element);
35
+ if (!result) delete ref.__if;
36
+ else ref.__if = true;
37
+ } else {
38
+ ref.__if = true;
39
+ }
30
40
  };
@@ -76,6 +76,17 @@ const exec = (param, element, state, context) => {
76
76
  }
77
77
  return result;
78
78
  }
79
+ if (param != null && element?.context?.plugins && ((0, import_types.isArray)(param) || (0, import_types.isObject)(param) && !(0, import_node.isDOMNode)(param))) {
80
+ const plugins = element.context.plugins;
81
+ for (const plugin of plugins) {
82
+ if (plugin.resolveHandler) {
83
+ const resolved = plugin.resolveHandler(param, element);
84
+ if (typeof resolved === "function") {
85
+ return exec(resolved, element, state, context);
86
+ }
87
+ }
88
+ }
89
+ }
79
90
  return param;
80
91
  };
81
92
  const map = (obj, extention, element) => {
@@ -48,13 +48,18 @@ const applyEvent = (param, element, state, context, options) => {
48
48
  if (result && typeof result.then === "function") {
49
49
  result.catch((err) => {
50
50
  element.error = err;
51
- console.error("[DOMQL] Async event error:", err);
51
+ if (err instanceof ReferenceError) console.warn("[DOMQL] Async event warning:", err.message);
52
+ else console.error("[DOMQL] Async event error:", err);
52
53
  });
53
54
  }
54
55
  return result;
55
56
  } catch (err) {
56
57
  element.error = err;
57
- console.error("[DOMQL] Event handler error:", err);
58
+ if (err instanceof ReferenceError) {
59
+ console.warn("[DOMQL] Event handler warning:", err.message);
60
+ } else {
61
+ console.error("[DOMQL] Event handler error:", err);
62
+ }
58
63
  if (element.context?.strictMode) throw err;
59
64
  }
60
65
  };
package/dist/esm/if.js CHANGED
@@ -1,9 +1,19 @@
1
1
  import { isFunction } from "./types.js";
2
+ import { exec } from "./object.js";
2
3
  const createIfConditionFlag = (element, parent) => {
3
4
  const { __ref: ref } = element;
4
- if (isFunction(element.if) && !element.if(element, element.state, element.context)) {
5
- delete ref.__if;
6
- } else ref.__if = true;
5
+ const ifVal = element.if;
6
+ if (isFunction(ifVal)) {
7
+ if (!ifVal(element, element.state, element.context)) {
8
+ delete ref.__if;
9
+ } else ref.__if = true;
10
+ } else if (ifVal != null && typeof ifVal === "object") {
11
+ const result = exec(ifVal, element);
12
+ if (!result) delete ref.__if;
13
+ else ref.__if = true;
14
+ } else {
15
+ ref.__if = true;
16
+ }
7
17
  };
8
18
  export {
9
19
  createIfConditionFlag
@@ -31,6 +31,17 @@ const exec = (param, element, state, context) => {
31
31
  }
32
32
  return result;
33
33
  }
34
+ if (param != null && element?.context?.plugins && (isArray(param) || isObject(param) && !isDOMNode(param))) {
35
+ const plugins = element.context.plugins;
36
+ for (const plugin of plugins) {
37
+ if (plugin.resolveHandler) {
38
+ const resolved = plugin.resolveHandler(param, element);
39
+ if (typeof resolved === "function") {
40
+ return exec(resolved, element, state, context);
41
+ }
42
+ }
43
+ }
44
+ }
34
45
  return param;
35
46
  };
36
47
  const map = (obj, extention, element) => {
@@ -22,13 +22,18 @@ const applyEvent = (param, element, state, context, options) => {
22
22
  if (result && typeof result.then === "function") {
23
23
  result.catch((err) => {
24
24
  element.error = err;
25
- console.error("[DOMQL] Async event error:", err);
25
+ if (err instanceof ReferenceError) console.warn("[DOMQL] Async event warning:", err.message);
26
+ else console.error("[DOMQL] Async event error:", err);
26
27
  });
27
28
  }
28
29
  return result;
29
30
  } catch (err) {
30
31
  element.error = err;
31
- console.error("[DOMQL] Event handler error:", err);
32
+ if (err instanceof ReferenceError) {
33
+ console.warn("[DOMQL] Event handler warning:", err.message);
34
+ } else {
35
+ console.error("[DOMQL] Event handler error:", err);
36
+ }
32
37
  if (element.context?.strictMode) throw err;
33
38
  }
34
39
  };
@@ -31,8 +31,13 @@ var DomqlUtils = (() => {
31
31
  });
32
32
 
33
33
  // dist/esm/node.js
34
+ var isDOMNode2;
34
35
  var init_node = __esm({
35
36
  "dist/esm/node.js"() {
37
+ init_globals();
38
+ isDOMNode2 = (obj) => {
39
+ return typeof window3 !== "undefined" && (window3.Node && obj instanceof window3.Node || window3.Window && obj instanceof window3.Window || obj === window3 || obj === document);
40
+ };
36
41
  }
37
42
  });
38
43
 
@@ -155,6 +160,7 @@ var DomqlUtils = (() => {
155
160
  var init_object = __esm({
156
161
  "dist/esm/object.js"() {
157
162
  init_types();
163
+ init_node();
158
164
  exec2 = (param, element, state, context) => {
159
165
  if (isFunction2(param)) {
160
166
  if (!element) return;
@@ -173,6 +179,17 @@ var DomqlUtils = (() => {
173
179
  }
174
180
  return result;
175
181
  }
182
+ if (param != null && element?.context?.plugins && (isArray2(param) || isObject2(param) && !isDOMNode2(param))) {
183
+ const plugins = element.context.plugins;
184
+ for (const plugin of plugins) {
185
+ if (plugin.resolveHandler) {
186
+ const resolved = plugin.resolveHandler(param, element);
187
+ if (typeof resolved === "function") {
188
+ return exec2(resolved, element, state, context);
189
+ }
190
+ }
191
+ }
192
+ }
176
193
  return param;
177
194
  };
178
195
  }
@@ -2296,6 +2313,17 @@ var DomqlUtils = (() => {
2296
2313
  }
2297
2314
  return result;
2298
2315
  }
2316
+ if (param != null && element?.context?.plugins && (isArray(param) || isObject(param) && !isDOMNode(param))) {
2317
+ const plugins = element.context.plugins;
2318
+ for (const plugin of plugins) {
2319
+ if (plugin.resolveHandler) {
2320
+ const resolved = plugin.resolveHandler(param, element);
2321
+ if (typeof resolved === "function") {
2322
+ return exec(resolved, element, state, context);
2323
+ }
2324
+ }
2325
+ }
2326
+ }
2299
2327
  return param;
2300
2328
  };
2301
2329
  var map = (obj, extention, element) => {
@@ -2944,9 +2972,18 @@ var DomqlUtils = (() => {
2944
2972
  // if.js
2945
2973
  var createIfConditionFlag = (element, parent) => {
2946
2974
  const { __ref: ref } = element;
2947
- if (isFunction(element.if) && !element.if(element, element.state, element.context)) {
2948
- delete ref.__if;
2949
- } else ref.__if = true;
2975
+ const ifVal = element.if;
2976
+ if (isFunction(ifVal)) {
2977
+ if (!ifVal(element, element.state, element.context)) {
2978
+ delete ref.__if;
2979
+ } else ref.__if = true;
2980
+ } else if (ifVal != null && typeof ifVal === "object") {
2981
+ const result = exec(ifVal, element);
2982
+ if (!result) delete ref.__if;
2983
+ else ref.__if = true;
2984
+ } else {
2985
+ ref.__if = true;
2986
+ }
2950
2987
  };
2951
2988
 
2952
2989
  // log.js
@@ -4152,13 +4189,18 @@ var DomqlUtils = (() => {
4152
4189
  if (result && typeof result.then === "function") {
4153
4190
  result.catch((err) => {
4154
4191
  element.error = err;
4155
- console.error("[DOMQL] Async event error:", err);
4192
+ if (err instanceof ReferenceError) console.warn("[DOMQL] Async event warning:", err.message);
4193
+ else console.error("[DOMQL] Async event error:", err);
4156
4194
  });
4157
4195
  }
4158
4196
  return result;
4159
4197
  } catch (err) {
4160
4198
  element.error = err;
4161
- console.error("[DOMQL] Event handler error:", err);
4199
+ if (err instanceof ReferenceError) {
4200
+ console.warn("[DOMQL] Event handler warning:", err.message);
4201
+ } else {
4202
+ console.error("[DOMQL] Event handler error:", err);
4203
+ }
4162
4204
  if (element.context?.strictMode) throw err;
4163
4205
  }
4164
4206
  };
package/if.js CHANGED
@@ -1,14 +1,22 @@
1
1
  'use strict'
2
2
 
3
3
  import { isFunction } from './types.js'
4
+ import { exec } from './object.js'
4
5
 
5
6
  export const createIfConditionFlag = (element, parent) => {
6
7
  const { __ref: ref } = element
8
+ const ifVal = element.if
7
9
 
8
- if (
9
- isFunction(element.if) &&
10
- !element.if(element, element.state, element.context)
11
- ) {
12
- delete ref.__if
13
- } else ref.__if = true
10
+ if (isFunction(ifVal)) {
11
+ if (!ifVal(element, element.state, element.context)) {
12
+ delete ref.__if
13
+ } else ref.__if = true
14
+ } else if (ifVal != null && typeof ifVal === 'object') {
15
+ // funcql schema evaluate via exec() which delegates to plugins
16
+ const result = exec(ifVal, element)
17
+ if (!result) delete ref.__if
18
+ else ref.__if = true
19
+ } else {
20
+ ref.__if = true
21
+ }
14
22
  }
package/object.js CHANGED
@@ -36,6 +36,22 @@ export const exec = (param, element, state, context) => {
36
36
  }
37
37
  return result
38
38
  }
39
+ // If param is a non-function value and the context has handler-resolving
40
+ // plugins (e.g. funcql), try to resolve it into a callable function.
41
+ // This enables funcql schemas as property values (text, if, style, etc.).
42
+ // Only attempt for array/object params that could be schemas — skip
43
+ // primitives and DOM nodes to avoid overhead on normal DOMQL values.
44
+ if (param != null && element?.context?.plugins && (isArray(param) || (isObject(param) && !isDOMNode(param)))) {
45
+ const plugins = element.context.plugins
46
+ for (const plugin of plugins) {
47
+ if (plugin.resolveHandler) {
48
+ const resolved = plugin.resolveHandler(param, element)
49
+ if (typeof resolved === 'function') {
50
+ return exec(resolved, element, state, context)
51
+ }
52
+ }
53
+ }
54
+ }
39
55
  return param
40
56
  }
41
57
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@domql/utils",
3
- "version": "3.8.1",
3
+ "version": "3.8.6",
4
4
  "license": "CC-BY-NC-4.0",
5
5
  "type": "module",
6
6
  "module": "./dist/esm/index.js",
@@ -38,7 +38,7 @@
38
38
  },
39
39
  "gitHead": "9fc1b79b41cdc725ca6b24aec64920a599634681",
40
40
  "peerDependencies": {
41
- "@symbo.ls/fetch": "^3.8.1"
41
+ "@symbo.ls/fetch": "^3.8.6"
42
42
  },
43
43
  "peerDependenciesMeta": {
44
44
  "@symbo.ls/fetch": {
package/triggerEvent.js CHANGED
@@ -26,13 +26,20 @@ export const applyEvent = (param, element, state, context, options) => {
26
26
  if (result && typeof result.then === 'function') {
27
27
  result.catch((err) => {
28
28
  element.error = err
29
- console.error('[DOMQL] Async event error:', err)
29
+ if (err instanceof ReferenceError) console.warn('[DOMQL] Async event warning:', err.message)
30
+ else console.error('[DOMQL] Async event error:', err)
30
31
  })
31
32
  }
32
33
  return result
33
34
  } catch (err) {
34
35
  element.error = err
35
- console.error('[DOMQL] Event handler error:', err)
36
+ // In SSR/brender mode, ReferenceErrors for missing client-only helpers
37
+ // are expected (e.g. DOM animation functions). Log concisely.
38
+ if (err instanceof ReferenceError) {
39
+ console.warn('[DOMQL] Event handler warning:', err.message)
40
+ } else {
41
+ console.error('[DOMQL] Event handler error:', err)
42
+ }
36
43
  if (element.context?.strictMode) throw err
37
44
  }
38
45
  }