nbgitpuller-jl-interface 0.2.4__tar.gz → 0.3.0__tar.gz

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.
Files changed (53) hide show
  1. nbgitpuller_jl_interface-0.3.0/CHANGELOG.md +56 -0
  2. {nbgitpuller_jl_interface-0.2.4 → nbgitpuller_jl_interface-0.3.0}/PKG-INFO +1 -1
  3. {nbgitpuller_jl_interface-0.2.4 → nbgitpuller_jl_interface-0.3.0}/nbgitpuller_jl_interface/_version.py +1 -1
  4. {nbgitpuller_jl_interface-0.2.4 → nbgitpuller_jl_interface-0.3.0}/nbgitpuller_jl_interface/labextension/package.json +2 -2
  5. {nbgitpuller_jl_interface-0.2.4 → nbgitpuller_jl_interface-0.3.0}/nbgitpuller_jl_interface/labextension/schemas/nbgitpuller-jl-interface/package.json.orig +1 -1
  6. nbgitpuller_jl_interface-0.3.0/nbgitpuller_jl_interface/labextension/static/293.7e24a188a3691a1deaa8.js +1 -0
  7. nbgitpuller_jl_interface-0.2.4/nbgitpuller_jl_interface/labextension/static/remoteEntry.9fc18bb225b134e17c4d.js → nbgitpuller_jl_interface-0.3.0/nbgitpuller_jl_interface/labextension/static/remoteEntry.b250a24d9f9650f8659a.js +1 -1
  8. {nbgitpuller_jl_interface-0.2.4 → nbgitpuller_jl_interface-0.3.0}/package.json +1 -1
  9. {nbgitpuller_jl_interface-0.2.4 → nbgitpuller_jl_interface-0.3.0}/src/index.ts +9 -2
  10. {nbgitpuller_jl_interface-0.2.4 → nbgitpuller_jl_interface-0.3.0}/src/utils.ts +24 -12
  11. nbgitpuller_jl_interface-0.2.4/CHANGELOG.md +0 -22
  12. nbgitpuller_jl_interface-0.2.4/nbgitpuller_jl_interface/labextension/static/293.bece27d6c314a7589472.js +0 -1
  13. {nbgitpuller_jl_interface-0.2.4 → nbgitpuller_jl_interface-0.3.0}/.copier-answers.yml +0 -0
  14. {nbgitpuller_jl_interface-0.2.4 → nbgitpuller_jl_interface-0.3.0}/.gitignore +0 -0
  15. {nbgitpuller_jl_interface-0.2.4 → nbgitpuller_jl_interface-0.3.0}/.prettierignore +0 -0
  16. {nbgitpuller_jl_interface-0.2.4 → nbgitpuller_jl_interface-0.3.0}/.vscode/settings.json +0 -0
  17. {nbgitpuller_jl_interface-0.2.4 → nbgitpuller_jl_interface-0.3.0}/.yarnrc.yml +0 -0
  18. {nbgitpuller_jl_interface-0.2.4 → nbgitpuller_jl_interface-0.3.0}/LICENSE +0 -0
  19. {nbgitpuller_jl_interface-0.2.4 → nbgitpuller_jl_interface-0.3.0}/README.md +0 -0
  20. {nbgitpuller_jl_interface-0.2.4 → nbgitpuller_jl_interface-0.3.0}/RELEASE.md +0 -0
  21. {nbgitpuller_jl_interface-0.2.4 → nbgitpuller_jl_interface-0.3.0}/babel.config.js +0 -0
  22. {nbgitpuller_jl_interface-0.2.4 → nbgitpuller_jl_interface-0.3.0}/conftest.py +0 -0
  23. {nbgitpuller_jl_interface-0.2.4 → nbgitpuller_jl_interface-0.3.0}/install.json +0 -0
  24. {nbgitpuller_jl_interface-0.2.4 → nbgitpuller_jl_interface-0.3.0}/jest.config.js +0 -0
  25. {nbgitpuller_jl_interface-0.2.4 → nbgitpuller_jl_interface-0.3.0}/jupyter-config/server-config/nbgitpuller_jl_interface.json +0 -0
  26. {nbgitpuller_jl_interface-0.2.4 → nbgitpuller_jl_interface-0.3.0}/nbgitpuller_jl_interface/__init__.py +0 -0
  27. {nbgitpuller_jl_interface-0.2.4 → nbgitpuller_jl_interface-0.3.0}/nbgitpuller_jl_interface/labextension/schemas/nbgitpuller-jl-interface/plugin.json +0 -0
  28. {nbgitpuller_jl_interface-0.2.4 → nbgitpuller_jl_interface-0.3.0}/nbgitpuller_jl_interface/labextension/static/728.c80bd4566fc22d8dd093.js +0 -0
  29. {nbgitpuller_jl_interface-0.2.4 → nbgitpuller_jl_interface-0.3.0}/nbgitpuller_jl_interface/labextension/static/style.js +0 -0
  30. {nbgitpuller_jl_interface-0.2.4 → nbgitpuller_jl_interface-0.3.0}/nbgitpuller_jl_interface/labextension/static/third-party-licenses.json +0 -0
  31. {nbgitpuller_jl_interface-0.2.4 → nbgitpuller_jl_interface-0.3.0}/nbgitpuller_jl_interface/routes.py +0 -0
  32. {nbgitpuller_jl_interface-0.2.4 → nbgitpuller_jl_interface-0.3.0}/nbgitpuller_jl_interface/tests/__init__.py +0 -0
  33. {nbgitpuller_jl_interface-0.2.4 → nbgitpuller_jl_interface-0.3.0}/nbgitpuller_jl_interface/tests/test_routes.py +0 -0
  34. {nbgitpuller_jl_interface-0.2.4 → nbgitpuller_jl_interface-0.3.0}/nbgitpuller_jl_interface/tests/test_utils.py +0 -0
  35. {nbgitpuller_jl_interface-0.2.4 → nbgitpuller_jl_interface-0.3.0}/nbgitpuller_jl_interface/utils.py +0 -0
  36. {nbgitpuller_jl_interface-0.2.4 → nbgitpuller_jl_interface-0.3.0}/pyproject.toml +0 -0
  37. {nbgitpuller_jl_interface-0.2.4 → nbgitpuller_jl_interface-0.3.0}/schema/plugin.json +0 -0
  38. {nbgitpuller_jl_interface-0.2.4 → nbgitpuller_jl_interface-0.3.0}/setup.py +0 -0
  39. {nbgitpuller_jl_interface-0.2.4 → nbgitpuller_jl_interface-0.3.0}/src/__tests__/nbgitpuller_jb_interface.spec.ts +0 -0
  40. {nbgitpuller_jl_interface-0.2.4 → nbgitpuller_jl_interface-0.3.0}/src/request.ts +0 -0
  41. {nbgitpuller_jl_interface-0.2.4 → nbgitpuller_jl_interface-0.3.0}/style/base.css +0 -0
  42. {nbgitpuller_jl_interface-0.2.4 → nbgitpuller_jl_interface-0.3.0}/style/index.css +0 -0
  43. {nbgitpuller_jl_interface-0.2.4 → nbgitpuller_jl_interface-0.3.0}/style/index.js +0 -0
  44. {nbgitpuller_jl_interface-0.2.4 → nbgitpuller_jl_interface-0.3.0}/style/tmp_logo.svg +0 -0
  45. {nbgitpuller_jl_interface-0.2.4 → nbgitpuller_jl_interface-0.3.0}/tsconfig.json +0 -0
  46. {nbgitpuller_jl_interface-0.2.4 → nbgitpuller_jl_interface-0.3.0}/tsconfig.test.json +0 -0
  47. {nbgitpuller_jl_interface-0.2.4 → nbgitpuller_jl_interface-0.3.0}/ui-tests/README.md +0 -0
  48. {nbgitpuller_jl_interface-0.2.4 → nbgitpuller_jl_interface-0.3.0}/ui-tests/jupyter_server_test_config.py +0 -0
  49. {nbgitpuller_jl_interface-0.2.4 → nbgitpuller_jl_interface-0.3.0}/ui-tests/package.json +0 -0
  50. {nbgitpuller_jl_interface-0.2.4 → nbgitpuller_jl_interface-0.3.0}/ui-tests/playwright.config.js +0 -0
  51. {nbgitpuller_jl_interface-0.2.4 → nbgitpuller_jl_interface-0.3.0}/ui-tests/tests/nbgitpuller_jl_interface.spec.ts +0 -0
  52. {nbgitpuller_jl_interface-0.2.4 → nbgitpuller_jl_interface-0.3.0}/ui-tests/yarn.lock +0 -0
  53. {nbgitpuller_jl_interface-0.2.4 → nbgitpuller_jl_interface-0.3.0}/yarn.lock +0 -0
