@cmdcolin/jbrowse-plugin-hubs 1.0.3 → 1.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,2 @@
1
- "use strict";var JBrowsePluginHubs=(()=>{var g=Object.create;var a=Object.defineProperty;var y=Object.getOwnPropertyDescriptor;var h=Object.getOwnPropertyNames;var w=Object.getPrototypeOf,x=Object.prototype.hasOwnProperty;var j=(e,s)=>()=>(s||e((s={exports:{}}).exports,s),s.exports),k=(e,s)=>{for(var n in s)a(e,n,{get:s[n],enumerable:!0})},u=(e,s,n,t)=>{if(s&&typeof s=="object"||typeof s=="function")for(let r of h(s))!x.call(e,r)&&r!==n&&a(e,r,{get:()=>s[r],enumerable:!(t=y(s,r))||t.enumerable});return e};var A=(e,s,n)=>(n=e!=null?g(w(e)):{},u(s||!e||!e.__esModule?a(n,"default",{value:e,enumerable:!0}):n,e)),v=e=>u(a({},"__esModule",{value:!0}),e);var m=j((M,d)=>{d.exports=JBrowseExports["@jbrowse/core/Plugin"]});var S={};k(S,{default:()=>c,fetchAssemblyHub:()=>l,fetchingAssemblies:()=>o});var f=A(m());var o=new Set;function H(e){let[s,n]=e.split("_");if(!n)return;let t=n.match(/.{1,3}/g);if(!t||t.length<3)return;let[r,i,p]=t;return`https://jbrowse.org/hubs/genark/${s}/${r}/${i}/${p}/${e}/config.json`}function $(e){return e.startsWith("GCA_")||e.startsWith("GCF_")?H(e):`https://jbrowse.org/ucsc/${e}/config.json`}async function l(e,s){let n=$(s);if(n)try{let t=await fetch(n);if(!t.ok)throw new Error(`HTTP ${t.status} from ${n}`);let r=await t.json();for(let i of r.assemblies??[])e.assemblyManager.get(i.name)||e.addSessionAssembly(i);for(let i of r.tracks??[])e.addTrackConf(i)}catch(t){console.error(t),e.notifyError(`Failed to load assembly ${s}: ${t}`,t)}finally{o.delete(s)}}var b="1.0.3";var c=class extends f.default{name="HubsViewerPlugin";version=b;install(s){s.addToExtensionPoint("Core-handleUnrecognizedAssembly",(n,t)=>{let r=t.session,i=t.assemblyName;!r||!i||o.has(i)||(o.add(i),l(r,i))})}configure(s){}};return v(S);})();
1
+ "use strict";var JBrowsePluginHubs=(()=>{var g=Object.create;var a=Object.defineProperty;var y=Object.getOwnPropertyDescriptor;var w=Object.getOwnPropertyNames;var h=Object.getPrototypeOf,x=Object.prototype.hasOwnProperty;var j=(e,s)=>()=>(s||e((s={exports:{}}).exports,s),s.exports),k=(e,s)=>{for(var n in s)a(e,n,{get:s[n],enumerable:!0})},u=(e,s,n,t)=>{if(s&&typeof s=="object"||typeof s=="function")for(let r of w(s))!x.call(e,r)&&r!==n&&a(e,r,{get:()=>s[r],enumerable:!(t=y(s,r))||t.enumerable});return e};var A=(e,s,n)=>(n=e!=null?g(h(e)):{},u(s||!e||!e.__esModule?a(n,"default",{value:e,enumerable:!0}):n,e)),v=e=>u(a({},"__esModule",{value:!0}),e);var b=j((M,d)=>{d.exports=JBrowseExports["@jbrowse/core/Plugin"]});var S={};k(S,{default:()=>c,fetchAssemblyHub:()=>l,fetchingAssemblies:()=>o});var f=A(b());var o=new Set;function H(e){let[s,n]=e.split("_");if(!n)return;let t=n.match(/.{1,3}/g);if(!t||t.length<3)return;let[r,i,p]=t;return`https://jbrowse.org/hubs/genark/${s}/${r}/${i}/${p}/${e}/config.json`}function $(e){return e.startsWith("GCA_")||e.startsWith("GCF_")?H(e):`https://jbrowse.org/ucsc/${e}/config.json`}async function l(e,s){let n=$(s);if(n)try{let t=await fetch(n);if(!t.ok)throw new Error(`HTTP ${t.status} from ${n}`);let r=await t.json();for(let i of r.assemblies??[])e.assemblyManager.get(i.name)||e.addSessionAssembly(i);for(let i of r.tracks??[])e.addTrackConf(i)}catch(t){console.error(t),e.notifyError(`Failed to load assembly ${s}: ${t}`,t)}finally{o.delete(s)}}var m="1.0.4";var c=class extends f.default{name="HubsViewerPlugin";version=m;install(s){s.addToExtensionPoint("Core-handleUnrecognizedAssembly",(n,t)=>{let r=t.session,i=t.assemblyName;!r||!i||o.has(i)||(o.add(i),l(r,i))})}configure(s){}};return v(S);})();
2
2
  //# sourceMappingURL=jbrowse-plugin-hubs.umd.production.min.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["global-externals:@jbrowse/core/Plugin", "../src/index.ts", "../src/fetchAssemblyHub.ts", "../package.json"],
