jl-db-comp 0.1.3__tar.gz → 0.1.5__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 (58) hide show
  1. jl_db_comp-0.1.5/CHANGELOG.md +90 -0
  2. {jl_db_comp-0.1.3 → jl_db_comp-0.1.5}/PKG-INFO +1 -1
  3. {jl_db_comp-0.1.3 → jl_db_comp-0.1.5}/jl_db_comp/_version.py +1 -1
  4. {jl_db_comp-0.1.3 → jl_db_comp-0.1.5}/jl_db_comp/labextension/package.json +2 -2
  5. {jl_db_comp-0.1.3 → jl_db_comp-0.1.5}/jl_db_comp/labextension/schemas/jl_db_comp/package.json.orig +1 -1
  6. jl_db_comp-0.1.3/jl_db_comp/labextension/static/remoteEntry.c2dca7e8d4a2fa348b45.js → jl_db_comp-0.1.5/jl_db_comp/labextension/static/remoteEntry.283418244a7a844d95d3.js +1 -1
  7. {jl_db_comp-0.1.3 → jl_db_comp-0.1.5}/package.json +1 -1
  8. jl_db_comp-0.1.3/CHANGELOG.md +0 -48
  9. {jl_db_comp-0.1.3 → jl_db_comp-0.1.5}/.copier-answers.yml +0 -0
  10. {jl_db_comp-0.1.3 → jl_db_comp-0.1.5}/.gitignore +0 -0
  11. {jl_db_comp-0.1.3 → jl_db_comp-0.1.5}/.prettierignore +0 -0
  12. {jl_db_comp-0.1.3 → jl_db_comp-0.1.5}/.yarnrc.yml +0 -0
  13. {jl_db_comp-0.1.3 → jl_db_comp-0.1.5}/AGENTS.md +0 -0
  14. {jl_db_comp-0.1.3 → jl_db_comp-0.1.5}/CLAUDE.md +0 -0
  15. {jl_db_comp-0.1.3 → jl_db_comp-0.1.5}/GEMINI.md +0 -0
  16. {jl_db_comp-0.1.3 → jl_db_comp-0.1.5}/IMPLEMENTATION.md +0 -0
  17. {jl_db_comp-0.1.3 → jl_db_comp-0.1.5}/LICENSE +0 -0
  18. {jl_db_comp-0.1.3 → jl_db_comp-0.1.5}/QUICKSTART.md +0 -0
  19. {jl_db_comp-0.1.3 → jl_db_comp-0.1.5}/README.md +0 -0
  20. {jl_db_comp-0.1.3 → jl_db_comp-0.1.5}/RELEASE.md +0 -0
  21. {jl_db_comp-0.1.3 → jl_db_comp-0.1.5}/TESTING.md +0 -0
  22. {jl_db_comp-0.1.3 → jl_db_comp-0.1.5}/babel.config.js +0 -0
  23. {jl_db_comp-0.1.3 → jl_db_comp-0.1.5}/conftest.py +0 -0
  24. {jl_db_comp-0.1.3 → jl_db_comp-0.1.5}/connections.ini +0 -0
  25. {jl_db_comp-0.1.3 → jl_db_comp-0.1.5}/install.json +0 -0
  26. {jl_db_comp-0.1.3 → jl_db_comp-0.1.5}/jest.config.js +0 -0
  27. {jl_db_comp-0.1.3 → jl_db_comp-0.1.5}/jl_db_comp/__init__.py +0 -0
  28. {jl_db_comp-0.1.3 → jl_db_comp-0.1.5}/jl_db_comp/connections.py +0 -0
  29. {jl_db_comp-0.1.3 → jl_db_comp-0.1.5}/jl_db_comp/labextension/schemas/jl_db_comp/plugin.json +0 -0
  30. {jl_db_comp-0.1.3 → jl_db_comp-0.1.5}/jl_db_comp/labextension/static/171.d366980651e0db8d978c.js +0 -0
  31. {jl_db_comp-0.1.3 → jl_db_comp-0.1.5}/jl_db_comp/labextension/static/728.6552504d5b9b27551bc5.js +0 -0
  32. {jl_db_comp-0.1.3 → jl_db_comp-0.1.5}/jl_db_comp/labextension/static/style.js +0 -0
  33. {jl_db_comp-0.1.3 → jl_db_comp-0.1.5}/jl_db_comp/labextension/static/third-party-licenses.json +0 -0
  34. {jl_db_comp-0.1.3 → jl_db_comp-0.1.5}/jl_db_comp/routes.py +0 -0
  35. {jl_db_comp-0.1.3 → jl_db_comp-0.1.5}/jl_db_comp/tests/__init__.py +0 -0
  36. {jl_db_comp-0.1.3 → jl_db_comp-0.1.5}/jl_db_comp/tests/test_routes.py +0 -0
  37. {jl_db_comp-0.1.3 → jl_db_comp-0.1.5}/jupyter-config/server-config/jl_db_comp.json +0 -0
  38. {jl_db_comp-0.1.3 → jl_db_comp-0.1.5}/pyproject.toml +0 -0
  39. {jl_db_comp-0.1.3 → jl_db_comp-0.1.5}/schema/plugin.json +0 -0
  40. {jl_db_comp-0.1.3 → jl_db_comp-0.1.5}/setup.py +0 -0
  41. {jl_db_comp-0.1.3 → jl_db_comp-0.1.5}/src/__tests__/jl_db_comp.spec.ts +0 -0
  42. {jl_db_comp-0.1.3 → jl_db_comp-0.1.5}/src/api.ts +0 -0
  43. {jl_db_comp-0.1.3 → jl_db_comp-0.1.5}/src/index.ts +0 -0
  44. {jl_db_comp-0.1.3 → jl_db_comp-0.1.5}/src/provider.ts +0 -0
  45. {jl_db_comp-0.1.3 → jl_db_comp-0.1.5}/src/request.ts +0 -0
  46. {jl_db_comp-0.1.3 → jl_db_comp-0.1.5}/style/base.css +0 -0
  47. {jl_db_comp-0.1.3 → jl_db_comp-0.1.5}/style/index.css +0 -0
  48. {jl_db_comp-0.1.3 → jl_db_comp-0.1.5}/style/index.js +0 -0
  49. {jl_db_comp-0.1.3 → jl_db_comp-0.1.5}/test_nb.ipynb +0 -0
  50. {jl_db_comp-0.1.3 → jl_db_comp-0.1.5}/tsconfig.json +0 -0
  51. {jl_db_comp-0.1.3 → jl_db_comp-0.1.5}/tsconfig.test.json +0 -0
  52. {jl_db_comp-0.1.3 → jl_db_comp-0.1.5}/ui-tests/README.md +0 -0
  53. {jl_db_comp-0.1.3 → jl_db_comp-0.1.5}/ui-tests/jupyter_server_test_config.py +0 -0
  54. {jl_db_comp-0.1.3 → jl_db_comp-0.1.5}/ui-tests/package.json +0 -0
  55. {jl_db_comp-0.1.3 → jl_db_comp-0.1.5}/ui-tests/playwright.config.js +0 -0
  56. {jl_db_comp-0.1.3 → jl_db_comp-0.1.5}/ui-tests/tests/jl_db_comp.spec.ts +0 -0
  57. {jl_db_comp-0.1.3 → jl_db_comp-0.1.5}/ui-tests/yarn.lock +0 -0
  58. {jl_db_comp-0.1.3 → jl_db_comp-0.1.5}/yarn.lock +0 -0
