@bquery/bquery 1.4.0 → 1.6.0

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.
Files changed (164) hide show
  1. package/README.md +586 -527
  2. package/dist/component/component.d.ts +13 -5
  3. package/dist/component/component.d.ts.map +1 -1
  4. package/dist/component/html.d.ts +40 -3
  5. package/dist/component/html.d.ts.map +1 -1
  6. package/dist/component/index.d.ts +4 -2
  7. package/dist/component/index.d.ts.map +1 -1
  8. package/dist/component/library.d.ts +34 -0
  9. package/dist/component/library.d.ts.map +1 -0
  10. package/dist/component/types.d.ts +132 -13
  11. package/dist/component/types.d.ts.map +1 -1
  12. package/dist/component-BEQgt5hl.js +600 -0
  13. package/dist/component-BEQgt5hl.js.map +1 -0
  14. package/dist/component.es.mjs +7 -184
  15. package/dist/config-DRmZZno3.js +40 -0
  16. package/dist/config-DRmZZno3.js.map +1 -0
  17. package/dist/core-BGQJVw0-.js +35 -0
  18. package/dist/core-BGQJVw0-.js.map +1 -0
  19. package/dist/core-CCEabVHl.js +648 -0
  20. package/dist/core-CCEabVHl.js.map +1 -0
  21. package/dist/core.es.mjs +45 -1261
  22. package/dist/effect-AFRW_Plg.js +84 -0
  23. package/dist/effect-AFRW_Plg.js.map +1 -0
  24. package/dist/full.d.ts +8 -8
  25. package/dist/full.d.ts.map +1 -1
  26. package/dist/full.es.mjs +101 -91
  27. package/dist/full.iife.js +173 -3
  28. package/dist/full.iife.js.map +1 -1
  29. package/dist/full.umd.js +173 -3
  30. package/dist/full.umd.js.map +1 -1
  31. package/dist/index.es.mjs +147 -139
  32. package/dist/motion/transition.d.ts +1 -1
  33. package/dist/motion/transition.d.ts.map +1 -1
  34. package/dist/motion/types.d.ts +11 -1
  35. package/dist/motion/types.d.ts.map +1 -1
  36. package/dist/motion-D9TcHxOF.js +415 -0
  37. package/dist/motion-D9TcHxOF.js.map +1 -0
  38. package/dist/motion.es.mjs +25 -361
  39. package/dist/object-qGpWr6-J.js +38 -0
  40. package/dist/object-qGpWr6-J.js.map +1 -0
  41. package/dist/platform/announcer.d.ts +59 -0
  42. package/dist/platform/announcer.d.ts.map +1 -0
  43. package/dist/platform/config.d.ts +92 -0
  44. package/dist/platform/config.d.ts.map +1 -0
  45. package/dist/platform/cookies.d.ts +45 -0
  46. package/dist/platform/cookies.d.ts.map +1 -0
  47. package/dist/platform/index.d.ts +8 -0
  48. package/dist/platform/index.d.ts.map +1 -1
  49. package/dist/platform/meta.d.ts +62 -0
  50. package/dist/platform/meta.d.ts.map +1 -0
  51. package/dist/platform-Dr9b6fsq.js +362 -0
  52. package/dist/platform-Dr9b6fsq.js.map +1 -0
  53. package/dist/platform.es.mjs +11 -248
  54. package/dist/reactive/async-data.d.ts +114 -0
  55. package/dist/reactive/async-data.d.ts.map +1 -0
  56. package/dist/reactive/index.d.ts +2 -2
  57. package/dist/reactive/index.d.ts.map +1 -1
  58. package/dist/reactive/signal.d.ts +2 -0
  59. package/dist/reactive/signal.d.ts.map +1 -1
  60. package/dist/reactive-DSkct0dO.js +254 -0
  61. package/dist/reactive-DSkct0dO.js.map +1 -0
  62. package/dist/reactive.es.mjs +18 -32
  63. package/dist/router-CbDhl8rS.js +188 -0
  64. package/dist/router-CbDhl8rS.js.map +1 -0
  65. package/dist/router.es.mjs +11 -200
  66. package/dist/sanitize-Bs2dkMby.js +313 -0
  67. package/dist/sanitize-Bs2dkMby.js.map +1 -0
  68. package/dist/security/constants.d.ts.map +1 -1
  69. package/dist/security/index.d.ts +4 -2
  70. package/dist/security/index.d.ts.map +1 -1
  71. package/dist/security/sanitize.d.ts +4 -1
  72. package/dist/security/sanitize.d.ts.map +1 -1
  73. package/dist/security/trusted-html.d.ts +53 -0
  74. package/dist/security/trusted-html.d.ts.map +1 -0
  75. package/dist/security.es.mjs +11 -56
  76. package/dist/store/define-store.d.ts +1 -1
  77. package/dist/store/define-store.d.ts.map +1 -1
  78. package/dist/store/mapping.d.ts +1 -1
  79. package/dist/store/mapping.d.ts.map +1 -1
  80. package/dist/store/persisted.d.ts +1 -1
  81. package/dist/store/persisted.d.ts.map +1 -1
  82. package/dist/store/types.d.ts +2 -2
  83. package/dist/store/types.d.ts.map +1 -1
  84. package/dist/store/watch.d.ts +1 -1
  85. package/dist/store/watch.d.ts.map +1 -1
  86. package/dist/store-BwDvI45q.js +263 -0
  87. package/dist/store-BwDvI45q.js.map +1 -0
  88. package/dist/store.es.mjs +12 -25
  89. package/dist/storybook/index.d.ts +37 -0
  90. package/dist/storybook/index.d.ts.map +1 -0
  91. package/dist/storybook.es.mjs +151 -0
  92. package/dist/storybook.es.mjs.map +1 -0
  93. package/dist/untrack-B0rVscTc.js +7 -0
  94. package/dist/untrack-B0rVscTc.js.map +1 -0
  95. package/dist/view-C70lA3vf.js +397 -0
  96. package/dist/view-C70lA3vf.js.map +1 -0
  97. package/dist/view.es.mjs +11 -430
  98. package/package.json +141 -132
  99. package/src/component/component.ts +524 -289
  100. package/src/component/html.ts +153 -53
  101. package/src/component/index.ts +50 -40
  102. package/src/component/library.ts +518 -0
  103. package/src/component/types.ts +256 -85
  104. package/src/core/collection.ts +628 -628
  105. package/src/core/element.ts +774 -774
  106. package/src/core/index.ts +48 -48
  107. package/src/core/utils/function.ts +151 -151
  108. package/src/full.ts +229 -187
  109. package/src/motion/animate.ts +113 -113
  110. package/src/motion/flip.ts +176 -176
  111. package/src/motion/scroll.ts +57 -57
  112. package/src/motion/spring.ts +150 -150
  113. package/src/motion/timeline.ts +246 -246
  114. package/src/motion/transition.ts +97 -51
  115. package/src/motion/types.ts +11 -1
  116. package/src/platform/announcer.ts +208 -0
  117. package/src/platform/config.ts +163 -0
  118. package/src/platform/cookies.ts +165 -0
  119. package/src/platform/index.ts +21 -0
  120. package/src/platform/meta.ts +168 -0
  121. package/src/platform/storage.ts +215 -215
  122. package/src/reactive/async-data.ts +486 -0
  123. package/src/reactive/core.ts +114 -114
  124. package/src/reactive/effect.ts +54 -54
  125. package/src/reactive/index.ts +15 -1
  126. package/src/reactive/internals.ts +122 -122
  127. package/src/reactive/signal.ts +9 -0
  128. package/src/security/constants.ts +3 -1
  129. package/src/security/index.ts +17 -10
  130. package/src/security/sanitize-core.ts +364 -364
  131. package/src/security/sanitize.ts +70 -66
  132. package/src/security/trusted-html.ts +71 -0
  133. package/src/store/define-store.ts +49 -48
  134. package/src/store/mapping.ts +74 -73
  135. package/src/store/persisted.ts +62 -61
  136. package/src/store/types.ts +92 -94
  137. package/src/store/watch.ts +53 -52
  138. package/src/storybook/index.ts +479 -0
  139. package/src/view/evaluate.ts +290 -290
  140. package/dist/batch-x7b2eZST.js +0 -13
  141. package/dist/batch-x7b2eZST.js.map +0 -1
  142. package/dist/component.es.mjs.map +0 -1
  143. package/dist/core-BhpuvPhy.js +0 -170
  144. package/dist/core-BhpuvPhy.js.map +0 -1
  145. package/dist/core.es.mjs.map +0 -1
  146. package/dist/full.es.mjs.map +0 -1
  147. package/dist/index.es.mjs.map +0 -1
  148. package/dist/motion.es.mjs.map +0 -1
  149. package/dist/persisted-DHoi3uEs.js +0 -278
  150. package/dist/persisted-DHoi3uEs.js.map +0 -1
  151. package/dist/platform.es.mjs.map +0 -1
  152. package/dist/reactive.es.mjs.map +0 -1
  153. package/dist/router.es.mjs.map +0 -1
  154. package/dist/sanitize-Cxvxa-DX.js +0 -283
  155. package/dist/sanitize-Cxvxa-DX.js.map +0 -1
  156. package/dist/security.es.mjs.map +0 -1
  157. package/dist/store.es.mjs.map +0 -1
  158. package/dist/type-guards-BdKlYYlS.js +0 -32
  159. package/dist/type-guards-BdKlYYlS.js.map +0 -1
  160. package/dist/untrack-DNnnqdlR.js +0 -6
  161. package/dist/untrack-DNnnqdlR.js.map +0 -1
  162. package/dist/view.es.mjs.map +0 -1
  163. package/dist/watch-DXXv3iAI.js +0 -58
  164. package/dist/watch-DXXv3iAI.js.map +0 -1
