pulse-js-framework 1.10.3 → 1.10.4

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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pulse-js-framework",
3
- "version": "1.10.3",
3
+ "version": "1.10.4",
4
4
  "description": "A declarative DOM framework with CSS selector-based structure and reactive pulsations",
5
5
  "type": "module",
6
6
  "sideEffects": false,
@@ -151,11 +151,13 @@
151
151
  "test:compiler": "node test/compiler.test.js",
152
152
  "test:parser-coverage": "node test/parser-coverage.test.js",
153
153
  "test:sourcemap": "node test/sourcemap.test.js",
154
+ "test:sourcemap-coverage-boost": "node --test test/sourcemap-coverage-boost.test.js",
154
155
  "test:css-parsing": "node test/css-parsing.test.js",
155
156
  "test:preprocessor": "node test/preprocessor.test.js",
156
157
  "test:pulse": "node test/pulse.test.js",
157
158
  "test:dom": "node test/dom.test.js",
158
159
  "test:dom-element": "node test/dom-element.test.js",
160
+ "test:dom-element-coverage-boost": "node --test test/dom-element-coverage-boost.test.js",
159
161
  "test:dom-list": "node test/dom-list.test.js",
160
162
  "test:dom-conditional": "node test/dom-conditional.test.js",
161
163
  "test:dom-lifecycle": "node test/dom-lifecycle.test.js",
@@ -167,6 +169,7 @@
167
169
  "test:store": "node test/store.test.js",
168
170
  "test:context": "node test/context.test.js",
169
171
  "test:hmr": "node test/hmr.test.js",
172
+ "test:hmr-coverage-boost": "node --test test/hmr-coverage-boost.test.js",
170
173
  "test:lint": "node test/lint.test.js",
171
174
  "test:format": "node test/format.test.js",
172
175
  "test:analyze": "node test/analyze.test.js",
@@ -185,13 +188,19 @@
185
188
  "test:http": "node test/http.test.js",
186
189
  "test:devtools": "node test/devtools.test.js",
187
190
  "test:native": "node test/native.test.js",
191
+ "test:native-coverage-boost": "node --test test/native-coverage-boost.test.js",
188
192
  "test:a11y": "node test/a11y.test.js",
189
193
  "test:a11y-enhanced": "node test/a11y-enhanced.test.js",
194
+ "test:a11y-widgets-coverage-boost": "node --test test/a11y-widgets-coverage-boost.test.js",
195
+ "test:a11y-focus-coverage-boost": "node --test test/a11y-focus-coverage-boost.test.js",
190
196
  "test:logger": "node test/logger.test.js",
191
197
  "test:logger-prod": "node test/logger-prod.test.js",
198
+ "test:logger-coverage-boost": "node --test test/logger-coverage-boost.test.js",
192
199
  "test:errors": "node test/errors.test.js",
193
200
  "test:security": "node test/security.test.js",
201
+ "test:security-coverage-boost": "node --test test/security-coverage-boost.test.js",
194
202
  "test:websocket": "node test/websocket.test.js",
203
+ "test:websocket-coverage-boost": "node --test test/websocket-coverage-boost.test.js",
195
204
  "test:graphql": "node test/graphql.test.js",
196
205
  "test:graphql-coverage": "node test/graphql-coverage.test.js",
197
206
  "test:doctor": "node test/doctor.test.js",
@@ -203,6 +212,7 @@
203
212
  "test:form-edge-cases": "node test/form-edge-cases.test.js",
204
213
  "test:form-coverage": "node test/form-coverage.test.js",
205
214
  "test:graphql-subscriptions": "node test/graphql-subscriptions.test.js",
215
+ "test:graphql-subscriptions-coverage-boost": "node --test test/graphql-subscriptions-coverage-boost.test.js",
206
216
  "test:http-edge-cases": "node test/http-edge-cases.test.js",
207
217
  "test:integration-advanced": "node test/integration-advanced.test.js",
208
218
  "test:websocket-stress": "node test/websocket-stress.test.js",
@@ -222,6 +232,7 @@
222
232
  "test:memory-cleanup": "node --test test/memory-cleanup.test.js",
223
233
  "test:sse": "node --test test/sse.test.js",
224
234
  "test:persistence": "node --test test/persistence.test.js",
235
+ "test:persistence-coverage-boost": "node --test test/persistence-coverage-boost.test.js",
225
236
  "test:i18n": "node --test test/i18n.test.js",
226
237
  "test:portal": "node --test test/portal.test.js",
227
238
  "test:animation": "node --test test/animation.test.js",
@@ -445,6 +445,7 @@ export function createMenu(button, menu, options = {}) {
445
445
  const menuId = menu.id || generateId('menu');
446
446
  let rovingCleanup = null;
447
447
  let documentClickHandler = null;
448
+ let documentClickTimeout = null;
448
449
 
449
450
  // Set ARIA attributes
450
451
  menu.id = menuId;
@@ -476,7 +477,8 @@ export function createMenu(button, menu, options = {}) {
476
477
  if (firstItem) firstItem.focus();
477
478
 
478
479
  // Close on click outside (delay to avoid immediate close)
479
- setTimeout(() => {
480
+ documentClickTimeout = setTimeout(() => {
481
+ documentClickTimeout = null;
480
482
  documentClickHandler = (e) => {
481
483
  if (!button.contains(e.target) && !menu.contains(e.target)) {
482
484
  close();
@@ -498,6 +500,11 @@ export function createMenu(button, menu, options = {}) {
498
500
  rovingCleanup = null;
499
501
  }
500
502
 
503
+ if (documentClickTimeout) {
504
+ clearTimeout(documentClickTimeout);
505
+ documentClickTimeout = null;
506
+ }
507
+
501
508
  if (documentClickHandler) {
502
509
  document.removeEventListener('click', documentClickHandler);
503
510
  documentClickHandler = null;
@@ -533,11 +540,17 @@ export function createMenu(button, menu, options = {}) {
533
540
  button.removeEventListener('click', toggle);
534
541
  button.removeEventListener('keydown', handleButtonKeyDown);
535
542
  menu.removeEventListener('keydown', handleMenuKeyDown);
543
+ if (documentClickTimeout) {
544
+ clearTimeout(documentClickTimeout);
545
+ documentClickTimeout = null;
546
+ }
536
547
  if (documentClickHandler) {
537
548
  document.removeEventListener('click', documentClickHandler);
549
+ documentClickHandler = null;
538
550
  }
539
551
  if (rovingCleanup) {
540
552
  rovingCleanup();
553
+ rovingCleanup = null;
541
554
  }
542
555
  };
543
556
 
@@ -9,6 +9,8 @@
9
9
  import { pulse, effect, onCleanup } from '../pulse.js';
10
10
  import { createWebSocket, WebSocketError } from '../websocket.js';
11
11
  import { ClientError } from '../errors.js';
12
+ import { extractOperationName } from './cache.js';
13
+ import { GraphQLError } from './client.js';
12
14
 
13
15
  // ============================================================================
14
16
  // Constants