Mercurial > repos > fubar > jbrowse2
view x/static/js/5260.e7b7aeb6.chunk.js.map @ 125:49f3d3878413 draft
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse2 commit 5ea1f9c1eef1de76232e69aa6d34cda77d90d566
author | fubar |
---|---|
date | Sat, 05 Oct 2024 23:58:05 +0000 |
parents | |
children |
line wrap: on
line source
{"version":3,"file":"static/js/5260.e7b7aeb6.chunk.js","mappings":"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","sources":["../../../node_modules/@gmod/trix/src/index.ts","../../../plugins/trix/src/TrixTextSearchAdapter/TrixTextSearchAdapter.ts"],"sourcesContent":["import { Buffer } from 'buffer'\nimport type { GenericFilehandle } from 'generic-filehandle'\n\nconst CHUNK_SIZE = 65536\n\n// this is the number of hex characters to use for the address in ixixx, see\n// https://github.com/GMOD/ixixx-js/blob/master/src/index.ts#L182\nconst ADDRESS_SIZE = 10\n\n// https://stackoverflow.com/a/9229821/2129219\nfunction uniqBy<T>(a: T[], key: (elt: T) => string) {\n const seen = new Set()\n return a.filter(item => {\n const k = key(item)\n return seen.has(k) ? false : seen.add(k)\n })\n}\n\nexport default class Trix {\n constructor(\n public ixxFile: GenericFilehandle,\n public ixFile: GenericFilehandle,\n public maxResults = 20,\n ) {}\n\n async search(searchString: string, opts?: { signal?: AbortSignal }) {\n let resultArr = [] as [string, string][]\n const searchWords = searchString.split(' ')\n\n // we only search one word at a time\n const searchWord = searchWords[0].toLowerCase()\n const res = await this._getBuffer(searchWord, opts)\n if (!res) {\n return []\n }\n\n let { end, buffer } = res\n let done = false\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n while (!done) {\n let foundSomething = false\n const str = buffer.toString()\n\n // slice to lastIndexOf('\\n') to make sure we get complete records\n // since the buffer fetch could get halfway into a record\n const lines = str\n .slice(0, str.lastIndexOf('\\n'))\n .split('\\n')\n .filter(f => !!f)\n\n const hits2 = [] as string[]\n for (const line of lines) {\n const word = line.split(' ')[0]\n const match = word.startsWith(searchWord)\n if (!foundSomething && match) {\n foundSomething = true\n }\n\n // we are done scanning if we are lexicographically greater than the\n // search string\n if (word.slice(0, searchWord.length) > searchWord) {\n done = true\n }\n if (match) {\n hits2.push(line)\n }\n }\n const hits = hits2.flatMap(line => {\n const [term, ...parts] = line.split(' ')\n return parts.map(elt => [term, elt.split(',')[0]] as [string, string])\n })\n\n // if we are not done, and we haven't filled up maxResults with hits yet,\n // then refetch\n if (resultArr.length + hits.length < this.maxResults && !done) {\n const res2 = await this.ixFile.read(\n Buffer.alloc(CHUNK_SIZE),\n 0,\n CHUNK_SIZE,\n end,\n opts,\n )\n\n // early break if empty response\n if (!res2.bytesRead) {\n resultArr = resultArr.concat(hits)\n break\n }\n buffer = Buffer.concat([buffer, res2.buffer])\n end += CHUNK_SIZE\n }\n\n // if we have filled up the hits, or we are detected to be done via the\n // filtering, then return\n else if (resultArr.length + hits.length >= this.maxResults || done) {\n resultArr = resultArr.concat(hits)\n break\n }\n }\n\n // deduplicate results based on the detail column (resultArr[1])\n return uniqBy(resultArr, elt => elt[1]).slice(0, this.maxResults)\n }\n\n private async getIndex(opts?: { signal?: AbortSignal }) {\n const file = await this.ixxFile.readFile({\n encoding: 'utf8',\n ...opts,\n })\n return file\n .split('\\n')\n .filter(f => !!f)\n .map(line => {\n const p = line.length - ADDRESS_SIZE\n const prefix = line.slice(0, p)\n const posStr = line.slice(p)\n const pos = Number.parseInt(posStr, 16)\n return [prefix, pos] as const\n })\n }\n\n private async _getBuffer(\n searchWord: string,\n opts?: { signal?: AbortSignal },\n ) {\n let start = 0\n let end = 65536\n const indexes = await this.getIndex(opts)\n for (const [key, value] of indexes) {\n const trimmedKey = key.slice(0, searchWord.length)\n if (trimmedKey < searchWord) {\n start = value\n end = value + 65536\n }\n }\n\n // Return the buffer and its end position in the file.\n const len = end - start\n if (len < 0) {\n return undefined\n }\n const res = await this.ixFile.read(Buffer.alloc(len), 0, len, start, opts)\n return {\n ...res,\n end,\n }\n }\n}\n","import Trix from '@gmod/trix'\nimport {\n BaseTextSearchAdapter,\n BaseAdapter,\n BaseTextSearchArgs,\n} from '@jbrowse/core/data_adapters/BaseAdapter'\nimport { openLocation } from '@jbrowse/core/util/io'\nimport BaseResult from '@jbrowse/core/TextSearch/BaseResults'\nimport {\n AnyConfigurationModel,\n readConfObject,\n} from '@jbrowse/core/configuration'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport { getSubAdapterType } from '@jbrowse/core/data_adapters/dataAdapterCache'\n\nfunction decodeURIComponentNoThrow(uri: string) {\n try {\n return decodeURIComponent(uri)\n } catch (e) {\n // avoid throwing exception on a failure to decode URI component\n return uri\n }\n}\n\nfunction shorten(str: string, term: string, w = 15) {\n const tidx = str.toLowerCase().indexOf(term)\n\n return str.length < 40\n ? str\n : (Math.max(0, tidx - w) > 0 ? '...' : '') +\n str.slice(Math.max(0, tidx - w), tidx + term.length + w).trim() +\n (tidx + term.length < str.length ? '...' : '')\n}\n\nexport default class TrixTextSearchAdapter\n extends BaseAdapter\n implements BaseTextSearchAdapter\n{\n indexingAttributes?: string[]\n trixJs: Trix\n tracksNames?: string[]\n\n constructor(\n config: AnyConfigurationModel,\n getSubAdapter?: getSubAdapterType,\n pluginManager?: PluginManager,\n ) {\n super(config, getSubAdapter, pluginManager)\n const ixFilePath = readConfObject(config, 'ixFilePath')\n const ixxFilePath = readConfObject(config, 'ixxFilePath')\n\n if (!ixFilePath) {\n throw new Error('must provide out.ix')\n }\n if (!ixxFilePath) {\n throw new Error('must provide out.ixx')\n }\n this.trixJs = new Trix(\n openLocation(ixxFilePath, pluginManager),\n openLocation(ixFilePath, pluginManager),\n 1500,\n )\n }\n\n /**\n * Returns list of results\n * @param args - search options/arguments include: search query\n * limit of results to return, searchType...prefix | full | exact\", etc.\n */\n async searchIndex(args: BaseTextSearchArgs) {\n const query = args.queryString.toLowerCase()\n const strs = query.split(' ')\n const results = await this.trixJs.search(query)\n const formatted = results\n // if multi-word search try to filter out relevant items\n .filter(([, data]) =>\n strs.every(r =>\n decodeURIComponentNoThrow(data).toLowerCase().includes(r),\n ),\n )\n .map(([term, data]) => {\n const result = JSON.parse(data.replaceAll('|', ',')) as string[]\n const [loc, trackId, ...rest] = result.map(record =>\n decodeURIComponentNoThrow(record),\n )\n\n const labelFieldIdx = rest.findIndex(elt => !!elt)\n const contextIdx = rest\n .map(elt => elt.toLowerCase())\n .findIndex(f => f.includes(term.toLowerCase()))\n\n const labelField = rest[labelFieldIdx]!\n const contextField = rest[contextIdx]!\n const context =\n contextIdx !== -1 ? shorten(contextField, term) : undefined\n const label = shorten(labelField, term)\n\n const displayString =\n !context || label.toLowerCase() === context.toLowerCase()\n ? label\n : `${label} (${context})`\n\n return new BaseResult({\n locString: loc,\n label: labelField,\n displayString,\n matchedObject: result.map(record => decodeURIComponent(record)),\n trackId,\n })\n })\n\n return args.searchType === 'exact'\n ? formatted.filter(\n r => r.getLabel().toLowerCase() === args.queryString.toLowerCase(),\n )\n : formatted\n }\n\n freeResources() {}\n}\n"],"names":["CHUNK_SIZE","Trix","ixxFile","ixFile","maxResults","constructor","search","searchString","opts","resultArr","searchWord","split","toLowerCase","res","this","_getBuffer","end","buffer","done","foundSomething","str","toString","lines","slice","lastIndexOf","filter","f","hits2","line","word","match","startsWith","length","push","hits","flatMap","term","parts","map","elt","res2","read","alloc","bytesRead","concat","a","seen","Set","item","k","has","add","uniqBy","getIndex","readFile","encoding","p","prefix","posStr","Number","parseInt","start","indexes","key","value","len","decodeURIComponentNoThrow","uri","decodeURIComponent","e","shorten","w","tidx","indexOf","Math","max","trim","TrixTextSearchAdapter","BaseAdapter","config","getSubAdapter","pluginManager","super","ixFilePath","readConfObject","ixxFilePath","Error","trixJs","openLocation","searchIndex","args","query","queryString","strs","formatted","data","every","r","includes","result","JSON","parse","replaceAll","loc","trackId","rest","record","labelFieldIdx","findIndex","contextIdx","labelField","contextField","context","undefined","label","displayString","BaseResult","locString","matchedObject","searchType","getLabel","freeResources"],"sourceRoot":""}