@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.
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/src/core/bootstrap/bundle.d.ts +1 -1
- package/dist/src/core/bootstrap/bundle.d.ts.map +1 -1
- package/dist/src/core/bootstrap/bundle.js +14 -1
- package/dist/src/core/bootstrap/bundle.js.map +1 -1
- package/dist/src/core/contracts/BundleInterface.d.ts +5 -0
- package/dist/src/core/contracts/BundleInterface.d.ts.map +1 -1
- package/dist/src/core/contracts/RouterInterface.d.ts +2 -0
- package/dist/src/core/contracts/RouterInterface.d.ts.map +1 -1
- package/dist/src/core/contracts/ViewManagerInterface.d.ts +2 -0
- package/dist/src/core/contracts/ViewManagerInterface.d.ts.map +1 -1
- package/dist/src/core/routers/ClientMiddleware.d.ts +45 -0
- package/dist/src/core/routers/ClientMiddleware.d.ts.map +1 -0
- package/dist/src/core/routers/ClientMiddleware.js +113 -0
- package/dist/src/core/routers/ClientMiddleware.js.map +1 -0
- package/dist/src/core/routers/Router.d.ts +6 -0
- package/dist/src/core/routers/Router.d.ts.map +1 -1
- package/dist/src/core/routers/Router.js +61 -5
- package/dist/src/core/routers/Router.js.map +1 -1
- package/dist/src/core/view/ViewController.d.ts +2 -0
- package/dist/src/core/view/ViewController.d.ts.map +1 -1
- package/dist/src/core/view/ViewController.js +3 -0
- package/dist/src/core/view/ViewController.js.map +1 -1
- package/dist/src/core/view/ViewManager.d.ts +2 -0
- package/dist/src/core/view/ViewManager.d.ts.map +1 -1
- package/dist/src/core/view/ViewManager.js +23 -0
- package/dist/src/core/view/ViewManager.js.map +1 -1
- package/index.ts +3 -0
- package/package.json +1 -1
- package/src/core/bootstrap/bundle.ts +10 -1
- package/src/core/contracts/BundleInterface.ts +5 -0
- package/src/core/contracts/RouterInterface.ts +2 -0
- package/src/core/contracts/ViewManagerInterface.ts +2 -0
- package/src/core/routers/ClientMiddleware.ts +124 -0
- package/src/core/routers/Router.ts +56 -5
- package/src/core/view/ViewController.ts +3 -0
- 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
|
}
|