waygraph 0.15.25 → 0.15.27
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/dist/auto-session/helpers.d.ts +203 -0
- package/dist/auto-session/helpers.js +148 -0
- package/dist/auto-session/session.d.ts +191 -0
- package/dist/auto-session/session.js +697 -0
- package/dist/auto-session.d.ts +2 -369
- package/dist/auto-session.js +3 -843
- package/dist/highlights/css.d.ts +14 -0
- package/dist/highlights/css.js +58 -0
- package/dist/highlights/demo-pace.d.ts +56 -0
- package/dist/highlights/demo-pace.js +184 -0
- package/dist/highlights/device.d.ts +29 -0
- package/dist/highlights/device.js +171 -0
- package/dist/highlights/merge.d.ts +8 -0
- package/dist/highlights/merge.js +173 -0
- package/dist/highlights/run-phase.d.ts +43 -0
- package/dist/highlights/run-phase.js +211 -0
- package/dist/highlights/stub-ctx.d.ts +10 -0
- package/dist/highlights/stub-ctx.js +281 -0
- package/dist/highlights/style.d.ts +27 -0
- package/dist/highlights/style.js +84 -0
- package/dist/highlights/todo-dock.d.ts +52 -0
- package/dist/highlights/todo-dock.js +248 -0
- package/dist/highlights/types.d.ts +536 -0
- package/dist/highlights/types.js +1 -0
- package/dist/highlights.d.ts +9 -734
- package/dist/highlights.js +10 -1416
- package/package.json +1 -1
- package/examples/saucedemo/.waygraph-auto/083cc5b9.log +0 -0
- package/examples/saucedemo/.waygraph-auto/0ac58118.log +0 -0
- package/examples/saucedemo/.waygraph-auto/0b937f26.log +0 -4
- package/examples/saucedemo/.waygraph-auto/0c00f25f.log +0 -0
- package/examples/saucedemo/.waygraph-auto/0e480591.log +0 -0
- package/examples/saucedemo/.waygraph-auto/104751ef.log +0 -0
- package/examples/saucedemo/.waygraph-auto/110958b8.log +0 -0
- package/examples/saucedemo/.waygraph-auto/11c497cd.log +0 -44
- package/examples/saucedemo/.waygraph-auto/138107c1.log +0 -0
- package/examples/saucedemo/.waygraph-auto/159d541b.log +0 -0
- package/examples/saucedemo/.waygraph-auto/16aa2c01.log +0 -0
- package/examples/saucedemo/.waygraph-auto/16c35dd5.log +0 -0
- package/examples/saucedemo/.waygraph-auto/1706547d.log +0 -0
- package/examples/saucedemo/.waygraph-auto/17537e42.log +0 -0
- package/examples/saucedemo/.waygraph-auto/175655f7.log +0 -0
- package/examples/saucedemo/.waygraph-auto/179dde38.log +0 -0
- package/examples/saucedemo/.waygraph-auto/17ede493.log +0 -0
- package/examples/saucedemo/.waygraph-auto/19b9eee5.log +0 -0
- package/examples/saucedemo/.waygraph-auto/1a7d471e.log +0 -0
- package/examples/saucedemo/.waygraph-auto/1d266123.log +0 -0
- package/examples/saucedemo/.waygraph-auto/1e33a93d.log +0 -0
- package/examples/saucedemo/.waygraph-auto/1fe2414f.log +0 -0
- package/examples/saucedemo/.waygraph-auto/1fe2e3b8.log +0 -0
- package/examples/saucedemo/.waygraph-auto/2219f00b.log +0 -0
- package/examples/saucedemo/.waygraph-auto/23e62571.log +0 -0
- package/examples/saucedemo/.waygraph-auto/25f68ada.log +0 -0
- package/examples/saucedemo/.waygraph-auto/26ca9cd8.log +0 -0
- package/examples/saucedemo/.waygraph-auto/29d11a49.log +0 -44
- package/examples/saucedemo/.waygraph-auto/2b608ed3.log +0 -0
- package/examples/saucedemo/.waygraph-auto/2bb6c4e8.log +0 -0
- package/examples/saucedemo/.waygraph-auto/2c13567b.log +0 -0
- package/examples/saucedemo/.waygraph-auto/2c7e8edd.log +0 -0
- package/examples/saucedemo/.waygraph-auto/2c9a4003.log +0 -44
- package/examples/saucedemo/.waygraph-auto/2d425004.log +0 -0
- package/examples/saucedemo/.waygraph-auto/2d45a578.log +0 -0
- package/examples/saucedemo/.waygraph-auto/2d9622a5.log +0 -4
- package/examples/saucedemo/.waygraph-auto/2f5b3ea6.log +0 -0
- package/examples/saucedemo/.waygraph-auto/2fbf6b8d.log +0 -0
- package/examples/saucedemo/.waygraph-auto/301ff7e3.log +0 -0
- package/examples/saucedemo/.waygraph-auto/305f6e5b.log +0 -4
- package/examples/saucedemo/.waygraph-auto/309c107f.log +0 -0
- package/examples/saucedemo/.waygraph-auto/3178c318.log +0 -0
- package/examples/saucedemo/.waygraph-auto/31bb303d.log +0 -0
- package/examples/saucedemo/.waygraph-auto/31f2042f.log +0 -0
- package/examples/saucedemo/.waygraph-auto/32e2c26f.log +0 -0
- package/examples/saucedemo/.waygraph-auto/32ef32a8.log +0 -44
- package/examples/saucedemo/.waygraph-auto/36551ec1.log +0 -0
- package/examples/saucedemo/.waygraph-auto/36a1c274.log +0 -0
- package/examples/saucedemo/.waygraph-auto/36ba01f7.log +0 -44
- package/examples/saucedemo/.waygraph-auto/381aa338.log +0 -0
- package/examples/saucedemo/.waygraph-auto/3882bce1.log +0 -0
- package/examples/saucedemo/.waygraph-auto/38acd1dc.log +0 -0
- package/examples/saucedemo/.waygraph-auto/39f352c7.log +0 -4
- package/examples/saucedemo/.waygraph-auto/3ab7c7bd.log +0 -44
- package/examples/saucedemo/.waygraph-auto/3b8b77b9.log +0 -0
- package/examples/saucedemo/.waygraph-auto/3eb1df41.log +0 -0
- package/examples/saucedemo/.waygraph-auto/4028d2a2.log +0 -0
- package/examples/saucedemo/.waygraph-auto/4168b208.log +0 -0
- package/examples/saucedemo/.waygraph-auto/418befbf.log +0 -4
- package/examples/saucedemo/.waygraph-auto/422d4390.log +0 -0
- package/examples/saucedemo/.waygraph-auto/4258d26d.log +0 -0
- package/examples/saucedemo/.waygraph-auto/42cc9113.log +0 -0
- package/examples/saucedemo/.waygraph-auto/439d30aa.log +0 -0
- package/examples/saucedemo/.waygraph-auto/43ab66ce.log +0 -0
- package/examples/saucedemo/.waygraph-auto/43f66838.log +0 -0
- package/examples/saucedemo/.waygraph-auto/442171d4.log +0 -0
- package/examples/saucedemo/.waygraph-auto/453b1ce1.log +0 -0
- package/examples/saucedemo/.waygraph-auto/457322bd.log +0 -0
- package/examples/saucedemo/.waygraph-auto/45864828.log +0 -0
- package/examples/saucedemo/.waygraph-auto/46197027.log +0 -0
- package/examples/saucedemo/.waygraph-auto/46889468.log +0 -0
- package/examples/saucedemo/.waygraph-auto/483bd763.log +0 -4
- package/examples/saucedemo/.waygraph-auto/4890da1c.log +0 -0
- package/examples/saucedemo/.waygraph-auto/4893a63b.log +0 -0
- package/examples/saucedemo/.waygraph-auto/48e3596a.log +0 -0
- package/examples/saucedemo/.waygraph-auto/49edc885.log +0 -4
- package/examples/saucedemo/.waygraph-auto/4a85f496.log +0 -0
- package/examples/saucedemo/.waygraph-auto/4af71440.log +0 -0
- package/examples/saucedemo/.waygraph-auto/4c6b9e15.log +0 -0
- package/examples/saucedemo/.waygraph-auto/4d68438c.log +0 -0
- package/examples/saucedemo/.waygraph-auto/4f0e33e7.log +0 -4
- package/examples/saucedemo/.waygraph-auto/4f7496d1.log +0 -0
- package/examples/saucedemo/.waygraph-auto/5030cca5.log +0 -0
- package/examples/saucedemo/.waygraph-auto/50e8baaa.log +0 -0
- package/examples/saucedemo/.waygraph-auto/51a5387a.log +0 -0
- package/examples/saucedemo/.waygraph-auto/52b3a455.log +0 -0
- package/examples/saucedemo/.waygraph-auto/532dd9b8.log +0 -0
- package/examples/saucedemo/.waygraph-auto/537af83d.log +0 -44
- package/examples/saucedemo/.waygraph-auto/5391ce40.log +0 -0
- package/examples/saucedemo/.waygraph-auto/55df2b0f.log +0 -0
- package/examples/saucedemo/.waygraph-auto/57dbddb3.log +0 -0
- package/examples/saucedemo/.waygraph-auto/5897f501.log +0 -0
- package/examples/saucedemo/.waygraph-auto/59c0b57d.log +0 -0
- package/examples/saucedemo/.waygraph-auto/5a4374f7.log +0 -0
- package/examples/saucedemo/.waygraph-auto/5adfacd5.log +0 -44
- package/examples/saucedemo/.waygraph-auto/5b511794.log +0 -0
- package/examples/saucedemo/.waygraph-auto/5bd8fedf.log +0 -4
- package/examples/saucedemo/.waygraph-auto/5c0eef7f.log +0 -0
- package/examples/saucedemo/.waygraph-auto/5c47910f.log +0 -0
- package/examples/saucedemo/.waygraph-auto/5d60da77.log +0 -0
- package/examples/saucedemo/.waygraph-auto/5dde8331.log +0 -4
- package/examples/saucedemo/.waygraph-auto/5eafc682.log +0 -0
- package/examples/saucedemo/.waygraph-auto/5eda8273.log +0 -0
- package/examples/saucedemo/.waygraph-auto/5fc3a33b.log +0 -0
- package/examples/saucedemo/.waygraph-auto/605d965b.log +0 -0
- package/examples/saucedemo/.waygraph-auto/61b6546d.log +0 -0
- package/examples/saucedemo/.waygraph-auto/621518ad.log +0 -0
- package/examples/saucedemo/.waygraph-auto/632b7118.log +0 -0
- package/examples/saucedemo/.waygraph-auto/64314c2b.log +0 -0
- package/examples/saucedemo/.waygraph-auto/6443943b.log +0 -0
- package/examples/saucedemo/.waygraph-auto/650ed066.log +0 -0
- package/examples/saucedemo/.waygraph-auto/66516213.log +0 -0
- package/examples/saucedemo/.waygraph-auto/66c17079.log +0 -0
- package/examples/saucedemo/.waygraph-auto/68903903.log +0 -0
- package/examples/saucedemo/.waygraph-auto/69bf0b80.log +0 -0
- package/examples/saucedemo/.waygraph-auto/69c2347a.log +0 -0
- package/examples/saucedemo/.waygraph-auto/6b667734.log +0 -0
- package/examples/saucedemo/.waygraph-auto/6c9f8e10.log +0 -0
- package/examples/saucedemo/.waygraph-auto/6d22bdb0.log +0 -0
- package/examples/saucedemo/.waygraph-auto/6d9aaad3.log +0 -0
- package/examples/saucedemo/.waygraph-auto/6fc3d553.log +0 -0
- package/examples/saucedemo/.waygraph-auto/7103bebb.log +0 -0
- package/examples/saucedemo/.waygraph-auto/740c9faa.log +0 -0
- package/examples/saucedemo/.waygraph-auto/74872fc5.log +0 -0
- package/examples/saucedemo/.waygraph-auto/74ce745a.log +0 -0
- package/examples/saucedemo/.waygraph-auto/7531b70f.log +0 -0
- package/examples/saucedemo/.waygraph-auto/75846ca9.log +0 -0
- package/examples/saucedemo/.waygraph-auto/7626c85b.log +0 -0
- package/examples/saucedemo/.waygraph-auto/76308eec.log +0 -0
- package/examples/saucedemo/.waygraph-auto/76c1650e.log +0 -0
- package/examples/saucedemo/.waygraph-auto/76c7d418.log +0 -44
- package/examples/saucedemo/.waygraph-auto/7774f054.log +0 -0
- package/examples/saucedemo/.waygraph-auto/78197960.log +0 -44
- package/examples/saucedemo/.waygraph-auto/7861f38f.log +0 -0
- package/examples/saucedemo/.waygraph-auto/78b21219.log +0 -0
- package/examples/saucedemo/.waygraph-auto/78bbf43c.log +0 -0
- package/examples/saucedemo/.waygraph-auto/79600ead.log +0 -0
- package/examples/saucedemo/.waygraph-auto/7a08e89a.log +0 -0
- package/examples/saucedemo/.waygraph-auto/7af224ed.log +0 -0
- package/examples/saucedemo/.waygraph-auto/7c2acbc2.log +0 -44
- package/examples/saucedemo/.waygraph-auto/7c3be585.log +0 -0
- package/examples/saucedemo/.waygraph-auto/7d9f231d.log +0 -0
- package/examples/saucedemo/.waygraph-auto/7ed55a2c.log +0 -0
- package/examples/saucedemo/.waygraph-auto/7eded669.log +0 -0
- package/examples/saucedemo/.waygraph-auto/7efa646f.log +0 -4
- package/examples/saucedemo/.waygraph-auto/80086ba2.log +0 -0
- package/examples/saucedemo/.waygraph-auto/80206369.log +0 -0
- package/examples/saucedemo/.waygraph-auto/844b63ff.log +0 -44
- package/examples/saucedemo/.waygraph-auto/847f1092.log +0 -0
- package/examples/saucedemo/.waygraph-auto/84d6d293.log +0 -0
- package/examples/saucedemo/.waygraph-auto/8557750f.log +0 -0
- package/examples/saucedemo/.waygraph-auto/8581abfa.log +0 -0
- package/examples/saucedemo/.waygraph-auto/86a5ff4d.log +0 -0
- package/examples/saucedemo/.waygraph-auto/87b7e0fd.log +0 -0
- package/examples/saucedemo/.waygraph-auto/87c79256.log +0 -0
- package/examples/saucedemo/.waygraph-auto/88a4200b.log +0 -0
- package/examples/saucedemo/.waygraph-auto/88af2495.log +0 -0
- package/examples/saucedemo/.waygraph-auto/89477e92.log +0 -0
- package/examples/saucedemo/.waygraph-auto/8a3eb088.log +0 -0
- package/examples/saucedemo/.waygraph-auto/8c04a403.log +0 -0
- package/examples/saucedemo/.waygraph-auto/8c5b1caa.log +0 -0
- package/examples/saucedemo/.waygraph-auto/8c9ab09e.log +0 -0
- package/examples/saucedemo/.waygraph-auto/8cc5db51.log +0 -0
- package/examples/saucedemo/.waygraph-auto/8ea3a69c.log +0 -0
- package/examples/saucedemo/.waygraph-auto/90141d7e.log +0 -4
- package/examples/saucedemo/.waygraph-auto/9150f913.log +0 -0
- package/examples/saucedemo/.waygraph-auto/929a4313.log +0 -0
- package/examples/saucedemo/.waygraph-auto/95a599e4.log +0 -0
- package/examples/saucedemo/.waygraph-auto/95bd8371.log +0 -0
- package/examples/saucedemo/.waygraph-auto/96c45350.log +0 -0
- package/examples/saucedemo/.waygraph-auto/986030e6.log +0 -0
- package/examples/saucedemo/.waygraph-auto/9918377b.log +0 -0
- package/examples/saucedemo/.waygraph-auto/99787abb.log +0 -0
- package/examples/saucedemo/.waygraph-auto/99ddb62c.log +0 -0
- package/examples/saucedemo/.waygraph-auto/9c4fd0a0.log +0 -0
- package/examples/saucedemo/.waygraph-auto/9cd2da32.log +0 -0
- package/examples/saucedemo/.waygraph-auto/9cecb0c8.log +0 -4
- package/examples/saucedemo/.waygraph-auto/a2dd30dd.log +0 -0
- package/examples/saucedemo/.waygraph-auto/a63a2d20.log +0 -0
- package/examples/saucedemo/.waygraph-auto/a78befb7.log +0 -0
- package/examples/saucedemo/.waygraph-auto/a7c3d248.log +0 -0
- package/examples/saucedemo/.waygraph-auto/a84d9b79.log +0 -0
- package/examples/saucedemo/.waygraph-auto/a87bb3ee.log +0 -0
- package/examples/saucedemo/.waygraph-auto/a9270890.log +0 -0
- package/examples/saucedemo/.waygraph-auto/aa440153.log +0 -0
- package/examples/saucedemo/.waygraph-auto/aae57d51.log +0 -0
- package/examples/saucedemo/.waygraph-auto/ab26aeb4.log +0 -0
- package/examples/saucedemo/.waygraph-auto/ab7561e0.log +0 -0
- package/examples/saucedemo/.waygraph-auto/ac19ae60.log +0 -0
- package/examples/saucedemo/.waygraph-auto/ae21ad8e.log +0 -0
- package/examples/saucedemo/.waygraph-auto/af09042f.log +0 -0
- package/examples/saucedemo/.waygraph-auto/b0eed995.log +0 -44
- package/examples/saucedemo/.waygraph-auto/b13d08e4.log +0 -0
- package/examples/saucedemo/.waygraph-auto/b1684126.log +0 -0
- package/examples/saucedemo/.waygraph-auto/b21e9d12.log +0 -0
- package/examples/saucedemo/.waygraph-auto/b5a838be.log +0 -0
- package/examples/saucedemo/.waygraph-auto/b603549d.log +0 -0
- package/examples/saucedemo/.waygraph-auto/b61a08d8.log +0 -0
- package/examples/saucedemo/.waygraph-auto/b7e545f0.log +0 -0
- package/examples/saucedemo/.waygraph-auto/b81e074f.log +0 -0
- package/examples/saucedemo/.waygraph-auto/b83e6259.log +0 -0
- package/examples/saucedemo/.waygraph-auto/b9cb2796.log +0 -0
- package/examples/saucedemo/.waygraph-auto/ba58abb7.log +0 -0
- package/examples/saucedemo/.waygraph-auto/bb0a0018.log +0 -0
- package/examples/saucedemo/.waygraph-auto/bb69dc1a.log +0 -44
- package/examples/saucedemo/.waygraph-auto/bb9fd384.log +0 -0
- package/examples/saucedemo/.waygraph-auto/bc0bdd0e.log +0 -0
- package/examples/saucedemo/.waygraph-auto/bc4ae56f.log +0 -0
- package/examples/saucedemo/.waygraph-auto/bc7d4a83.log +0 -0
- package/examples/saucedemo/.waygraph-auto/bcb9e31a.log +0 -0
- package/examples/saucedemo/.waygraph-auto/bd8e082a.log +0 -0
- package/examples/saucedemo/.waygraph-auto/bde6d205.log +0 -0
- package/examples/saucedemo/.waygraph-auto/be0bb35f.log +0 -0
- package/examples/saucedemo/.waygraph-auto/bea0c93e.log +0 -0
- package/examples/saucedemo/.waygraph-auto/bf35201a.log +0 -0
- package/examples/saucedemo/.waygraph-auto/bffa3a7a.log +0 -0
- package/examples/saucedemo/.waygraph-auto/c02ea583.log +0 -0
- package/examples/saucedemo/.waygraph-auto/c10c4038.log +0 -0
- package/examples/saucedemo/.waygraph-auto/c17253b0.log +0 -44
- package/examples/saucedemo/.waygraph-auto/c23b2654.log +0 -0
- package/examples/saucedemo/.waygraph-auto/c2caf0a8.log +0 -0
- package/examples/saucedemo/.waygraph-auto/c31a9465.log +0 -0
- package/examples/saucedemo/.waygraph-auto/c3bdc714.log +0 -0
- package/examples/saucedemo/.waygraph-auto/c4afb8bc.log +0 -0
- package/examples/saucedemo/.waygraph-auto/c5ac2393.log +0 -44
- package/examples/saucedemo/.waygraph-auto/c701e3c2.log +0 -0
- package/examples/saucedemo/.waygraph-auto/c8825eda.log +0 -0
- package/examples/saucedemo/.waygraph-auto/c916a654.log +0 -0
- package/examples/saucedemo/.waygraph-auto/c946f66c.log +0 -0
- package/examples/saucedemo/.waygraph-auto/c9b8d69e.log +0 -0
- package/examples/saucedemo/.waygraph-auto/cb2726d7.log +0 -0
- package/examples/saucedemo/.waygraph-auto/cd0d5b50.log +0 -4
- package/examples/saucedemo/.waygraph-auto/cd3e528c.log +0 -0
- package/examples/saucedemo/.waygraph-auto/cd5b203c.log +0 -0
- package/examples/saucedemo/.waygraph-auto/cd68bbc4.log +0 -0
- package/examples/saucedemo/.waygraph-auto/cdc6db50.log +0 -0
- package/examples/saucedemo/.waygraph-auto/d01906a7.log +0 -0
- package/examples/saucedemo/.waygraph-auto/d02e5e7e.log +0 -0
- package/examples/saucedemo/.waygraph-auto/d09aff71.log +0 -0
- package/examples/saucedemo/.waygraph-auto/d0e41396.log +0 -0
- package/examples/saucedemo/.waygraph-auto/d1370d76.log +0 -0
- package/examples/saucedemo/.waygraph-auto/d207a000.log +0 -44
- package/examples/saucedemo/.waygraph-auto/d2c6ed66.log +0 -0
- package/examples/saucedemo/.waygraph-auto/d3714ae4.log +0 -0
- package/examples/saucedemo/.waygraph-auto/d440e60f.log +0 -0
- package/examples/saucedemo/.waygraph-auto/d52ce64b.log +0 -0
- package/examples/saucedemo/.waygraph-auto/d6e0cb19.log +0 -0
- package/examples/saucedemo/.waygraph-auto/d9e5f8a4.log +0 -0
- package/examples/saucedemo/.waygraph-auto/da0685dc.log +0 -0
- package/examples/saucedemo/.waygraph-auto/da894ad8.log +0 -0
- package/examples/saucedemo/.waygraph-auto/daa2f922.log +0 -0
- package/examples/saucedemo/.waygraph-auto/daefb614.log +0 -0
- package/examples/saucedemo/.waygraph-auto/db97e833.log +0 -0
- package/examples/saucedemo/.waygraph-auto/dce1535d.log +0 -0
- package/examples/saucedemo/.waygraph-auto/ddcb4212.log +0 -0
- package/examples/saucedemo/.waygraph-auto/dec3076e.log +0 -0
- package/examples/saucedemo/.waygraph-auto/e101d19a.log +0 -0
- package/examples/saucedemo/.waygraph-auto/e1973991.log +0 -0
- package/examples/saucedemo/.waygraph-auto/e207c989.log +0 -0
- package/examples/saucedemo/.waygraph-auto/e280bf20.log +0 -0
- package/examples/saucedemo/.waygraph-auto/e62bdb4a.log +0 -0
- package/examples/saucedemo/.waygraph-auto/e633e545.log +0 -0
- package/examples/saucedemo/.waygraph-auto/e69aec68.log +0 -0
- package/examples/saucedemo/.waygraph-auto/e70e2d06.log +0 -0
- package/examples/saucedemo/.waygraph-auto/e8306a4b.log +0 -0
- package/examples/saucedemo/.waygraph-auto/e9b84105.log +0 -0
- package/examples/saucedemo/.waygraph-auto/ea2df316.log +0 -4
- package/examples/saucedemo/.waygraph-auto/ebad3410.log +0 -0
- package/examples/saucedemo/.waygraph-auto/ebc2ebdb.log +0 -0
- package/examples/saucedemo/.waygraph-auto/ec88b3ef.log +0 -0
- package/examples/saucedemo/.waygraph-auto/ecbb0966.log +0 -0
- package/examples/saucedemo/.waygraph-auto/ecdee753.log +0 -0
- package/examples/saucedemo/.waygraph-auto/ed888783.log +0 -0
- package/examples/saucedemo/.waygraph-auto/ed931dac.log +0 -0
- package/examples/saucedemo/.waygraph-auto/ee60ed24.log +0 -0
- package/examples/saucedemo/.waygraph-auto/ef655a3f.log +0 -0
- package/examples/saucedemo/.waygraph-auto/f1949241.log +0 -0
- package/examples/saucedemo/.waygraph-auto/f2b6cb1b.log +0 -0
- package/examples/saucedemo/.waygraph-auto/f34c9a26.log +0 -0
- package/examples/saucedemo/.waygraph-auto/f392cdc8.log +0 -0
- package/examples/saucedemo/.waygraph-auto/f3c29b21.log +0 -0
- package/examples/saucedemo/.waygraph-auto/f53f7cfc.log +0 -0
- package/examples/saucedemo/.waygraph-auto/f5525d53.log +0 -0
- package/examples/saucedemo/.waygraph-auto/f5ad5830.log +0 -0
- package/examples/saucedemo/.waygraph-auto/f90035b3.log +0 -0
- package/examples/saucedemo/.waygraph-auto/fa3c5655.log +0 -44
- package/examples/saucedemo/.waygraph-auto/fa687bc2.log +0 -0
- package/examples/saucedemo/.waygraph-auto/faed36dd.log +0 -0
- package/examples/saucedemo/.waygraph-auto/fb66fba0.log +0 -0
- package/examples/saucedemo/.waygraph-auto/fc48fd76.log +0 -0
- /package/examples/saucedemo/.waygraph-auto/{00d5336e.log → 0f0cb120.log} +0 -0
- /package/examples/saucedemo/.waygraph-auto/{010dd92b.log → 2e2069e7.log} +0 -0
- /package/examples/saucedemo/.waygraph-auto/{011ad671.log → 2efd1983.log} +0 -0
- /package/examples/saucedemo/.waygraph-auto/{01b45645.log → 413d934d.log} +0 -0
- /package/examples/saucedemo/.waygraph-auto/{03710cfc.log → 685714af.log} +0 -0
- /package/examples/saucedemo/.waygraph-auto/{03764153.log → 7f94fd02.log} +0 -0
- /package/examples/saucedemo/.waygraph-auto/{0593587e.log → d50e58f0.log} +0 -0
- /package/examples/saucedemo/.waygraph-auto/{06d12823.log → d934da78.log} +0 -0
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
import { normalizeHighlightSize, normalizeHighlightTone, normalizeHighlightWeight } from "./style.js";
|
|
2
|
+
export function isStubPhase(v) {
|
|
3
|
+
return !!v && typeof v === "object" && !Array.isArray(v);
|
|
4
|
+
}
|
|
5
|
+
function pickDurationFields(base, patch) {
|
|
6
|
+
const out = {};
|
|
7
|
+
const duration = patch?.duration !== undefined ? patch.duration : base?.duration;
|
|
8
|
+
const fastMode = patch?.fastMode !== undefined ? patch.fastMode : base?.fastMode;
|
|
9
|
+
if (duration !== undefined)
|
|
10
|
+
out.duration = duration;
|
|
11
|
+
if (fastMode !== undefined)
|
|
12
|
+
out.fastMode = fastMode;
|
|
13
|
+
return out;
|
|
14
|
+
}
|
|
15
|
+
function pickStyleFields(base, patch) {
|
|
16
|
+
const out = {};
|
|
17
|
+
const tone = patch?.tone !== undefined ? patch.tone : base?.tone;
|
|
18
|
+
const size = patch?.size !== undefined ? patch.size : base?.size;
|
|
19
|
+
const weight = patch?.weight !== undefined ? patch.weight : base?.weight;
|
|
20
|
+
if (tone !== undefined)
|
|
21
|
+
out.tone = normalizeHighlightTone(tone);
|
|
22
|
+
if (size !== undefined)
|
|
23
|
+
out.size = normalizeHighlightSize(size);
|
|
24
|
+
if (weight !== undefined)
|
|
25
|
+
out.weight = normalizeHighlightWeight(weight);
|
|
26
|
+
return out;
|
|
27
|
+
}
|
|
28
|
+
function pickZoom(base, patch) {
|
|
29
|
+
const zoom = patch?.zoom !== undefined ? patch.zoom : base?.zoom;
|
|
30
|
+
if (zoom !== undefined && Number.isFinite(zoom) && zoom > 0)
|
|
31
|
+
return { zoom };
|
|
32
|
+
return {};
|
|
33
|
+
}
|
|
34
|
+
function pickFxFields(base, patch) {
|
|
35
|
+
const out = {};
|
|
36
|
+
const focus = patch?.focus !== undefined ? patch.focus : base?.focus;
|
|
37
|
+
const color = patch?.color !== undefined ? patch.color : base?.color;
|
|
38
|
+
const cursor = patch?.cursor !== undefined ? patch.cursor : base?.cursor;
|
|
39
|
+
const todo = patch?.todo !== undefined ? patch.todo : base?.todo;
|
|
40
|
+
const gesture = patch?.gesture !== undefined ? patch.gesture : base?.gesture;
|
|
41
|
+
if (focus !== undefined)
|
|
42
|
+
out.focus = !!focus;
|
|
43
|
+
if (color !== undefined && String(color).trim())
|
|
44
|
+
out.color = String(color).trim();
|
|
45
|
+
if (cursor !== undefined)
|
|
46
|
+
out.cursor = !!cursor;
|
|
47
|
+
if (todo !== undefined && String(todo).trim())
|
|
48
|
+
out.todo = String(todo).trim();
|
|
49
|
+
if (gesture === "tap" || gesture === "hold" || gesture === "click" || gesture === "swipe") {
|
|
50
|
+
out.gesture = gesture;
|
|
51
|
+
}
|
|
52
|
+
return out;
|
|
53
|
+
}
|
|
54
|
+
function mergeSlot(base, patch) {
|
|
55
|
+
if (!base && !patch)
|
|
56
|
+
return null;
|
|
57
|
+
const dwell = pickDurationFields(base, patch);
|
|
58
|
+
const style = pickStyleFields(base, patch);
|
|
59
|
+
const zoom = pickZoom(base, patch);
|
|
60
|
+
const fx = pickFxFields(base, patch);
|
|
61
|
+
if (!base && patch) {
|
|
62
|
+
if (!patch.selector)
|
|
63
|
+
return null;
|
|
64
|
+
return {
|
|
65
|
+
selector: patch.selector,
|
|
66
|
+
label: patch.label,
|
|
67
|
+
...(patch.detail ? { detail: patch.detail } : {}),
|
|
68
|
+
...(patch.tag ? { tag: patch.tag } : {}),
|
|
69
|
+
...style,
|
|
70
|
+
...dwell,
|
|
71
|
+
...zoom,
|
|
72
|
+
...fx,
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
if (base && !patch) {
|
|
76
|
+
return {
|
|
77
|
+
...base,
|
|
78
|
+
...(base.tone ? { tone: normalizeHighlightTone(base.tone) } : {}),
|
|
79
|
+
...(base.size ? { size: normalizeHighlightSize(base.size) } : {}),
|
|
80
|
+
...(base.weight ? { weight: normalizeHighlightWeight(base.weight) } : {}),
|
|
81
|
+
...pickZoom(base, undefined),
|
|
82
|
+
...pickFxFields(base, undefined),
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
return {
|
|
86
|
+
selector: patch.selector ?? base.selector,
|
|
87
|
+
label: patch.label,
|
|
88
|
+
...(patch.detail !== undefined
|
|
89
|
+
? { detail: patch.detail }
|
|
90
|
+
: base.detail
|
|
91
|
+
? { detail: base.detail }
|
|
92
|
+
: {}),
|
|
93
|
+
...(patch.tag !== undefined ? { tag: patch.tag } : base.tag ? { tag: base.tag } : {}),
|
|
94
|
+
...style,
|
|
95
|
+
...dwell,
|
|
96
|
+
...zoom,
|
|
97
|
+
...fx,
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
export function applyDefaultZoom(slots, defaultZoom) {
|
|
101
|
+
if (defaultZoom === undefined || !(defaultZoom > 0))
|
|
102
|
+
return slots;
|
|
103
|
+
return slots.map((h) => (h.zoom !== undefined && h.zoom > 0 ? h : { ...h, zoom: defaultZoom }));
|
|
104
|
+
}
|
|
105
|
+
export function applyDefaultZoomOut(slots, defaultZoomOut) {
|
|
106
|
+
if (defaultZoomOut === undefined)
|
|
107
|
+
return slots;
|
|
108
|
+
return slots.map((h) => h.zoomOut !== undefined ? h : { ...h, zoomOut: defaultZoomOut });
|
|
109
|
+
}
|
|
110
|
+
export function mergePhaseMaps(phaseMap, fixturePhase) {
|
|
111
|
+
const phaseKeys = Object.keys(phaseMap);
|
|
112
|
+
const fixtureKeys = Object.keys(fixturePhase || {});
|
|
113
|
+
const allKeys = [...new Set([...phaseKeys, ...fixtureKeys])];
|
|
114
|
+
const allNumeric = allKeys.length > 0 && allKeys.every((k) => Number.isFinite(Number(k)) && String(Number(k)) === k);
|
|
115
|
+
// Numeric stub ids (legacy "0","1") sort by number. Named stubs keep author
|
|
116
|
+
// insertion order - localeCompare used to reorder password/submit/username
|
|
117
|
+
// and advance the wrong todo index on fill.
|
|
118
|
+
const ordered = allNumeric
|
|
119
|
+
? [...allKeys].sort((a, b) => Number(a) - Number(b))
|
|
120
|
+
: [...phaseKeys, ...fixtureKeys.filter((k) => !phaseKeys.includes(k))];
|
|
121
|
+
const resolved = [];
|
|
122
|
+
for (const id of ordered) {
|
|
123
|
+
const merged = mergeSlot(phaseMap[id], fixturePhase?.[id]);
|
|
124
|
+
if (merged) {
|
|
125
|
+
resolved.push({
|
|
126
|
+
...merged,
|
|
127
|
+
slotId: id,
|
|
128
|
+
...(merged.todo ? { todo: merged.todo } : {}),
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
return resolved;
|
|
133
|
+
}
|
|
134
|
+
function phaseFromLegacyHighlights(highlights) {
|
|
135
|
+
const out = {};
|
|
136
|
+
if (!highlights)
|
|
137
|
+
return out;
|
|
138
|
+
highlights.forEach((h, i) => {
|
|
139
|
+
if (h && typeof h.selector === "string" && typeof h.label === "string") {
|
|
140
|
+
out[String(i)] = {
|
|
141
|
+
selector: h.selector,
|
|
142
|
+
label: h.label,
|
|
143
|
+
...(h.tone ? { tone: normalizeHighlightTone(h.tone) } : {}),
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
});
|
|
147
|
+
return out;
|
|
148
|
+
}
|
|
149
|
+
export function readStubRaw(block, phase) {
|
|
150
|
+
const instr = block.instruction;
|
|
151
|
+
if (phase === "stubBefore")
|
|
152
|
+
return instr.stubBefore;
|
|
153
|
+
if (phase === "stubAfter")
|
|
154
|
+
return instr.stubAfter;
|
|
155
|
+
return instr.stubOnError;
|
|
156
|
+
}
|
|
157
|
+
export function applyLegacyHighlightsShim(block, phase, phaseMap, out) {
|
|
158
|
+
if (phase !== "stubAfter" || Object.keys(phaseMap).length > 0)
|
|
159
|
+
return phaseMap;
|
|
160
|
+
const instr = block.instruction;
|
|
161
|
+
if (!instr.highlights)
|
|
162
|
+
return phaseMap;
|
|
163
|
+
let legacy = instr.highlights;
|
|
164
|
+
if (typeof legacy === "function") {
|
|
165
|
+
try {
|
|
166
|
+
legacy = legacy(out ?? { __state: "" });
|
|
167
|
+
}
|
|
168
|
+
catch {
|
|
169
|
+
legacy = [];
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
return phaseFromLegacyHighlights(Array.isArray(legacy) ? legacy : []);
|
|
173
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { HighlightFixtureMap, HighlightStubPhaseName, ResolvedHighlight, StubPhaseResult, WaygraphSlide } from "./types.js";
|
|
2
|
+
import type { Block, Checkpoint } from "../types.js";
|
|
3
|
+
import type { MemPage } from "../mem-page.js";
|
|
4
|
+
/**
|
|
5
|
+
* Run an open stub lifecycle (preferred) or resolve a static slot map.
|
|
6
|
+
* Returns rings + episode fixtures (todos / todoIndex / zoom).
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* const before = await runStubPhase(block, "stubBefore", { fixtures });
|
|
10
|
+
* // before.todos, before.highlights
|
|
11
|
+
*/
|
|
12
|
+
export declare function runStubPhase(block: Block<any, any>, phase: HighlightStubPhaseName, opts?: {
|
|
13
|
+
out?: Checkpoint<string>;
|
|
14
|
+
error?: unknown;
|
|
15
|
+
mem?: MemPage;
|
|
16
|
+
fixtures?: HighlightFixtureMap;
|
|
17
|
+
}): Promise<StubPhaseResult>;
|
|
18
|
+
/**
|
|
19
|
+
* Sync resolve of highlight slots. Prefer {@link runStubPhase} for open
|
|
20
|
+
* async lifecycles + episode fixtures (todos/zoom).
|
|
21
|
+
*/
|
|
22
|
+
export declare function resolveHighlightSlots(block: Block<any, any>, phase: HighlightStubPhaseName, opts?: {
|
|
23
|
+
out?: Checkpoint<string>;
|
|
24
|
+
fixtures?: HighlightFixtureMap;
|
|
25
|
+
}): ResolvedHighlight[];
|
|
26
|
+
/**
|
|
27
|
+
* Resolve multi-step yap slides: flow fixture `slides` wins when present,
|
|
28
|
+
* else `instruction.slides` (function form allowed).
|
|
29
|
+
*/
|
|
30
|
+
export declare function resolveSlides(block: Block<any, any>, opts?: {
|
|
31
|
+
out?: Checkpoint<string>;
|
|
32
|
+
fixtures?: HighlightFixtureMap;
|
|
33
|
+
}): WaygraphSlide[];
|
|
34
|
+
/**
|
|
35
|
+
* True when the block authored stubAfter (lifecycle fn, slots, fixtures, or legacy highlights).
|
|
36
|
+
* When true, demo should not use verify-trait fallback.
|
|
37
|
+
*/
|
|
38
|
+
export declare function hasAuthoredStubAfter(block: Block<any, any>, out?: Checkpoint<string>, fixtures?: HighlightFixtureMap): boolean;
|
|
39
|
+
/**
|
|
40
|
+
* True when stubOnError is authored (lifecycle fn and/or rings).
|
|
41
|
+
* Demo fail path only - success never consults this.
|
|
42
|
+
*/
|
|
43
|
+
export declare function hasAuthoredStubOnError(block: Block<any, any>, fixtures?: HighlightFixtureMap): boolean;
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
import { createStubCtx, liftLegacySlotTodos } from "./stub-ctx.js";
|
|
2
|
+
import { applyDefaultZoom, applyDefaultZoomOut, applyLegacyHighlightsShim, isStubPhase, mergePhaseMaps, readStubRaw } from "./merge.js";
|
|
3
|
+
import { buildTodoDock, normalizeTodoStyle, normalizeTodos } from "./todo-dock.js";
|
|
4
|
+
import { resolveDeviceState } from "./device.js";
|
|
5
|
+
/**
|
|
6
|
+
* Run an open stub lifecycle (preferred) or resolve a static slot map.
|
|
7
|
+
* Returns rings + episode fixtures (todos / todoIndex / zoom).
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* const before = await runStubPhase(block, "stubBefore", { fixtures });
|
|
11
|
+
* // before.todos, before.highlights
|
|
12
|
+
*/
|
|
13
|
+
export async function runStubPhase(block, phase, opts) {
|
|
14
|
+
const bag = { highlights: {} };
|
|
15
|
+
const ctx = createStubCtx(bag, {
|
|
16
|
+
...(opts?.out !== undefined ? { out: opts.out } : {}),
|
|
17
|
+
...(opts?.error !== undefined ? { error: opts.error } : {}),
|
|
18
|
+
...(opts?.mem !== undefined ? { mem: opts.mem } : {}),
|
|
19
|
+
});
|
|
20
|
+
const raw = readStubRaw(block, phase);
|
|
21
|
+
if (typeof raw === "function") {
|
|
22
|
+
try {
|
|
23
|
+
const ret = await raw(ctx);
|
|
24
|
+
if (isStubPhase(ret)) {
|
|
25
|
+
bag.highlights = { ...bag.highlights, ...ret };
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
/* best-effort */
|
|
30
|
+
}
|
|
31
|
+
// Compat: legacy `(out) => map` that expected Checkpoint (__state on arg)
|
|
32
|
+
if (Object.keys(bag.highlights).length === 0 && !bag.todos) {
|
|
33
|
+
try {
|
|
34
|
+
const legacyOut = (opts?.out ?? { __state: "" });
|
|
35
|
+
const ret2 = raw(legacyOut);
|
|
36
|
+
if (isStubPhase(ret2))
|
|
37
|
+
bag.highlights = { ...ret2 };
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
/* ignore */
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
else if (isStubPhase(raw)) {
|
|
45
|
+
bag.highlights = { ...raw };
|
|
46
|
+
}
|
|
47
|
+
bag.highlights = applyLegacyHighlightsShim(block, phase, bag.highlights, opts?.out);
|
|
48
|
+
liftLegacySlotTodos(bag);
|
|
49
|
+
const fixturePhase = opts?.fixtures?.[block.name]?.[phase];
|
|
50
|
+
let highlights = mergePhaseMaps(bag.highlights, fixturePhase);
|
|
51
|
+
highlights = applyDefaultZoom(highlights, bag.zoom);
|
|
52
|
+
highlights = applyDefaultZoomOut(highlights, bag.zoomOut);
|
|
53
|
+
const todoDock = bag.hideTodos
|
|
54
|
+
? undefined
|
|
55
|
+
: buildTodoDock({
|
|
56
|
+
todos: bag.todos,
|
|
57
|
+
todoIndex: bag.todoIndex,
|
|
58
|
+
todoTitle: bag.todoTitle,
|
|
59
|
+
todoId: bag.todoId,
|
|
60
|
+
todoStyle: bag.todoStyle,
|
|
61
|
+
todoGroups: bag.todoGroups,
|
|
62
|
+
todoPos: bag.todoPos,
|
|
63
|
+
});
|
|
64
|
+
const todos = todoDock?.groups[0]?.items ||
|
|
65
|
+
(bag.hideTodos
|
|
66
|
+
? []
|
|
67
|
+
: normalizeTodos(bag.todos, bag.todoIndex, normalizeTodoStyle(bag.todoStyle) || "sequential"));
|
|
68
|
+
// Omit todos entirely => keep previous dock. Explicit empty / hideTodos => clear.
|
|
69
|
+
const todoSync = bag.hideTodos
|
|
70
|
+
? "clear"
|
|
71
|
+
: bag.todoTouched && todoDock
|
|
72
|
+
? "set"
|
|
73
|
+
: bag.todoTouched && !todoDock
|
|
74
|
+
? "clear"
|
|
75
|
+
: "keep";
|
|
76
|
+
let deviceState;
|
|
77
|
+
if (bag.hideDevice) {
|
|
78
|
+
deviceState = resolveDeviceState("desktop", false);
|
|
79
|
+
}
|
|
80
|
+
else if (bag.device) {
|
|
81
|
+
deviceState = bag.touchOverride !== undefined
|
|
82
|
+
? {
|
|
83
|
+
...bag.device,
|
|
84
|
+
touchMode: bag.touchOverride,
|
|
85
|
+
hasTouch: bag.device.hasTouch || bag.touchOverride,
|
|
86
|
+
}
|
|
87
|
+
: bag.device;
|
|
88
|
+
}
|
|
89
|
+
else if (bag.touchOverride !== undefined) {
|
|
90
|
+
deviceState = resolveDeviceState("desktop", bag.touchOverride);
|
|
91
|
+
}
|
|
92
|
+
const deviceSync = bag.hideDevice
|
|
93
|
+
? "clear"
|
|
94
|
+
: bag.deviceTouched && deviceState
|
|
95
|
+
? "set"
|
|
96
|
+
: bag.deviceTouched && !deviceState
|
|
97
|
+
? "clear"
|
|
98
|
+
: "keep";
|
|
99
|
+
return {
|
|
100
|
+
highlights,
|
|
101
|
+
todos,
|
|
102
|
+
todoSync,
|
|
103
|
+
deviceSync,
|
|
104
|
+
...(bag.todoIndex !== undefined ? { todoIndex: bag.todoIndex } : {}),
|
|
105
|
+
...(todoDock ? { todoDock } : {}),
|
|
106
|
+
...(deviceState ? { device: deviceState } : {}),
|
|
107
|
+
...(bag.zoom !== undefined ? { zoom: bag.zoom } : {}),
|
|
108
|
+
...(bag.zoomOut !== undefined ? { zoomOut: bag.zoomOut } : {}),
|
|
109
|
+
...(bag.title !== undefined && bag.title !== "" ? { title: bag.title } : {}),
|
|
110
|
+
...(bag.todoPos !== undefined ? { todoPos: bag.todoPos } : {}),
|
|
111
|
+
...(bag.todoDockUi !== undefined ? { todoDockUi: bag.todoDockUi } : {}),
|
|
112
|
+
...(bag.todoParallel === true ? { todoParallel: true } : {}),
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Sync resolve of highlight slots. Prefer {@link runStubPhase} for open
|
|
117
|
+
* async lifecycles + episode fixtures (todos/zoom).
|
|
118
|
+
*/
|
|
119
|
+
export function resolveHighlightSlots(block, phase, opts) {
|
|
120
|
+
const bag = { highlights: {} };
|
|
121
|
+
const raw = readStubRaw(block, phase);
|
|
122
|
+
if (typeof raw === "function") {
|
|
123
|
+
try {
|
|
124
|
+
const ctx = createStubCtx(bag, {
|
|
125
|
+
...(opts?.out !== undefined ? { out: opts.out } : {}),
|
|
126
|
+
});
|
|
127
|
+
const ret = raw(ctx);
|
|
128
|
+
if (isStubPhase(ret)) {
|
|
129
|
+
bag.highlights = { ...bag.highlights, ...ret };
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
catch {
|
|
133
|
+
try {
|
|
134
|
+
const legacyOut = (opts?.out ?? { __state: "" });
|
|
135
|
+
const ret2 = raw(legacyOut);
|
|
136
|
+
if (isStubPhase(ret2))
|
|
137
|
+
bag.highlights = { ...ret2 };
|
|
138
|
+
}
|
|
139
|
+
catch {
|
|
140
|
+
bag.highlights = {};
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
else if (isStubPhase(raw)) {
|
|
145
|
+
bag.highlights = { ...raw };
|
|
146
|
+
}
|
|
147
|
+
bag.highlights = applyLegacyHighlightsShim(block, phase, bag.highlights, opts?.out);
|
|
148
|
+
liftLegacySlotTodos(bag);
|
|
149
|
+
const fixturePhase = opts?.fixtures?.[block.name]?.[phase];
|
|
150
|
+
return applyDefaultZoom(mergePhaseMaps(bag.highlights, fixturePhase), bag.zoom);
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Resolve multi-step yap slides: flow fixture `slides` wins when present,
|
|
154
|
+
* else `instruction.slides` (function form allowed).
|
|
155
|
+
*/
|
|
156
|
+
export function resolveSlides(block, opts) {
|
|
157
|
+
const fromFixture = opts?.fixtures?.[block.name]?.slides;
|
|
158
|
+
if (fromFixture && fromFixture.length > 0) {
|
|
159
|
+
return [...fromFixture];
|
|
160
|
+
}
|
|
161
|
+
const instr = block.instruction;
|
|
162
|
+
let raw = instr.slides;
|
|
163
|
+
if (typeof raw === "function") {
|
|
164
|
+
try {
|
|
165
|
+
raw = raw(opts?.out ?? { __state: "" });
|
|
166
|
+
}
|
|
167
|
+
catch {
|
|
168
|
+
raw = [];
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
if (!Array.isArray(raw))
|
|
172
|
+
return [];
|
|
173
|
+
return raw.filter((s) => s && typeof s.caption === "string" && s.caption.length > 0);
|
|
174
|
+
}
|
|
175
|
+
function stubPhaseLooksAuthored(block, phase, fixtures) {
|
|
176
|
+
const raw = readStubRaw(block, phase);
|
|
177
|
+
if (typeof raw === "function")
|
|
178
|
+
return true;
|
|
179
|
+
if (isStubPhase(raw) && Object.keys(raw).length > 0)
|
|
180
|
+
return true;
|
|
181
|
+
const fx = fixtures?.[block.name]?.[phase];
|
|
182
|
+
if (fx && Object.keys(fx).length > 0)
|
|
183
|
+
return true;
|
|
184
|
+
return false;
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* True when the block authored stubAfter (lifecycle fn, slots, fixtures, or legacy highlights).
|
|
188
|
+
* When true, demo should not use verify-trait fallback.
|
|
189
|
+
*/
|
|
190
|
+
export function hasAuthoredStubAfter(block, out, fixtures) {
|
|
191
|
+
if (stubPhaseLooksAuthored(block, "stubAfter", fixtures))
|
|
192
|
+
return true;
|
|
193
|
+
const instr = block.instruction;
|
|
194
|
+
if (instr.highlights)
|
|
195
|
+
return true;
|
|
196
|
+
return resolveHighlightSlots(block, "stubAfter", {
|
|
197
|
+
...(out !== undefined ? { out } : {}),
|
|
198
|
+
...(fixtures !== undefined ? { fixtures } : {}),
|
|
199
|
+
}).length > 0;
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* True when stubOnError is authored (lifecycle fn and/or rings).
|
|
203
|
+
* Demo fail path only - success never consults this.
|
|
204
|
+
*/
|
|
205
|
+
export function hasAuthoredStubOnError(block, fixtures) {
|
|
206
|
+
if (stubPhaseLooksAuthored(block, "stubOnError", fixtures))
|
|
207
|
+
return true;
|
|
208
|
+
return (resolveHighlightSlots(block, "stubOnError", {
|
|
209
|
+
...(fixtures !== undefined ? { fixtures } : {}),
|
|
210
|
+
}).length > 0);
|
|
211
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { StubBagState, StubCtx } from "./types.js";
|
|
2
|
+
import type { Checkpoint } from "../types.js";
|
|
3
|
+
import type { MemPage } from "../mem-page.js";
|
|
4
|
+
export declare function createStubCtx<Out extends Checkpoint<string>>(bag: StubBagState, opts: {
|
|
5
|
+
out?: Out;
|
|
6
|
+
error?: unknown;
|
|
7
|
+
mem?: MemPage;
|
|
8
|
+
}): StubCtx<Out>;
|
|
9
|
+
/** Lift legacy per-slot todos (0.12.23) onto the phase bag once. */
|
|
10
|
+
export declare function liftLegacySlotTodos(bag: StubBagState): void;
|