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 = _JoinPatterns, Parse>; type _JoinPatterns = Stringify<{ protocol: JoinOriginField; hostname: JoinOriginField; port: JoinOriginField; pathname: JoinPathnames; search: JoinSearch; }>; type JoinOriginField = B['hostname'] extends Token[] ? B[Field] : A[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