mikser-io-layouts 2.5.0 → 2.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.
Files changed (2) hide show
  1. package/lib/assembly.js +11 -1
  2. package/package.json +6 -5
package/lib/assembly.js CHANGED
@@ -142,7 +142,16 @@ export function createOnBeforeRender({
142
142
  const mutatedEntities = new Map(seeds.map(s => [s.id, s]))
143
143
  const queryAffected = runtime.manifest?.queryAffected(mutatedEntities) ?? new Set()
144
144
 
145
- if (seeds.length === 0 && optOutEntities.length === 0 && queryAffected.size === 0) return
145
+ // Entities whose last render attempt threw. Nothing else will
146
+ // schedule them: their own source has not changed, so they are
147
+ // gated at import, and the manifest still holds the snapshot from
148
+ // the last GOOD render — every hash agrees and the page stays
149
+ // broken. Same hook as the opt-outs above, for the same reason:
150
+ // a dispatch set the ref walk cannot reach.
151
+ const failedIds = runtime.manifest?.failedIds?.() ?? []
152
+
153
+ if (seeds.length === 0 && optOutEntities.length === 0
154
+ && queryAffected.size === 0 && failedIds.length === 0) return
146
155
 
147
156
  const closure = seeds.length ? runtime.refs.inverseClosureOf(seeds) : new Set()
148
157
  // Combine closure ids + opt-out ids + query-affected ids
@@ -150,6 +159,7 @@ export function createOnBeforeRender({
150
159
  const dispatchIds = new Set(closure)
151
160
  for (const e of optOutEntities) dispatchIds.add(e.id)
152
161
  for (const id of queryAffected) dispatchIds.add(id)
162
+ for (const id of failedIds) dispatchIds.add(id)
153
163
 
154
164
  // Hydrate each id via findById. LRU cache absorbs
155
165
  // duplicates (refs BFS revisits, partial dispatches
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mikser-io-layouts",
3
- "version": "2.5.0",
3
+ "version": "2.6.1",
4
4
  "description": "SSG-flavor task-production policy for mikser-io. Multi-match layout assignment, per-layout destinations, postprocess chain attachment, layout inspection.",
5
5
  "main": "index.js",
6
6
  "type": "module",
@@ -18,15 +18,16 @@
18
18
  },
19
19
  "homepage": "https://github.com/almero-digital-marketing/mikser-io-layouts#readme",
20
20
  "peerDependencies": {
21
- "mikser-io": "^9.20.0"
21
+ "mikser-io": "^9.25.0",
22
+ "zod": "^4.0.0"
22
23
  },
23
24
  "dependencies": {
24
25
  "globby": "^14.0.0",
25
26
  "handlebars": "^4.7.0",
26
- "lodash": "^4.17.0",
27
- "zod": "^4.4.3"
27
+ "lodash": "^4.17.0"
28
28
  },
29
29
  "devDependencies": {
30
- "mikser-io": "file:../mikser-io"
30
+ "mikser-io": "file:../mikser-io",
31
+ "zod": "^4.0.0"
31
32
  }
32
33
  }