4
- "sourcesContent": ["module.exports = JBrowseExports[\"@jbrowse/core/Plugin\"];", "import Plugin from '@jbrowse/core/Plugin'\nimport PluginManager from '@jbrowse/core/PluginManager'\n\nimport { fetchAssemblyHub, fetchingAssemblies } from './fetchAssemblyHub.ts'\nimport { version } from '../package.json'\n\nimport type { HubSession } from './fetchAssemblyHub.ts'\n\nexport default class HubsViewerPlugin extends Plugin {\n name = 'HubsViewerPlugin'\n version = version\n\n install(pluginManager: PluginManager) {\n pluginManager.addToExtensionPoint(\n 'Core-handleUnrecognizedAssembly',\n (_defaultResult, args) => {\n const session = args.session as HubSession | undefined\n const assemblyName = args.assemblyName as string | undefined\n\n // Skip if missing required args\n if (!session || !assemblyName) {\n return\n }\n\n // Skip if already fetching (must check this first to prevent recursion)\n if (fetchingAssemblies.has(assemblyName)) {\n return\n }\n\n // Mark as fetching before any other checks that might re-trigger this\n fetchingAssemblies.add(assemblyName)\n\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n fetchAssemblyHub(session, assemblyName)\n },\n )\n }\n\n configure(_pluginManager: PluginManager) {}\n}\n\nexport {\n type HubSession,\n fetchAssemblyHub,\n fetchingAssemblies,\n} from './fetchAssemblyHub.ts'\n", "// Track assemblies we're currently fetching to avoid duplicate requests\nexport const fetchingAssemblies = new Set<string>()\n\nexport interface HubSession {\n assemblyManager: { get: (name: string) => unknown }\n addSessionAssembly: (assembly: unknown) => void\n addTrackConf: (track: unknown) => void\n notifyError: (msg: string, e: unknown) => void\n}\n\nfunction getGenArkConfigUrl(accession: string) {\n const [base, rest] = accession.split('_')\n if (!rest) {\n return undefined\n }\n const match = rest.match(/.{1,3}/g)\n if (!match || match.length < 3) {\n return undefined\n }\n const [b1, b2, b3] = match\n return `https://jbrowse.org/hubs/genark/${base}/${b1}/${b2}/${b3}/${accession}/config.json`\n}\n\nfunction getConfigUrl(assemblyName: string) {\n // GenArk assemblies (GCA_* or GCF_*)\n if (assemblyName.startsWith('GCA_') || assemblyName.startsWith('GCF_')) {\n return getGenArkConfigUrl(assemblyName)\n }\n // UCSC assemblies (hg38, mm10, etc.)\n return `https://jbrowse.org/ucsc/${assemblyName}/config.json`\n}\n\nexport async function fetchAssemblyHub(\n session: HubSession,\n assemblyName: string,\n) {\n const url = getConfigUrl(assemblyName)\n if (!url) {\n return\n }\n try {\n const response = await fetch(url)\n if (!response.ok) {\n throw new Error(`HTTP ${response.status} from ${url}`)\n }\n const config = (await response.json()) as {\n assemblies?: { name: string }[]\n tracks?: unknown[]\n }\n\n // Add assemblies directly to session\n for (const assembly of config.assemblies ?? []) {\n if (!session.assemblyManager.get(assembly.name)) {\n session.addSessionAssembly(assembly)\n }\n }\n\n // Add tracks directly to session (addTrackConf handles duplicates)\n for (const track of config.tracks ?? []) {\n session.addTrackConf(track)\n }\n } catch (e) {\n console.error(e)\n session.notifyError(`Failed to load assembly ${assemblyName}: ${e}`, e)\n } finally {\n fetchingAssemblies.delete(assemblyName)\n }\n}\n", "{\n \"version\": \"1.0.3\",\n \"license\": \"MIT\",\n \"name\": \"@cmdcolin/jbrowse-plugin-hubs\",\n \"keywords\": [\n \"jbrowse\",\n \"jbrowse2\"\n ],\n \"main\": \"dist/index.js\",\n \"module\": \"dist/index.esm.js\",\n \"typings\": \"dist/index.d.ts\",\n \"files\": [\n \"dist\",\n \"src\"\n ],\n \"scripts\": {\n \"clean\": \"rimraf dist\",\n \"start\": \"node esbuild.mjs --watch\",\n \"test\": \"node --experimental-strip-types --test src/fetchAssemblyHub.test.ts\",\n \"format\": \"prettier --write .\",\n \"prebuild\": \"npm run clean\",\n \"build\": \"tsc && NODE_ENV=production node esbuild.mjs\",\n \"lint\": \"eslint --report-unused-disable-directives --max-warnings 0\",\n \"prepack\": \"npm run build\",\n \"postversion\": \"git push --follow-tags\"\n },\n \"devDependencies\": {\n \"@babel/core\": \"^7.28.6\",\n \"@babel/preset-react\": \"^7.10.4\",\n \"@emotion/react\": \"^11.10.4\",\n \"@emotion/styled\": \"^11.14.1\",\n \"@eslint/js\": \"^9.39.2\",\n \"@fal-works/esbuild-plugin-global-externals\": \"^2.1.2\",\n \"@jbrowse/core\": \"^4.1.3\",\n \"@jbrowse/plugin-data-management\": \"^4.1.3\",\n \"@jbrowse/plugin-linear-genome-view\": \"^4.1.3\",\n \"@mui/material\": \"^7.3.7\",\n \"@mui/system\": \"^7.3.7\",\n \"@mui/x-data-grid\": \"^8.26.0\",\n \"@types/d3-array\": \"^3.2.1\",\n \"@types/d3-hierarchy\": \"^3.1.7\",\n \"@types/node\": \"^25.1.0\",\n \"@types/react\": \"^19.2.10\",\n \"esbuild\": \"^0.27.2\",\n \"eslint\": \"^9.39.2\",\n \"eslint-plugin-import\": \"^2.31.0\",\n \"eslint-plugin-unicorn\": \"^62.0.0\",\n \"mobx\": \"^6.0.0\",\n \"mobx-react\": \"^9.0.1\",\n \"mobx-state-tree\": \"^7.0.2\",\n \"prettier\": \"^3.8.1\",\n \"pretty-bytes\": \"^7.0.0\",\n \"react\": \"^19.2.4\",\n \"react-dom\": \"^19.2.4\",\n \"rimraf\": \"^6.1.2\",\n \"rxjs\": \"^7.8.1\",\n \"serve\": \"^14.2.0\",\n \"typescript\": \"^5.1.6\",\n \"typescript-eslint\": \"^8.54.0\"\n },\n \"publishConfig\": {\n \"access\": \"public\"\n }\n}\n"],
4
+ "sourcesContent": ["module.exports = JBrowseExports[\"@jbrowse/core/Plugin\"];", "import Plugin from '@jbrowse/core/Plugin'\nimport PluginManager from '@jbrowse/core/PluginManager'\n\nimport { fetchAssemblyHub, fetchingAssemblies } from './fetchAssemblyHub.ts'\nimport { version } from '../package.json'\n\nimport type { HubSession } from './fetchAssemblyHub.ts'\n\nexport default class HubsViewerPlugin extends Plugin {\n name = 'HubsViewerPlugin'\n version = version\n\n install(pluginManager: PluginManager) {\n pluginManager.addToExtensionPoint(\n 'Core-handleUnrecognizedAssembly',\n (_defaultResult, args) => {\n const session = args.session as HubSession | undefined\n const assemblyName = args.assemblyName as string | undefined\n\n // Skip if missing required args\n if (!session || !assemblyName) {\n return\n }\n\n // Skip if already fetching (must check this first to prevent recursion)\n if (fetchingAssemblies.has(assemblyName)) {\n return\n }\n\n // Mark as fetching before any other checks that might re-trigger this\n fetchingAssemblies.add(assemblyName)\n\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n fetchAssemblyHub(session, assemblyName)\n },\n )\n }\n\n configure(_pluginManager: PluginManager) {}\n}\n\nexport {\n type HubSession,\n fetchAssemblyHub,\n fetchingAssemblies,\n} from './fetchAssemblyHub.ts'\n", "// Track assemblies we're currently fetching to avoid duplicate requests\nexport const fetchingAssemblies = new Set<string>()\n\nexport interface HubSession {\n assemblyManager: { get: (name: string) => unknown }\n addSessionAssembly: (assembly: unknown) => void\n addTrackConf: (track: unknown) => void\n notifyError: (msg: string, e: unknown) => void\n}\n\nfunction getGenArkConfigUrl(accession: string) {\n const [base, rest] = accession.split('_')\n if (!rest) {\n return undefined\n }\n const match = rest.match(/.{1,3}/g)\n if (!match || match.length < 3) {\n return undefined\n }\n const [b1, b2, b3] = match\n return `https://jbrowse.org/hubs/genark/${base}/${b1}/${b2}/${b3}/${accession}/config.json`\n}\n\nfunction getConfigUrl(assemblyName: string) {\n // GenArk assemblies (GCA_* or GCF_*)\n if (assemblyName.startsWith('GCA_') || assemblyName.startsWith('GCF_')) {\n return getGenArkConfigUrl(assemblyName)\n }\n // UCSC assemblies (hg38, mm10, etc.)\n return `https://jbrowse.org/ucsc/${assemblyName}/config.json`\n}\n\nexport async function fetchAssemblyHub(\n session: HubSession,\n assemblyName: string,\n) {\n const url = getConfigUrl(assemblyName)\n if (!url) {\n return\n }\n try {\n const response = await fetch(url)\n if (!response.ok) {\n throw new Error(`HTTP ${response.status} from ${url}`)\n }\n const config = (await response.json()) as {\n assemblies?: { name: string }[]\n tracks?: unknown[]\n }\n\n // Add assemblies directly to session\n for (const assembly of config.assemblies ?? []) {\n if (!session.assemblyManager.get(assembly.name)) {\n session.addSessionAssembly(assembly)\n }\n }\n\n // Add tracks directly to session (addTrackConf handles duplicates)\n for (const track of config.tracks ?? []) {\n session.addTrackConf(track)\n }\n } catch (e) {\n console.error(e)\n session.notifyError(`Failed to load assembly ${assemblyName}: ${e}`, e)\n } finally {\n fetchingAssemblies.delete(assemblyName)\n }\n}\n", "{\n \"version\": \"1.0.4\",\n \"license\": \"MIT\",\n \"name\": \"@cmdcolin/jbrowse-plugin-hubs\",\n \"keywords\": [\n \"jbrowse\",\n \"jbrowse2\"\n ],\n \"main\": \"dist/index.js\",\n \"module\": \"dist/index.esm.js\",\n \"typings\": \"dist/index.d.ts\",\n \"files\": [\n \"dist\",\n \"src\"\n ],\n \"scripts\": {\n \"clean\": \"rimraf dist\",\n \"start\": \"node esbuild.mjs --watch\",\n \"test\": \"node --experimental-strip-types --test src/fetchAssemblyHub.test.ts\",\n \"format\": \"prettier --write .\",\n \"prebuild\": \"npm run clean\",\n \"build\": \"tsc && NODE_ENV=production node esbuild.mjs\",\n \"lint\": \"eslint --report-unused-disable-directives --max-warnings 0\",\n \"prepack\": \"npm run build\",\n \"postversion\": \"git push --follow-tags\"\n },\n \"devDependencies\": {\n \"@babel/core\": \"^7.28.6\",\n \"@babel/preset-react\": \"^7.10.4\",\n \"@emotion/react\": \"^11.10.4\",\n \"@emotion/styled\": \"^11.14.1\",\n \"@eslint/js\": \"^9.39.2\",\n \"@fal-works/esbuild-plugin-global-externals\": \"^2.1.2\",\n \"@jbrowse/core\": \"^4.1.3\",\n \"@jbrowse/mobx-state-tree\": \"^5.0.2\",\n \"@jbrowse/plugin-data-management\": \"^4.1.3\",\n \"@jbrowse/plugin-linear-genome-view\": \"^4.1.3\",\n \"@mui/material\": \"^7.3.7\",\n \"@mui/system\": \"^7.3.7\",\n \"@mui/x-data-grid\": \"^8.26.0\",\n \"@types/d3-array\": \"^3.2.1\",\n \"@types/d3-hierarchy\": \"^3.1.7\",\n \"@types/node\": \"^25.1.0\",\n \"@types/react\": \"^19.2.10\",\n \"esbuild\": \"^0.27.2\",\n \"eslint\": \"^9.39.2\",\n \"eslint-plugin-import\": \"^2.31.0\",\n \"eslint-plugin-unicorn\": \"^62.0.0\",\n \"mobx\": \"^6.0.0\",\n \"mobx-react\": \"^9.0.1\",\n \"prettier\": \"^3.8.1\",\n \"pretty-bytes\": \"^7.0.0\",\n \"react\": \"^19.2.4\",\n \"react-dom\": \"^19.2.4\",\n \"rimraf\": \"^6.1.2\",\n \"rxjs\": \"^7.8.1\",\n \"serve\": \"^14.2.0\",\n \"typescript\": \"^5.1.6\",\n \"typescript-eslint\": \"^8.54.0\"\n },\n \"publishConfig\": {\n \"access\": \"public\"\n }\n}\n"],
5
5
  "mappings": "gpBAAA,IAAAA,EAAAC,EAAA,CAAAC,EAAAC,IAAA,CAAAA,EAAO,QAAU,eAAe,sBAAsB,ICAtD,IAAAC,EAAA,GAAAC,EAAAD,EAAA,aAAAE,EAAA,qBAAAC,EAAA,uBAAAC,IAAA,IAAAC,EAAmB,OCCZ,IAAMC,EAAqB,IAAI,IAStC,SAASC,EAAmBC,EAAmB,CAC7C,GAAM,CAACC,EAAMC,CAAI,EAAIF,EAAU,MAAM,GAAG,EACxC,GAAI,CAACE,EACH,OAEF,IAAMC,EAAQD,EAAK,MAAM,SAAS,EAClC,GAAI,CAACC,GAASA,EAAM,OAAS,EAC3B,OAEF,GAAM,CAACC,EAAIC,EAAIC,CAAE,EAAIH,EACrB,MAAO,mCAAmCF,CAAI,IAAIG,CAAE,IAAIC,CAAE,IAAIC,CAAE,IAAIN,CAAS,cAC/E,CAEA,SAASO,EAAaC,EAAsB,CAE1C,OAAIA,EAAa,WAAW,MAAM,GAAKA,EAAa,WAAW,MAAM,EAC5DT,EAAmBS,CAAY,EAGjC,4BAA4BA,CAAY,cACjD,CAEA,eAAsBC,EACpBC,EACAF,EACA,CACA,IAAMG,EAAMJ,EAAaC,CAAY,EACrC,GAAKG,EAGL,GAAI,CACF,IAAMC,EAAW,MAAM,MAAMD,CAAG,EAChC,GAAI,CAACC,EAAS,GACZ,MAAM,IAAI,MAAM,QAAQA,EAAS,MAAM,SAASD,CAAG,EAAE,EAEvD,IAAME,EAAU,MAAMD,EAAS,KAAK,EAMpC,QAAWE,KAAYD,EAAO,YAAc,CAAC,EACtCH,EAAQ,gBAAgB,IAAII,EAAS,IAAI,GAC5CJ,EAAQ,mBAAmBI,CAAQ,EAKvC,QAAWC,KAASF,EAAO,QAAU,CAAC,EACpCH,EAAQ,aAAaK,CAAK,CAE9B,OAASC,EAAG,CACV,QAAQ,MAAMA,CAAC,EACfN,EAAQ,YAAY,2BAA2BF,CAAY,KAAKQ,CAAC,GAAIA,CAAC,CACxE,QAAE,CACAlB,EAAmB,OAAOU,CAAY,CACxC,CACF,CClEE,IAAAS,EAAW,QFOb,IAAqBC,EAArB,cAA8C,EAAAC,OAAO,CACnD,KAAO,mBACP,QAAUC,EAEV,QAAQC,EAA8B,CACpCA,EAAc,oBACZ,kCACA,CAACC,EAAgBC,IAAS,CACxB,IAAMC,EAAUD,EAAK,QACfE,EAAeF,EAAK,aAGtB,CAACC,GAAW,CAACC,GAKbC,EAAmB,IAAID,CAAY,IAKvCC,EAAmB,IAAID,CAAY,EAGnCE,EAAiBH,EAASC,CAAY,EACxC,CACF,CACF,CAEA,UAAUG,EAA+B,CAAC,CAC5C",
