{"version":3,"sources":["webpack://typescriptlang-org/./src/lib/cx.ts","webpack://typescriptlang-org/./src/components/search/SearchArea.tsx","webpack://typescriptlang-org/./src/lib/useLocalStorage.ts","webpack://typescriptlang-org/../node_modules/gatsby/node_modules/babel-loader/lib/node_modules/react-intl/lib/components/relative.js","webpack://typescriptlang-org/./src/components/search/constants.ts","webpack://typescriptlang-org/./src/components/search/ResultRow.tsx","webpack://typescriptlang-org/./src/components/search/SearchResultsDisplay.tsx","webpack://typescriptlang-org/./src/components/search/useSearchResult.ts","webpack://typescriptlang-org/./src/templates/pages/dt/search.tsx","webpack://typescriptlang-org/../node_modules/gatsby/node_modules/babel-loader/lib/node_modules/ts-debounce/dist/src/index.js"],"names":["cx","classes","args","arg","push","join","SearchArea","result","search","setSearch","i","className","aria-label","autoComplete","autoFocus","onChange","event","target","value","placeholder","type","query","aria-live","pluralize","hits","length","alt","onClick","count","max","text","suffix","useLocalStorage","hasLocalStorage","key","initialValue","useState","localStorage","getItem","setValue","newValue","setItem","_createSuper","Derived","hasNativeReflectConstruct","Reflect","construct","sham","Proxy","Boolean","prototype","valueOf","call","e","_isNativeReflectConstruct","Super","NewTarget","this","constructor","arguments","apply","HOUR","selectUnit","seconds","absValue","Math","abs","getDurationInSeconds","unit","valueToSeconds","INCREMENTABLE_UNITS","canIncrement","undefined","includes","FormattedRelativeTime","_React$PureComponent","_super","props","_this","_updateTimer","state","prevUnit","prevValue","currentValueInSeconds","invariant","updateIntervalInSeconds","_ref","_ref2","_this2","clearTimeout","nextValueInSeconds","nextUnit","unitDuration","prevInterestingValueInSeconds","nextInterestingValueInSeconds","delayInSeconds","setTimeout","setState","scheduleNextUpdate","_this3","intl","formatRelativeTime","Text","textComponent","_this3$props","children","currentValue","currentUnit","round","formattedRelativeTime","Object","assign","displayName","defaultProps","PackageSource","ResultRow","exactMatch","installer","hit","description","downloadsLast30Days","humanDownloadsLast30Days","modified","name","repository","types","npmUrl","dtID","toString","replace","ts","url","icon","label","viaUrl","initialCopyStatus","copyStatus","setCopyStatus","installCommands","definitelyTyped","copyInstall","navigator","clipboard","writeText","href","TimeAgo","ago","Date","now","map","command","onBlur","role","msDay","msHour","timeMeasures","measureIndex","findIndex","ms","Intl","RelativeTimeFormat","numeric","style","ceil","Installers","Npm","Yarn","Pnpm","installerOptions","SearchByAlgolia","id","title","width","height","viewBox","fill","xmlns","d","SearchResultsDisplay","setInstaller","find","colSpan","installOption","randomQuery","createPostData","requestedSearch","floor","random","requests","analyticsTags","attributesToHighlight","attributesToRetrieve","facets","hitsPerPage","indexName","maxValuesPerFacet","page","params","startsWith","substring","tagFilters","URLSearchParams","cache","Map","updateHistorySearch","debounce","window","location","set","history","pushState","pathname","Search","pageContext","createInternational","useIntl","get","setResult","useEffect","cached","stillValid","fetch","method","body","JSON","stringify","then","response","json","results","rawResult","processedResult","filter","useSearchResult","lang","locale","exports","o","n","t","a","isImmediate","r","maxWait","u","c","v","slice","cancel"],"mappings":"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","file":"component---src-templates-pages-dt-search-tsx-40fede71706334e3ac77.js","sourcesContent":["export function cx(...args: (string | undefined | false)[]) {\n const classes: string[] = []\n for (const arg of args) {\n if (!arg) continue\n classes.push(arg)\n }\n return classes.join(\" \")\n}\n","import { withPrefix } from \"gatsby\"\nimport * as React from \"react\"\n\nimport { cx } from \"../../lib/cx\"\nimport { ISearch, RawSearchResult } from \"./types\"\n\nimport \"./SearchArea.scss\"\n\nexport type SearchAreaProps = {\n result?: RawSearchResult\n search: string\n i: ISearch\n setSearch: (newSearch: string) => void\n}\n\nexport const SearchArea: React.FC = ({\n result,\n search,\n setSearch,\n i,\n}) => {\n return (\n
\n
\n setSearch(event.target.value)}\n placeholder={i(\"dt_s_title\")}\n type=\"search\"\n value={search}\n />\n {search === result?.query && (\n \n {pluralize(result.hits.length, 50, \"match\", \"es\")}\n \n )}\n {!search ? (\n
\n ) : (\n setSearch(\"\")}\n type=\"button\"\n />\n )}\n
\n {!search &&

{i(\"dt_s_subtitle\")}

}\n
\n )\n}\n\nconst pluralize = (count: number, max: number, text: string, suffix: string) =>\n count > max\n ? `>${max} ${text}${suffix}`\n : `${count} ${text}${count === 1 ? \"\" : suffix}`\n","import { useState } from \"react\"\nimport { hasLocalStorage } from \"./hasLocalStorage\"\n\nexport type UseLocalStorage = (key: string, initialValue: State) => readonly [\n State,\n (newState: State) => void\n]\n\nexport const useLocalStorage: UseLocalStorage = hasLocalStorage\n ? (key, initialValue) => {\n const [value, setValue] = useState(localStorage.getItem(key) ?? initialValue)\n\n const setValueAndStorage = (newValue: State) => {\n setValue(newValue)\n localStorage.setItem(key, newValue)\n }\n\n return [value, setValueAndStorage] as const\n }\n : useState\n","import _classCallCheck from \"/var/www/html/typescriptweb/TypeScript-website/node_modules/gatsby/node_modules/@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"/var/www/html/typescriptweb/TypeScript-website/node_modules/gatsby/node_modules/@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"/var/www/html/typescriptweb/TypeScript-website/node_modules/gatsby/node_modules/@babel/runtime/helpers/esm/inherits\";\nimport _possibleConstructorReturn from \"/var/www/html/typescriptweb/TypeScript-website/node_modules/gatsby/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn\";\nimport _getPrototypeOf from \"/var/www/html/typescriptweb/TypeScript-website/node_modules/gatsby/node_modules/@babel/runtime/helpers/esm/getPrototypeOf\";\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\nimport * as React from 'react';\nimport { Context } from './injectIntl';\nimport { invariantIntlContext } from '../utils';\nimport { invariant } from '@formatjs/intl-utils';\nvar MINUTE = 60;\nvar HOUR = 60 * 60;\nvar DAY = 60 * 60 * 24;\n\nfunction selectUnit(seconds) {\n var absValue = Math.abs(seconds);\n\n if (absValue < MINUTE) {\n return 'second';\n }\n\n if (absValue < HOUR) {\n return 'minute';\n }\n\n if (absValue < DAY) {\n return 'hour';\n }\n\n return 'day';\n}\n\nfunction getDurationInSeconds(unit) {\n switch (unit) {\n case 'second':\n return 1;\n\n case 'minute':\n return MINUTE;\n\n case 'hour':\n return HOUR;\n\n default:\n return DAY;\n }\n}\n\nfunction valueToSeconds(value, unit) {\n if (!value) {\n return 0;\n }\n\n switch (unit) {\n case 'second':\n return value;\n\n case 'minute':\n return value * MINUTE;\n\n default:\n return value * HOUR;\n }\n}\n\nvar INCREMENTABLE_UNITS = ['second', 'minute', 'hour'];\n\nfunction canIncrement() {\n var unit = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'second';\n return INCREMENTABLE_UNITS.includes(unit);\n}\n\nexport var FormattedRelativeTime = /*#__PURE__*/function (_React$PureComponent) {\n _inherits(FormattedRelativeTime, _React$PureComponent);\n\n var _super = _createSuper(FormattedRelativeTime);\n\n function FormattedRelativeTime(props) {\n var _this;\n\n _classCallCheck(this, FormattedRelativeTime);\n\n _this = _super.call(this, props); // Public for testing\n\n _this._updateTimer = null;\n _this.state = {\n prevUnit: _this.props.unit,\n prevValue: _this.props.value,\n currentValueInSeconds: canIncrement(_this.props.unit) ? valueToSeconds(_this.props.value, _this.props.unit) : 0\n };\n invariant(!props.updateIntervalInSeconds || !!(props.updateIntervalInSeconds && canIncrement(props.unit)), 'Cannot schedule update with unit longer than hour');\n return _this;\n }\n\n _createClass(FormattedRelativeTime, [{\n key: \"scheduleNextUpdate\",\n value: function scheduleNextUpdate(_ref, _ref2) {\n var _this2 = this;\n\n var updateIntervalInSeconds = _ref.updateIntervalInSeconds,\n unit = _ref.unit;\n var currentValueInSeconds = _ref2.currentValueInSeconds;\n clearTimeout(this._updateTimer);\n this._updateTimer = null; // If there's no interval and we cannot increment this unit, do nothing\n\n if (!updateIntervalInSeconds || !canIncrement(unit)) {\n return;\n } // Figure out the next interesting time\n\n\n var nextValueInSeconds = currentValueInSeconds - updateIntervalInSeconds;\n var nextUnit = selectUnit(nextValueInSeconds); // We've reached the max auto incrementable unit, don't schedule another update\n\n if (nextUnit === 'day') {\n return;\n }\n\n var unitDuration = getDurationInSeconds(nextUnit);\n var remainder = nextValueInSeconds % unitDuration;\n var prevInterestingValueInSeconds = nextValueInSeconds - remainder;\n var nextInterestingValueInSeconds = prevInterestingValueInSeconds >= currentValueInSeconds ? prevInterestingValueInSeconds - unitDuration : prevInterestingValueInSeconds;\n var delayInSeconds = Math.abs(nextInterestingValueInSeconds - currentValueInSeconds);\n this._updateTimer = setTimeout(function () {\n return _this2.setState({\n currentValueInSeconds: nextInterestingValueInSeconds\n });\n }, delayInSeconds * 1e3);\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.scheduleNextUpdate(this.props, this.state);\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n this.scheduleNextUpdate(this.props, this.state);\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n clearTimeout(this._updateTimer);\n this._updateTimer = null;\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this3 = this;\n\n return React.createElement(Context.Consumer, null, function (intl) {\n invariantIntlContext(intl);\n var formatRelativeTime = intl.formatRelativeTime,\n Text = intl.textComponent;\n var _this3$props = _this3.props,\n children = _this3$props.children,\n value = _this3$props.value,\n unit = _this3$props.unit,\n updateIntervalInSeconds = _this3$props.updateIntervalInSeconds;\n var currentValueInSeconds = _this3.state.currentValueInSeconds;\n var currentValue = value || 0;\n var currentUnit = unit;\n\n if (canIncrement(unit) && typeof currentValueInSeconds === 'number' && updateIntervalInSeconds) {\n currentUnit = selectUnit(currentValueInSeconds);\n var unitDuration = getDurationInSeconds(currentUnit);\n currentValue = Math.round(currentValueInSeconds / unitDuration);\n }\n\n var formattedRelativeTime = formatRelativeTime(currentValue, currentUnit, Object.assign({}, _this3.props));\n\n if (typeof children === 'function') {\n return children(formattedRelativeTime);\n }\n\n if (Text) {\n return React.createElement(Text, null, formattedRelativeTime);\n }\n\n return formattedRelativeTime;\n });\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(props, state) {\n if (props.unit !== state.prevUnit || props.value !== state.prevValue) {\n return {\n prevValue: props.value,\n prevUnit: props.unit,\n currentValueInSeconds: canIncrement(props.unit) ? valueToSeconds(props.value, props.unit) : 0\n };\n }\n\n return null;\n }\n }]);\n\n return FormattedRelativeTime;\n}(React.PureComponent);\nFormattedRelativeTime.displayName = 'FormattedRelativeTime';\nFormattedRelativeTime.defaultProps = {\n value: 0,\n unit: 'second'\n};\nexport default FormattedRelativeTime;","export enum PackageSource {\n Npm = \"npm\",\n Yarn = \"yarn\",\n Pnpm = \"pnpm\",\n}\n\nexport type Installer = [string, string]\n\nexport const Installers: Record = {\n [PackageSource.Npm]: [\"npm i\", \"--save-dev\"],\n [PackageSource.Yarn]: [\"yarn add\", \"--dev\"],\n [PackageSource.Pnpm]: [\"pnpm add\", \"--save-dev\"],\n}\n\nexport const installerOptions = [\n PackageSource.Npm,\n PackageSource.Yarn,\n PackageSource.Pnpm,\n] as const\n","import React, { useState } from \"react\"\nimport { FormattedRelativeTime } from \"react-intl\"\n\nimport { cx } from \"../../lib/cx\"\nimport { ISearch, SearchHit } from \"./types\"\n\nimport \"./ResultRow.scss\"\n\nexport type ResultRowprops = {\n exactMatch?: boolean\n installer: [string, string]\n hit: SearchHit\n i: ISearch\n}\n\nexport const ResultRow: React.FC = ({\n exactMatch,\n installer,\n hit: {\n description,\n downloadsLast30Days,\n humanDownloadsLast30Days,\n modified,\n name,\n repository,\n types,\n },\n i\n}) => {\n const npmUrl = `https://www.npmjs.com/package/${name}`\n const dtID = !name.includes(\"@\") ? name : name.toString().replace(\"@\", \"\").replace(\"/\", \"__\")\n const [icon, label, viaUrl] =\n types.ts === \"included\"\n ? [\"in\", \"included\", repository?.url || npmUrl]\n : [\n \"dt\",\n \"from Definitely Typed\",\n `https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/${dtID}`,\n ]\n\n const initialCopyStatus = [i(\"dt_s_copy\"), `Copy ${name} installation script`]\n const [copyStatus, setCopyStatus] = useState(initialCopyStatus)\n\n const installCommands = [`${installer[0]} ${name}`]\n if (types.ts === \"definitely-typed\") {\n installCommands.push(\n `${installer[0]} ${types.definitelyTyped} ${installer[1]}`\n )\n }\n const copyInstall = async () => {\n try {\n await navigator.clipboard.writeText(installCommands.join(\"\\n\"))\n setCopyStatus([i(\"dt_s_copied\"), `Copied ${name} installation script`])\n } catch {\n setCopyStatus([\":(\", `Failed to copy ${name} installation script`])\n }\n }\n\n const resetCopyInstall = () => {\n setCopyStatus(initialCopyStatus)\n }\n\n return (\n \n 1_000_000\n ? \"downloadsMillion\"\n : downloadsLast30Days > 100_000 && \"downloadsHundredThousand\"\n )}\n >\n \n {humanDownloadsLast30Days}\n \n \n \n \n \n \n \n {name}\n \n {description\n ?.replace(/\\!?\\[.*\\]\\[(.*)\\]/g, \"$1\")\n .replace(/\\!?\\[(.*)\\]\\(.*\\)/g, \"$1\")\n .replace(/\\&/g, \"&\")}\n \n \n \n \n \n
\n          \n            {installCommands.map(command => (\n              \n                {command}\n              \n            ))}\n          \n        
\n \n {copyStatus[0]}\n \n \n \n )\n}\n\nconst msHour = 60 * 1000 * 60\nconst msDay = msHour * 24\nconst msWeek = msDay * 7\nconst msMonth = msDay * 30\nconst msYear = msDay * 365\n\nconst timeMeasures = [\n [msYear, \"year\"],\n [msMonth, \"month\"],\n [msWeek, \"week\"],\n [msDay, \"day\"],\n] as const\n\ntype TimeAgoProps = {\n ago: number\n}\n\nconst TimeAgo: React.FC = ({ ago }) => {\n const measureIndex = timeMeasures.findIndex(([ms]) => ago > ms)\n if (measureIndex === -1) {\n return <>just now\n }\n\n const [ms, unit] = timeMeasures[measureIndex]\n\n if (Intl.RelativeTimeFormat) {\n return (\n \n )\n } else {\n const value = -1 * Math.ceil(-ago / ms)\n const suffix = value === 1 ? \"\" : \"s\"\n return <>{value} {unit}{suffix}\n }\n}\n","import React from \"react\"\n\nimport { cx } from \"../../lib/cx\"\nimport { useLocalStorage } from \"../../lib/useLocalStorage\"\nimport { ResultRow } from \"./ResultRow\"\nimport { installerOptions, Installers, PackageSource } from \"./constants\"\nimport { ISearch, RawSearchResult } from \"./types\"\n\nimport \"./SearchResultsDisplay.scss\"\n\nexport type SearchResultsDisplayProps = {\n result?: RawSearchResult\n search: string\n i: ISearch\n}\n\nconst SearchByAlgolia = () => \n\n\nexport const SearchResultsDisplay: React.FC = ({\n result,\n search,\n i\n}) => {\n const [installer, setInstaller] = useLocalStorage(\n \"dt/search/packageSource\",\n PackageSource.Npm\n )\n\n if (!result) {\n return
...
\n }\n\n if (!result.hits.length) {\n return (\n
\n
\n {i(\"dt_s_no_results\")} {search}.\n
\n\n
{i(\"dt_s_no_results_try\")}
\n
\n )\n }\n\n const exactMatch = result.hits.find(hit => hit.name === search)\n\n return (\n <>\n \n \n {!search && (\n \n \n \n )}\n {exactMatch && (\n <>\n \n \n \n \n \n )}\n \n \n \n \n \n \n \n \n\n \n {result.hits.map(\n hit =>\n hit.name !== search && (\n \n )\n )}\n \n
\n {i(\"dt_s_popular_on_dt\")}\n
{i(\"dt_s_match_exact\")}
{i(\"dt_s_downloads_short\")}{i(\"dt_s_downloads_via\")}{i(\"dt_s_module\")}{i(\"dt_s_last_update\")}\n {i(\"dt_s_install\")}\n
\n {installerOptions.map(installOption => (\n setInstaller(installOption)}\n >\n {installOption}\n \n ))}\n
\n
\n \n \n )\n}\n","import { useEffect, useState } from \"react\"\n\nimport { RawSearchResults, RawSearchResult } from \"./types\"\n\nconst randomQuery = [\n \"react\",\n \"express\",\n \"lodash\",\n \"preact\",\n \"lambda\",\n \"jest\",\n \"danger\",\n \"ember\",\n \"vue\",\n \"svelte\",\n \"node\",\n \"ASP\",\n]\n\nconst createPostData = (requestedSearch: string) => {\n const search =\n requestedSearch ||\n randomQuery[Math.floor(Math.random() * randomQuery.length)]\n return {\n requests: [\n {\n analyticsTags: [\"typescriptlang.org/dt/search\"],\n attributesToHighlight: [\"name\", \"description\", \"keywords\"],\n attributesToRetrieve: [\n \"deprecated\",\n \"description\",\n \"downloadsLast30Days\",\n \"homepage\",\n \"humanDownloadsLast30Days\",\n \"keywords\",\n \"license\",\n \"modified\",\n \"name\",\n \"owner\",\n \"repository\",\n \"types\",\n \"version\",\n ],\n facets: [\"keywords\", \"keywords\", \"owner.name\"],\n hitsPerPage: requestedSearch ? 51 : 25,\n indexName: \"npm-search\",\n maxValuesPerFacet: 10,\n page: 0,\n params: \"\",\n query: search.startsWith(\"@types/\")\n ? search.substring(\"@types/\".length)\n : search,\n tagFilters: \"\",\n },\n ],\n }\n}\n\nconst searchParams = new URLSearchParams({\n \"x-algolia-agent\": \"TS DT Fetch\",\n \"x-algolia-application-id\": \"OFCNCOG2CU\",\n \"x-algolia-api-key\": \"f54e21fa3a2a0160595bb058179bfb1e\",\n})\n\nconst href = `https://ofcncog2cu-2.algolianet.com/1/indexes/*/queries?${searchParams.toString()}`\n\nconst cache = new Map()\n\nexport const useSearchResult = (search: string) => {\n const [result, setResult] = useState()\n\n useEffect(() => {\n const cached = cache.get(search)\n if (cached) {\n setResult(cached)\n return\n }\n\n let stillValid = true\n\n fetch(href, {\n method: \"POST\",\n body: JSON.stringify(createPostData(search)),\n }).then(async response => {\n if (!stillValid) {\n return\n }\n\n const json = await response.json()\n if (!stillValid) {\n return\n }\n\n const [rawResult] = (json as RawSearchResults).results\n const processedResult = {\n ...rawResult,\n hits: rawResult.hits.filter(hit => hit.types.ts),\n }\n\n cache.set(search, processedResult)\n setResult(processedResult)\n })\n\n return () => {\n stillValid = false\n }\n }, [search])\n\n return result\n}\n","import React, { useEffect, useState } from \"react\"\nimport { debounce } from \"ts-debounce\"\nimport { Layout } from \"../../../components/layout\"\nimport { Intl } from \"../../../components/Intl\"\n\nimport \"./search.scss\"\n\nimport { SearchArea } from \"../../../components/search/SearchArea\"\nimport { SearchResultsDisplay } from \"../../../components/search/SearchResultsDisplay\"\nimport { useSearchResult } from \"../../../components/search/useSearchResult\"\nimport { createInternational } from \"../../../lib/createInternational\"\nimport { useIntl } from \"react-intl\"\nimport { dtCopy } from \"../../../copy/en/dt\"\n\ntype SearchProps = {\n location: Location\n pageContext: any\n}\n\nconst updateHistorySearch = debounce((search: string) => {\n const params = new URLSearchParams(window.location.search)\n params.set(\"search\", search)\n history.pushState(null, \"\", `${window.location.pathname}?${params}`)\n}, 250)\n\nconst Search: React.FC = ({ location, pageContext }) => {\n const i = createInternational(useIntl())\n\n const [search, setSearch] = useState(\n new URLSearchParams(location.search).get(\"search\") || \"\"\n )\n const result = useSearchResult(search)\n\n useEffect(() => {\n updateHistorySearch(search)\n }, [search])\n\n return (\n \n
\n \n
\n
\n
\n \n
\n
\n
\n )\n}\n\nexport default (props: SearchProps) => (\n \n \n \n)\n","exports.debounce = function (i, o, e) {\n var n, t;\n void 0 === o && (o = 50), void 0 === e && (e = {});\n var a = null != (n = e.isImmediate) && n,\n r = e.maxWait,\n u = Date.now();\n\n function c() {\n if (void 0 !== r) {\n var i = Date.now() - u;\n if (i + o >= r) return r - i;\n }\n\n return o;\n }\n\n var v = function v() {\n var o = [].slice.call(arguments),\n e = this,\n n = function n() {\n t = void 0, u = Date.now(), a || i.apply(e, o);\n },\n r = a && void 0 === t;\n\n void 0 !== t && clearTimeout(t), t = setTimeout(n, c()), r && i.apply(e, o);\n };\n\n return v.cancel = function () {\n void 0 !== t && clearTimeout(t);\n }, v;\n};"],"sourceRoot":""}