package/src/core/index.ts CHANGED
@@ -1,48 +1,48 @@
1
- export { BQueryCollection } from './collection';
2
- export { BQueryElement } from './element';
3
- export { $, $$ } from './selector';
4
- // Re-export the utils namespace for backward compatibility
5
- export { utils } from './utils';
6
- // Export individual utilities (except internal helpers)
7
- export {
8
- chunk,
9
- compact,
10
- ensureArray,
11
- flatten,
12
- unique,
13
- debounce,
14
- noop,
15
- once,
16
- throttle,
17
- isEmpty,
18
- parseJson,
19
- sleep,
20
- uid,
21
- clamp,
22
- inRange,
23
- randomInt,
24
- toNumber,
25
- clone,
26
- hasOwn,
27
- isPlainObject,
28
- merge,
29
- omit,
30
- pick,
31
- capitalize,
32
- escapeRegExp,
33
- slugify,
34
- toCamelCase,
35
- toKebabCase,
36
- truncate,
37
- isArray,
38
- isBoolean,
39
- isCollection,
40
- isDate,
41
- isElement,
42
- isFunction,
43
- isNumber,
44
- isObject,
45
- isPromise,
46
- isString,
47
- } from './utils';
48
- export type { DebouncedFn, ThrottledFn } from './utils';
1
+ export { BQueryCollection } from './collection';
2
+ export { BQueryElement } from './element';
3
+ export { $, $$ } from './selector';
4
+ // Re-export the utils namespace for backward compatibility
5
+ export { utils } from './utils';
6
+ // Export individual utilities (except internal helpers)
7
+ export {
8
+ chunk,
9
+ compact,
10
+ ensureArray,
11
+ flatten,
12
+ unique,
13
+ debounce,
14
+ noop,
15
+ once,
16
+ throttle,
17
+ isEmpty,
18
+ parseJson,
19
+ sleep,
20
+ uid,
21
+ clamp,
22
+ inRange,
23
+ randomInt,
24
+ toNumber,
25
+ clone,
26
+ hasOwn,
27
+ isPlainObject,
28
+ merge,
29
+ omit,
30
+ pick,
31
+ capitalize,
32
+ escapeRegExp,
33
+ slugify,
34
+ toCamelCase,
35
+ toKebabCase,
36
+ truncate,
37
+ isArray,
38
+ isBoolean,
39
+ isCollection,
40
+ isDate,
41
+ isElement,
42
+ isFunction,
43
+ isNumber,
44
+ isObject,
45
+ isPromise,
46
+ isString,
47
+ } from './utils';
48
+ export type { DebouncedFn, ThrottledFn } from './utils';
@@ -1,151 +1,151 @@
1
- /**
2
- * Function-focused utility helpers.
3
- *
4
- * @module bquery/core/utils/function
5
- */
6
-
7
- /** A debounced function with a cancel method to clear the pending timeout. */
8
- export interface DebouncedFn<TArgs extends unknown[]> {
9
- (...args: TArgs): void;
10
- /** Cancels the pending debounced invocation. */
11
- cancel(): void;
12
- }
13
-
14
- /** A throttled function with a cancel method to reset the throttle timer. */
15
- export interface ThrottledFn<TArgs extends unknown[]> {
16
- (...args: TArgs): void;
17
- /** Resets the throttle timer, allowing the next call to execute immediately. */
18
- cancel(): void;
19
- }
20
-
21
- /**
22
- * Creates a debounced function that delays execution until after
23
- * the specified delay has elapsed since the last call.
24
- *
25
- * @template TArgs - The argument types of the function
26
- * @param fn - The function to debounce
27
- * @param delayMs - Delay in milliseconds
28
- * @returns A debounced version of the function with a `cancel()` method
29
- *
30
- * @example
31
- * ```ts
32
- * const search = debounce((query: string) => {
33
- * console.log('Searching:', query);
34
- * }, 300);
35
- *
36
- * search('h');
37
- * search('he');
38
- * search('hello'); // Only this call executes after 300ms
39
- *
40
- * search('cancel me');
41
- * search.cancel(); // Cancels the pending invocation
42
- * ```
43
- */
44
- export function debounce<TArgs extends unknown[]>(
45
- fn: (...args: TArgs) => void,
46
- delayMs: number
47
- ): DebouncedFn<TArgs> {
48
- let timeoutId: ReturnType<typeof setTimeout> | undefined;
49
- const debounced: DebouncedFn<TArgs> = Object.assign(
50
- (...args: TArgs) => {
51
- if (timeoutId !== undefined) {
52
- clearTimeout(timeoutId);
53
- }
54
- timeoutId = setTimeout(() => {
55
- timeoutId = undefined;
56
- fn(...args);
57
- }, delayMs);
58
- },
59
- {
60
- cancel: () => {
61
- if (timeoutId !== undefined) {
62
- clearTimeout(timeoutId);
63
- timeoutId = undefined;
64
- }
65
- },
66
- }
67
- );
68
- return debounced;
69
- }
70
-
71
- /**
72
- * Creates a throttled function that runs at most once per interval.
73
- *
74
- * @template TArgs - The argument types of the function
75
- * @param fn - The function to throttle
76
- * @param intervalMs - Minimum interval between calls in milliseconds
77
- * @returns A throttled version of the function with a `cancel()` method
78
- *
79
- * @example
80
- * ```ts
81
- * const handleScroll = throttle(() => {
82
- * console.log('Scroll position:', window.scrollY);
83
- * }, 100);
84
- *
85
- * window.addEventListener('scroll', handleScroll);
86
- *
87
- * handleScroll.cancel(); // Resets throttle, next call executes immediately
88
- * ```
89
- */
90
- export function throttle<TArgs extends unknown[]>(
91
- fn: (...args: TArgs) => void,
92
- intervalMs: number
93
- ): ThrottledFn<TArgs> {
94
- let lastRun = 0;
95
- const throttled: ThrottledFn<TArgs> = Object.assign(
96
- (...args: TArgs) => {
97
- const now = Date.now();
98
- if (now - lastRun >= intervalMs) {
99
- lastRun = now;
100
- fn(...args);
101
- }
102
- },
103
- {
104
- cancel: () => {
105
- lastRun = 0;
106
- },
107
- }
108
- );
109
- return throttled;
110
- }
111
-
112
- /**
113
- * Ensures a function only runs once. Subsequent calls return the first result.
114
- *
115
- * @template TArgs - The argument types of the function
116
- * @template TResult - The return type of the function
117
- * @param fn - The function to wrap
118
- * @returns A function that only runs once
119
- *
120
- * @example
121
- * ```ts
122
- * const init = once(() => ({ ready: true }));
123
- * init();
124
- * init(); // only runs once
125
- * ```
126
- */
127
- export function once<TArgs extends unknown[], TResult>(
128
- fn: (...args: TArgs) => TResult
129
- ): (...args: TArgs) => TResult {
130
- let hasRun = false;
131
- let result!: TResult;
132
- return (...args: TArgs) => {
133
- if (!hasRun) {
134
- result = fn(...args);
135
- hasRun = true;
136
- }
137
- return result;
138
- };
139
- }
140
-
141
- /**
142
- * A no-operation function.
143
- *
144
- * @example
145
- * ```ts
146
- * noop();
147
- * ```
148
- */
149
- export function noop(): void {
150
- // Intentionally empty
151
- }
1
+ /**
2
+ * Function-focused utility helpers.
3
+ *
4
+ * @module bquery/core/utils/function
5
+ */
6
+
7
+ /** A debounced function with a cancel method to clear the pending timeout. */
8
+ export interface DebouncedFn<TArgs extends unknown[]> {
9
+ (...args: TArgs): void;
10
+ /** Cancels the pending debounced invocation. */
11
+ cancel(): void;
12
+ }
13
+
14
+ /** A throttled function with a cancel method to reset the throttle timer. */
15
+ export interface ThrottledFn<TArgs extends unknown[]> {
16
+ (...args: TArgs): void;
17
+ /** Resets the throttle timer, allowing the next call to execute immediately. */
18
+ cancel(): void;
19
+ }
20
+
21
+ /**
22
+ * Creates a debounced function that delays execution until after
23
+ * the specified delay has elapsed since the last call.
24
+ *
25
+ * @template TArgs - The argument types of the function
26
+ * @param fn - The function to debounce
27
+ * @param delayMs - Delay in milliseconds
28
+ * @returns A debounced version of the function with a `cancel()` method
29
+ *
30
+ * @example
31
+ * ```ts
32
+ * const search = debounce((query: string) => {
33
+ * console.log('Searching:', query);
34
+ * }, 300);
35
+ *
36
+ * search('h');
37
+ * search('he');
38
+ * search('hello'); // Only this call executes after 300ms
39
+ *
40
+ * search('cancel me');
41
+ * search.cancel(); // Cancels the pending invocation
42
+ * ```
43
+ */
44
+ export function debounce<TArgs extends unknown[]>(
45
+ fn: (...args: TArgs) => void,
46
+ delayMs: number
47
+ ): DebouncedFn<TArgs> {
48
+ let timeoutId: ReturnType<typeof setTimeout> | undefined;
49
+ const debounced: DebouncedFn<TArgs> = Object.assign(
50
+ (...args: TArgs) => {
51
+ if (timeoutId !== undefined) {
52
+ clearTimeout(timeoutId);
53
+ }
54
+ timeoutId = setTimeout(() => {
55
+ timeoutId = undefined;
56
+ fn(...args);
57
+ }, delayMs);
58
+ },
59
+ {
60
+ cancel: () => {
61
+ if (timeoutId !== undefined) {
62
+ clearTimeout(timeoutId);
63
+ timeoutId = undefined;
64
+ }
65
+ },
66
+ }
67
+ );
68
+ return debounced;
69
+ }
70
+
71
+ /**
72
+ * Creates a throttled function that runs at most once per interval.
73
+ *
74
+ * @template TArgs - The argument types of the function
75
+ * @param fn - The function to throttle
76
+ * @param intervalMs - Minimum interval between calls in milliseconds
77
+ * @returns A throttled version of the function with a `cancel()` method
78
+ *
79
+ * @example
80
+ * ```ts
81
+ * const handleScroll = throttle(() => {
82
+ * console.log('Scroll position:', window.scrollY);
83
+ * }, 100);
84
+ *
85
+ * window.addEventListener('scroll', handleScroll);
86
+ *
87
+ * handleScroll.cancel(); // Resets throttle, next call executes immediately
88
+ * ```
89
+ */
90
+ export function throttle<TArgs extends unknown[]>(
91
+ fn: (...args: TArgs) => void,
92
+ intervalMs: number
93
+ ): ThrottledFn<TArgs> {
94
+ let lastRun = 0;
95
+ const throttled: ThrottledFn<TArgs> = Object.assign(
96
+ (...args: TArgs) => {
97
+ const now = Date.now();
98
+ if (now - lastRun >= intervalMs) {
99
+ lastRun = now;
100
+ fn(...args);
101
+ }
102
+ },
103
+ {
104
+ cancel: () => {
105
+ lastRun = 0;
106
+ },
107
+ }
108
+ );
109
+ return throttled;
110
+ }
111
+
112
+ /**
113
+ * Ensures a function only runs once. Subsequent calls return the first result.
114
+ *
115
+ * @template TArgs - The argument types of the function
116
+ * @template TResult - The return type of the function
117
+ * @param fn - The function to wrap
118
+ * @returns A function that only runs once
119
+ *
120
+ * @example
121
+ * ```ts
122
+ * const init = once(() => ({ ready: true }));
123
+ * init();
124
+ * init(); // only runs once
125
+ * ```
126
+ */
127
+ export function once<TArgs extends unknown[], TResult>(
128
+ fn: (...args: TArgs) => TResult
129
+ ): (...args: TArgs) => TResult {
130
+ let hasRun = false;
131
+ let result!: TResult;
132
+ return (...args: TArgs) => {
133
+ if (!hasRun) {
134
+ result = fn(...args);
135
+ hasRun = true;
136
+ }
137
+ return result;
138
+ };
139
+ }
140
+
141
+ /**
142
+ * A no-operation function.
143
+ *
144
+ * @example
145
+ * ```ts
146
+ * noop();
147
+ * ```
148
+ */
149
+ export function noop(): void {
150
+ // Intentionally empty
151
+ }