@saolabs/client 1.6.0 → 1.7.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 (40) hide show
  1. package/dist/index.d.ts +2 -0
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +1 -0
  4. package/dist/index.js.map +1 -1
  5. package/dist/src/core/bootstrap/bundle.d.ts +1 -1
  6. package/dist/src/core/bootstrap/bundle.d.ts.map +1 -1
  7. package/dist/src/core/bootstrap/bundle.js +14 -1
  8. package/dist/src/core/bootstrap/bundle.js.map +1 -1
  9. package/dist/src/core/contracts/BundleInterface.d.ts +5 -0
  10. package/dist/src/core/contracts/BundleInterface.d.ts.map +1 -1
  11. package/dist/src/core/contracts/RouterInterface.d.ts +2 -0
  12. package/dist/src/core/contracts/RouterInterface.d.ts.map +1 -1
  13. package/dist/src/core/contracts/ViewManagerInterface.d.ts +2 -0
  14. package/dist/src/core/contracts/ViewManagerInterface.d.ts.map +1 -1
  15. package/dist/src/core/routers/ClientMiddleware.d.ts +45 -0
  16. package/dist/src/core/routers/ClientMiddleware.d.ts.map +1 -0
  17. package/dist/src/core/routers/ClientMiddleware.js +113 -0
  18. package/dist/src/core/routers/ClientMiddleware.js.map +1 -0
  19. package/dist/src/core/routers/Router.d.ts +6 -0
  20. package/dist/src/core/routers/Router.d.ts.map +1 -1
  21. package/dist/src/core/routers/Router.js +61 -5
  22. package/dist/src/core/routers/Router.js.map +1 -1
  23. package/dist/src/core/view/ViewController.d.ts +2 -0
  24. package/dist/src/core/view/ViewController.d.ts.map +1 -1
  25. package/dist/src/core/view/ViewController.js +3 -0
  26. package/dist/src/core/view/ViewController.js.map +1 -1
  27. package/dist/src/core/view/ViewManager.d.ts +2 -0
  28. package/dist/src/core/view/ViewManager.d.ts.map +1 -1
  29. package/dist/src/core/view/ViewManager.js +23 -0
  30. package/dist/src/core/view/ViewManager.js.map +1 -1
  31. package/index.ts +3 -0
  32. package/package.json +1 -1
  33. package/src/core/bootstrap/bundle.ts +10 -1
  34. package/src/core/contracts/BundleInterface.ts +5 -0
  35. package/src/core/contracts/RouterInterface.ts +2 -0
  36. package/src/core/contracts/ViewManagerInterface.ts +2 -0
  37. package/src/core/routers/ClientMiddleware.ts +124 -0
  38. package/src/core/routers/Router.ts +56 -5
  39. package/src/core/view/ViewController.ts +3 -0
  40. package/src/core/view/ViewManager.ts +23 -0
@@ -390,6 +390,18 @@ export class ViewManager implements ViewManagerInterface {
390
390
  return this.hasView(name);
391
391
  }
392
392
 
393
+ /** Read compiler/builder metadata without invoking setup or importing a lazy chunk. */
394
+ getViewMiddleware(name: string): readonly string[] {
395
+ const key = this.resolveRegistryKey(name);
396
+ const factory = this.viewRegistry[key] ?? this.resolvedFactories.get(key);
397
+ const middleware = (factory as any)?.middleware;
398
+ if (middleware === undefined) return [];
399
+ if (!Array.isArray(middleware) || middleware.some(ref => typeof ref !== 'string')) {
400
+ throw new TypeError(`Invalid middleware metadata on view "${name}".`);
401
+ }
402
+ return [...middleware];
403
+ }
404
+
393
405
  /**
394
406
  * generateViewId — tạo unique ID cho mỗi view instance.
395
407
  *
@@ -1464,6 +1476,17 @@ export class ViewManager implements ViewManagerInterface {
1464
1476
  }
1465
1477
 
1466
1478
  this.blockManager.restorePageContent(pageView.__ctrl__.viewId, entry.outletContents);
1479
+ // render() không chạy lại khi restore → extendView() không gọi: layout dùng
1480
+ // chung còn giữ dữ liệu @extends của trang trước. Áp lại dữ liệu của trang này.
1481
+ // Lưu ý: updateData chỉ GỘP — khoá trang không truyền vẫn giữ giá trị cũ
1482
+ // (mặc định @vars nằm trong closure compiled), nên trang nên truyền tường minh.
1483
+ for (const v of entry.views) {
1484
+ const ctrl = v.__ctrl__ as any;
1485
+ const superView = ctrl.superView;
1486
+ if (superView && ctrl.superViewData && layoutChain.some(l => l.__ctrl__ === superView)) {
1487
+ superView.updateData?.(ctrl.superViewData);
1488
+ }
1489
+ }
1467
1490
  for (const v of entry.views) {
1468
1491
  v.__ctrl__.resume();
1469
1492
  }