UNPKG

everything-dev

Version:

A consolidated product package for building Module Federation apps with oRPC APIs.

206 lines (204 loc) • 11.1 kB
const require_runtime = require('../../_virtual/_rolldown/runtime.cjs'); const require_catalog = require('../workspace/catalog.cjs'); const require_timing = require('../../utils/timing.cjs'); const require_init = require('./init.cjs'); const require_sync = require('./sync.cjs'); const require_json_file = require('../../utils/json-file.cjs'); const require_upgrade_packages = require('./upgrade-packages.cjs'); const require_upgrade_source = require('./upgrade-source.cjs'); const require_upgrade_migration = require('./upgrade-migration.cjs'); let node_fs = require("node:fs"); let node_path = require("node:path"); let node_child_process = require("node:child_process"); let node_process = require("node:process"); node_process = require_runtime.__toESM(node_process, 1); //#region src/services/scaffold/upgrade.ts const UPSTREAM_ISSUE_URL = "https://github.com/NEARBuilders/everything-dev/issues"; async function upgradeTemplate(projectDir, options) { const timings = []; if (options.check) options.dryRun = true; const pkgPath = (0, node_path.join)(require_upgrade_packages.workspaceDirOf(projectDir), "package.json"); if (!(0, node_fs.existsSync)(pkgPath)) return { status: "error", packages: [], timings, error: "No package.json found in current directory" }; const parentSource = await require_upgrade_source.readExtendedRootSource(projectDir); const sourceRootCatalog = parentSource.catalog; const inheritedCatalogPackageNames = Object.keys(sourceRootCatalog); const currentCatalogEntries = require_catalog.readWorkspaceCatalog(require_upgrade_packages.workspaceDirOf(projectDir)); const workspacePkgPaths = await require_upgrade_packages.findWorkspacePackageJsons(projectDir); const hasCatalogRefRewrites = inheritedCatalogPackageNames.length > 0 && (require_upgrade_packages.packageObjectNeedsCatalogRefs(require_upgrade_packages.readRootPackageJson(projectDir), inheritedCatalogPackageNames) || workspacePkgPaths.some((pkgPath) => require_upgrade_packages.packageFileNeedsCatalogRefs(pkgPath, inheritedCatalogPackageNames))); const hasAuthCoreRefRewrites = require_upgrade_packages.packageObjectNeedsAuthCoreCatalogRef(require_upgrade_packages.readRootPackageJson(projectDir)) || workspacePkgPaths.some((pkgPath) => require_upgrade_packages.packageObjectNeedsAuthCoreCatalogRef(require_json_file.readJsonFile(pkgPath))); const { packages, catalogVersionUpdates } = await require_timing.timePhase(timings, "check package versions", async () => { const nextPackages = []; for (const name of require_upgrade_packages.FRAMEWORK_PACKAGES) { const current = require_upgrade_packages.readCurrentPackageSpecifier(projectDir, name); const target = sourceRootCatalog[name] ?? current ?? "unknown"; nextPackages.push({ name, from: current, to: target }); } return { packages: nextPackages, catalogVersionUpdates: require_upgrade_packages.diffCatalogEntries(sourceRootCatalog, currentCatalogEntries) }; }); const hasFrameworkUpdates = packages.some((p) => p.from !== p.to && p.from !== void 0); const hasCatalogUpdates = catalogVersionUpdates.some((u) => u.from !== void 0); const hasUpdates = hasFrameworkUpdates || hasCatalogUpdates || hasCatalogRefRewrites || hasAuthCoreRefRewrites; if (options.dryRun) { let changelogUrl; const pluginOptions = options.noSync ? null : await require_timing.timePhase(timings, "list parent plugins", () => require_upgrade_source.loadParentPluginOptions(projectDir)); if (hasUpdates) { const mainPkg = packages.find((p) => p.name === "everything-dev"); if (mainPkg?.from && mainPkg.from !== mainPkg.to) changelogUrl = require_upgrade_source.buildChangelogUrl(mainPkg.from, mainPkg.to, parentSource.repository); } return { status: "dry-run", packages: [...packages, ...catalogVersionUpdates.map((u) => ({ name: u.name, from: u.from, to: u.to }))], availablePlugins: pluginOptions?.newPluginKeys, platform: { resolved: parentSource.platform.manifest.frameworkVersion, source: `bos://${parentSource.platform.source.account}/${parentSource.platform.source.gateway}`, fromCache: parentSource.platform.fromCache }, updatesAvailable: hasUpdates, timings, changelogUrl }; } const targetMainVersion = packages.find((p) => p.name === "everything-dev")?.to; const versionDelta = options.migrationsOnly && !options.from ? false : options.from !== void 0 && targetMainVersion !== void 0 ? options.from !== targetMainVersion : hasFrameworkUpdates; if (options.migrationsOnly) return await require_upgrade_migration.runMigrationPhase(projectDir, options, parentSource, { versionDelta }); if (versionDelta && !options.noSync && !options.force) { const preflight = await require_timing.timePhase(timings, "preflight template sync", () => require_sync.syncTemplate(projectDir, { dryRun: true })); if (preflight.status === "conflicted" || (preflight.conflicted?.length ?? 0) > 0) return { status: "error", packages, timings, error: `Template files conflict with the upstream release — nothing was applied. Review the conflicts or run \`bos upgrade --force\` to overwrite (current copies are backed up). To make a local change permanent, file an issue: ${UPSTREAM_ISSUE_URL}. Conflicted: ${(preflight.conflicted ?? []).join(", ")}` }; } await require_timing.timePhase(timings, "apply package updates", async () => { if (inheritedCatalogPackageNames.length > 0) require_upgrade_packages.syncRootCatalogWithParent(projectDir, sourceRootCatalog); if (inheritedCatalogPackageNames.length > 0) for (const pkgPath of workspacePkgPaths) require_upgrade_packages.updatePackageFileCatalogRefs(pkgPath, inheritedCatalogPackageNames); const rootPkgPath = (0, node_path.join)(require_upgrade_packages.workspaceDirOf(projectDir), "package.json"); const rootPkg = require_json_file.readJsonFile(rootPkgPath); if (require_upgrade_packages.ensureAuthCoreCatalogRef(rootPkg)) (0, node_fs.writeFileSync)(rootPkgPath, `${JSON.stringify(rootPkg, null, 2)}\n`); for (const pkgPath of workspacePkgPaths) require_upgrade_packages.updatePackageFileAuthCoreRef(pkgPath); }); const needsInstall = (hasUpdates || hasCatalogUpdates) && !options.noInstall; if (needsInstall) await require_timing.timePhase(timings, "install dependencies", () => require_init.runPnpmInstallForUpgrade(require_upgrade_packages.workspaceDirOf(projectDir))); if (needsInstall && hasFrameworkUpdates) { const bosPath = (0, node_path.join)(require_upgrade_packages.workspaceDirOf(projectDir), "node_modules", ".bin", "bos"); const childArgs = [ "upgrade", "--migrations-only", "--no-install", "--from", packages.find((p) => p.name === "everything-dev")?.from ?? "unknown", ...options.noSync ? ["--no-sync"] : [], ...options.force ? ["--force"] : [], "--json" ]; const childResult = (0, node_child_process.spawnSync)(bosPath, childArgs, { cwd: projectDir, stdio: [ "inherit", "pipe", "pipe" ], encoding: "utf-8", env: { ...node_process.default.env, BOS_NO_BANNER: "1" } }); if (childResult.status !== 0) return { status: "error", packages: [...packages, ...catalogVersionUpdates.map((u) => ({ name: u.name, from: u.from, to: u.to }))], timings, error: `Migration phase failed: ${require_upgrade_migration.describeMigrationFailure(childResult.stdout, childResult.stderr)}` }; try { const childUpgrade = JSON.parse(childResult.stdout); const mainPkg = packages.find((p) => p.name === "everything-dev"); const changelogUrl = mainPkg?.from && mainPkg.from !== mainPkg.to ? require_upgrade_source.buildChangelogUrl(mainPkg.from, mainPkg.to, parentSource.repository) : void 0; return { ...childUpgrade, packages: [...packages, ...catalogVersionUpdates.map((u) => ({ name: u.name, from: u.from, to: u.to }))], timings: [...timings, ...childUpgrade.timings ?? []], changelogUrl }; } catch { return { status: "error", packages: [...packages, ...catalogVersionUpdates.map((u) => ({ name: u.name, from: u.from, to: u.to }))], timings, error: "Failed to parse migration phase output" }; } } const migrationResult = await require_upgrade_migration.runMigrationPhase(projectDir, options, parentSource, { versionDelta }); const mainPkg = packages.find((p) => p.name === "everything-dev"); const changelogUrl = mainPkg?.from && mainPkg.from !== mainPkg.to ? require_upgrade_source.buildChangelogUrl(mainPkg.from, mainPkg.to, parentSource.repository) : void 0; return { ...migrationResult, packages: [...packages, ...catalogVersionUpdates.map((u) => ({ name: u.name, from: u.from, to: u.to }))], timings: [...timings, ...migrationResult.timings ?? []], changelogUrl }; } //#endregion exports.AUTH_CORE_PACKAGE = require_upgrade_packages.AUTH_CORE_PACKAGE; exports.AUTH_CORE_TRIGGER_PACKAGES = require_upgrade_packages.AUTH_CORE_TRIGGER_PACKAGES; exports.FRAMEWORK_PACKAGES = require_upgrade_packages.FRAMEWORK_PACKAGES; exports.applyPlatformPin = require_upgrade_migration.applyPlatformPin; exports.buildChangelogUrl = require_upgrade_source.buildChangelogUrl; exports.describeMigrationFailure = require_upgrade_migration.describeMigrationFailure; exports.diffCatalogEntries = require_upgrade_packages.diffCatalogEntries; exports.ensureAuthCoreCatalogRef = require_upgrade_packages.ensureAuthCoreCatalogRef; exports.findWorkspacePackageJsons = require_upgrade_packages.findWorkspacePackageJsons; exports.loadParentPluginOptions = require_upgrade_source.loadParentPluginOptions; exports.migrateChildRootPackageJson = require_upgrade_packages.migrateChildRootPackageJson; exports.packageFileNeedsCatalogRefs = require_upgrade_packages.packageFileNeedsCatalogRefs; exports.packageObjectNeedsAuthCoreCatalogRef = require_upgrade_packages.packageObjectNeedsAuthCoreCatalogRef; exports.packageObjectNeedsCatalogRefs = require_upgrade_packages.packageObjectNeedsCatalogRefs; exports.readCurrentPackageSpecifier = require_upgrade_packages.readCurrentPackageSpecifier; exports.readExtendedRootSource = require_upgrade_source.readExtendedRootSource; exports.readInstalledVersion = require_upgrade_packages.readInstalledVersion; exports.readRootCatalogEntry = require_upgrade_packages.readRootCatalogEntry; exports.readRootPackageJson = require_upgrade_packages.readRootPackageJson; exports.runMigrationPhase = require_upgrade_migration.runMigrationPhase; exports.setCatalogRef = require_upgrade_packages.setCatalogRef; exports.stampPlatformPin = require_upgrade_migration.stampPlatformPin; exports.syncRootCatalogWithParent = require_upgrade_packages.syncRootCatalogWithParent; exports.updatePackageFileAuthCoreRef = require_upgrade_packages.updatePackageFileAuthCoreRef; exports.updatePackageFileCatalogRefs = require_upgrade_packages.updatePackageFileCatalogRefs; exports.upgradeTemplate = upgradeTemplate; exports.workspaceDirOf = require_upgrade_packages.workspaceDirOf; //# sourceMappingURL=upgrade.cjs.map