@@ -0,0 +1,56 @@
1
+ # Changelog
2
+
3
+ <!-- <START NEW CHANGELOG ENTRY> -->
4
+
5
+ ## 0.3.0
6
+
7
+ ([Full Changelog](https://github.com/ASFOpenSARlab/nbgitpuller-jl-interface/compare/v0.2.5...eab8732c960fecc43d3cda8560330cc3b692a5bf))
8
+
9
+ ### Bugs fixed
10
+
11
+ - Make compatable with jupyterhub environment [#4](https://github.com/ASFOpenSARlab/nbgitpuller-jl-interface/pull/4) ([@segallagher](https://github.com/segallagher), [@dgpalmieri](https://github.com/dgpalmieri))
12
+
13
+ ### Contributors to this release
14
+
15
+ The following people contributed discussions, new ideas, code and documentation contributions, and review.
16
+ See [our definition of contributors](https://github-activity.readthedocs.io/en/latest/use/#how-does-this-tool-define-contributions-in-the-reports).
17
+
18
+ ([GitHub contributors page for this release](https://github.com/ASFOpenSARlab/nbgitpuller-jl-interface/graphs/contributors?from=2026-04-09&to=2026-04-10&type=c))
19
+
20
+ @dgpalmieri ([activity](https://github.com/search?q=repo%3AASFOpenSARlab%2Fnbgitpuller-jl-interface+involves%3Adgpalmieri+updated%3A2026-04-09..2026-04-10&type=Issues)) | @segallagher ([activity](https://github.com/search?q=repo%3AASFOpenSARlab%2Fnbgitpuller-jl-interface+involves%3Asegallagher+updated%3A2026-04-09..2026-04-10&type=Issues))
21
+
22
+ <!-- <END NEW CHANGELOG ENTRY> -->
23
+
24
+ ## 0.2.5
25
+
26
+ ([Full Changelog](https://github.com/ASFOpenSARlab/nbgitpuller-jl-interface/compare/v0.2.4...acb905136fd3b05e07da5e1c3da4ee88bec7aba9))
27
+
28
+ ### Bugs fixed
29
+
30
+ - Sg/fix url for deployment [#3](https://github.com/ASFOpenSARlab/nbgitpuller-jl-interface/pull/3) ([@segallagher](https://github.com/segallagher), [@emlundell](https://github.com/emlundell))
31
+
32
+ ### Contributors to this release
33
+
34
+ The following people contributed discussions, new ideas, code and documentation contributions, and review.
35
+ See [our definition of contributors](https://github-activity.readthedocs.io/en/latest/use/#how-does-this-tool-define-contributions-in-the-reports).
36
+
37
+ ([GitHub contributors page for this release](https://github.com/ASFOpenSARlab/nbgitpuller-jl-interface/graphs/contributors?from=2026-04-07&to=2026-04-09&type=c))
38
+
39
+ @emlundell ([activity](https://github.com/search?q=repo%3AASFOpenSARlab%2Fnbgitpuller-jl-interface+involves%3Aemlundell+updated%3A2026-04-07..2026-04-09&type=Issues)) | @segallagher ([activity](https://github.com/search?q=repo%3AASFOpenSARlab%2Fnbgitpuller-jl-interface+involves%3Asegallagher+updated%3A2026-04-07..2026-04-09&type=Issues))
40
+
41
+ ## 0.2.4
42
+
43
+ ([Full Changelog](https://github.com/ASFOpenSARlab/nbgitpuller-jl-interface/compare/v0.2.1...fa249abe827af836d7aa2ac0a870c4d30eff516e))
44
+
45
+ ### Enhancements made
46
+
47
+ - Update Functionality to be functional [#2](https://github.com/ASFOpenSARlab/nbgitpuller-jl-interface/pull/2) ([@segallagher](https://github.com/segallagher), [@dgpalmieri](https://github.com/dgpalmieri))
48
+
49
+ ### Contributors to this release
50
+
51
+ The following people contributed discussions, new ideas, code and documentation contributions, and review.
52
+ See [our definition of contributors](https://github-activity.readthedocs.io/en/latest/use/#how-does-this-tool-define-contributions-in-the-reports).
53
+
54
+ ([GitHub contributors page for this release](https://github.com/ASFOpenSARlab/nbgitpuller-jl-interface/graphs/contributors?from=2026-04-06&to=2026-04-07&type=c))
55
+
56
+ @dgpalmieri ([activity](https://github.com/search?q=repo%3AASFOpenSARlab%2Fnbgitpuller-jl-interface+involves%3Adgpalmieri+updated%3A2026-04-06..2026-04-07&type=Issues)) | @segallagher ([activity](https://github.com/search?q=repo%3AASFOpenSARlab%2Fnbgitpuller-jl-interface+involves%3Asegallagher+updated%3A2026-04-06..2026-04-07&type=Issues))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: nbgitpuller_jl_interface
3
- Version: 0.2.4
3
+ Version: 0.3.0
4
4
  Summary: A human interface with nbgitpuller in JupyterBook
5
5
  Project-URL: Homepage, https://github.com/ASFOpenSARlab/nbgitpuller-jl-interface
6
6
  Project-URL: Bug Tracker, https://github.com/ASFOpenSARlab/nbgitpuller-jl-interface/issues
@@ -1,4 +1,4 @@
1
1
  # This file is auto-generated by Hatchling. As such, do not:
2
2
  # - modify
3
3
  # - track in version control e.g. be sure to add to .gitignore
4
- __version__ = VERSION = '0.2.4'
4
+ __version__ = VERSION = '0.3.0'
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nbgitpuller-jl-interface",
3
- "version": "0.2.4",
3
+ "version": "0.3.0",
4
4
  "description": "A human interface with nbgitpuller in JupyterBook",
5
5
  "keywords": [
6
6
  "jupyter",
@@ -117,7 +117,7 @@
117
117
  "outputDir": "nbgitpuller_jl_interface/labextension",
118
118
  "schemaDir": "schema",
119
119
  "_build": {
120
- "load": "static/remoteEntry.9fc18bb225b134e17c4d.js",
120
+ "load": "static/remoteEntry.b250a24d9f9650f8659a.js",
121
121
  "extension": "./extension",
122
122
  "style": "./style"
123
123
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nbgitpuller-jl-interface",
3
- "version": "0.2.4",
3
+ "version": "0.3.0",
4
4
  "description": "A human interface with nbgitpuller in JupyterBook",
5
5
  "keywords": [
6
6
  "jupyter",
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunknbgitpuller_jl_interface=self.webpackChunknbgitpuller_jl_interface||[]).push([[293],{293(t,e,n){n.r(e),n.d(e,{default:()=>b,getJupyterAppInstance:()=>g});var o=n(813),r=n(778),i=n(53),a=n(41);const s="nbgitpuller-jl-interface-update-btn";let l,c=!1;async function p(t){const e=await async function(t){var e;let n=0,o=0;for(const r of t){const t=r.repoUrl,i=r.branch,s=r.destPath,l=a.PageConfig.getBaseUrl(),c=a.URLExt.join(l,"nbgitpuller-jl-interface","update-check"),p=null===(e=document.cookie.split(";").find(t=>t.startsWith("_xsrf=")))||void 0===e?void 0:e.split("=")[1],u=await fetch(c,{method:"POST",headers:{"Content-Type":"application/json","X-XSRFToken":null!=p?p:""},body:JSON.stringify({repositoryUrl:t,repositoryBranch:i,destination:s})}),d=await u.json();0!==d.returncode?o+=1:d.updatefound&&(n+=1)}return{response:{numToBeUpdated:n,numWithErrors:o},statuscode:0}}(t);if(0===e.statuscode){const n=e.response;let o="";n.numToBeUpdated+n.numWithErrors?(n.numToBeUpdated&&(o+=`${n.numToBeUpdated} notebooks awaiting updates\n`),n.numWithErrors&&(o+=`${n.numWithErrors} notebooks with errors`)):o=`${t.length} Notebooks up to date`;const r=await async function(t,e,n){const o=document.getElementById(s);if(!o)return{error:"Unable to find nbgitpuller widget",returncode:1};let r;function i(t,e){return`\n <div class="lm-Widget jp-ToolbarButton nbgitpuller-jl-interface-wrapper"\n title="${t}">\n <jp-button class="nbgitpuller-jl-interface-update-btn jp-ToolbarButtonComponent">\n ${e}\n </jp-button>\n </div>`}return r=t?'<p><span class="success">◉</span> Up to Date</p>':'<p><span class="failure blink">◉</span> Update Notebooks</p>',o.innerHTML=i(e,r),o.addEventListener("click",async()=>{if(c)return;c=!0;o.innerHTML=i("Updating Notebooks...",'<p><span class="lds-dual-ring"></span> Updating</p>');const t=await async function(t){var e;const n=a.PageConfig.getBaseUrl(),o=a.URLExt.join(n,"nbgitpuller-jl-interface","gitpuller"),r=null===(e=document.cookie.split(";").find(t=>t.startsWith("_xsrf=")))||void 0===e?void 0:e.split("=")[1],i=[];for(const e of t){const t=e.repoUrl,n=e.branch,a=e.destPath,s=await fetch(o,{method:"POST",headers:{"Content-Type":"application/json","X-XSRFToken":null!=r?r:""},body:JSON.stringify({repositoryUrl:t,repositoryBranch:n,destination:a})}),l=await s.json();0!==l.returncode&&i.push({repo:t,reason:l.error})}return i}(n);if(await p(n),0!==t.length){let e="Failed to update the following notebooks: \n";for(const n of t)e+=`${n.repo}`;console.log(e),alert(e)}c=!1}),{error:"",returncode:0}}(n.numToBeUpdated+n.numWithErrors===0,o,t);0!==r.returncode&&console.error(r)}}var u=n(726);let d=null;function g(t){if(!d&&t&&(d=t),!d)throw new Error("App instance has not been initialized yet");return d}const f={id:"nbgitpuller-jl-interface:plugin",description:"A human interface with nbgitpuller in JupyterBook",autoStart:!0,optional:[],requires:[o.ILabShell,r.ICommandPalette,u.ISettingRegistry,o.JupyterFrontEnd.IPaths],activate:(t,e,n,o,a)=>{o?(Promise.all([t.restored,o.load(f.id)]).then(async([,e])=>{async function n(e){e.get("reloadWidget").composite&&(await async function(t,e){const n=e.get("repos").composite,o=e.get("rank").composite,a=(0,i.find)(t.shell.widgets("top"),t=>t.id===s);a&&a.dispose();const l=new r.ToolbarButton({className:"nbgitpuller-jl-interface-update-btn",label:"◉ Initializing",tooltip:"Initializing nbgitpuller"});l.id=s,l.addClass("nbgitpuller-jl-interface-wrapper"),t.shell.add(l,"top",{rank:o}),await new Promise(t=>setTimeout(t,1e3)),await p(n),console.log("nbgitpuller-jl-interface settings loaded")}(t,e),await async function(t){const e=t.get("repos").composite,n=t.get("probeInterval").composite;clearInterval(l),l=setInterval(async()=>{await p(e)},n)}(e),await e.set("reloadWidget",!1))}await e.set("reloadWidget",!0),n(e),e.changed.connect(n),console.log("JupyterLab extension nbgitpuller-jl-interface is fully operational!")}).catch(t=>{console.error(`Something went wrong...${t}`)}),console.log("JupyterLab extension nbgitpuller-jl-interface is activated!")):console.log("Settings not found. nbgitpuller-jl-interface cannot be established.")}},b=f}}]);
@@ -1 +1 @@
1
- var _JUPYTERLAB;(()=>{"use strict";var e,r,t,n,o,a,i,l,u,f,s,p,c,d,h,v,b,g,m,y={234(e,r,t){var n={"./index":()=>t.e(293).then(()=>()=>t(293)),"./extension":()=>t.e(293).then(()=>()=>t(293)),"./style":()=>t.e(728).then(()=>()=>t(728))},o=(e,r)=>(t.R=r,r=t.o(n,e)?n[e]():Promise.resolve().then(()=>{throw new Error('Module "'+e+'" does not exist in container.')}),t.R=void 0,r),a=(e,r)=>{if(t.S){var n="default",o=t.S[n];if(o&&o!==e)throw new Error("Container initialization failed as it has already been initialized with a different share scope");return t.S[n]=e,t.I(n,r)}};t.d(r,{get:()=>o,init:()=>a})}},w={};function j(e){var r=w[e];if(void 0!==r)return r.exports;var t=w[e]={id:e,exports:{}};return y[e](t,t.exports,j),t.exports}j.m=y,j.c=w,j.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return j.d(r,{a:r}),r},j.d=(e,r)=>{for(var t in r)j.o(r,t)&&!j.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},j.f={},j.e=e=>Promise.all(Object.keys(j.f).reduce((r,t)=>(j.f[t](e,r),r),[])),j.u=e=>e+"."+{293:"bece27d6c314a7589472",728:"c80bd4566fc22d8dd093"}[e]+".js?v="+{293:"bece27d6c314a7589472",728:"c80bd4566fc22d8dd093"}[e],j.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),j.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),e={},r="nbgitpuller-jl-interface:",j.l=(t,n,o,a)=>{if(e[t])e[t].push(n);else{var i,l;if(void 0!==o)for(var u=document.getElementsByTagName("script"),f=0;f<u.length;f++){var s=u[f];if(s.getAttribute("src")==t||s.getAttribute("data-webpack")==r+o){i=s;break}}i||(l=!0,(i=document.createElement("script")).charset="utf-8",j.nc&&i.setAttribute("nonce",j.nc),i.setAttribute("data-webpack",r+o),i.src=t),e[t]=[n];var p=(r,n)=>{i.onerror=i.onload=null,clearTimeout(c);var o=e[t];if(delete e[t],i.parentNode&&i.parentNode.removeChild(i),o&&o.forEach(e=>e(n)),r)return r(n)},c=setTimeout(p.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=p.bind(null,i.onerror),i.onload=p.bind(null,i.onload),l&&document.head.appendChild(i)}},j.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{j.S={};var e={},r={};j.I=(t,n)=>{n||(n=[]);var o=r[t];if(o||(o=r[t]={}),!(n.indexOf(o)>=0)){if(n.push(o),e[t])return e[t];j.o(j.S,t)||(j.S[t]={});var a=j.S[t],i="nbgitpuller-jl-interface",l=[];return"default"===t&&((e,r,t,n)=>{var o=a[e]=a[e]||{},l=o[r];(!l||!l.loaded&&(1!=!l.eager?n:i>l.from))&&(o[r]={get:()=>j.e(293).then(()=>()=>j(293)),from:i,eager:!1})})("nbgitpuller-jl-interface","0.2.4"),e[t]=l.length?Promise.all(l).then(()=>e[t]=1):1}}})(),(()=>{var e;j.g.importScripts&&(e=j.g.location+"");var r=j.g.document;if(!e&&r&&(r.currentScript&&"SCRIPT"===r.currentScript.tagName.toUpperCase()&&(e=r.currentScript.src),!e)){var t=r.getElementsByTagName("script");if(t.length)for(var n=t.length-1;n>-1&&(!e||!/^http(s?):/.test(e));)e=t[n--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),j.p=e})(),t=e=>{var r=e=>e.split(".").map(e=>+e==e?+e:e),t=/^([^-+]+)?(?:-([^+]+))?(?:\+(.+))?$/.exec(e),n=t[1]?r(t[1]):[];return t[2]&&(n.length++,n.push.apply(n,r(t[2]))),t[3]&&(n.push([]),n.push.apply(n,r(t[3]))),n},n=(e,r)=>{e=t(e),r=t(r);for(var n=0;;){if(n>=e.length)return n<r.length&&"u"!=(typeof r[n])[0];var o=e[n],a=(typeof o)[0];if(n>=r.length)return"u"==a;var i=r[n],l=(typeof i)[0];if(a!=l)return"o"==a&&"n"==l||"s"==l||"u"==a;if("o"!=a&&"u"!=a&&o!=i)return o<i;n++}},o=e=>{var r=e[0],t="";if(1===e.length)return"*";if(r+.5){t+=0==r?">=":-1==r?"<":1==r?"^":2==r?"~":r>0?"=":"!=";for(var n=1,a=1;a<e.length;a++)n--,t+="u"==(typeof(l=e[a]))[0]?"-":(n>0?".":"")+(n=2,l);return t}var i=[];for(a=1;a<e.length;a++){var l=e[a];i.push(0===l?"not("+u()+")":1===l?"("+u()+" || "+u()+")":2===l?i.pop()+" "+i.pop():o(l))}return u();function u(){return i.pop().replace(/^\((.+)\)$/,"$1")}},a=(e,r)=>{if(0 in e){r=t(r);var n=e[0],o=n<0;o&&(n=-n-1);for(var i=0,l=1,u=!0;;l++,i++){var f,s,p=l<e.length?(typeof e[l])[0]:"";if(i>=r.length||"o"==(s=(typeof(f=r[i]))[0]))return!u||("u"==p?l>n&&!o:""==p!=o);if("u"==s){if(!u||"u"!=p)return!1}else if(u)if(p==s)if(l<=n){if(f!=e[l])return!1}else{if(o?f>e[l]:f<e[l])return!1;f!=e[l]&&(u=!1)}else if("s"!=p&&"n"!=p){if(o||l<=n)return!1;u=!1,l--}else{if(l<=n||s<p!=o)return!1;u=!1}else"s"!=p&&"n"!=p&&(u=!1,l--)}}var c=[],d=c.pop.bind(c);for(i=1;i<e.length;i++){var h=e[i];c.push(1==h?d()|d():2==h?d()&d():h?a(h,r):!d())}return!!d()},i=(e,r)=>e&&j.o(e,r),l=e=>(e.loaded=1,e.get()),u=e=>Object.keys(e).reduce((r,t)=>(e[t].eager&&(r[t]=e[t]),r),{}),f=(e,r,t)=>{var o=t?u(e[r]):e[r];return Object.keys(o).reduce((e,r)=>!e||!o[e].loaded&&n(e,r)?r:e,0)},s=(e,r,t,n)=>"Unsatisfied version "+t+" from "+(t&&e[r][t].from)+" of shared singleton module "+r+" (required "+o(n)+")",p=e=>{throw new Error(e)},c=e=>{"undefined"!=typeof console&&console.warn&&console.warn(e)},d=(e,r,t)=>t?t():((e,r)=>p("Shared module "+r+" doesn't exist in shared scope "+e))(e,r),h=(e=>function(r,t,n,o,a){var i=j.I(r);return i&&i.then&&!n?i.then(e.bind(e,r,j.S[r],t,!1,o,a)):e(r,j.S[r],t,n,o,a)})((e,r,t,n,o,u)=>{if(!i(r,t))return d(e,t,u);var p=f(r,t,n);return a(o,p)||c(s(r,t,p,o)),l(r[t][p])}),v={},b={53:()=>h("default","@lumino/algorithm",!1,[1,2,0,0]),726:()=>h("default","@jupyterlab/settingregistry",!1,[1,4,5,6]),778:()=>h("default","@jupyterlab/apputils",!1,[1,4,6,6]),813:()=>h("default","@jupyterlab/application",!1,[1,4,5,6])},g={293:[53,726,778,813]},m={},j.f.consumes=(e,r)=>{j.o(g,e)&&g[e].forEach(e=>{if(j.o(v,e))return r.push(v[e]);if(!m[e]){var t=r=>{v[e]=0,j.m[e]=t=>{delete j.c[e],t.exports=r()}};m[e]=!0;var n=r=>{delete v[e],j.m[e]=t=>{throw delete j.c[e],r}};try{var o=b[e]();o.then?r.push(v[e]=o.then(t).catch(n)):t(o)}catch(e){n(e)}}})},(()=>{var e={34:0};j.f.j=(r,t)=>{var n=j.o(e,r)?e[r]:void 0;if(0!==n)if(n)t.push(n[2]);else{var o=new Promise((t,o)=>n=e[r]=[t,o]);t.push(n[2]=o);var a=j.p+j.u(r),i=new Error;j.l(a,t=>{if(j.o(e,r)&&(0!==(n=e[r])&&(e[r]=void 0),n)){var o=t&&("load"===t.type?"missing":t.type),a=t&&t.target&&t.target.src;i.message="Loading chunk "+r+" failed.\n("+o+": "+a+")",i.name="ChunkLoadError",i.type=o,i.request=a,n[1](i)}},"chunk-"+r,r)}};var r=(r,t)=>{var n,o,[a,i,l]=t,u=0;if(a.some(r=>0!==e[r])){for(n in i)j.o(i,n)&&(j.m[n]=i[n]);l&&l(j)}for(r&&r(t);u<a.length;u++)o=a[u],j.o(e,o)&&e[o]&&e[o][0](),e[o]=0},t=self.webpackChunknbgitpuller_jl_interface=self.webpackChunknbgitpuller_jl_interface||[];t.forEach(r.bind(null,0)),t.push=r.bind(null,t.push.bind(t))})(),j.nc=void 0;var S=j(234);(_JUPYTERLAB=void 0===_JUPYTERLAB?{}:_JUPYTERLAB)["nbgitpuller-jl-interface"]=S})();
1
+ var _JUPYTERLAB;(()=>{"use strict";var e,r,t,n,o,a,i,l,u,f,s,c,p,d,h,v,g,b,m,y={234(e,r,t){var n={"./index":()=>t.e(293).then(()=>()=>t(293)),"./extension":()=>t.e(293).then(()=>()=>t(293)),"./style":()=>t.e(728).then(()=>()=>t(728))},o=(e,r)=>(t.R=r,r=t.o(n,e)?n[e]():Promise.resolve().then(()=>{throw new Error('Module "'+e+'" does not exist in container.')}),t.R=void 0,r),a=(e,r)=>{if(t.S){var n="default",o=t.S[n];if(o&&o!==e)throw new Error("Container initialization failed as it has already been initialized with a different share scope");return t.S[n]=e,t.I(n,r)}};t.d(r,{get:()=>o,init:()=>a})}},w={};function j(e){var r=w[e];if(void 0!==r)return r.exports;var t=w[e]={id:e,exports:{}};return y[e](t,t.exports,j),t.exports}j.m=y,j.c=w,j.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return j.d(r,{a:r}),r},j.d=(e,r)=>{for(var t in r)j.o(r,t)&&!j.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},j.f={},j.e=e=>Promise.all(Object.keys(j.f).reduce((r,t)=>(j.f[t](e,r),r),[])),j.u=e=>e+"."+{293:"7e24a188a3691a1deaa8",728:"c80bd4566fc22d8dd093"}[e]+".js?v="+{293:"7e24a188a3691a1deaa8",728:"c80bd4566fc22d8dd093"}[e],j.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),j.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),e={},r="nbgitpuller-jl-interface:",j.l=(t,n,o,a)=>{if(e[t])e[t].push(n);else{var i,l;if(void 0!==o)for(var u=document.getElementsByTagName("script"),f=0;f<u.length;f++){var s=u[f];if(s.getAttribute("src")==t||s.getAttribute("data-webpack")==r+o){i=s;break}}i||(l=!0,(i=document.createElement("script")).charset="utf-8",j.nc&&i.setAttribute("nonce",j.nc),i.setAttribute("data-webpack",r+o),i.src=t),e[t]=[n];var c=(r,n)=>{i.onerror=i.onload=null,clearTimeout(p);var o=e[t];if(delete e[t],i.parentNode&&i.parentNode.removeChild(i),o&&o.forEach(e=>e(n)),r)return r(n)},p=setTimeout(c.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=c.bind(null,i.onerror),i.onload=c.bind(null,i.onload),l&&document.head.appendChild(i)}},j.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{j.S={};var e={},r={};j.I=(t,n)=>{n||(n=[]);var o=r[t];if(o||(o=r[t]={}),!(n.indexOf(o)>=0)){if(n.push(o),e[t])return e[t];j.o(j.S,t)||(j.S[t]={});var a=j.S[t],i="nbgitpuller-jl-interface",l=[];return"default"===t&&((e,r,t,n)=>{var o=a[e]=a[e]||{},l=o[r];(!l||!l.loaded&&(1!=!l.eager?n:i>l.from))&&(o[r]={get:()=>j.e(293).then(()=>()=>j(293)),from:i,eager:!1})})("nbgitpuller-jl-interface","0.3.0"),e[t]=l.length?Promise.all(l).then(()=>e[t]=1):1}}})(),(()=>{var e;j.g.importScripts&&(e=j.g.location+"");var r=j.g.document;if(!e&&r&&(r.currentScript&&"SCRIPT"===r.currentScript.tagName.toUpperCase()&&(e=r.currentScript.src),!e)){var t=r.getElementsByTagName("script");if(t.length)for(var n=t.length-1;n>-1&&(!e||!/^http(s?):/.test(e));)e=t[n--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),j.p=e})(),t=e=>{var r=e=>e.split(".").map(e=>+e==e?+e:e),t=/^([^-+]+)?(?:-([^+]+))?(?:\+(.+))?$/.exec(e),n=t[1]?r(t[1]):[];return t[2]&&(n.length++,n.push.apply(n,r(t[2]))),t[3]&&(n.push([]),n.push.apply(n,r(t[3]))),n},n=(e,r)=>{e=t(e),r=t(r);for(var n=0;;){if(n>=e.length)return n<r.length&&"u"!=(typeof r[n])[0];var o=e[n],a=(typeof o)[0];if(n>=r.length)return"u"==a;var i=r[n],l=(typeof i)[0];if(a!=l)return"o"==a&&"n"==l||"s"==l||"u"==a;if("o"!=a&&"u"!=a&&o!=i)return o<i;n++}},o=e=>{var r=e[0],t="";if(1===e.length)return"*";if(r+.5){t+=0==r?">=":-1==r?"<":1==r?"^":2==r?"~":r>0?"=":"!=";for(var n=1,a=1;a<e.length;a++)n--,t+="u"==(typeof(l=e[a]))[0]?"-":(n>0?".":"")+(n=2,l);return t}var i=[];for(a=1;a<e.length;a++){var l=e[a];i.push(0===l?"not("+u()+")":1===l?"("+u()+" || "+u()+")":2===l?i.pop()+" "+i.pop():o(l))}return u();function u(){return i.pop().replace(/^\((.+)\)$/,"$1")}},a=(e,r)=>{if(0 in e){r=t(r);var n=e[0],o=n<0;o&&(n=-n-1);for(var i=0,l=1,u=!0;;l++,i++){var f,s,c=l<e.length?(typeof e[l])[0]:"";if(i>=r.length||"o"==(s=(typeof(f=r[i]))[0]))return!u||("u"==c?l>n&&!o:""==c!=o);if("u"==s){if(!u||"u"!=c)return!1}else if(u)if(c==s)if(l<=n){if(f!=e[l])return!1}else{if(o?f>e[l]:f<e[l])return!1;f!=e[l]&&(u=!1)}else if("s"!=c&&"n"!=c){if(o||l<=n)return!1;u=!1,l--}else{if(l<=n||s<c!=o)return!1;u=!1}else"s"!=c&&"n"!=c&&(u=!1,l--)}}var p=[],d=p.pop.bind(p);for(i=1;i<e.length;i++){var h=e[i];p.push(1==h?d()|d():2==h?d()&d():h?a(h,r):!d())}return!!d()},i=(e,r)=>e&&j.o(e,r),l=e=>(e.loaded=1,e.get()),u=e=>Object.keys(e).reduce((r,t)=>(e[t].eager&&(r[t]=e[t]),r),{}),f=(e,r,t)=>{var o=t?u(e[r]):e[r];return Object.keys(o).reduce((e,r)=>!e||!o[e].loaded&&n(e,r)?r:e,0)},s=(e,r,t,n)=>"Unsatisfied version "+t+" from "+(t&&e[r][t].from)+" of shared singleton module "+r+" (required "+o(n)+")",c=e=>{throw new Error(e)},p=e=>{"undefined"!=typeof console&&console.warn&&console.warn(e)},d=(e,r,t)=>t?t():((e,r)=>c("Shared module "+r+" doesn't exist in shared scope "+e))(e,r),h=(e=>function(r,t,n,o,a){var i=j.I(r);return i&&i.then&&!n?i.then(e.bind(e,r,j.S[r],t,!1,o,a)):e(r,j.S[r],t,n,o,a)})((e,r,t,n,o,u)=>{if(!i(r,t))return d(e,t,u);var c=f(r,t,n);return a(o,c)||p(s(r,t,c,o)),l(r[t][c])}),v={},g={41:()=>h("default","@jupyterlab/coreutils",!1,[1,6,5,6]),53:()=>h("default","@lumino/algorithm",!1,[1,2,0,0]),726:()=>h("default","@jupyterlab/settingregistry",!1,[1,4,5,6]),778:()=>h("default","@jupyterlab/apputils",!1,[1,4,6,6]),813:()=>h("default","@jupyterlab/application",!1,[1,4,5,6])},b={293:[41,53,726,778,813]},m={},j.f.consumes=(e,r)=>{j.o(b,e)&&b[e].forEach(e=>{if(j.o(v,e))return r.push(v[e]);if(!m[e]){var t=r=>{v[e]=0,j.m[e]=t=>{delete j.c[e],t.exports=r()}};m[e]=!0;var n=r=>{delete v[e],j.m[e]=t=>{throw delete j.c[e],r}};try{var o=g[e]();o.then?r.push(v[e]=o.then(t).catch(n)):t(o)}catch(e){n(e)}}})},(()=>{var e={34:0};j.f.j=(r,t)=>{var n=j.o(e,r)?e[r]:void 0;if(0!==n)if(n)t.push(n[2]);else{var o=new Promise((t,o)=>n=e[r]=[t,o]);t.push(n[2]=o);var a=j.p+j.u(r),i=new Error;j.l(a,t=>{if(j.o(e,r)&&(0!==(n=e[r])&&(e[r]=void 0),n)){var o=t&&("load"===t.type?"missing":t.type),a=t&&t.target&&t.target.src;i.message="Loading chunk "+r+" failed.\n("+o+": "+a+")",i.name="ChunkLoadError",i.type=o,i.request=a,n[1](i)}},"chunk-"+r,r)}};var r=(r,t)=>{var n,o,[a,i,l]=t,u=0;if(a.some(r=>0!==e[r])){for(n in i)j.o(i,n)&&(j.m[n]=i[n]);l&&l(j)}for(r&&r(t);u<a.length;u++)o=a[u],j.o(e,o)&&e[o]&&e[o][0](),e[o]=0},t=self.webpackChunknbgitpuller_jl_interface=self.webpackChunknbgitpuller_jl_interface||[];t.forEach(r.bind(null,0)),t.push=r.bind(null,t.push.bind(t))})(),j.nc=void 0;var S=j(234);(_JUPYTERLAB=void 0===_JUPYTERLAB?{}:_JUPYTERLAB)["nbgitpuller-jl-interface"]=S})();
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nbgitpuller-jl-interface",
3
- "version": "0.2.4",
3
+ "version": "0.3.0",
4
4
  "description": "A human interface with nbgitpuller in JupyterBook",
5
5
  "keywords": [
6
6
  "jupyter",
@@ -31,12 +31,18 @@ const plugin: JupyterFrontEndPlugin<void> = {
31
31
  description: 'A human interface with nbgitpuller in JupyterBook',
32
32
  autoStart: true,
33
33
  optional: [],
34
- requires: [ILabShell, ICommandPalette, ISettingRegistry],
34
+ requires: [
35
+ ILabShell,
36
+ ICommandPalette,
37
+ ISettingRegistry,
38
+ JupyterFrontEnd.IPaths
39
+ ],
35
40
  activate: (
36
41
  app: JupyterFrontEnd,
37
42
  shell: ILabShell,
38
43
  palette: ICommandPalette,
39
- settingRegistry: ISettingRegistry | null
44
+ settingRegistry: ISettingRegistry | null,
45
+ paths: JupyterFrontEnd.IPaths
40
46
  ) => {
41
47
  // Wait for the application to be restored and
42
48
  // for the settings for this plugin to be loaded
@@ -58,6 +64,7 @@ const plugin: JupyterFrontEndPlugin<void> = {
58
64
  ): Promise<void> {
59
65
  const reloadWidget = allSettings.get('reloadWidget')
60
66
  .composite as boolean;
67
+
61
68
  if (reloadWidget) {
62
69
  await nbgitpullerUpdateButton(app, allSettings);
63
70
  await repoUpdateProbe(allSettings);
@@ -6,6 +6,8 @@ import { find } from '@lumino/algorithm';
6
6
 
7
7
  import { ISettingRegistry } from '@jupyterlab/settingregistry';
8
8
 
9
+ import { PageConfig, URLExt } from '@jupyterlab/coreutils';
10
+
9
11
  const widget_id = 'nbgitpuller-jl-interface-update-btn';
10
12
  let intervalID: ReturnType<typeof setInterval>;
11
13
  let currentlyUpdating: boolean = false;
@@ -41,14 +43,18 @@ export async function nbgitpullerUpdateButton(
41
43
  // 1-899 left justified, 900+ right justified
42
44
  app.shell.add(updateReposBtn, 'top', { rank: rank });
43
45
 
46
+ // Wait one second for initial creation timing
47
+ await new Promise(f => setTimeout(f, 1000));
48
+
44
49
  // Check for updates
45
- checkForUpdatesAndSetDisplay(repositories);
50
+ await checkForUpdatesAndSetDisplay(repositories);
46
51
 
47
52
  console.log('nbgitpuller-jl-interface settings loaded');
48
53
  }
49
54
 
50
55
  export async function makeNbgitpullerRequest(repositories: IRepository[]) {
51
- const url = window.location.origin + '/nbgitpuller-jl-interface/gitpuller';
56
+ const baseUrl = PageConfig.getBaseUrl();
57
+ const url = URLExt.join(baseUrl, 'nbgitpuller-jl-interface', 'gitpuller');
52
58
  const xsrfToken = document.cookie
53
59
  .split(';')
54
60
  .find(row => row.startsWith('_xsrf='))
@@ -96,7 +102,7 @@ export async function repoUpdateProbe(
96
102
 
97
103
  // Create interval
98
104
  intervalID = setInterval(async () => {
99
- checkForUpdatesAndSetDisplay(repositories);
105
+ await checkForUpdatesAndSetDisplay(repositories);
100
106
  }, probeInterval);
101
107
  }
102
108
 
@@ -116,8 +122,12 @@ export async function checkForRepoUpdates(
116
122
  const destination = repo['destPath'];
117
123
 
118
124
  // Poll repo for any new commits
119
- const url =
120
- window.location.origin + '/nbgitpuller-jl-interface/update-check';
125
+ const baseUrl = PageConfig.getBaseUrl();
126
+ const url = URLExt.join(
127
+ baseUrl,
128
+ 'nbgitpuller-jl-interface',
129
+ 'update-check'
130
+ );
121
131
  const xsrfToken = document.cookie
122
132
  .split(';')
123
133
  .find(row => row.startsWith('_xsrf='))
@@ -157,6 +167,7 @@ export async function checkForUpdatesAndSetDisplay(
157
167
  ) {
158
168
  // Check for updates
159
169
  const repoUpdates = await checkForRepoUpdates(repositories);
170
+
160
171
  // Update display
161
172
  if (repoUpdates['statuscode'] === 0) {
162
173
  const updateCheckResponse = repoUpdates['response'] as {
@@ -170,14 +181,15 @@ export async function checkForUpdatesAndSetDisplay(
170
181
  updateCheckResponse['numWithErrors']
171
182
  ) {
172
183
  if (updateCheckResponse['numToBeUpdated']) {
173
- tooltip += `${updateCheckResponse['numToBeUpdated']} awaiting updates\n`;
184
+ tooltip += `${updateCheckResponse['numToBeUpdated']} notebooks awaiting updates\n`;
174
185
  }
175
186
  if (updateCheckResponse['numWithErrors']) {
176
- tooltip += `${updateCheckResponse['numWithErrors']} repos with errors`;
187
+ tooltip += `${updateCheckResponse['numWithErrors']} notebooks with errors`;
177
188
  }
178
189
  } else {
179
- tooltip = `${repositories.length} Repos up to date`;
190
+ tooltip = `${repositories.length} Notebooks up to date`;
180
191
  }
192
+
181
193
  const updateDisplayResponse = await setUpdateButtonDisplay(
182
194
  updateCheckResponse['numToBeUpdated'] +
183
195
  updateCheckResponse['numWithErrors'] ===
@@ -207,7 +219,7 @@ export async function setUpdateButtonDisplay(
207
219
  if (upToDate) {
208
220
  labelHTML = '<p><span class="success">◉</span> Up to Date</p>';
209
221
  } else {
210
- labelHTML = '<p><span class="failure blink">◉</span> Update Repos</p>';
222
+ labelHTML = '<p><span class="failure blink">◉</span> Update Notebooks</p>';
211
223
  }
212
224
 
213
225
  function generateWidgetHTML(tooltip: string, labelHTML: string): string {
@@ -230,7 +242,7 @@ export async function setUpdateButtonDisplay(
230
242
  // Set updating flag
231
243
  currentlyUpdating = true;
232
244
  // Update widget to running animation
233
- const pendingTooltip = 'Updating Repos...';
245
+ const pendingTooltip = 'Updating Notebooks...';
234
246
  const pendingLabelHTML =
235
247
  '<p><span class="lds-dual-ring"></span> Updating</p>';
236
248
  widget.innerHTML = generateWidgetHTML(pendingTooltip, pendingLabelHTML);
@@ -239,11 +251,11 @@ export async function setUpdateButtonDisplay(
239
251
  const failed_updates = await makeNbgitpullerRequest(repositories);
240
252
 
241
253
  // Update widget to all updated or pending updates
242
- checkForUpdatesAndSetDisplay(repositories);
254
+ await checkForUpdatesAndSetDisplay(repositories);
243
255
 
244
256
  // Notify users of any failure
245
257
  if (failed_updates.length !== 0) {
246
- let failure_message = 'Failed to update the following repos: \n';
258
+ let failure_message = 'Failed to update the following notebooks: \n';
247
259
  for (const failure of failed_updates) {
248
260
  failure_message += `${failure['repo']}`;
249
261
  }
@@ -1,22 +0,0 @@
1
- # Changelog
2
-
3
- <!-- <START NEW CHANGELOG ENTRY> -->
4
-
5
- ## 0.2.4
6
-
7
- ([Full Changelog](https://github.com/ASFOpenSARlab/nbgitpuller-jl-interface/compare/v0.2.1...fa249abe827af836d7aa2ac0a870c4d30eff516e))
8
-
9
- ### Enhancements made
10
-
11
- - Update Functionality to be functional [#2](https://github.com/ASFOpenSARlab/nbgitpuller-jl-interface/pull/2) ([@segallagher](https://github.com/segallagher), [@dgpalmieri](https://github.com/dgpalmieri))
12
-
13
- ### Contributors to this release
14
-
15
- The following people contributed discussions, new ideas, code and documentation contributions, and review.
16
- See [our definition of contributors](https://github-activity.readthedocs.io/en/latest/use/#how-does-this-tool-define-contributions-in-the-reports).
17
-
18
- ([GitHub contributors page for this release](https://github.com/ASFOpenSARlab/nbgitpuller-jl-interface/graphs/contributors?from=2026-04-06&to=2026-04-07&type=c))
19
-
20
- @dgpalmieri ([activity](https://github.com/search?q=repo%3AASFOpenSARlab%2Fnbgitpuller-jl-interface+involves%3Adgpalmieri+updated%3A2026-04-06..2026-04-07&type=Issues)) | @segallagher ([activity](https://github.com/search?q=repo%3AASFOpenSARlab%2Fnbgitpuller-jl-interface+involves%3Asegallagher+updated%3A2026-04-06..2026-04-07&type=Issues))
21
-
22
- <!-- <END NEW CHANGELOG ENTRY> -->
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunknbgitpuller_jl_interface=self.webpackChunknbgitpuller_jl_interface||[]).push([[293],{293(t,e,n){n.r(e),n.d(e,{default:()=>f,getJupyterAppInstance:()=>d});var o=n(813),r=n(778),i=n(53);const a="nbgitpuller-jl-interface-update-btn";let l,s=!1;async function c(t){const e=await async function(t){var e;let n=0,o=0;for(const r of t){const t=r.repoUrl,i=r.branch,a=r.destPath,l=window.location.origin+"/nbgitpuller-jl-interface/update-check",s=null===(e=document.cookie.split(";").find(t=>t.startsWith("_xsrf=")))||void 0===e?void 0:e.split("=")[1],c=await fetch(l,{method:"POST",headers:{"Content-Type":"application/json","X-XSRFToken":null!=s?s:""},body:JSON.stringify({repositoryUrl:t,repositoryBranch:i,destination:a})}),p=await c.json();0!==p.returncode?o+=1:p.updatefound&&(n+=1)}return{response:{numToBeUpdated:n,numWithErrors:o},statuscode:0}}(t);if(0===e.statuscode){const n=e.response;let o="";n.numToBeUpdated+n.numWithErrors?(n.numToBeUpdated&&(o+=`${n.numToBeUpdated} awaiting updates\n`),n.numWithErrors&&(o+=`${n.numWithErrors} repos with errors`)):o=`${t.length} Repos up to date`;const r=await async function(t,e,n){const o=document.getElementById(a);if(!o)return{error:"Unable to find nbgitpuller widget",returncode:1};let r;function i(t,e){return`\n <div class="lm-Widget jp-ToolbarButton nbgitpuller-jl-interface-wrapper"\n title="${t}">\n <jp-button class="nbgitpuller-jl-interface-update-btn jp-ToolbarButtonComponent">\n ${e}\n </jp-button>\n </div>`}return r=t?'<p><span class="success">◉</span> Up to Date</p>':'<p><span class="failure blink">◉</span> Update Repos</p>',o.innerHTML=i(e,r),o.addEventListener("click",async()=>{if(s)return;s=!0;o.innerHTML=i("Updating Repos...",'<p><span class="lds-dual-ring"></span> Updating</p>');const t=await async function(t){var e;const n=window.location.origin+"/nbgitpuller-jl-interface/gitpuller",o=null===(e=document.cookie.split(";").find(t=>t.startsWith("_xsrf=")))||void 0===e?void 0:e.split("=")[1],r=[];for(const e of t){const t=e.repoUrl,i=e.branch,a=e.destPath,l=await fetch(n,{method:"POST",headers:{"Content-Type":"application/json","X-XSRFToken":null!=o?o:""},body:JSON.stringify({repositoryUrl:t,repositoryBranch:i,destination:a})}),s=await l.json();0!==s.returncode&&r.push({repo:t,reason:s.error})}return r}(n);if(c(n),0!==t.length){let e="Failed to update the following repos: \n";for(const n of t)e+=`${n.repo}`;console.log(e),alert(e)}s=!1}),{error:"",returncode:0}}(n.numToBeUpdated+n.numWithErrors===0,o,t);0!==r.returncode&&console.error(r)}}var p=n(726);let u=null;function d(t){if(!u&&t&&(u=t),!u)throw new Error("App instance has not been initialized yet");return u}const g={id:"nbgitpuller-jl-interface:plugin",description:"A human interface with nbgitpuller in JupyterBook",autoStart:!0,optional:[],requires:[o.ILabShell,r.ICommandPalette,p.ISettingRegistry],activate:(t,e,n,o)=>{o?(Promise.all([t.restored,o.load(g.id)]).then(async([,e])=>{async function n(e){e.get("reloadWidget").composite&&(await async function(t,e){const n=e.get("repos").composite,o=e.get("rank").composite,l=(0,i.find)(t.shell.widgets("top"),t=>t.id===a);l&&l.dispose();const s=new r.ToolbarButton({className:"nbgitpuller-jl-interface-update-btn",label:"◉ Initializing",tooltip:"Initializing nbgitpuller"});s.id=a,s.addClass("nbgitpuller-jl-interface-wrapper"),t.shell.add(s,"top",{rank:o}),c(n),console.log("nbgitpuller-jl-interface settings loaded")}(t,e),await async function(t){const e=t.get("repos").composite,n=t.get("probeInterval").composite;clearInterval(l),l=setInterval(async()=>{c(e)},n)}(e),await e.set("reloadWidget",!1))}await e.set("reloadWidget",!0),n(e),e.changed.connect(n),console.log("JupyterLab extension nbgitpuller-jl-interface is fully operational!")}).catch(t=>{console.error(`Something went wrong...${t}`)}),console.log("JupyterLab extension nbgitpuller-jl-interface is activated!")):console.log("Settings not found. nbgitpuller-jl-interface cannot be established.")}},f=g}}]);