dsh-unlag 1.9.72 → 1.9.74

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 (2) hide show
  1. package/client.js +24 -7
  2. package/package.json +1 -1
package/client.js CHANGED
@@ -249,8 +249,11 @@ window.__ModuleLoader__.load({
249
249
  holdReason = null;
250
250
  return 'ok';
251
251
  }
252
+ // The refusal's wording is the app's, read as a key into a table of gates: a key the table does
253
+ // not own (a prototype name, a word from a newer app) falls back to the list rather than to
254
+ // whatever that name happens to resolve to.
252
255
  const reason = data !== null && typeof data === 'object' && typeof data.reason === 'string' ? data.reason : 'list';
253
- held(VERIFY_GATES[reason] ?? 'list');
256
+ held(Object.hasOwn(VERIFY_GATES, reason) ? VERIFY_GATES[reason] : 'list');
254
257
  return 'blocked';
255
258
  }
256
259
 
@@ -351,17 +354,31 @@ window.__ModuleLoader__.load({
351
354
  let frozen = null;
352
355
  for (const row of rows) {
353
356
  if (row === null || typeof row !== 'object') continue;
354
- if (typeof row.kind !== 'string' || !STARTUP_ROW_KINDS.has(row.kind)) return held('row');
357
+ // The saved list crosses a boundary from the shell: a row whose fields cannot be read is a
358
+ // list this page cannot vouch for, and naming the row beats a page-shaped notice.
359
+ let kind = '';
360
+ let runs = false;
361
+ let src = '';
362
+ let name = '';
363
+ let value = null;
364
+ try {
365
+ kind = typeof row.kind === 'string' ? row.kind : '';
366
+ runs = kind === 'script-src' || kind === 'script-preload';
367
+ src = typeof row.src === 'string' ? row.src : '';
368
+ name = typeof row.name === 'string' ? row.name : '';
369
+ value = row.value;
370
+ } catch {
371
+ return held('row');
372
+ }
373
+ if (!STARTUP_ROW_KINDS.has(kind)) return held('row');
355
374
  // Only the rows a document runs as scripts have to load as classic scripts. Style and
356
375
  // markup rows carry their own text and their address is not a script at all, so reading
357
376
  // them back would refuse a sound list over a false alarm.
358
- const runs = row.kind === 'script-src' || row.kind === 'script-preload';
359
- if (runs && (typeof row.src !== 'string' || row.src === '')) return held('src');
360
- if (runs) scripts.push(row.src);
377
+ if (runs && src === '') return held('src');
378
+ if (runs) scripts.push(src);
361
379
  // Inline rows carry their own text and are not fetched; the queue script among them ends
362
380
  // in a nested return that a flat scan would misread, so their text is left to the document.
363
- if (row.kind !== 'global' || row.name !== '__DSH_BOOT__') continue; // ui-copy-ignore
364
- let value = row.value;
381
+ if (kind !== 'global' || name !== '__DSH_BOOT__') continue; // ui-copy-ignore
365
382
  if (typeof value === 'string') {
366
383
  try {
367
384
  value = JSON.parse(value);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-unlag",
3
- "version": "1.9.72",
3
+ "version": "1.9.74",
4
4
  "type": "module",
5
5
  "description": "A press applies plugin edits right away and brings a laggy interface back; automatic reloading stays off unless you turn it on, so the press is the only trigger, and nothing restarts.",
6
6
  "license": "MIT",