@domql/utils 3.5.0 → 3.6.1

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/node.js CHANGED
@@ -29,8 +29,8 @@ export const isHtmlElement = obj => {
29
29
  export const isDOMNode = obj => {
30
30
  return (
31
31
  typeof window !== 'undefined' &&
32
- (obj instanceof window.Node ||
33
- obj instanceof window.Window ||
32
+ ((window.Node && obj instanceof window.Node) ||
33
+ (window.Window && obj instanceof window.Window) ||
34
34
  obj === window ||
35
35
  obj === document)
36
36
  )
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@domql/utils",
3
- "version": "3.5.0",
3
+ "version": "3.6.1",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "module": "./dist/esm/index.js",
@@ -8,24 +8,19 @@
8
8
  "exports": {
9
9
  ".": {
10
10
  "import": "./dist/esm/index.js",
11
- "require": "./dist/cjs/index.js",
12
- "browser": "./dist/esm/index.js",
13
- "default": "./dist/esm/index.js"
11
+ "require": "./dist/cjs/index.js"
14
12
  },
15
13
  "./methods": {
16
14
  "import": "./dist/esm/methods.js",
17
- "require": "./dist/cjs/methods.js",
18
- "default": "./dist/esm/methods.js"
15
+ "require": "./dist/cjs/methods.js"
19
16
  },
20
17
  "./*.js": {
21
18
  "import": "./dist/esm/*.js",
22
- "require": "./dist/cjs/*.js",
23
- "default": "./dist/esm/*.js"
19
+ "require": "./dist/cjs/*.js"
24
20
  },
25
21
  "./*": {
26
22
  "import": "./dist/esm/*.js",
27
- "require": "./dist/cjs/*.js",
28
- "default": "./dist/esm/*.js"
23
+ "require": "./dist/cjs/*.js"
29
24
  }
30
25
  },
31
26
  "source": "index.js",
@@ -48,5 +43,8 @@
48
43
  "browser": "./dist/esm/index.js",
49
44
  "unpkg": "./dist/iife/index.js",
50
45
  "jsdelivr": "./dist/iife/index.js",
51
- "sideEffects": false
46
+ "sideEffects": false,
47
+ "publishConfig": {
48
+ "access": "public"
49
+ }
52
50
  }
package/props.js CHANGED
@@ -9,6 +9,20 @@ import { lowercaseFirstLetter } from './string.js'
9
9
  const RE_UPPER = /^[A-Z]/
10
10
  const RE_DIGITS = /^\d+$/
11
11
 
12
+ const ELEMENT_INDICATOR_KEYS = new Set([
13
+ 'extend', 'props', 'text', 'tag', 'on', 'if', 'childExtend',
14
+ 'children', 'childrenAs', 'state', 'html', 'attr',
15
+ 'define', 'content'
16
+ ])
17
+ const looksLikeElement = (value) => {
18
+ if (!value || typeof value !== 'object' || Array.isArray(value)) return false
19
+ for (const k in value) {
20
+ if (ELEMENT_INDICATOR_KEYS.has(k)) return true
21
+ if (RE_UPPER.test(k)) return true
22
+ }
23
+ return false
24
+ }
25
+
12
26
  export const createProps = (element, parent, key) => {
13
27
  const { props, __ref: ref } = element
14
28
  ref.__propsStack = []
@@ -38,7 +52,7 @@ export function pickupPropsFromElement (obj, opts = {}) {
38
52
 
39
53
  const hasDefine = isObject(this.define?.[key])
40
54
  const hasGlobalDefine = isObject(this.context?.define?.[key])
41
- const isElement = RE_UPPER.test(key) || RE_DIGITS.test(key)
55
+ const isElement = RE_UPPER.test(key) || RE_DIGITS.test(key) || looksLikeElement(value)
42
56
  const isBuiltin = DOMQ_PROPERTIES.has(key)
43
57
 
44
58
  // If it's not a special case, move to props
package/triggerEvent.js CHANGED
@@ -13,17 +13,26 @@ const getOnOrPropsEvent = (param, element) => {
13
13
 
14
14
  export const applyEvent = (param, element, state, context, options) => {
15
15
  if (!isFunction(param)) return
16
- const result = param.call(
17
- element,
18
- element,
19
- state || element.state,
20
- context || element.context,
21
- options
22
- )
23
- if (result && typeof result.then === 'function') {
24
- result.catch(() => {})
16
+ try {
17
+ const result = param.call(
18
+ element,
19
+ element,
20
+ state || element.state,
21
+ context || element.context,
22
+ options
23
+ )
24
+ if (result && typeof result.then === 'function') {
25
+ result.catch((err) => {
26
+ element.error = err
27
+ console.error('[DomQL] Async event error:', err)
28
+ })
29
+ }
30
+ return result
31
+ } catch (err) {
32
+ element.error = err
33
+ console.error('[DomQL] Event handler error:', err)
34
+ if (element.context?.strictMode) throw err
25
35
  }
26
- return result
27
36
  }
28
37
 
29
38
  export const triggerEventOn = (param, element, options) => {
@@ -46,18 +55,27 @@ export const applyEventUpdate = (
46
55
  options
47
56
  ) => {
48
57
  if (!isFunction(param)) return
49
- const result = param.call(
50
- element,
51
- updatedObj,
52
- element,
53
- state || element.state,
54
- context || element.context,
55
- options
56
- )
57
- if (result && typeof result.then === 'function') {
58
- result.catch(() => {})
58
+ try {
59
+ const result = param.call(
60
+ element,
61
+ updatedObj,
62
+ element,
63
+ state || element.state,
64
+ context || element.context,
65
+ options
66
+ )
67
+ if (result && typeof result.then === 'function') {
68
+ result.catch((err) => {
69
+ element.error = err
70
+ console.error('[DomQL] Async event update error:', err)
71
+ })
72
+ }
73
+ return result
74
+ } catch (err) {
75
+ element.error = err
76
+ console.error('[DomQL] Event update error:', err)
77
+ if (element.context?.strictMode) throw err
59
78
  }
60
- return result
61
79
  }
62
80
 
63
81
  export const triggerEventOnUpdate = (param, updatedObj, element, options) => {