juxscript 1.1.385 → 1.1.386

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,4 +1,4 @@
1
- interface StoreOptions {
1
+ interface IndexDbStoreOptions {
2
2
  db: string;
3
3
  table: string;
4
4
  version?: number;
@@ -11,9 +11,9 @@ interface StoreOptions {
11
11
  }>;
12
12
  auto?: boolean;
13
13
  }
14
- declare class Store {
14
+ declare class IndexDb {
15
15
  id: string;
16
- options: StoreOptions;
16
+ options: IndexDbStoreOptions;
17
17
  _element: HTMLElement;
18
18
  private _db;
19
19
  private _value;
@@ -21,7 +21,7 @@ declare class Store {
21
21
  private _error;
22
22
  private _onChange;
23
23
  private _ready;
24
- constructor(id: string, options: StoreOptions);
24
+ constructor(id: string, options: IndexDbStoreOptions);
25
25
  private _open;
26
26
  private _tx;
27
27
  private _notifyChange;
@@ -75,6 +75,6 @@ declare class Store {
75
75
  * }
76
76
  * });
77
77
  */
78
- export declare function indexDb(id: string, options: StoreOptions): Promise<Store>;
79
- export { Store, StoreOptions };
78
+ export declare function indexDb(id: string, options: IndexDbStoreOptions): Promise<IndexDb>;
79
+ export { IndexDb, IndexDbStoreOptions };
80
80
  //# sourceMappingURL=indexDb.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"indexDb.d.ts","sourceRoot":"","sources":["../../lib/components/indexDb.ts"],"names":[],"mappings":"AAGA,UAAU,YAAY;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAChF,IAAI,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,cAAM,KAAK;IACP,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,YAAY,CAAC;IACtB,QAAQ,EAAE,WAAW,CAAC;IACtB,OAAO,CAAC,GAAG,CAA4B;IACvC,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,SAAS,CAAyC;IAC1D,OAAO,CAAC,MAAM,CAAgB;gBAElB,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY;IA0B7C,OAAO,CAAC,KAAK;IAgCb,OAAO,CAAC,GAAG;IAOX,OAAO,CAAC,aAAa;IAoBrB,QAAQ,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI;IAK1C,UAAU,IAAI,WAAW;IACzB,QAAQ,IAAI,GAAG,EAAE;IACjB,UAAU,IAAI,OAAO;IACrB,QAAQ,IAAI,MAAM,GAAG,IAAI;IACzB,QAAQ,IAAI,MAAM;IAElB,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;IAUpB,MAAM,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAwBxB,GAAG,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC;IAWnC,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAiB5D,GAAG,CAAC,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC;IActC,GAAG,CAAC,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC;IActC,OAAO,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBtC,MAAM,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAcvC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAoBtB,OAAO,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAG/B,8DAA8D;IAC9D,IAAI,KAAK,IAAI,GAAG,CAEf;CACJ;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAsB,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,CAU/E;AAED,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC"}
1
+ {"version":3,"file":"indexDb.d.ts","sourceRoot":"","sources":["../../lib/components/indexDb.ts"],"names":[],"mappings":"AAGA,UAAU,mBAAmB;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAChF,IAAI,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,cAAM,OAAO;IACT,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,mBAAmB,CAAC;IAC7B,QAAQ,EAAE,WAAW,CAAC;IACtB,OAAO,CAAC,GAAG,CAA4B;IACvC,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,SAAS,CAAyC;IAC1D,OAAO,CAAC,MAAM,CAAgB;gBAElB,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB;IA0BpD,OAAO,CAAC,KAAK;IAgCb,OAAO,CAAC,GAAG;IAOX,OAAO,CAAC,aAAa;IAoBrB,QAAQ,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI;IAK1C,UAAU,IAAI,WAAW;IACzB,QAAQ,IAAI,GAAG,EAAE;IACjB,UAAU,IAAI,OAAO;IACrB,QAAQ,IAAI,MAAM,GAAG,IAAI;IACzB,QAAQ,IAAI,MAAM;IAElB,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;IAUpB,MAAM,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAwBxB,GAAG,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC;IAWnC,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAiB5D,GAAG,CAAC,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC;IActC,GAAG,CAAC,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC;IActC,OAAO,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBtC,MAAM,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAcvC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAoBtB,OAAO,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAG/B,8DAA8D;IAC9D,IAAI,KAAK,IAAI,GAAG,CAEf;CACJ;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAsB,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC,CAUxF;AAED,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import generateId from '../utils/idgen.js';
2
2
  import { pageState } from '../state/pageState.js';
3
- class Store {
3
+ class IndexDb {
4
4
  constructor(id, options) {
5
5
  this._db = null;
6
6
  this._value = [];
@@ -18,7 +18,7 @@ class Store {
18
18
  // Create a hidden DOM element so pageState can wire events
19
19
  this._element = document.createElement('div');
20
20
  this._element.id = this.id;
21
- this._element.setAttribute('data-jux-store', this.options.table);
21
+ this._element.setAttribute('data-jux-indexdb', this.options.table);
22
22
  this._element.setAttribute('data-count', '0');
23
23
  this._element.setAttribute('data-loading', 'false');
24
24
  this._element.style.display = 'none';
@@ -51,7 +51,7 @@ class Store {
51
51
  };
52
52
  req.onerror = (e) => {
53
53
  this._error = `IndexedDB open failed: ${e.target.error?.message}`;
54
- console.error(`❌ jux.store('${this.id}'):`, this._error);
54
+ console.error(`❌ jux.indexDb('${this.id}'):`, this._error);
55
55
  reject(new Error(this._error));
56
56
  };
57
57
  });
@@ -241,7 +241,7 @@ class Store {
241
241
  * });
242
242
  */
243
243
  export async function indexDb(id, options) {
244
- const s = new Store(id, options);
244
+ const s = new IndexDb(id, options);
245
245
  pageState.__register(s);
246
246
  if (options.auto !== false) {
247
247
  await s.getAll();
@@ -249,5 +249,5 @@ export async function indexDb(id, options) {
249
249
  }
250
250
  return s;
251
251
  }
252
- export { Store };
252
+ export { IndexDb };
253
253
  //# sourceMappingURL=indexDb.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"indexDb.js","sourceRoot":"","sources":["../../lib/components/indexDb.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"indexDb.js","sourceRoot":"","sources":["../../lib/components/indexDb.ts"],"names":[],"mappings":"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"}
@@ -744,6 +744,12 @@ ${bodyContainers} <div id="app"></div>
744
744
  }
745
745
  fs.mkdirSync(this.distDir, { recursive: true });
746
746
 
747
+ // Copy error overlay script to dist
748
+ const errSrc = path.resolve(__dirname, 'errors-client.js');
749
+ if (fs.existsSync(errSrc) && process.env.NODE_ENV !== 'production') {
750
+ fs.copyFileSync(errSrc, path.join(this.distDir, 'jux-errors.js'));
751
+ }
752
+
747
753
  this.copyPublicFolder();
748
754
 
749
755
  const precompileResult = this._validatePrecompile();
@@ -0,0 +1,112 @@
1
+ /**
2
+ * JUX client-side error overlay.
3
+ * Injected as <script src="/jux-errors.js"> in dev mode.
4
+ */
5
+ (function() {
6
+ var MAX_ERRORS = 50;
7
+ var __errors = [];
8
+ var __overlay = null;
9
+ var __list = null;
10
+
11
+ function findSource(stack) {
12
+ var sources = window.__juxSources;
13
+ if (!sources) return null;
14
+ if (stack) {
15
+ var m = stack.match(/renderJux\d+/g);
16
+ if (m) {
17
+ for (var i = 0; i < m.length; i++) {
18
+ for (var key in sources) {
19
+ if (sources[key].functionName === m[i]) return sources[key];
20
+ }
21
+ }
22
+ }
23
+ }
24
+ var keys = Object.keys(sources);
25
+ if (keys.length === 1) return sources[keys[0]];
26
+ for (var k in sources) {
27
+ if (sources[k].functionName) return sources[k];
28
+ }
29
+ return null;
30
+ }
31
+
32
+ function escapeHtml(s) {
33
+ return String(s).replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;');
34
+ }
35
+
36
+ function renderSource(src) {
37
+ if (!src) return '';
38
+ var lines = src.lines || [];
39
+ var html = '<div style="margin-top:8px;padding:8px;background:#111;border:1px solid #333;border-radius:4px;">';
40
+ html += '<div style="color:#ff5555;font-size:12px;margin-bottom:6px;font-weight:bold;">' + escapeHtml(src.file) + '</div>';
41
+ for (var i = 0; i < lines.length; i++) {
42
+ html += '<div style="padding:1px 8px;white-space:pre;">' +
43
+ '<span style="color:#555;display:inline-block;width:32px;text-align:right;margin-right:12px;user-select:none;">' + (i+1) + '</span>' +
44
+ '<span style="color:#ccc;">' + escapeHtml(lines[i]) + '</span></div>';
45
+ }
46
+ html += '</div>';
47
+ return html;
48
+ }
49
+
50
+ function createOverlay() {
51
+ __overlay = document.createElement('div');
52
+ __overlay.setAttribute('style','position:fixed;top:0;left:0;width:100vw;height:100vh;z-index:99999;background:rgba(0,0,0,0.85);color:#f8f8f8;font-family:monospace;font-size:14px;overflow-y:auto;');
53
+ var c = document.createElement('div');
54
+ c.setAttribute('style','max-width:960px;margin:40px auto;padding:24px 32px;border:2px solid #ff5555;border-radius:8px;background:#1a1a1a;');
55
+ var h = document.createElement('div');
56
+ h.setAttribute('style','display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid #333;');
57
+ var t = document.createElement('div');
58
+ t.setAttribute('style','color:#ff5555;font-size:16px;font-weight:bold;');
59
+ t.textContent = 'Runtime Error';
60
+ var btn = document.createElement('button');
61
+ btn.textContent = 'Close';
62
+ btn.setAttribute('style','background:transparent;border:1px solid #555;color:#aaa;padding:4px 12px;border-radius:4px;cursor:pointer;font-family:monospace;font-size:12px;');
63
+ btn.addEventListener('click', function() { __overlay.style.display = 'none'; });
64
+ h.appendChild(t); h.appendChild(btn); c.appendChild(h);
65
+ __list = document.createElement('div');
66
+ c.appendChild(__list); __overlay.appendChild(c);
67
+ document.body.appendChild(__overlay);
68
+ }
69
+
70
+ function addError(type, message, stack) {
71
+ if (__errors.length >= MAX_ERRORS) __errors.shift();
72
+ __errors.push({ type: type, message: message, stack: stack });
73
+ if (!__overlay) createOverlay();
74
+ __overlay.style.display = 'block';
75
+
76
+ var item = document.createElement('div');
77
+ item.setAttribute('style','padding:12px 16px;margin-bottom:8px;background:#222;border-left:3px solid #ff5555;border-radius:4px;');
78
+
79
+ var label = type === 'error' ? 'Error' : type === 'rejection' ? 'Unhandled Rejection' : 'console.error';
80
+ item.innerHTML = '<div style="color:#888;font-size:12px;margin-bottom:4px;">' + label + '</div>' +
81
+ '<div style="color:#ff8888;font-size:14px;white-space:pre-wrap;word-break:break-word;font-weight:bold;">' + escapeHtml(message) + '</div>';
82
+
83
+ var src = findSource(stack);
84
+ if (src) item.innerHTML += renderSource(src);
85
+
86
+ if (stack) {
87
+ var d = document.createElement('details');
88
+ d.setAttribute('style','margin-top:8px;');
89
+ d.innerHTML = '<summary style="cursor:pointer;color:#555;font-size:12px;">Stack trace</summary>' +
90
+ '<pre style="margin:4px 0 0;padding:8px;font-size:12px;color:#666;white-space:pre-wrap;background:#111;border:1px solid #333;border-radius:4px;max-height:200px;overflow-y:auto;">' + escapeHtml(stack) + '</pre>';
91
+ item.appendChild(d);
92
+ }
93
+ __list.appendChild(item);
94
+ }
95
+
96
+ window.onerror = function(msg, src, line, col, err) {
97
+ addError('error', msg, err && err.stack ? err.stack : '');
98
+ };
99
+ window.addEventListener('unhandledrejection', function(e) {
100
+ var r = e.reason;
101
+ addError('rejection', r instanceof Error ? r.message : String(r), r instanceof Error ? r.stack : '');
102
+ });
103
+ var _ce = console.error;
104
+ console.error = function() {
105
+ var msg = Array.prototype.slice.call(arguments).map(function(a) {
106
+ return typeof a === 'object' ? JSON.stringify(a) : String(a);
107
+ }).join(' ');
108
+ addError('console', msg, '');
109
+ _ce.apply(console, arguments);
110
+ };
111
+ window.__juxErrors = { list: function() { return __errors.slice(); }, count: function() { return __errors.length; } };
112
+ })();
@@ -1,126 +1,9 @@
1
1
  /**
2
- * Injectable client-side error overlay.
3
- * Matches renderJuxN in stack traces to show original .jux source.
2
+ * Returns a <script> tag for the error overlay.
3
+ * In production, returns empty string.
4
4
  */
5
5
  export function generateErrorCollector(options = {}) {
6
- const { enabled = true, maxErrors = 50 } = options;
6
+ const { enabled = true } = options;
7
7
  if (!enabled) return '';
8
-
9
- return `
10
- <script>
11
- (function() {
12
- var __errors = [];
13
- var __overlay = null;
14
- var __list = null;
15
-
16
- function findSource(stack) {
17
- var sources = window.__juxSources;
18
- if (!sources) return null;
19
-
20
- // Try matching renderJuxN anywhere in the stack
21
- if (stack) {
22
- var m = stack.match(/renderJux\\d+/g);
23
- if (m) {
24
- for (var i = 0; i < m.length; i++) {
25
- for (var key in sources) {
26
- if (sources[key].functionName === m[i]) return sources[key];
27
- }
28
- }
29
- }
30
- }
31
-
32
- // Fallback: if there's only one source, show it
33
- var keys = Object.keys(sources);
34
- if (keys.length === 1) return sources[keys[0]];
35
-
36
- // Fallback: return first source that has a functionName
37
- for (var k in sources) {
38
- if (sources[k].functionName) return sources[k];
39
- }
40
-
41
- return null;
42
- }
43
-
44
- function escapeHtml(s) {
45
- return String(s).replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;');
46
- }
47
-
48
- function renderSource(src) {
49
- if (!src) return '';
50
- var lines = src.lines || [];
51
- var html = '<div style="margin-top:8px;padding:8px;background:#111;border:1px solid #333;border-radius:4px;">';
52
- html += '<div style="color:#ff5555;font-size:12px;margin-bottom:6px;font-weight:bold;">' + escapeHtml(src.file) + '</div>';
53
- for (var i = 0; i < lines.length; i++) {
54
- html += '<div style="padding:1px 8px;white-space:pre;">' +
55
- '<span style="color:#555;display:inline-block;width:32px;text-align:right;margin-right:12px;user-select:none;">' + (i+1) + '</span>' +
56
- '<span style="color:#ccc;">' + escapeHtml(lines[i]) + '</span></div>';
57
- }
58
- html += '</div>';
59
- return html;
60
- }
61
-
62
- function createOverlay() {
63
- __overlay = document.createElement('div');
64
- __overlay.setAttribute('style','position:fixed;top:0;left:0;width:100vw;height:100vh;z-index:99999;background:rgba(0,0,0,0.85);color:#f8f8f8;font-family:monospace;font-size:14px;overflow-y:auto;');
65
- var c = document.createElement('div');
66
- c.setAttribute('style','max-width:960px;margin:40px auto;padding:24px 32px;border:2px solid #ff5555;border-radius:8px;background:#1a1a1a;');
67
- var h = document.createElement('div');
68
- h.setAttribute('style','display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid #333;');
69
- var t = document.createElement('div');
70
- t.setAttribute('style','color:#ff5555;font-size:16px;font-weight:bold;');
71
- t.textContent = 'Runtime Error';
72
- var btn = document.createElement('button');
73
- btn.textContent = 'Close';
74
- btn.setAttribute('style','background:transparent;border:1px solid #555;color:#aaa;padding:4px 12px;border-radius:4px;cursor:pointer;font-family:monospace;font-size:12px;');
75
- btn.addEventListener('click', function() { __overlay.style.display = 'none'; });
76
- h.appendChild(t); h.appendChild(btn); c.appendChild(h);
77
- __list = document.createElement('div');
78
- c.appendChild(__list); __overlay.appendChild(c);
79
- document.body.appendChild(__overlay);
80
- }
81
-
82
- function addError(type, message, stack) {
83
- if (__errors.length >= ${maxErrors}) __errors.shift();
84
- __errors.push({ type: type, message: message, stack: stack });
85
- if (!__overlay) createOverlay();
86
- __overlay.style.display = 'block';
87
-
88
- var item = document.createElement('div');
89
- item.setAttribute('style','padding:12px 16px;margin-bottom:8px;background:#222;border-left:3px solid #ff5555;border-radius:4px;');
90
-
91
- var label = type === 'error' ? 'Error' : type === 'rejection' ? 'Unhandled Rejection' : 'console.error';
92
- item.innerHTML = '<div style="color:#888;font-size:12px;margin-bottom:4px;">' + label + '</div>' +
93
- '<div style="color:#ff8888;font-size:14px;white-space:pre-wrap;word-break:break-word;font-weight:bold;">' + escapeHtml(message) + '</div>';
94
-
95
- var src = findSource(stack);
96
- if (src) item.innerHTML += renderSource(src);
97
-
98
- if (stack) {
99
- var d = document.createElement('details');
100
- d.setAttribute('style','margin-top:8px;');
101
- d.innerHTML = '<summary style="cursor:pointer;color:#555;font-size:12px;">Stack trace</summary>' +
102
- '<pre style="margin:4px 0 0;padding:8px;font-size:12px;color:#666;white-space:pre-wrap;background:#111;border:1px solid #333;border-radius:4px;max-height:200px;overflow-y:auto;">' + escapeHtml(stack) + '</pre>';
103
- item.appendChild(d);
104
- }
105
- __list.appendChild(item);
106
- }
107
-
108
- window.onerror = function(msg, src, line, col, err) {
109
- addError('error', msg, err && err.stack ? err.stack : '');
110
- };
111
- window.addEventListener('unhandledrejection', function(e) {
112
- var r = e.reason;
113
- addError('rejection', r instanceof Error ? r.message : String(r), r instanceof Error ? r.stack : '');
114
- });
115
- var _ce = console.error;
116
- console.error = function() {
117
- var msg = Array.prototype.slice.call(arguments).map(function(a) {
118
- return typeof a === 'object' ? JSON.stringify(a) : String(a);
119
- }).join(' ');
120
- addError('console', msg, '');
121
- _ce.apply(console, arguments);
122
- };
123
- window.__juxErrors = { list: function() { return __errors.slice(); }, count: function() { return __errors.length; } };
124
- })();
125
- </script>`;
8
+ return `<script src="/jux-errors.js"></script>`;
126
9
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "juxscript",
3
- "version": "1.1.385",
3
+ "version": "1.1.386",
4
4
  "type": "module",
5
5
  "description": "A JavaScript UX authorship platform",
6
6
  "main": "./dist/index.js",
@@ -1,62 +0,0 @@
1
- export interface MenuItem {
2
- id?: string;
3
- label?: string;
4
- path?: string;
5
- icon?: string;
6
- disabled?: boolean;
7
- [key: string]: any;
8
- }
9
- export interface MenuSection {
10
- label?: string;
11
- items: (string | MenuItem)[];
12
- }
13
- export interface MenuOptions {
14
- title?: string;
15
- logo?: string;
16
- footer?: string;
17
- width?: string;
18
- target?: string;
19
- density?: 'dense' | 'normal' | 'inflated';
20
- }
21
- export interface SidebarApi {
22
- id: string;
23
- title(val: string): SidebarApi;
24
- logo(val: string): SidebarApi;
25
- footer(val: string): SidebarApi;
26
- width(val: string): SidebarApi;
27
- target(val: string): SidebarApi;
28
- density(val: 'dense' | 'normal' | 'inflated'): SidebarApi;
29
- section(label: string, items: (string | MenuItem)[]): SidebarApi;
30
- items(items: (string | MenuItem)[]): SidebarApi;
31
- render(): SidebarApi;
32
- addSection(label: string, items: (string | MenuItem)[]): SidebarApi;
33
- setTitle(val: string): SidebarApi;
34
- setFooter(val: string): SidebarApi;
35
- show(): SidebarApi;
36
- hide(): SidebarApi;
37
- toggle(): SidebarApi;
38
- getElement(): HTMLElement | null;
39
- }
40
- /**
41
- * Create a sidebar menu with fluent API.
42
- *
43
- * @example
44
- * // One-liner
45
- * jux.sidebar('m1', ['home', 'about', 'contact'], { title: 'App', target: 'sidebar' });
46
- *
47
- * // Sectioned
48
- * jux.sidebar('m2', [
49
- * { label: 'Main', items: [{ icon: '⌂', label: 'Home', path: '/' }] },
50
- * { label: 'Settings', items: ['/profile', '/security'] },
51
- * ], { title: 'App', density: 'inflated' });
52
- *
53
- * // Fluent chain
54
- * jux.sidebar('m3')
55
- * .title('Dashboard').logo('D').target('sidebar')
56
- * .section('Nav', ['/home', '/about'])
57
- * .section('Admin', ['/settings'])
58
- * .footer('v1.0');
59
- */
60
- export declare function Sidebar(id: string, sections?: (string | MenuSection | MenuItem)[], options?: MenuOptions): SidebarApi;
61
- export declare function sidebar(id: string, sections?: (string | MenuSection | MenuItem)[], options?: MenuOptions): SidebarApi;
62
- //# sourceMappingURL=sidebar.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sidebar.d.ts","sourceRoot":"","sources":["../../lib/components/sidebar.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,QAAQ;IACrB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,CAAC,MAAM,GAAG,QAAQ,CAAC,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,WAAW;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,UAAU,CAAC;CAC7C;AAED,MAAM,WAAW,UAAU;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAAC;IAC/B,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAAC;IAC9B,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAAC;IAChC,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAAC;IAC/B,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAAC;IAChC,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,QAAQ,GAAG,UAAU,GAAG,UAAU,CAAC;IAC1D,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,MAAM,GAAG,QAAQ,CAAC,EAAE,GAAG,UAAU,CAAC;IACjE,KAAK,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,QAAQ,CAAC,EAAE,GAAG,UAAU,CAAC;IAChD,MAAM,IAAI,UAAU,CAAC;IACrB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,MAAM,GAAG,QAAQ,CAAC,EAAE,GAAG,UAAU,CAAC;IACpE,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAAC;IAClC,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAAC;IACnC,IAAI,IAAI,UAAU,CAAC;IACnB,IAAI,IAAI,UAAU,CAAC;IACnB,MAAM,IAAI,UAAU,CAAC;IACrB,UAAU,IAAI,WAAW,GAAG,IAAI,CAAC;CACpC;AAyDD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,UAAU,CAsErH;AAED,wBAAgB,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,UAAU,CAIrH"}
@@ -1,153 +0,0 @@
1
- import { div, span } from './tag.js';
2
- import { nav } from './nav.js';
3
- import { style } from './style.js';
4
- import { pageState } from '../state/pageState.js';
5
- const DENSITY_CONFIG = {
6
- dense: { headerPad: '10px', itemPad: '4px 10px', labelPad: '6px 10px 2px', footerPad: '8px 12px', gap: '0px', fontSize: '12px', iconSize: '13px' },
7
- normal: { headerPad: '16px', itemPad: '8px 12px', labelPad: '8px 12px 4px', footerPad: '12px 16px', gap: '1px', fontSize: '13px', iconSize: '15px' },
8
- inflated: { headerPad: '20px', itemPad: '12px 16px', labelPad: '12px 16px 6px', footerPad: '16px 20px', gap: '4px', fontSize: '14px', iconSize: '17px' }
9
- };
10
- function normalizeItem(menuId, item) {
11
- if (typeof item === 'string') {
12
- const path = item.startsWith('/') ? item : '/' + item;
13
- const seg = path.split('/').filter(Boolean).pop() || 'Home';
14
- return {
15
- id: menuId + '-' + seg.toLowerCase().replace(/[^a-z0-9]/g, '-'),
16
- label: seg.charAt(0).toUpperCase() + seg.slice(1),
17
- path
18
- };
19
- }
20
- return item;
21
- }
22
- function normalizeSections(menuId, input) {
23
- if (!input || !Array.isArray(input) || input.length === 0)
24
- return [];
25
- const isFlat = input.every((i) => typeof i === 'string' || (typeof i === 'object' && !i.items));
26
- if (isFlat)
27
- return [{ items: input.map(i => normalizeItem(menuId, i)) }];
28
- return input.map((s) => {
29
- if (typeof s === 'string')
30
- return { items: [normalizeItem(menuId, s)] };
31
- return { label: s.label, items: (s.items || []).map((i) => normalizeItem(menuId, i)) };
32
- });
33
- }
34
- function injectMenuStyles(density) {
35
- const d = DENSITY_CONFIG;
36
- const css = `
37
- body { margin: 0; }
38
- .jux-sidebar { display:flex; flex-direction:column; min-height:100vh; background:hsl(var(--card)); color:hsl(var(--card-foreground)); border-right:1px solid hsl(var(--border)); font-family:var(--font-sans,system-ui,sans-serif); }
39
- .jux-sidebar-header { display:flex; align-items:center; gap:8px; font-size:14px; font-weight:600; border-bottom:1px solid hsl(var(--border)); }
40
- .jux-sidebar-logo { width:20px; height:20px; border-radius:6px; background:hsl(var(--primary)); display:flex; align-items:center; justify-content:center; color:hsl(var(--primary-foreground)); font-size:11px; font-weight:700; }
41
- .jux-sidebar-label { font-size:11px; font-weight:500; color:hsl(var(--muted-foreground)); text-transform:uppercase; letter-spacing:0.05em; }
42
- .jux-sidebar-footer { margin-top:auto; border-top:1px solid hsl(var(--border)); font-size:11px; color:hsl(var(--muted-foreground)); }
43
- .jux-sidebar-divider { height:1px; background:hsl(var(--border)); margin:4px 8px; }
44
- .jux-nav-item { display:flex; align-items:center; border-radius:var(--radius,6px); font-weight:500; color:hsl(var(--foreground)); cursor:pointer; transition:background 0.15s; user-select:none; text-decoration:none; }
45
- .jux-nav-item:hover { background:hsl(var(--accent)); color:hsl(var(--accent-foreground)); }
46
- .jux-nav-item--active { background:hsl(var(--accent)); color:hsl(var(--accent-foreground)); font-weight:600; }
47
- .jux-nav-item-icon { text-align:center; flex-shrink:0; }
48
- ` + ['dense', 'normal', 'inflated'].map(k => {
49
- const v = d[k];
50
- return `.jux-sidebar--${k} .jux-sidebar-header { padding:${v.headerPad}; }
51
- .jux-sidebar--${k} .jux-sidebar-label { padding:${v.labelPad}; }
52
- .jux-sidebar--${k} .jux-sidebar-footer { padding:${v.footerPad}; }
53
- .jux-sidebar--${k} .jux-nav-item { padding:${v.itemPad}; margin:${v.gap} 0; font-size:${v.fontSize}; gap:${k === 'dense' ? '8px' : k === 'normal' ? '10px' : '12px'}; }
54
- .jux-sidebar--${k} .jux-nav-item-icon { width:${k === 'dense' ? '16px' : k === 'normal' ? '18px' : '20px'}; font-size:${v.iconSize}; }`;
55
- }).join('\n');
56
- style('sidebar-styles', css);
57
- }
58
- /**
59
- * Create a sidebar menu with fluent API.
60
- *
61
- * @example
62
- * // One-liner
63
- * jux.sidebar('m1', ['home', 'about', 'contact'], { title: 'App', target: 'sidebar' });
64
- *
65
- * // Sectioned
66
- * jux.sidebar('m2', [
67
- * { label: 'Main', items: [{ icon: '⌂', label: 'Home', path: '/' }] },
68
- * { label: 'Settings', items: ['/profile', '/security'] },
69
- * ], { title: 'App', density: 'inflated' });
70
- *
71
- * // Fluent chain
72
- * jux.sidebar('m3')
73
- * .title('Dashboard').logo('D').target('sidebar')
74
- * .section('Nav', ['/home', '/about'])
75
- * .section('Admin', ['/settings'])
76
- * .footer('v1.0');
77
- */
78
- export function Sidebar(id, sections, options) {
79
- const opts = options || {};
80
- let _title = opts.title || 'App';
81
- let _logo = opts.logo || _title.charAt(0).toUpperCase();
82
- let _footer = opts.footer || '';
83
- let _width = opts.width || '260px';
84
- let _target = opts.target;
85
- let _density = opts.density || 'normal';
86
- let _sectionCount = 0;
87
- let _rendered = false;
88
- let _footerRendered = false;
89
- function ensureShell() {
90
- if (_rendered)
91
- return;
92
- _rendered = true;
93
- injectMenuStyles(_density);
94
- div(id, { class: 'jux-sidebar jux-sidebar--' + _density, style: 'width:' + _width, target: _target });
95
- div(id + '-header', { class: 'jux-sidebar-header', target: id });
96
- div(id + '-logo', { class: 'jux-sidebar-logo', content: _logo, target: id + '-header' });
97
- span(id + '-title', { content: _title, target: id + '-header' });
98
- }
99
- function renderSection(section) {
100
- ensureShell();
101
- const i = _sectionCount++;
102
- if (i > 0)
103
- div(id + '-divider-' + i, { class: 'jux-sidebar-divider', target: id });
104
- if (section.label)
105
- div(id + '-label-' + i, { class: 'jux-sidebar-label', content: section.label, target: id });
106
- nav(id + '-nav-' + i, { target: id, items: section.items });
107
- }
108
- function renderFooter() {
109
- if (_footerRendered || !_footer)
110
- return;
111
- _footerRendered = true;
112
- div(id + '-footer', { class: 'jux-sidebar-footer', content: _footer, target: id });
113
- }
114
- const api = {
115
- id,
116
- title(val) { _title = val; return api; },
117
- logo(val) { _logo = val; return api; },
118
- footer(val) { _footer = val; if (_rendered)
119
- renderFooter(); return api; },
120
- width(val) { _width = val; return api; },
121
- target(val) { _target = val; return api; },
122
- density(val) { _density = val; return api; },
123
- section(label, items) {
124
- renderSection({ label, items: (items || []).map(i => normalizeItem(id, i)) });
125
- return api;
126
- },
127
- items(items) {
128
- renderSection({ items: (items || []).map(i => normalizeItem(id, i)) });
129
- return api;
130
- },
131
- render() { ensureShell(); renderFooter(); return api; },
132
- addSection(label, items) { return api.section(label, items); },
133
- setTitle(val) { pageState[id + '-title'].content = val; return api; },
134
- setFooter(val) { pageState[id + '-footer'].content = val; return api; },
135
- show() { pageState[id].visible = true; return api; },
136
- hide() { pageState[id].visible = false; return api; },
137
- toggle() { pageState[id].visible = !pageState[id].visible; return api; },
138
- getElement() { return document.getElementById(id); }
139
- };
140
- // Auto-render if sections passed
141
- if (sections && Array.isArray(sections) && sections.length > 0) {
142
- const normalized = normalizeSections(id, sections);
143
- normalized.forEach(renderSection);
144
- renderFooter();
145
- }
146
- return api;
147
- }
148
- export function sidebar(id, sections, options) {
149
- const api = Sidebar(id, sections, options);
150
- pageState.__register(api);
151
- return api;
152
- }
153
- //# sourceMappingURL=sidebar.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sidebar.js","sourceRoot":"","sources":["../../lib/components/sidebar.ts"],"names":[],"mappings":"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"}
@@ -1,78 +0,0 @@
1
- interface StoreOptions {
2
- db: string;
3
- table: string;
4
- version?: number;
5
- keyPath?: string;
6
- autoIncrement?: boolean;
7
- indexes?: Array<{
8
- name: string;
9
- keyPath: string | string[];
10
- unique?: boolean;
11
- }>;
12
- auto?: boolean;
13
- }
14
- declare class Store {
15
- id: string;
16
- options: StoreOptions;
17
- _element: HTMLElement;
18
- private _db;
19
- private _value;
20
- private _loading;
21
- private _error;
22
- private _onChange;
23
- private _ready;
24
- constructor(id: string, options: StoreOptions);
25
- private _open;
26
- private _tx;
27
- private _notifyChange;
28
- onChange(fn: (value: any[]) => void): this;
29
- getElement(): HTMLElement;
30
- getValue(): any[];
31
- getLoading(): boolean;
32
- getError(): string | null;
33
- getCount(): number;
34
- setValue(val: any[]): this;
35
- getAll(): Promise<any[]>;
36
- get(key: IDBValidKey): Promise<any>;
37
- query(indexName: string, value: IDBValidKey): Promise<any[]>;
38
- put(record: any): Promise<IDBValidKey>;
39
- add(record: any): Promise<IDBValidKey>;
40
- putMany(records: any[]): Promise<void>;
41
- delete(key: IDBValidKey): Promise<void>;
42
- clear(): Promise<void>;
43
- refresh(): Promise<any[]>;
44
- }
45
- /**
46
- * Create a reactive IndexedDB store that integrates with pageState.
47
- *
48
- * @example
49
- * // Basic usage
50
- * const todos = await jux.store('todos', { db: 'myapp', table: 'todos' });
51
- * // pageState['todos'].value → [{ id: 1, text: 'Buy milk', done: false }, ...]
52
- *
53
- * // With indexes
54
- * const users = await jux.store('users', {
55
- * db: 'myapp',
56
- * table: 'users',
57
- * indexes: [{ name: 'by_email', keyPath: 'email', unique: true }]
58
- * });
59
- *
60
- * // Write
61
- * await pageState['todos'].add({ text: 'New item', done: false });
62
- * await pageState['todos'].put({ id: 1, text: 'Updated', done: true });
63
- * await pageState['todos'].delete(1);
64
- *
65
- * // Query by index
66
- * const results = await pageState['users'].query('by_email', 'alice@example.com');
67
- *
68
- * // React to changes
69
- * pageState.__watch(() => {
70
- * const items = pageState['todos'].value;
71
- * if (items) {
72
- * pageState['count'].content = `${items.length} items`;
73
- * }
74
- * });
75
- */
76
- export declare function store(id: string, options: StoreOptions): Promise<Store>;
77
- export { Store, StoreOptions };
78
- //# sourceMappingURL=store.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../lib/components/store.ts"],"names":[],"mappings":"AAGA,UAAU,YAAY;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAChF,IAAI,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,cAAM,KAAK;IACP,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,YAAY,CAAC;IACtB,QAAQ,EAAE,WAAW,CAAC;IACtB,OAAO,CAAC,GAAG,CAA4B;IACvC,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,SAAS,CAAyC;IAC1D,OAAO,CAAC,MAAM,CAAgB;gBAElB,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY;IA0B7C,OAAO,CAAC,KAAK;IAgCb,OAAO,CAAC,GAAG;IAOX,OAAO,CAAC,aAAa;IAoBrB,QAAQ,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI;IAK1C,UAAU,IAAI,WAAW;IACzB,QAAQ,IAAI,GAAG,EAAE;IACjB,UAAU,IAAI,OAAO;IACrB,QAAQ,IAAI,MAAM,GAAG,IAAI;IACzB,QAAQ,IAAI,MAAM;IAElB,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;IAUpB,MAAM,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAwBxB,GAAG,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC;IAWnC,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAiB5D,GAAG,CAAC,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC;IActC,GAAG,CAAC,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC;IActC,OAAO,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBtC,MAAM,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAcvC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAoBtB,OAAO,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;CAGlC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAsB,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,CAU7E;AAED,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC"}
@@ -1,249 +0,0 @@
1
- import generateId from '../utils/idgen.js';
2
- import { pageState } from '../state/pageState.js';
3
- class Store {
4
- constructor(id, options) {
5
- this._db = null;
6
- this._value = [];
7
- this._loading = false;
8
- this._error = null;
9
- this._onChange = null;
10
- this.id = id || generateId();
11
- this.options = {
12
- version: 1,
13
- keyPath: 'id',
14
- autoIncrement: true,
15
- auto: true,
16
- ...options
17
- };
18
- // Create a hidden DOM element so pageState can wire events
19
- this._element = document.createElement('div');
20
- this._element.id = this.id;
21
- this._element.setAttribute('data-jux-store', this.options.table);
22
- this._element.setAttribute('data-count', '0');
23
- this._element.setAttribute('data-loading', 'false');
24
- this._element.style.display = 'none';
25
- (document.getElementById('app') || document.body).appendChild(this._element);
26
- this._ready = this._open();
27
- }
28
- // ═══════════════════════════════════════════════════════════
29
- // INTERNAL: Open / ensure DB
30
- // ═══════════════════════════════════════════════════════════
31
- _open() {
32
- return new Promise((resolve, reject) => {
33
- const req = indexedDB.open(this.options.db, this.options.version);
34
- req.onupgradeneeded = (e) => {
35
- const db = e.target.result;
36
- if (!db.objectStoreNames.contains(this.options.table)) {
37
- const store = db.createObjectStore(this.options.table, {
38
- keyPath: this.options.keyPath,
39
- autoIncrement: this.options.autoIncrement
40
- });
41
- if (this.options.indexes) {
42
- for (const idx of this.options.indexes) {
43
- store.createIndex(idx.name, idx.keyPath, { unique: idx.unique ?? false });
44
- }
45
- }
46
- }
47
- };
48
- req.onsuccess = (e) => {
49
- this._db = e.target.result;
50
- resolve();
51
- };
52
- req.onerror = (e) => {
53
- this._error = `IndexedDB open failed: ${e.target.error?.message}`;
54
- console.error(`❌ jux.store('${this.id}'):`, this._error);
55
- reject(new Error(this._error));
56
- };
57
- });
58
- }
59
- _tx(mode) {
60
- if (!this._db)
61
- throw new Error('Database not open');
62
- return this._db
63
- .transaction(this.options.table, mode)
64
- .objectStore(this.options.table);
65
- }
66
- _notifyChange() {
67
- // Update DOM element metadata
68
- this._element.setAttribute('data-count', String(this._value.length));
69
- this._element.setAttribute('data-loading', String(this._loading));
70
- if (this._error) {
71
- this._element.setAttribute('data-error', this._error);
72
- }
73
- else {
74
- this._element.removeAttribute('data-error');
75
- }
76
- if (this._onChange)
77
- this._onChange(this._value);
78
- // Dispatch a real DOM change event — pageState._wireEvent picks this up
79
- this._element.dispatchEvent(new Event('change', { bubbles: false }));
80
- }
81
- // ═══════════════════════════════════════════════════════════
82
- // PAGESTATE INTEGRATION
83
- // ═══════════════════════════════════════════════════════════
84
- onChange(fn) {
85
- this._onChange = fn;
86
- return this;
87
- }
88
- getElement() { return this._element; }
89
- getValue() { return this._value; }
90
- getLoading() { return this._loading; }
91
- getError() { return this._error; }
92
- getCount() { return this._value.length; }
93
- setValue(val) {
94
- this._value = val;
95
- this._notifyChange();
96
- return this;
97
- }
98
- // ═══════════════════════════════════════════════════════════
99
- // READ
100
- // ═══════════════════════════════════════════════════════════
101
- async getAll() {
102
- await this._ready;
103
- this._loading = true;
104
- this._error = null;
105
- return new Promise((resolve, reject) => {
106
- const req = this._tx('readonly').getAll();
107
- req.onsuccess = () => {
108
- this._value = req.result;
109
- this._loading = false;
110
- this._notifyChange();
111
- resolve(this._value);
112
- };
113
- req.onerror = () => {
114
- this._loading = false;
115
- this._error = req.error?.message ?? 'getAll failed';
116
- this._notifyChange();
117
- reject(new Error(this._error));
118
- };
119
- });
120
- }
121
- async get(key) {
122
- await this._ready;
123
- return new Promise((resolve, reject) => {
124
- const req = this._tx('readonly').get(key);
125
- req.onsuccess = () => resolve(req.result ?? null);
126
- req.onerror = () => reject(new Error(req.error?.message ?? 'get failed'));
127
- });
128
- }
129
- async query(indexName, value) {
130
- await this._ready;
131
- return new Promise((resolve, reject) => {
132
- const store = this._tx('readonly');
133
- const index = store.index(indexName);
134
- const req = index.getAll(value);
135
- req.onsuccess = () => resolve(req.result);
136
- req.onerror = () => reject(new Error(req.error?.message ?? 'query failed'));
137
- });
138
- }
139
- // ═══════════════════════════════════════════════════════════
140
- // WRITE
141
- // ═══════════════════════════════════════════════════════════
142
- async put(record) {
143
- await this._ready;
144
- return new Promise((resolve, reject) => {
145
- const req = this._tx('readwrite').put(record);
146
- req.onsuccess = () => {
147
- this.getAll().then(() => resolve(req.result));
148
- };
149
- req.onerror = () => reject(new Error(req.error?.message ?? 'put failed'));
150
- });
151
- }
152
- async add(record) {
153
- await this._ready;
154
- return new Promise((resolve, reject) => {
155
- const req = this._tx('readwrite').add(record);
156
- req.onsuccess = () => {
157
- this.getAll().then(() => resolve(req.result));
158
- };
159
- req.onerror = () => reject(new Error(req.error?.message ?? 'add failed'));
160
- });
161
- }
162
- async putMany(records) {
163
- await this._ready;
164
- return new Promise((resolve, reject) => {
165
- const tx = this._db.transaction(this.options.table, 'readwrite');
166
- const store = tx.objectStore(this.options.table);
167
- for (const record of records) {
168
- store.put(record);
169
- }
170
- tx.oncomplete = () => {
171
- this.getAll().then(() => resolve());
172
- };
173
- tx.onerror = () => reject(new Error(tx.error?.message ?? 'putMany failed'));
174
- });
175
- }
176
- // ═══════════════════════════════════════════════════════════
177
- // DELETE
178
- // ═══════════════════════════════════════════════════════════
179
- async delete(key) {
180
- await this._ready;
181
- return new Promise((resolve, reject) => {
182
- const req = this._tx('readwrite').delete(key);
183
- req.onsuccess = () => {
184
- this.getAll().then(() => resolve());
185
- };
186
- req.onerror = () => reject(new Error(req.error?.message ?? 'delete failed'));
187
- });
188
- }
189
- async clear() {
190
- await this._ready;
191
- return new Promise((resolve, reject) => {
192
- const req = this._tx('readwrite').clear();
193
- req.onsuccess = () => {
194
- this._value = [];
195
- this._notifyChange();
196
- resolve();
197
- };
198
- req.onerror = () => reject(new Error(req.error?.message ?? 'clear failed'));
199
- });
200
- }
201
- // ═══════════════════════════════════════════════════════════
202
- // REFRESH (alias for getAll, matches data.ts pattern)
203
- // ═══════════════════════════════════════════════════════════
204
- async refresh() {
205
- return this.getAll();
206
- }
207
- }
208
- /**
209
- * Create a reactive IndexedDB store that integrates with pageState.
210
- *
211
- * @example
212
- * // Basic usage
213
- * const todos = await jux.store('todos', { db: 'myapp', table: 'todos' });
214
- * // pageState['todos'].value → [{ id: 1, text: 'Buy milk', done: false }, ...]
215
- *
216
- * // With indexes
217
- * const users = await jux.store('users', {
218
- * db: 'myapp',
219
- * table: 'users',
220
- * indexes: [{ name: 'by_email', keyPath: 'email', unique: true }]
221
- * });
222
- *
223
- * // Write
224
- * await pageState['todos'].add({ text: 'New item', done: false });
225
- * await pageState['todos'].put({ id: 1, text: 'Updated', done: true });
226
- * await pageState['todos'].delete(1);
227
- *
228
- * // Query by index
229
- * const results = await pageState['users'].query('by_email', 'alice@example.com');
230
- *
231
- * // React to changes
232
- * pageState.__watch(() => {
233
- * const items = pageState['todos'].value;
234
- * if (items) {
235
- * pageState['count'].content = `${items.length} items`;
236
- * }
237
- * });
238
- */
239
- export async function store(id, options) {
240
- const s = new Store(id, options);
241
- pageState.__register(s);
242
- if (options.auto !== false) {
243
- await s.getAll();
244
- pageState.__register(s);
245
- }
246
- return s;
247
- }
248
- export { Store };
249
- //# sourceMappingURL=store.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../../lib/components/store.ts"],"names":[],"mappings":"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"}