UNPKG

every-plugin

Version:
68 lines (66 loc) 2.21 kB
import { createRequire } from "node:module"; import { readFileSync } from "node:fs"; import { dirname, join } from "node:path"; import { fileURLToPath } from "node:url"; //#region src/build/shared-deps.ts const __dirname = dirname(fileURLToPath(import.meta.url)); const require = createRequire(import.meta.url); let pkg; try { pkg = JSON.parse(readFileSync(join(__dirname, "../../package.json"), "utf-8")); } catch { pkg = require("every-plugin/package.json"); } const DEFAULT_SHARE_CONFIG = { requiredVersion: false, singleton: true, strictVersion: false, eager: false }; function extractExactVersion(input) { const match = input.match(/\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?/); return match ? match[0] : input.replace(/^[\^~>=<\s]+/, ""); } function getInstalledPackageVersion(packageName, fallbackVersion) { try { return require(`${packageName}/package.json`).version; } catch { return extractExactVersion(fallbackVersion); } } const pluginSharedDependencies = { "every-plugin": { version: pkg.version, ...DEFAULT_SHARE_CONFIG }, effect: { version: getInstalledPackageVersion("effect", pkg.peerDependencies.effect), ...DEFAULT_SHARE_CONFIG }, zod: { version: getInstalledPackageVersion("zod", pkg.peerDependencies.zod), ...DEFAULT_SHARE_CONFIG }, "@orpc/contract": { version: getInstalledPackageVersion("@orpc/contract", pkg.peerDependencies["@orpc/contract"]), ...DEFAULT_SHARE_CONFIG }, "@orpc/server": { version: getInstalledPackageVersion("@orpc/server", pkg.peerDependencies["@orpc/server"]), ...DEFAULT_SHARE_CONFIG } }; function getPluginSharedDependencies() { return pluginSharedDependencies; } function getPluginSharedDependenciesVersionRange() { return Object.fromEntries(Object.entries(getPluginSharedDependencies()).map(([name, config]) => [name, getMajorMinorVersion(config.version)])); } function getMajorMinorVersion(version) { const match = version.replace(/^[\^~>=<]+/, "").match(/^(\d+)\.(\d+)/); if (!match) return "^0.0.0"; return `^${match[1]}.${match[2]}.0`; } //#endregion export { getMajorMinorVersion, getPluginSharedDependencies, getPluginSharedDependenciesVersionRange, pluginSharedDependencies }; //# sourceMappingURL=shared-deps.mjs.map