6
6
  "names": ["require_Plugin", "__commonJSMin", "exports", "module", "index_exports", "__export", "HubsViewerPlugin", "fetchAssemblyHub", "fetchingAssemblies", "import_Plugin", "fetchingAssemblies", "getGenArkConfigUrl", "accession", "base", "rest", "match", "b1", "b2", "b3", "getConfigUrl", "assemblyName", "fetchAssemblyHub", "session", "url", "response", "config", "assembly", "track", "e", "version", "HubsViewerPlugin", "Plugin", "version", "pluginManager", "_defaultResult", "args", "session", "assemblyName", "fetchingAssemblies", "fetchAssemblyHub", "_pluginManager"]
7
7
  }
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.0.3",
2
+ "version": "1.0.4",
3
3
  "license": "MIT",
4
4
  "name": "@cmdcolin/jbrowse-plugin-hubs",
5
5
  "keywords": [
@@ -32,6 +32,7 @@
32
32
  "@eslint/js": "^9.39.2",
33
33
  "@fal-works/esbuild-plugin-global-externals": "^2.1.2",
34
34
  "@jbrowse/core": "^4.1.3",
35
+ "@jbrowse/mobx-state-tree": "^5.0.2",
35
36
  "@jbrowse/plugin-data-management": "^4.1.3",
36
37
  "@jbrowse/plugin-linear-genome-view": "^4.1.3",
37
38
  "@mui/material": "^7.3.7",
@@ -47,7 +48,6 @@
47
48
  "eslint-plugin-unicorn": "^62.0.0",
48
49
  "mobx": "^6.0.0",
49
50
  "mobx-react": "^9.0.1",
50
- "mobx-state-tree": "^7.0.2",
51
51
  "prettier": "^3.8.1",
52
52
  "pretty-bytes": "^7.0.0",
53
53
  "react": "^19.2.4",