@rickcedwhat/playwright-smart-table 6.20.1-next.720a2e5 → 6.20.1-next.e946424

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.
@@ -37,6 +37,7 @@ async function runMap(env, callback, options = {}, label = 'map') {
37
37
  const tracker = new elementTracker_1.ElementTracker(label);
38
38
  log(env.config, `${label}: starting (maxPages=${effectiveMaxPages}, mode=${concurrency}, dedupe=${!!dedupeStrategy})`);
39
39
  const results = [];
40
+ const seenLogicalIndices = new Set();
40
41
  try {
41
42
  let rowIndex = 0;
42
43
  let stopped = false;
@@ -114,6 +115,13 @@ async function runMap(env, callback, options = {}, label = 'map') {
114
115
  if (stopped && enumIndex > stoppedIndex) {
115
116
  return SKIP;
116
117
  }
118
+ // When resolveRowIndex is configured, identical logical indices across pages
119
+ // indicate the same record (e.g. re-created DOM elements in recycling
120
+ // virtualizers whose WeakMap entry was GC'd). Skip without processing.
121
+ if (row.rowIndex !== undefined && seenLogicalIndices.has(row.rowIndex)) {
122
+ log(env.config, `${label}: skipping duplicate logical row ${row.rowIndex}`);
123
+ return SKIP;
124
+ }
117
125
  // Wait for the row to finish loading BEFORE evaluating its dedupe key (Bug #355).
118
126
  // map/forEach/filter process a still-loading row when no timeout is set (unlike
119
127
  // findRows, which skips) — see resolveRowLoading's `noTimeoutAction`.
@@ -144,6 +152,9 @@ async function runMap(env, callback, options = {}, label = 'map') {
144
152
  if (dedupeKeys && dedupeKey !== undefined && result !== SKIP) {
145
153
  dedupeKeys.add(dedupeKey);
146
154
  }
155
+ if (row.rowIndex !== undefined && result !== SKIP) {
156
+ seenLogicalIndices.add(row.rowIndex);
157
+ }
147
158
  return result;
148
159
  }
149
160
  finally {
@@ -3,4 +3,4 @@
3
3
  * Generated by scripts/embed-version.mjs from package.json
4
4
  */
5
5
  /** Semver of this package. Use in logs or diagnostics to confirm the installed build. */
6
- export declare const PLAYWRIGHT_SMART_TABLE_VERSION: "6.20.1-next.720a2e5";
6
+ export declare const PLAYWRIGHT_SMART_TABLE_VERSION: "6.20.1-next.e946424";
@@ -6,4 +6,4 @@ exports.PLAYWRIGHT_SMART_TABLE_VERSION = void 0;
6
6
  * Generated by scripts/embed-version.mjs from package.json
7
7
  */
8
8
  /** Semver of this package. Use in logs or diagnostics to confirm the installed build. */
9
- exports.PLAYWRIGHT_SMART_TABLE_VERSION = "6.20.1-next.720a2e5";
9
+ exports.PLAYWRIGHT_SMART_TABLE_VERSION = "6.20.1-next.e946424";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rickcedwhat/playwright-smart-table",
3
- "version": "6.20.1-next.720a2e5",
3
+ "version": "6.20.1-next.e946424",
4
4
  "description": "Smart, column-aware table interactions for Playwright",
5
5
  "author": "Cedrick Catalan",
6
6
  "license": "MIT",