import type { Parse, ParsedPattern, Separator, Token } from './parse.ts'; import type { StartsWithSeparator, Stringify } from './stringify.ts'; /** Join two pattern source strings together at the type level. */ export type JoinPatterns = string extends A | B ? string : _JoinPatterns, Parse>; type _JoinPatterns = A extends never ? never : B extends never ? never : A extends ParsedPattern ? B extends ParsedPattern ? Stringify<{ protocol: JoinOriginField; hostname: JoinOriginField; port: JoinOriginField; pathname: JoinPathnames; search: JoinSearch; }> : never : never; type JoinOriginField = B[Field] extends undefined ? A[Field] : B[Field]; type JoinPathnames = B extends undefined ? A : B extends [] ? A : A extends undefined ? B : A extends [] ? B : A extends Token[] ? B extends Token[] ? JoinPathnameTokens, B> : never : never; type RemoveTrailingSeparator = T extends [...infer Rest extends Token[], Separator] ? Rest : T; type JoinPathnameTokens = B extends [Separator] ? A : StartsWithSeparator extends true ? [...A, ...B] : [ ...A, Separator, ...B ]; type JoinSearch = B extends undefined ? A : A extends undefined ? B : `${A}&${B}`; export {}; //# sourceMappingURL=join.d.ts.map