@@ -0,0 +1,90 @@
1
+ # Changelog
2
+
3
+ <!-- <START NEW CHANGELOG ENTRY> -->
4
+
5
+ ## 0.1.5
6
+
7
+ ([Full Changelog](https://github.com/Ben-Herz/jl_db_completer/compare/207a722e9c86de77d7c6cc64ca9ffdeacfbe717c...e66c6da581d00d9d3a90ca8a494e56a1af5e8536))
8
+
9
+ ### Enhancements made
10
+
11
+ - get connectin to db from jupysql connections.ini file instead of env [#2](https://github.com/Ben-Herz/jl_db_completer/pull/2) ([@Ben-Herz](https://github.com/Ben-Herz))
12
+
13
+ ### Other merged PRs
14
+
15
+ - Add JSONB diagnostics logging and troubleshooting endpoint [#1](https://github.com/Ben-Herz/jl_db_completer/pull/1) ([@Ben-Herz](https://github.com/Ben-Herz), [@claude](https://github.com/claude))
16
+
17
+ ### Contributors to this release
18
+
19
+ The following people contributed discussions, new ideas, code and documentation contributions, and review.
20
+ See [our definition of contributors](https://github-activity.readthedocs.io/en/latest/#how-does-this-tool-define-contributions-in-the-reports).
21
+
22
+ ([GitHub contributors page for this release](https://github.com/Ben-Herz/jl_db_completer/graphs/contributors?from=2026-01-02&to=2026-01-16&type=c))
23
+
24
+ @Ben-Herz ([activity](https://github.com/search?q=repo%3ABen-Herz%2Fjl_db_completer+involves%3ABen-Herz+updated%3A2026-01-02..2026-01-16&type=Issues)) | @claude ([activity](https://github.com/search?q=repo%3ABen-Herz%2Fjl_db_completer+involves%3Aclaude+updated%3A2026-01-02..2026-01-16&type=Issues))
25
+
26
+ <!-- <END NEW CHANGELOG ENTRY> -->
27
+
28
+ ## 0.1.4
29
+
30
+ ([Full Changelog](https://github.com/Ben-Herz/jl_db_completer/compare/207a722e9c86de77d7c6cc64ca9ffdeacfbe717c...e66c6da581d00d9d3a90ca8a494e56a1af5e8536))
31
+
32
+ ### Enhancements made
33
+
34
+ - get connectin to db from jupysql connections.ini file instead of env [#2](https://github.com/Ben-Herz/jl_db_completer/pull/2) ([@Ben-Herz](https://github.com/Ben-Herz))
35
+
36
+ ### Other merged PRs
37
+
38
+ - Add JSONB diagnostics logging and troubleshooting endpoint [#1](https://github.com/Ben-Herz/jl_db_completer/pull/1) ([@Ben-Herz](https://github.com/Ben-Herz), [@claude](https://github.com/claude))
39
+
40
+ ### Contributors to this release
41
+
42
+ The following people contributed discussions, new ideas, code and documentation contributions, and review.
43
+ See [our definition of contributors](https://github-activity.readthedocs.io/en/latest/#how-does-this-tool-define-contributions-in-the-reports).
44
+
45
+ ([GitHub contributors page for this release](https://github.com/Ben-Herz/jl_db_completer/graphs/contributors?from=2026-01-02&to=2026-01-16&type=c))
46
+
47
+ @Ben-Herz ([activity](https://github.com/search?q=repo%3ABen-Herz%2Fjl_db_completer+involves%3ABen-Herz+updated%3A2026-01-02..2026-01-16&type=Issues)) | @claude ([activity](https://github.com/search?q=repo%3ABen-Herz%2Fjl_db_completer+involves%3Aclaude+updated%3A2026-01-02..2026-01-16&type=Issues))
48
+
49
+ ## 0.1.3
50
+
51
+ No merged PRs
52
+
53
+ ## 0.1.2
54
+
55
+ No merged PRs
56
+
57
+ ## 0.1.1
58
+
59
+ ([Full Changelog](https://github.com/Ben-Herz/jl_db_completer/compare/v0.1.0...e66c6da581d00d9d3a90ca8a494e56a1af5e8536))
60
+
61
+ ### Enhancements made
62
+
63
+ - get connectin to db from jupysql connections.ini file instead of env [#2](https://github.com/Ben-Herz/jl_db_completer/pull/2) ([@Ben-Herz](https://github.com/Ben-Herz))
64
+
65
+ ### Other merged PRs
66
+
67
+ - Add JSONB diagnostics logging and troubleshooting endpoint [#1](https://github.com/Ben-Herz/jl_db_completer/pull/1) ([@Ben-Herz](https://github.com/Ben-Herz), [@claude](https://github.com/claude))
68
+
69
+ ### Contributors to this release
70
+
71
+ The following people contributed discussions, new ideas, code and documentation contributions, and review.
72
+ See [our definition of contributors](https://github-activity.readthedocs.io/en/latest/#how-does-this-tool-define-contributions-in-the-reports).
73
+
74
+ ([GitHub contributors page for this release](https://github.com/Ben-Herz/jl_db_completer/graphs/contributors?from=2025-12-30&to=2026-01-16&type=c))
75
+
76
+ @Ben-Herz ([activity](https://github.com/search?q=repo%3ABen-Herz%2Fjl_db_completer+involves%3ABen-Herz+updated%3A2025-12-30..2026-01-16&type=Issues)) | @claude ([activity](https://github.com/search?q=repo%3ABen-Herz%2Fjl_db_completer+involves%3Aclaude+updated%3A2025-12-30..2026-01-16&type=Issues))
77
+
78
+ ## 0.1.0 (2024-12-30)
79
+
80
+ Initial release of jl_db_comp - PostgreSQL autocomplete for JupyterLab.
81
+
82
+ ### Features
83
+
84
+ - PostgreSQL table and column name autocompletion
85
+ - Schema-aware completion (supports multiple schemas)
86
+ - JSONB key completion with nested path navigation
87
+ - Automatic FROM clause parsing to suggest columns from referenced tables
88
+ - Client-side caching with 5-minute TTL
89
+ - Configurable database connection via environment variable or JupyterLab settings
90
+ - Smart SQL keyword detection (SELECT, FROM, JOIN, WHERE, etc.)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: jl_db_comp
3
- Version: 0.1.3
3
+ Version: 0.1.5
4
4
  Summary: A JupyterLab extension to complete db queries in jupyterlab notebooks
5
5
  Project-URL: Homepage, https://github.com/Ben-Herz/jl_db_completer
6
6
  Project-URL: Bug Tracker, https://github.com/Ben-Herz/jl_db_completer/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.1.3'
4
+ __version__ = VERSION = '0.1.5'
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jl_db_comp",
3
- "version": "0.1.3",
3
+ "version": "0.1.5",
4
4
  "description": "A JupyterLab extension to complete db queries in jupyterlab notebooks",
5
5
  "keywords": [
6
6
  "jupyter",
@@ -118,7 +118,7 @@
118
118
  "outputDir": "jl_db_comp/labextension",
119
119
  "schemaDir": "schema",
120
120
  "_build": {
121
- "load": "static/remoteEntry.c2dca7e8d4a2fa348b45.js",
121
+ "load": "static/remoteEntry.283418244a7a844d95d3.js",
122
122
  "extension": "./extension",
123
123
  "style": "./style"
124
124
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jl_db_comp",
3
- "version": "0.1.3",
3
+ "version": "0.1.5",
4
4
  "description": "A JupyterLab extension to complete db queries in jupyterlab notebooks",
5
5
  "keywords": [
6
6
  "jupyter",
@@ -1 +1 @@
1
- var _JUPYTERLAB;(()=>{"use strict";var e,r,t,n,o,a,i,u,l,f,s,d,p,c,h,v,b,g,m,y={246(e,r,t){var n={"./index":()=>t.e(171).then(()=>()=>t(171)),"./extension":()=>t.e(171).then(()=>()=>t(171)),"./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+"."+{171:"d366980651e0db8d978c",728:"6552504d5b9b27551bc5"}[e]+".js?v="+{171:"d366980651e0db8d978c",728:"6552504d5b9b27551bc5"}[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="jl_db_comp:",j.l=(t,n,o,a)=>{if(e[t])e[t].push(n);else{var i,u;if(void 0!==o)for(var l=document.getElementsByTagName("script"),f=0;f<l.length;f++){var s=l[f];if(s.getAttribute("src")==t||s.getAttribute("data-webpack")==r+o){i=s;break}}i||(u=!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 d=(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(d.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=d.bind(null,i.onerror),i.onload=d.bind(null,i.onload),u&&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="jl_db_comp",u=[];return"default"===t&&((e,r,t,n)=>{var o=a[e]=a[e]||{},u=o[r];(!u||!u.loaded&&(1!=!u.eager?n:i>u.from))&&(o[r]={get:()=>j.e(171).then(()=>()=>j(171)),from:i,eager:!1})})("jl_db_comp","0.1.3"),e[t]=u.length?Promise.all(u).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],u=(typeof i)[0];if(a!=u)return"o"==a&&"n"==u||"s"==u||"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(u=e[a]))[0]?"-":(n>0?".":"")+(n=2,u);return t}var i=[];for(a=1;a<e.length;a++){var u=e[a];i.push(0===u?"not("+l()+")":1===u?"("+l()+" || "+l()+")":2===u?i.pop()+" "+i.pop():o(u))}return l();function l(){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,u=1,l=!0;;u++,i++){var f,s,d=u<e.length?(typeof e[u])[0]:"";if(i>=r.length||"o"==(s=(typeof(f=r[i]))[0]))return!l||("u"==d?u>n&&!o:""==d!=o);if("u"==s){if(!l||"u"!=d)return!1}else if(l)if(d==s)if(u<=n){if(f!=e[u])return!1}else{if(o?f>e[u]:f<e[u])return!1;f!=e[u]&&(l=!1)}else if("s"!=d&&"n"!=d){if(o||u<=n)return!1;l=!1,u--}else{if(u<=n||s<d!=o)return!1;l=!1}else"s"!=d&&"n"!=d&&(l=!1,u--)}}var p=[],c=p.pop.bind(p);for(i=1;i<e.length;i++){var h=e[i];p.push(1==h?c()|c():2==h?c()&c():h?a(h,r):!c())}return!!c()},i=(e,r)=>e&&j.o(e,r),u=e=>(e.loaded=1,e.get()),l=e=>Object.keys(e).reduce((r,t)=>(e[t].eager&&(r[t]=e[t]),r),{}),f=(e,r,t)=>{var o=t?l(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)+")",d=e=>{throw new Error(e)},p=e=>{"undefined"!=typeof console&&console.warn&&console.warn(e)},c=(e,r,t)=>t?t():((e,r)=>d("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,l)=>{if(!i(r,t))return c(e,t,l);var d=f(r,t,n);return a(o,d)||p(s(r,t,d,o)),u(r[t][d])}),v={},b={206:()=>h("default","@jupyterlab/completer",!1,[1,4,5,2]),428:()=>h("default","@jupyterlab/notebook",!1,[1,4,5,2]),469:()=>h("default","@jupyterlab/coreutils",!1,[1,6,5,2]),490:()=>h("default","@jupyterlab/settingregistry",!1,[1,4,5,2]),830:()=>h("default","@jupyterlab/services",!1,[1,7,5,2])},g={171:[206,428,469,490,830]},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={248: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,u]=t,l=0;if(a.some(r=>0!==e[r])){for(n in i)j.o(i,n)&&(j.m[n]=i[n]);u&&u(j)}for(r&&r(t);l<a.length;l++)o=a[l],j.o(e,o)&&e[o]&&e[o][0](),e[o]=0},t=self.webpackChunkjl_db_comp=self.webpackChunkjl_db_comp||[];t.forEach(r.bind(null,0)),t.push=r.bind(null,t.push.bind(t))})(),j.nc=void 0;var S=j(246);(_JUPYTERLAB=void 0===_JUPYTERLAB?{}:_JUPYTERLAB).jl_db_comp=S})();
1
+ var _JUPYTERLAB;(()=>{"use strict";var e,r,t,n,o,a,i,u,l,f,s,d,p,c,h,v,b,g,m,y={246(e,r,t){var n={"./index":()=>t.e(171).then(()=>()=>t(171)),"./extension":()=>t.e(171).then(()=>()=>t(171)),"./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+"."+{171:"d366980651e0db8d978c",728:"6552504d5b9b27551bc5"}[e]+".js?v="+{171:"d366980651e0db8d978c",728:"6552504d5b9b27551bc5"}[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="jl_db_comp:",j.l=(t,n,o,a)=>{if(e[t])e[t].push(n);else{var i,u;if(void 0!==o)for(var l=document.getElementsByTagName("script"),f=0;f<l.length;f++){var s=l[f];if(s.getAttribute("src")==t||s.getAttribute("data-webpack")==r+o){i=s;break}}i||(u=!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 d=(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(d.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=d.bind(null,i.onerror),i.onload=d.bind(null,i.onload),u&&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="jl_db_comp",u=[];return"default"===t&&((e,r,t,n)=>{var o=a[e]=a[e]||{},u=o[r];(!u||!u.loaded&&(1!=!u.eager?n:i>u.from))&&(o[r]={get:()=>j.e(171).then(()=>()=>j(171)),from:i,eager:!1})})("jl_db_comp","0.1.5"),e[t]=u.length?Promise.all(u).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],u=(typeof i)[0];if(a!=u)return"o"==a&&"n"==u||"s"==u||"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(u=e[a]))[0]?"-":(n>0?".":"")+(n=2,u);return t}var i=[];for(a=1;a<e.length;a++){var u=e[a];i.push(0===u?"not("+l()+")":1===u?"("+l()+" || "+l()+")":2===u?i.pop()+" "+i.pop():o(u))}return l();function l(){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,u=1,l=!0;;u++,i++){var f,s,d=u<e.length?(typeof e[u])[0]:"";if(i>=r.length||"o"==(s=(typeof(f=r[i]))[0]))return!l||("u"==d?u>n&&!o:""==d!=o);if("u"==s){if(!l||"u"!=d)return!1}else if(l)if(d==s)if(u<=n){if(f!=e[u])return!1}else{if(o?f>e[u]:f<e[u])return!1;f!=e[u]&&(l=!1)}else if("s"!=d&&"n"!=d){if(o||u<=n)return!1;l=!1,u--}else{if(u<=n||s<d!=o)return!1;l=!1}else"s"!=d&&"n"!=d&&(l=!1,u--)}}var p=[],c=p.pop.bind(p);for(i=1;i<e.length;i++){var h=e[i];p.push(1==h?c()|c():2==h?c()&c():h?a(h,r):!c())}return!!c()},i=(e,r)=>e&&j.o(e,r),u=e=>(e.loaded=1,e.get()),l=e=>Object.keys(e).reduce((r,t)=>(e[t].eager&&(r[t]=e[t]),r),{}),f=(e,r,t)=>{var o=t?l(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)+")",d=e=>{throw new Error(e)},p=e=>{"undefined"!=typeof console&&console.warn&&console.warn(e)},c=(e,r,t)=>t?t():((e,r)=>d("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,l)=>{if(!i(r,t))return c(e,t,l);var d=f(r,t,n);return a(o,d)||p(s(r,t,d,o)),u(r[t][d])}),v={},b={206:()=>h("default","@jupyterlab/completer",!1,[1,4,5,2]),428:()=>h("default","@jupyterlab/notebook",!1,[1,4,5,2]),469:()=>h("default","@jupyterlab/coreutils",!1,[1,6,5,2]),490:()=>h("default","@jupyterlab/settingregistry",!1,[1,4,5,2]),830:()=>h("default","@jupyterlab/services",!1,[1,7,5,2])},g={171:[206,428,469,490,830]},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={248: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,u]=t,l=0;if(a.some(r=>0!==e[r])){for(n in i)j.o(i,n)&&(j.m[n]=i[n]);u&&u(j)}for(r&&r(t);l<a.length;l++)o=a[l],j.o(e,o)&&e[o]&&e[o][0](),e[o]=0},t=self.webpackChunkjl_db_comp=self.webpackChunkjl_db_comp||[];t.forEach(r.bind(null,0)),t.push=r.bind(null,t.push.bind(t))})(),j.nc=void 0;var S=j(246);(_JUPYTERLAB=void 0===_JUPYTERLAB?{}:_JUPYTERLAB).jl_db_comp=S})();
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jl_db_comp",
3
- "version": "0.1.3",
3
+ "version": "0.1.5",
4
4
  "description": "A JupyterLab extension to complete db queries in jupyterlab notebooks",
5
5
  "keywords": [
6
6
  "jupyter",
@@ -1,48 +0,0 @@
1
- # Changelog
2
-
3
- <!-- <START NEW CHANGELOG ENTRY> -->
4
-
5
- ## 0.1.3
6
-
7
- No merged PRs
8
-
9
- <!-- <END NEW CHANGELOG ENTRY> -->
10
-
11
- ## 0.1.2
12
-
13
- No merged PRs
14
-
15
- ## 0.1.1
16
-
17
- ([Full Changelog](https://github.com/Ben-Herz/jl_db_completer/compare/v0.1.0...e66c6da581d00d9d3a90ca8a494e56a1af5e8536))
18
-
19
- ### Enhancements made
20
-
21
- - get connectin to db from jupysql connections.ini file instead of env [#2](https://github.com/Ben-Herz/jl_db_completer/pull/2) ([@Ben-Herz](https://github.com/Ben-Herz))
22
-
23
- ### Other merged PRs
24
-
25
- - Add JSONB diagnostics logging and troubleshooting endpoint [#1](https://github.com/Ben-Herz/jl_db_completer/pull/1) ([@Ben-Herz](https://github.com/Ben-Herz), [@claude](https://github.com/claude))
26
-
27
- ### Contributors to this release
28
-
29
- The following people contributed discussions, new ideas, code and documentation contributions, and review.
30
- See [our definition of contributors](https://github-activity.readthedocs.io/en/latest/#how-does-this-tool-define-contributions-in-the-reports).
31
-
32
- ([GitHub contributors page for this release](https://github.com/Ben-Herz/jl_db_completer/graphs/contributors?from=2025-12-30&to=2026-01-16&type=c))
33
-
34
- @Ben-Herz ([activity](https://github.com/search?q=repo%3ABen-Herz%2Fjl_db_completer+involves%3ABen-Herz+updated%3A2025-12-30..2026-01-16&type=Issues)) | @claude ([activity](https://github.com/search?q=repo%3ABen-Herz%2Fjl_db_completer+involves%3Aclaude+updated%3A2025-12-30..2026-01-16&type=Issues))
35
-
36
- ## 0.1.0 (2024-12-30)
37
-
38
- Initial release of jl_db_comp - PostgreSQL autocomplete for JupyterLab.
39
-
40
- ### Features
41
-
42
- - PostgreSQL table and column name autocompletion
43
- - Schema-aware completion (supports multiple schemas)
44
- - JSONB key completion with nested path navigation
45
- - Automatic FROM clause parsing to suggest columns from referenced tables
46
- - Client-side caching with 5-minute TTL
47
- - Configurable database connection via environment variable or JupyterLab settings
48
- - Smart SQL keyword detection (SELECT, FROM, JOIN, WHERE, etc.)
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes