({
name,
viewResource,
view,
}: {
name: string;
viewResource: ViewResourceConfig;
view: ViewConfig;
})
| 1051 | } |
| 1052 | |
| 1053 | private registerViewResource({ |
| 1054 | name, |
| 1055 | viewResource, |
| 1056 | view, |
| 1057 | }: { |
| 1058 | name: string; |
| 1059 | viewResource: ViewResourceConfig; |
| 1060 | view: ViewConfig; |
| 1061 | }): void { |
| 1062 | const { hostType, uri: viewUri, mimeType, buildContentMeta } = viewResource; |
| 1063 | |
| 1064 | const buildMeta = (extra: McpExtra | undefined): ResourceMeta => { |
| 1065 | const { serverUrl, connectDomains, contentMetaOverrides } = |
| 1066 | this.resolveViewRequestContext(extra); |
| 1067 | return buildContentMeta( |
| 1068 | { |
| 1069 | resourceDomains: [serverUrl], |
| 1070 | connectDomains, |
| 1071 | domain: serverUrl, |
| 1072 | baseUriDomains: [serverUrl], |
| 1073 | }, |
| 1074 | contentMetaOverrides, |
| 1075 | ); |
| 1076 | }; |
| 1077 | this.viewMetaBuilders.set(viewUri, buildMeta); |
| 1078 | this.viewUriByPath.set(stripQuery(viewUri), viewUri); |
| 1079 | this.serveLegacyAppsSdkUrl(view.component, viewUri); |
| 1080 | |
| 1081 | this.registerResource( |
| 1082 | name, |
| 1083 | viewUri, |
| 1084 | { description: view.description }, |
| 1085 | async (uri, extra) => { |
| 1086 | const isProduction = process.env.NODE_ENV === "production"; |
| 1087 | const { serverUrl, assetsBasePath } = |
| 1088 | this.resolveViewRequestContext(extra); |
| 1089 | // The view resolves all assets (template imports + runtime lazy chunks |
| 1090 | // via `window.skybridge.serverUrl`) against this base, so it carries the |
| 1091 | // proxy path prefix. CSP domains in `buildMeta` stay the bare origin. |
| 1092 | const viewBase = `${serverUrl}${assetsBasePath}`; |
| 1093 | |
| 1094 | const html = isProduction |
| 1095 | ? templateHelper.renderProduction({ |
| 1096 | hostType, |
| 1097 | serverUrl: viewBase, |
| 1098 | viewFile: this.lookupViewFile(view.component), |
| 1099 | styleFile: this.lookupDistFile("style.css") ?? "", |
| 1100 | }) |
| 1101 | : templateHelper.renderDevelopment({ |
| 1102 | hostType, |
| 1103 | serverUrl: viewBase, |
| 1104 | viewName: view.component, |
| 1105 | }); |
| 1106 | |
| 1107 | return { |
| 1108 | contents: [ |
| 1109 | { uri: uri.href, mimeType, text: html, _meta: buildMeta(extra) }, |
| 1110 | ], |
no test coverage detected