// fork from https://github.com/originjs/vite-plugin-federation/blob/v1.1.12/packages/lib/src/utils/semver/index.ts // Copyright (c) // vite-plugin-federation is licensed under Mulan PSL v2. // You can use this software according to the terms and conditions of the Mulan PSL v2. // You may obtain a copy of Mulan PSL v2 at: // http://license.coscl.org.cn/MulanPSL2 // THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. // See the Mulan PSL v2 for more details. import { comparator } from './constants'; export function parseRegex(source: string): RegExp { return new RegExp(source); } export function isXVersion(version: string): boolean { return !version || version.toLowerCase() === 'x' || version === '*'; } export function pipe( f1: (...args: TArgs) => R1, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4, f5: (a: R4) => R5, f6: (a: R5) => R6, f7: (a: R6) => R7, ): (...args: TArgs) => R7; export function pipe( f1: (...args: TArgs) => R1, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4, f5: (a: R4) => R5, f6: (a: R5) => R6, ): (...args: TArgs) => R6; export function pipe( f1: (...args: TArgs) => R1, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4, f5: (a: R4) => R5, ): (...args: TArgs) => R5; export function pipe( f1: (...args: TArgs) => R1, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4, ): (...args: TArgs) => R4; export function pipe( f1: (...args: TArgs) => R1, f2: (a: R1) => R2, f3: (a: R2) => R3, ): (...args: TArgs) => R3; export function pipe( f1: (...args: TArgs) => R1, f2: (a: R1) => R2, ): (...args: TArgs) => R2; export function pipe( f1: (...args: TArgs) => R1, ): (...args: TArgs) => R1; export function pipe(...fns: ((params: any) => any)[]) { return (x: unknown): any => fns.reduce((v, f) => f(v), x); } export function extractComparator( comparatorString: string, ): RegExpMatchArray | null { return comparatorString.match(parseRegex(comparator)); } export function combineVersion( major: string, minor: string, patch: string, preRelease: string, ): string { const mainVersion = `${major}.${minor}.${patch}`; if (preRelease) { return `${mainVersion}-${preRelease}`; } return mainVersion; }