Skip to main content
Glama
webUrl.js•1.57 kB
import { constantFrom } from './constantFrom.js'; import { constant } from './constant.js'; import { option } from './option.js'; import { tuple } from './tuple.js'; import { webQueryParameters } from './webQueryParameters.js'; import { webFragments } from './webFragments.js'; import { webAuthority } from './webAuthority.js'; import { partsToUrlMapper, partsToUrlUnmapper } from './_internals/mappers/PartsToUrl.js'; import { relativeSizeToSize, resolveSize } from './_internals/helpers/MaxLengthFromMinLength.js'; import { webPath } from './webPath.js'; const safeObjectAssign = Object.assign; export function webUrl(constraints) { const c = constraints || {}; const resolvedSize = resolveSize(c.size); const resolvedAuthoritySettingsSize = c.authoritySettings !== undefined && c.authoritySettings.size !== undefined ? relativeSizeToSize(c.authoritySettings.size, resolvedSize) : resolvedSize; const resolvedAuthoritySettings = safeObjectAssign(safeObjectAssign({}, c.authoritySettings), { size: resolvedAuthoritySettingsSize, }); const validSchemes = c.validSchemes || ['http', 'https']; const schemeArb = constantFrom(...validSchemes); const authorityArb = webAuthority(resolvedAuthoritySettings); return tuple(schemeArb, authorityArb, webPath({ size: resolvedSize }), c.withQueryParameters === true ? option(webQueryParameters({ size: resolvedSize })) : constant(null), c.withFragments === true ? option(webFragments({ size: resolvedSize })) : constant(null)).map(partsToUrlMapper, partsToUrlUnmapper); }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Digital-Defiance/mcp-screenshot'

If you have feedback or need assistance with the MCP directory API, please join our Discord server