Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 | 3x 3x 5x 5x 5x 5x 1x 1x 5x 3x 3x 22x 22x 50x 37x 22x 3x 20x 20x 20x 20x 16x 20x 3x 1x 3x 18x 18x 18x | import { CatalogSearchSort } from "../api/catalog-search/constants";
import { CDKType } from "../constants/constructs";
import { Language } from "../constants/languages";
import { ROUTES, QUERY_PARAMS } from "../constants/url";
const gitSSHRegex = new RegExp(
/git@github\.com:([a-zA-Z-]+)+\/?([a-zA-Z-]+)*(\.git)?/
);
export const getRepoUrlAndHost = (
repoUrl: string
): { url: string; hostname: string } | undefined => {
try {
let url = repoUrl;
const sshUrl = repoUrl.match(gitSSHRegex);
if (sshUrl) {
const [, author, repo] = sshUrl;
url = `https://github.com/${author}/${repo}`;
}
return {
hostname: new URL(url).hostname,
url,
};
} catch {
// Invalid URL, return undefined as a signal that we should not display it
return undefined;
}
};
export type SearchParamsObject = Record<
string,
string | number | undefined | null
>;
export const createURLSearchParams = (
params: SearchParamsObject,
base?: string
) => {
const searchParams = new URLSearchParams(base);
Object.entries(params)
.filter(([, v]) => v != null)
.forEach(([k, v]) => {
searchParams.set(k, `${v}`);
});
return searchParams.toString();
};
export const createURL = (base: string, params?: SearchParamsObject) => {
let url = base;
Eif (params) {
const search = createURLSearchParams(params);
if (search) {
url += `?${search}`;
}
}
return url;
};
export const getSearchPath = ({
cdkMajor,
cdkType,
keywords,
query,
offset,
languages,
sort,
tags,
}: {
cdkMajor?: string | number;
query?: string;
offset?: string | number;
cdkType?: CDKType;
keywords?: string[];
languages?: Language[];
sort?: CatalogSearchSort;
tags?: string[];
}) =>
createURL(ROUTES.SEARCH, {
[QUERY_PARAMS.SEARCH_QUERY]: query,
[QUERY_PARAMS.CDK_TYPE]: cdkType,
[QUERY_PARAMS.CDK_MAJOR]: cdkMajor,
[QUERY_PARAMS.KEYWORDS]: keywords?.length ? keywords.join(",") : null,
[QUERY_PARAMS.LANGUAGES]: languages?.length ? languages.join(",") : null,
[QUERY_PARAMS.SORT]: sort,
[QUERY_PARAMS.OFFSET]: offset ?? 0,
[QUERY_PARAMS.TAGS]: tags?.length ? tags.join(",") : null,
});
export const getPackagePath = ({
name,
version,
language,
submodule,
api,
}: {
api?: string;
name: string;
version?: string;
language?: Language;
submodule?: string;
}) => {
const versionSegment = version ? `/v/${version}` : "";
const apiSegment = version && api ? `/api/${api}` : "";
return createURL(`${ROUTES.PACKAGES}/${name}${versionSegment}${apiSegment}`, {
[QUERY_PARAMS.SUBMODULE]: submodule,
[QUERY_PARAMS.LANGUAGE]: language,
});
};
|