everything-dev
Version:
A consolidated product package for building Module Federation apps with oRPC APIs.
81 lines (79 loc) • 2.95 kB
JavaScript
let every_plugin_build_ui = require("every-plugin/build/ui");
//#region src/platform-deploy.ts
/**
* Image-native deploy entries (plan 043): the runtime image serves its own
* staged artifacts at its own origin — the publish writes the deterministic
* URLs, nothing is uploaded. Integrity is omitted: the published URL carries
* the bytes' identity via the image build itself.
*/
function platformUrlDeployEntries(input) {
const { origin, account, gateway, key, kind, integrity, ssrIntegrity, pin } = input;
const slot = kind === "app" ? "app" : "plugins";
const base = `${origin.replace(/\/$/, "")}/bundles/${account}/${gateway}/${key}/`;
const entries = [{
url: base,
...pin ? {
value: pin.file,
valueField: `${slot}.${key}.pin.manifest`,
integrity: pin.integrity,
integrityField: `${slot}.${key}.pin.integrity`,
removeFields: [`${slot}.${key}.integrity`, `${slot}.${key}.manifest`]
} : {
integrity,
integrityField: `${slot}.${key}.integrity`,
removeFields: [`${slot}.${key}.manifest`]
},
urlField: `${slot}.${key}.production`
}];
if (kind === "app" && key === "ui") entries.push({
url: `${base}ssr/`,
integrity: ssrIntegrity,
urlField: every_plugin_build_ui.CORE_UI_DEPLOY_FIELDS.ssrUrlField ?? "",
integrityField: every_plugin_build_ui.CORE_UI_DEPLOY_FIELDS.ssrIntegrityField ?? ""
});
return entries;
}
/**
* Folder-form plugin ui deploy entries: the plugin's ui surface builds to
* `<plugin>/ui/dist` (web remoteEntry + ssr container) and uploads as its own
* bundle key (`<key>-ui`), pinning `<slot>.<key>.ui.*` in bos.config.json.
* Without these entries a deployed plugin ui resolves with no production URL
* and the host cannot compose (or even address) its routes.
*/
function pluginUiUrlDeployEntries(input) {
const { origin, account, gateway, key, kind, integrity, ssrIntegrity, pin, name } = input;
const slot = kind === "app" ? "app" : "plugins";
const base = `${origin.replace(/\/$/, "")}/bundles/${account}/${gateway}/${key}-ui/`;
const entries = [{
url: base,
...pin ? {
value: pin.file,
valueField: `${slot}.${key}.ui.pin.manifest`,
integrity: pin.integrity,
integrityField: `${slot}.${key}.ui.pin.integrity`,
removeFields: [`${slot}.${key}.ui.integrity`, `${slot}.${key}.ui.manifest`]
} : {
integrity,
integrityField: `${slot}.${key}.ui.integrity`,
removeFields: [`${slot}.${key}.ui.manifest`]
},
urlField: `${slot}.${key}.ui.production`
}];
if (name) entries.push({
url: base,
urlField: `${slot}.${key}.ui.production`,
value: name,
valueField: `${slot}.${key}.ui.name`
});
entries.push({
url: `${base}ssr/`,
integrity: ssrIntegrity,
urlField: `${slot}.${key}.ui.ssr`,
integrityField: `${slot}.${key}.ui.ssrIntegrity`
});
return entries;
}
//#endregion
exports.platformUrlDeployEntries = platformUrlDeployEntries;
exports.pluginUiUrlDeployEntries = pluginUiUrlDeployEntries;
//# sourceMappingURL=platform-deploy.cjs.map