@continuous-excellence/ze-great-dashboard-aws 0.1.15 → 0.1.16

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.
package/dist/cli.js CHANGED
@@ -1,8 +1,14 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  // packages/aws/src/cli.ts
4
- import { readFile as readFile3, writeFile as writeFile3 } from "node:fs/promises";
5
- import { join as join3 } from "node:path";
4
+ import { readFile as readFile4, writeFile as writeFile3 } from "node:fs/promises";
5
+ import { fileURLToPath as fileURLToPath2 } from "node:url";
6
+ import { parse as parse3 } from "yaml";
7
+
8
+ // packages/aws/src/doctor.ts
9
+ import { execFile as execFile2 } from "node:child_process";
10
+ import { readFile as readFile3 } from "node:fs/promises";
11
+ import { promisify as promisify2 } from "node:util";
6
12
  import { parse as parse2 } from "yaml";
7
13
 
8
14
  // packages/aws/src/index.ts
@@ -12,6 +18,722 @@ import { join as join2, resolve as resolve2 } from "node:path";
12
18
  import { fileURLToPath } from "node:url";
13
19
  import { promisify } from "node:util";
14
20
 
21
+ // node_modules/fflate/esm/index.mjs
22
+ import { createRequire } from "module";
23
+ var require2 = createRequire("/");
24
+ var _a;
25
+ var Worker;
26
+ var isMarkedAsUntransferable;
27
+ try {
28
+ _a = require2("worker_threads"), Worker = _a.Worker, isMarkedAsUntransferable = _a.isMarkedAsUntransferable;
29
+ } catch (e) {
30
+ }
31
+ var u8 = Uint8Array;
32
+ var u16 = Uint16Array;
33
+ var i32 = Int32Array;
34
+ var fleb = new u8([
35
+ 0,
36
+ 0,
37
+ 0,
38
+ 0,
39
+ 0,
40
+ 0,
41
+ 0,
42
+ 0,
43
+ 1,
44
+ 1,
45
+ 1,
46
+ 1,
47
+ 2,
48
+ 2,
49
+ 2,
50
+ 2,
51
+ 3,
52
+ 3,
53
+ 3,
54
+ 3,
55
+ 4,
56
+ 4,
57
+ 4,
58
+ 4,
59
+ 5,
60
+ 5,
61
+ 5,
62
+ 5,
63
+ 0,
64
+ /* unused */
65
+ 0,
66
+ 0,
67
+ /* impossible */
68
+ 0
69
+ ]);
70
+ var fdeb = new u8([
71
+ 0,
72
+ 0,
73
+ 0,
74
+ 0,
75
+ 1,
76
+ 1,
77
+ 2,
78
+ 2,
79
+ 3,
80
+ 3,
81
+ 4,
82
+ 4,
83
+ 5,
84
+ 5,
85
+ 6,
86
+ 6,
87
+ 7,
88
+ 7,
89
+ 8,
90
+ 8,
91
+ 9,
92
+ 9,
93
+ 10,
94
+ 10,
95
+ 11,
96
+ 11,
97
+ 12,
98
+ 12,
99
+ 13,
100
+ 13,
101
+ /* unused */
102
+ 0,
103
+ 0
104
+ ]);
105
+ var clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);
106
+ var freb = function(eb, start) {
107
+ var b = new u16(31);
108
+ for (var i2 = 0; i2 < 31; ++i2) {
109
+ b[i2] = start += 1 << eb[i2 - 1];
110
+ }
111
+ var r = new i32(b[30]);
112
+ for (var i2 = 1; i2 < 30; ++i2) {
113
+ for (var j = b[i2]; j < b[i2 + 1]; ++j) {
114
+ r[j] = j - b[i2] << 5 | i2;
115
+ }
116
+ }
117
+ return { b, r };
118
+ };
119
+ var _a = freb(fleb, 2);
120
+ var fl = _a.b;
121
+ var revfl = _a.r;
122
+ fl[28] = 258, revfl[258] = 28;
123
+ var _b = freb(fdeb, 0);
124
+ var fd = _b.b;
125
+ var revfd = _b.r;
126
+ var rev = new u16(32768);
127
+ for (i = 0; i < 32768; ++i) {
128
+ x = (i & 43690) >> 1 | (i & 21845) << 1;
129
+ x = (x & 52428) >> 2 | (x & 13107) << 2;
130
+ x = (x & 61680) >> 4 | (x & 3855) << 4;
131
+ rev[i] = ((x & 65280) >> 8 | (x & 255) << 8) >> 1;
132
+ }
133
+ var x;
134
+ var i;
135
+ var hMap = (function(cd, mb, r) {
136
+ var s = cd.length;
137
+ var i2 = 0;
138
+ var l = new u16(mb);
139
+ for (; i2 < s; ++i2) {
140
+ if (cd[i2])
141
+ ++l[cd[i2] - 1];
142
+ }
143
+ var le = new u16(mb);
144
+ for (i2 = 1; i2 < mb; ++i2) {
145
+ le[i2] = le[i2 - 1] + l[i2 - 1] << 1;
146
+ }
147
+ var co;
148
+ if (r) {
149
+ co = new u16(1 << mb);
150
+ var rvb = 15 - mb;
151
+ for (i2 = 0; i2 < s; ++i2) {
152
+ if (cd[i2]) {
153
+ var sv = i2 << 4 | cd[i2];
154
+ var r_1 = mb - cd[i2];
155
+ var v = le[cd[i2] - 1]++ << r_1;
156
+ for (var m = v | (1 << r_1) - 1; v <= m; ++v) {
157
+ co[rev[v] >> rvb] = sv;
158
+ }
159
+ }
160
+ }
161
+ } else {
162
+ co = new u16(s);
163
+ for (i2 = 0; i2 < s; ++i2) {
164
+ if (cd[i2]) {
165
+ co[i2] = rev[le[cd[i2] - 1]++] >> 15 - cd[i2];
166
+ }
167
+ }
168
+ }
169
+ return co;
170
+ });
171
+ var flt = new u8(288);
172
+ for (i = 0; i < 144; ++i)
173
+ flt[i] = 8;
174
+ var i;
175
+ for (i = 144; i < 256; ++i)
176
+ flt[i] = 9;
177
+ var i;
178
+ for (i = 256; i < 280; ++i)
179
+ flt[i] = 7;
180
+ var i;
181
+ for (i = 280; i < 288; ++i)
182
+ flt[i] = 8;
183
+ var i;
184
+ var fdt = new u8(32);
185
+ for (i = 0; i < 32; ++i)
186
+ fdt[i] = 5;
187
+ var i;
188
+ var flm = /* @__PURE__ */ hMap(flt, 9, 0);
189
+ var fdm = /* @__PURE__ */ hMap(fdt, 5, 0);
190
+ var shft = function(p) {
191
+ return (p + 7) / 8 | 0;
192
+ };
193
+ var slc = function(v, s, e) {
194
+ if (s == null || s < 0)
195
+ s = 0;
196
+ if (e == null || e > v.length)
197
+ e = v.length;
198
+ return new u8(v.subarray(s, e));
199
+ };
200
+ var ec = [
201
+ "unexpected EOF",
202
+ "invalid block type",
203
+ "invalid length/literal",
204
+ "invalid distance",
205
+ "stream finished",
206
+ "no stream handler",
207
+ ,
208
+ // determined by compression function
209
+ "no callback",
210
+ "invalid UTF-8 data",
211
+ "extra field too long",
212
+ "date not in range 1980-2099",
213
+ "filename too long",
214
+ "stream finishing",
215
+ "invalid zip data"
216
+ // determined by unknown compression method
217
+ ];
218
+ var err = function(ind, msg, nt) {
219
+ var e = new Error(msg || ec[ind]);
220
+ e.code = ind;
221
+ if (Error.captureStackTrace)
222
+ Error.captureStackTrace(e, err);
223
+ if (!nt)
224
+ throw e;
225
+ return e;
226
+ };
227
+ var wbits = function(d, p, v) {
228
+ v <<= p & 7;
229
+ var o = p / 8 | 0;
230
+ d[o] |= v;
231
+ d[o + 1] |= v >> 8;
232
+ };
233
+ var wbits16 = function(d, p, v) {
234
+ v <<= p & 7;
235
+ var o = p / 8 | 0;
236
+ d[o] |= v;
237
+ d[o + 1] |= v >> 8;
238
+ d[o + 2] |= v >> 16;
239
+ };
240
+ var hTree = function(d, mb) {
241
+ var t = [];
242
+ for (var i2 = 0; i2 < d.length; ++i2) {
243
+ if (d[i2])
244
+ t.push({ s: i2, f: d[i2] });
245
+ }
246
+ var s = t.length;
247
+ var t2 = t.slice();
248
+ if (!s)
249
+ return { t: et, l: 0 };
250
+ if (s == 1) {
251
+ var v = new u8(t[0].s + 1);
252
+ v[t[0].s] = 1;
253
+ return { t: v, l: 1 };
254
+ }
255
+ t.sort(function(a, b) {
256
+ return a.f - b.f;
257
+ });
258
+ t.push({ s: -1, f: 25001 });
259
+ var l = t[0], r = t[1], i0 = 0, i1 = 1, i22 = 2;
260
+ t[0] = { s: -1, f: l.f + r.f, l, r };
261
+ while (i1 != s - 1) {
262
+ l = t[t[i0].f < t[i22].f ? i0++ : i22++];
263
+ r = t[i0 != i1 && t[i0].f < t[i22].f ? i0++ : i22++];
264
+ t[i1++] = { s: -1, f: l.f + r.f, l, r };
265
+ }
266
+ var maxSym = t2[0].s;
267
+ for (var i2 = 1; i2 < s; ++i2) {
268
+ if (t2[i2].s > maxSym)
269
+ maxSym = t2[i2].s;
270
+ }
271
+ var tr = new u16(maxSym + 1);
272
+ var mbt = ln(t[i1 - 1], tr, 0);
273
+ if (mbt > mb) {
274
+ var i2 = 0, dt = 0;
275
+ var lft = mbt - mb, cst = 1 << lft;
276
+ t2.sort(function(a, b) {
277
+ return tr[b.s] - tr[a.s] || a.f - b.f;
278
+ });
279
+ for (; i2 < s; ++i2) {
280
+ var i2_1 = t2[i2].s;
281
+ if (tr[i2_1] > mb) {
282
+ dt += cst - (1 << mbt - tr[i2_1]);
283
+ tr[i2_1] = mb;
284
+ } else
285
+ break;
286
+ }
287
+ dt >>= lft;
288
+ while (dt > 0) {
289
+ var i2_2 = t2[i2].s;
290
+ if (tr[i2_2] < mb)
291
+ dt -= 1 << mb - tr[i2_2]++ - 1;
292
+ else
293
+ ++i2;
294
+ }
295
+ for (; i2 >= 0 && dt; --i2) {
296
+ var i2_3 = t2[i2].s;
297
+ if (tr[i2_3] == mb) {
298
+ --tr[i2_3];
299
+ ++dt;
300
+ }
301
+ }
302
+ mbt = mb;
303
+ }
304
+ return { t: new u8(tr), l: mbt };
305
+ };
306
+ var ln = function(n, l, d) {
307
+ return n.s == -1 ? Math.max(ln(n.l, l, d + 1), ln(n.r, l, d + 1)) : l[n.s] = d;
308
+ };
309
+ var lc = function(c) {
310
+ var s = c.length;
311
+ while (s && !c[--s])
312
+ ;
313
+ var cl = new u16(++s);
314
+ var cli = 0, cln = c[0], cls = 1;
315
+ var w = function(v) {
316
+ cl[cli++] = v;
317
+ };
318
+ for (var i2 = 1; i2 <= s; ++i2) {
319
+ if (c[i2] == cln && i2 != s)
320
+ ++cls;
321
+ else {
322
+ if (!cln && cls > 2) {
323
+ for (; cls > 138; cls -= 138)
324
+ w(32754);
325
+ if (cls > 2) {
326
+ w(cls > 10 ? cls - 11 << 5 | 28690 : cls - 3 << 5 | 12305);
327
+ cls = 0;
328
+ }
329
+ } else if (cls > 3) {
330
+ w(cln), --cls;
331
+ for (; cls > 6; cls -= 6)
332
+ w(8304);
333
+ if (cls > 2)
334
+ w(cls - 3 << 5 | 8208), cls = 0;
335
+ }
336
+ while (cls--)
337
+ w(cln);
338
+ cls = 1;
339
+ cln = c[i2];
340
+ }
341
+ }
342
+ return { c: cl.subarray(0, cli), n: s };
343
+ };
344
+ var clen = function(cf, cl) {
345
+ var l = 0;
346
+ for (var i2 = 0; i2 < cl.length; ++i2)
347
+ l += cf[i2] * cl[i2];
348
+ return l;
349
+ };
350
+ var wfblk = function(out, pos, dat) {
351
+ var s = dat.length;
352
+ var o = shft(pos + 2);
353
+ out[o] = s & 255;
354
+ out[o + 1] = s >> 8;
355
+ out[o + 2] = out[o] ^ 255;
356
+ out[o + 3] = out[o + 1] ^ 255;
357
+ for (var i2 = 0; i2 < s; ++i2)
358
+ out[o + i2 + 4] = dat[i2];
359
+ return (o + 4 + s) * 8;
360
+ };
361
+ var wblk = function(dat, out, final, syms, lf, df, eb, li, bs, bl, p) {
362
+ wbits(out, p++, final);
363
+ ++lf[256];
364
+ var _a2 = hTree(lf, 15), dlt = _a2.t, mlb = _a2.l;
365
+ var _b2 = hTree(df, 15), ddt = _b2.t, mdb = _b2.l;
366
+ var _c = lc(dlt), lclt = _c.c, nlc = _c.n;
367
+ var _d = lc(ddt), lcdt = _d.c, ndc = _d.n;
368
+ var lcfreq = new u16(19);
369
+ for (var i2 = 0; i2 < lclt.length; ++i2)
370
+ ++lcfreq[lclt[i2] & 31];
371
+ for (var i2 = 0; i2 < lcdt.length; ++i2)
372
+ ++lcfreq[lcdt[i2] & 31];
373
+ var _e = hTree(lcfreq, 7), lct = _e.t, mlcb = _e.l;
374
+ var nlcc = 19;
375
+ for (; nlcc > 4 && !lct[clim[nlcc - 1]]; --nlcc)
376
+ ;
377
+ var flen = bl + 5 << 3;
378
+ var ftlen = clen(lf, flt) + clen(df, fdt) + eb;
379
+ var dtlen = clen(lf, dlt) + clen(df, ddt) + eb + 14 + 3 * nlcc + clen(lcfreq, lct) + 2 * lcfreq[16] + 3 * lcfreq[17] + 7 * lcfreq[18];
380
+ if (bs >= 0 && flen <= ftlen && flen <= dtlen)
381
+ return wfblk(out, p, dat.subarray(bs, bs + bl));
382
+ var lm, ll, dm, dl;
383
+ wbits(out, p, 1 + (dtlen < ftlen)), p += 2;
384
+ if (dtlen < ftlen) {
385
+ lm = hMap(dlt, mlb, 0), ll = dlt, dm = hMap(ddt, mdb, 0), dl = ddt;
386
+ var llm = hMap(lct, mlcb, 0);
387
+ wbits(out, p, nlc - 257);
388
+ wbits(out, p + 5, ndc - 1);
389
+ wbits(out, p + 10, nlcc - 4);
390
+ p += 14;
391
+ for (var i2 = 0; i2 < nlcc; ++i2)
392
+ wbits(out, p + 3 * i2, lct[clim[i2]]);
393
+ p += 3 * nlcc;
394
+ var lcts = [lclt, lcdt];
395
+ for (var it = 0; it < 2; ++it) {
396
+ var clct = lcts[it];
397
+ for (var i2 = 0; i2 < clct.length; ++i2) {
398
+ var len = clct[i2] & 31;
399
+ wbits(out, p, llm[len]), p += lct[len];
400
+ if (len > 15)
401
+ wbits(out, p, clct[i2] >> 5 & 127), p += clct[i2] >> 12;
402
+ }
403
+ }
404
+ } else {
405
+ lm = flm, ll = flt, dm = fdm, dl = fdt;
406
+ }
407
+ for (var i2 = 0; i2 < li; ++i2) {
408
+ var sym = syms[i2];
409
+ if (sym > 255) {
410
+ var len = sym >> 18 & 31;
411
+ wbits16(out, p, lm[len + 257]), p += ll[len + 257];
412
+ if (len > 7)
413
+ wbits(out, p, sym >> 23 & 31), p += fleb[len];
414
+ var dst = sym & 31;
415
+ wbits16(out, p, dm[dst]), p += dl[dst];
416
+ if (dst > 3)
417
+ wbits16(out, p, sym >> 5 & 8191), p += fdeb[dst];
418
+ } else {
419
+ wbits16(out, p, lm[sym]), p += ll[sym];
420
+ }
421
+ }
422
+ wbits16(out, p, lm[256]);
423
+ return p + ll[256];
424
+ };
425
+ var deo = /* @__PURE__ */ new i32([65540, 131080, 131088, 131104, 262176, 1048704, 1048832, 2114560, 2117632]);
426
+ var et = /* @__PURE__ */ new u8(0);
427
+ var dflt = function(dat, lvl, plvl, pre, post, st) {
428
+ var s = st.z || dat.length;
429
+ var o = new u8(pre + s + 5 * (1 + Math.ceil(s / 7e3)) + post);
430
+ var w = o.subarray(pre, o.length - post);
431
+ var lst = st.l;
432
+ var pos = (st.r || 0) & 7;
433
+ if (lvl) {
434
+ if (pos)
435
+ w[0] = st.r >> 3;
436
+ var opt = deo[lvl - 1];
437
+ var n = opt >> 13, c = opt & 8191;
438
+ var msk_1 = (1 << plvl) - 1;
439
+ var prev = st.p || new u16(32768), head = st.h || new u16(msk_1 + 1);
440
+ var bs1_1 = Math.ceil(plvl / 3), bs2_1 = 2 * bs1_1;
441
+ var hsh = function(i3) {
442
+ return (dat[i3] ^ dat[i3 + 1] << bs1_1 ^ dat[i3 + 2] << bs2_1) & msk_1;
443
+ };
444
+ var syms = new i32(25e3);
445
+ var lf = new u16(288), df = new u16(32);
446
+ var lc_1 = 0, eb = 0, i2 = st.i || 0, li = 0, wi = st.w || 0, bs = 0;
447
+ for (; i2 + 2 < s; ++i2) {
448
+ var hv = hsh(i2);
449
+ var imod = i2 & 32767, pimod = head[hv];
450
+ prev[imod] = pimod;
451
+ head[hv] = imod;
452
+ if (wi <= i2) {
453
+ var rem = s - i2;
454
+ if ((lc_1 > 7e3 || li > 24576) && (rem > 423 || !lst)) {
455
+ pos = wblk(dat, w, 0, syms, lf, df, eb, li, bs, i2 - bs, pos);
456
+ li = lc_1 = eb = 0, bs = i2;
457
+ for (var j = 0; j < 286; ++j)
458
+ lf[j] = 0;
459
+ for (var j = 0; j < 30; ++j)
460
+ df[j] = 0;
461
+ }
462
+ var l = 2, d = 0, ch_1 = c, dif = imod - pimod & 32767;
463
+ if (rem > 2 && hv == hsh(i2 - dif)) {
464
+ var maxn = Math.min(n, rem) - 1;
465
+ var maxd = Math.min(32767, i2);
466
+ var ml = Math.min(258, rem);
467
+ while (dif <= maxd && --ch_1 && imod != pimod) {
468
+ if (dat[i2 + l] == dat[i2 + l - dif]) {
469
+ var nl = 0;
470
+ for (; nl < ml && dat[i2 + nl] == dat[i2 + nl - dif]; ++nl)
471
+ ;
472
+ if (nl > l) {
473
+ l = nl, d = dif;
474
+ if (nl > maxn)
475
+ break;
476
+ var mmd = Math.min(dif, nl - 2);
477
+ var md = 0;
478
+ for (var j = 0; j < mmd; ++j) {
479
+ var ti = i2 - dif + j & 32767;
480
+ var pti = prev[ti];
481
+ var cd = ti - pti & 32767;
482
+ if (cd > md)
483
+ md = cd, pimod = ti;
484
+ }
485
+ }
486
+ }
487
+ imod = pimod, pimod = prev[imod];
488
+ dif += imod - pimod & 32767;
489
+ }
490
+ }
491
+ if (d) {
492
+ syms[li++] = 268435456 | revfl[l] << 18 | revfd[d];
493
+ var lin = revfl[l] & 31, din = revfd[d] & 31;
494
+ eb += fleb[lin] + fdeb[din];
495
+ ++lf[257 + lin];
496
+ ++df[din];
497
+ wi = i2 + l;
498
+ ++lc_1;
499
+ } else {
500
+ syms[li++] = dat[i2];
501
+ ++lf[dat[i2]];
502
+ }
503
+ }
504
+ }
505
+ for (i2 = Math.max(i2, wi); i2 < s; ++i2) {
506
+ syms[li++] = dat[i2];
507
+ ++lf[dat[i2]];
508
+ }
509
+ pos = wblk(dat, w, lst, syms, lf, df, eb, li, bs, i2 - bs, pos);
510
+ if (!lst) {
511
+ st.r = pos & 7 | w[pos / 8 | 0] << 3;
512
+ pos -= 7;
513
+ st.h = head, st.p = prev, st.i = i2, st.w = wi;
514
+ }
515
+ } else {
516
+ for (var i2 = st.w || 0; i2 < s + lst; i2 += 65535) {
517
+ var e = i2 + 65535;
518
+ if (e >= s) {
519
+ w[pos / 8 | 0] = lst;
520
+ e = s;
521
+ }
522
+ pos = wfblk(w, pos + 1, dat.subarray(i2, e));
523
+ }
524
+ st.i = s;
525
+ }
526
+ return slc(o, 0, pre + shft(pos) + post);
527
+ };
528
+ var crct = /* @__PURE__ */ (function() {
529
+ var t = new Int32Array(256);
530
+ for (var i2 = 0; i2 < 256; ++i2) {
531
+ var c = i2, k = 9;
532
+ while (--k)
533
+ c = (c & 1 && -306674912) ^ c >>> 1;
534
+ t[i2] = c;
535
+ }
536
+ return t;
537
+ })();
538
+ var crc = function() {
539
+ var c = -1;
540
+ return {
541
+ p: function(d) {
542
+ var cr = c;
543
+ for (var i2 = 0; i2 < d.length; ++i2)
544
+ cr = crct[cr & 255 ^ d[i2]] ^ cr >>> 8;
545
+ c = cr;
546
+ },
547
+ d: function() {
548
+ return ~c;
549
+ }
550
+ };
551
+ };
552
+ var dopt = function(dat, opt, pre, post, st) {
553
+ if (!st) {
554
+ st = { l: 1 };
555
+ if (opt.dictionary) {
556
+ var dict = opt.dictionary.subarray(-32768);
557
+ var newDat = new u8(dict.length + dat.length);
558
+ newDat.set(dict);
559
+ newDat.set(dat, dict.length);
560
+ dat = newDat;
561
+ st.w = dict.length;
562
+ }
563
+ }
564
+ return dflt(dat, opt.level == null ? 6 : opt.level, opt.mem == null ? st.l ? Math.ceil(Math.max(8, Math.min(13, Math.log(dat.length))) * 1.5) : 20 : 12 + opt.mem, pre, post, st);
565
+ };
566
+ var mrg = function(a, b) {
567
+ var o = {};
568
+ for (var k in a)
569
+ o[k] = a[k];
570
+ for (var k in b)
571
+ o[k] = b[k];
572
+ return o;
573
+ };
574
+ var wbytes = function(d, b, v) {
575
+ for (; v; ++b)
576
+ d[b] = v, v >>>= 8;
577
+ };
578
+ function deflateSync(data, opts) {
579
+ return dopt(data, opts || {}, 0, 0);
580
+ }
581
+ var fltn = function(d, p, t, o) {
582
+ for (var k in d) {
583
+ var val = d[k], n = p + k, op = o;
584
+ if (Array.isArray(val))
585
+ op = mrg(o, val[1]), val = val[0];
586
+ if (ArrayBuffer.isView(val))
587
+ t[n] = [val, op];
588
+ else {
589
+ t[n += "/"] = [new u8(0), op];
590
+ fltn(val, n, t, o);
591
+ }
592
+ }
593
+ };
594
+ var te = typeof TextEncoder != "undefined" && /* @__PURE__ */ new TextEncoder();
595
+ var td = typeof TextDecoder != "undefined" && /* @__PURE__ */ new TextDecoder();
596
+ var tds = 0;
597
+ try {
598
+ td.decode(et, { stream: true });
599
+ tds = 1;
600
+ } catch (e) {
601
+ }
602
+ function strToU8(str, latin1) {
603
+ if (latin1) {
604
+ var ar_1 = new u8(str.length);
605
+ for (var i2 = 0; i2 < str.length; ++i2)
606
+ ar_1[i2] = str.charCodeAt(i2);
607
+ return ar_1;
608
+ }
609
+ if (te)
610
+ return te.encode(str);
611
+ var l = str.length;
612
+ var ar = new u8(str.length + (str.length >> 1));
613
+ var ai = 0;
614
+ var w = function(v) {
615
+ ar[ai++] = v;
616
+ };
617
+ for (var i2 = 0; i2 < l; ++i2) {
618
+ if (ai + 5 > ar.length) {
619
+ var n = new u8(ai + 8 + (l - i2 << 1));
620
+ n.set(ar);
621
+ ar = n;
622
+ }
623
+ var c = str.charCodeAt(i2);
624
+ if (c < 128 || latin1)
625
+ w(c);
626
+ else if (c < 2048)
627
+ w(192 | c >> 6), w(128 | c & 63);
628
+ else if (c > 55295 && c < 57344)
629
+ c = 65536 + (c & 1023 << 10) | str.charCodeAt(++i2) & 1023, w(240 | c >> 18), w(128 | c >> 12 & 63), w(128 | c >> 6 & 63), w(128 | c & 63);
630
+ else
631
+ w(224 | c >> 12), w(128 | c >> 6 & 63), w(128 | c & 63);
632
+ }
633
+ return slc(ar, 0, ai);
634
+ }
635
+ var exfl = function(ex) {
636
+ var le = 0;
637
+ if (ex) {
638
+ for (var k in ex) {
639
+ var l = ex[k].length;
640
+ if (l > 65535)
641
+ err(9);
642
+ le += l + 4;
643
+ }
644
+ }
645
+ return le;
646
+ };
647
+ var wzh = function(d, b, f, fn, u, c, ce, co) {
648
+ var fl2 = fn.length, ex = f.extra, col = co && co.length;
649
+ var exl = exfl(ex);
650
+ wbytes(d, b, ce != null ? 33639248 : 67324752), b += 4;
651
+ if (ce != null)
652
+ d[b++] = 20, d[b++] = f.os;
653
+ d[b] = 20, b += 2;
654
+ d[b++] = f.flag << 1 | (c < 0 && 8), d[b++] = u && 8;
655
+ d[b++] = f.compression & 255, d[b++] = f.compression >> 8;
656
+ var dt = new Date(f.mtime == null ? Date.now() : f.mtime), y = dt.getFullYear() - 1980;
657
+ if (y < 0 || y > 119)
658
+ err(10);
659
+ wbytes(d, b, y << 25 | dt.getMonth() + 1 << 21 | dt.getDate() << 16 | dt.getHours() << 11 | dt.getMinutes() << 5 | dt.getSeconds() >> 1), b += 4;
660
+ if (c != -1) {
661
+ wbytes(d, b, f.crc);
662
+ wbytes(d, b + 4, c < 0 ? -c - 2 : c);
663
+ wbytes(d, b + 8, f.size);
664
+ }
665
+ wbytes(d, b + 12, fl2);
666
+ wbytes(d, b + 14, exl), b += 16;
667
+ if (ce != null) {
668
+ wbytes(d, b, col);
669
+ wbytes(d, b + 6, f.attrs);
670
+ wbytes(d, b + 10, ce), b += 14;
671
+ }
672
+ d.set(fn, b);
673
+ b += fl2;
674
+ if (exl) {
675
+ for (var k in ex) {
676
+ var exf = ex[k], l = exf.length;
677
+ wbytes(d, b, +k);
678
+ wbytes(d, b + 2, l);
679
+ d.set(exf, b + 4), b += 4 + l;
680
+ }
681
+ }
682
+ if (col)
683
+ d.set(co, b), b += col;
684
+ return b;
685
+ };
686
+ var wzf = function(o, b, c, d, e) {
687
+ wbytes(o, b, 101010256);
688
+ wbytes(o, b + 8, c);
689
+ wbytes(o, b + 10, c);
690
+ wbytes(o, b + 12, d);
691
+ wbytes(o, b + 16, e);
692
+ };
693
+ function zipSync(data, opts) {
694
+ if (!opts)
695
+ opts = {};
696
+ var r = {};
697
+ var files = [];
698
+ fltn(data, "", r, opts);
699
+ var o = 0;
700
+ var tot = 0;
701
+ for (var fn in r) {
702
+ var _a2 = r[fn], file = _a2[0], p = _a2[1];
703
+ var compression = p.level == 0 ? 0 : 8;
704
+ var f = strToU8(fn), s = f.length;
705
+ var com = p.comment, m = com && strToU8(com), ms = m && m.length;
706
+ var exl = exfl(p.extra);
707
+ if (s > 65535)
708
+ err(11);
709
+ var d = compression ? deflateSync(file, p) : file, l = d.length;
710
+ var c = crc();
711
+ c.p(file);
712
+ files.push(mrg(p, {
713
+ size: file.length,
714
+ crc: c.d(),
715
+ c: d,
716
+ f,
717
+ m,
718
+ u: s != fn.length || m && com.length != ms,
719
+ o,
720
+ compression
721
+ }));
722
+ o += 30 + s + exl + l;
723
+ tot += 76 + 2 * (s + exl) + (ms || 0) + l;
724
+ }
725
+ var out = new u8(tot + 22), oe = o, cdl = tot - o;
726
+ for (var i2 = 0; i2 < files.length; ++i2) {
727
+ var f = files[i2];
728
+ wzh(out, f.o, f, f.f, f.u, f.c.length);
729
+ var badd = 30 + f.f.length + exfl(f.extra);
730
+ out.set(f.c, f.o + badd);
731
+ wzh(out, o, f, f.f, f.u, f.c.length, f.o, f.m), o += 16 + badd + (f.m ? f.m.length : 0);
732
+ }
733
+ wzf(out, o, files.length, cdl, oe);
734
+ return out;
735
+ }
736
+
15
737
  // packages/aws/src/release.ts
16
738
  import { createHash } from "node:crypto";
17
739
  import { mkdir, readFile, writeFile } from "node:fs/promises";
@@ -73,7 +795,7 @@ var boardConfigSchema = z.object({
73
795
 
74
796
  // packages/aws/src/release.ts
75
797
  var CORE_RUNTIME_VERSION = "1.0.0";
76
- var CANONICAL_ASSET_DOMAIN = "https://assets.zegreatrob.com";
798
+ var CANONICAL_ASSET_DOMAIN = "https://d3bvpdr9syk35m.cloudfront.net";
77
799
  function clientAssetUrl(version, domain = CANONICAL_ASSET_DOMAIN) {
78
800
  if (!/^[A-Za-z0-9][A-Za-z0-9._-]*$/.test(version))
79
801
  throw new Error(`Invalid dashboard version: ${version}`);
@@ -167,7 +889,19 @@ async function packageLambda(options) {
167
889
  await writeFile2(join2(runtimeDir, "SHA256SUMS"), `${sums}
168
890
  `);
169
891
  const lambdaPath = join2(outputDir, "lambda.zip");
170
- await run("zip", ["-X", "-q", "-r", lambdaPath, "."], { cwd: runtimeDir });
892
+ const archiveFiles = ["SHA256SUMS", "board.yaml", "index.mjs", "release.json"].sort();
893
+ const archive = Object.fromEntries(
894
+ await Promise.all(
895
+ archiveFiles.map(async (name) => [
896
+ name,
897
+ [
898
+ strToU8(await readFile2(join2(runtimeDir, name), "utf8")),
899
+ { mtime: new Date(1980, 0, 1, 0, 0, 0), level: 9 }
900
+ ]
901
+ ])
902
+ )
903
+ );
904
+ await writeFile2(lambdaPath, zipSync(archive));
171
905
  await rm(runtimeDir, { recursive: true, force: true });
172
906
  const lambdaChecksum = sha256(await readFile2(lambdaPath));
173
907
  const deploymentChecksum = sha256(JSON.stringify(runtimeMetadata));
@@ -237,15 +971,149 @@ async function cloudFormationTemplate() {
237
971
  return readFile2(fileURLToPath(new URL("../template.yml", import.meta.url)), "utf8");
238
972
  }
239
973
 
974
+ // packages/aws/src/doctor.ts
975
+ var run2 = promisify2(execFile2);
976
+ var actualDependencies = {
977
+ async execute(command, args2) {
978
+ return (await run2(command, args2)).stdout.trim();
979
+ },
980
+ async fetch(url) {
981
+ return fetch(url);
982
+ },
983
+ nodeVersion: process.versions.node,
984
+ packageVersion: ""
985
+ };
986
+ function readParameterValues(value) {
987
+ if (!Array.isArray(value)) throw new Error("must contain a JSON parameter array");
988
+ const parameters = value.map((entry) => {
989
+ if (!entry || typeof entry !== "object" || typeof entry.ParameterKey !== "string" || typeof entry.ParameterValue !== "string")
990
+ throw new Error("entries must contain string ParameterKey and ParameterValue fields");
991
+ return entry;
992
+ });
993
+ const keys = parameters.map(({ ParameterKey }) => ParameterKey);
994
+ if (new Set(keys).size !== keys.length) throw new Error("contains duplicate parameters");
995
+ return parameters;
996
+ }
997
+ async function templateContract(parameters) {
998
+ const template = await cloudFormationTemplate();
999
+ const parametersBlock = template.match(
1000
+ /^Parameters:\n[\s\S]*?(?=^[A-Za-z][A-Za-z0-9]*:\s*$)/m
1001
+ )?.[0];
1002
+ const metadataBlock = template.match(/^Metadata:\n[\s\S]*?(?=^Parameters:\s*$)/m)?.[0];
1003
+ if (!parametersBlock) throw new Error("template has no Parameters block");
1004
+ const parsedParameters = parse2(parametersBlock);
1005
+ const parsedMetadata = metadataBlock ? parse2(metadataBlock) : {};
1006
+ const definitions = parsedParameters.Parameters ?? {};
1007
+ const managedValue = parsedMetadata.Metadata?.PackageManagedParameters ?? [];
1008
+ if (!Array.isArray(managedValue) || !managedValue.every((key) => typeof key === "string"))
1009
+ throw new Error("template has invalid PackageManagedParameters metadata");
1010
+ const managed = new Set(managedValue);
1011
+ const values = Object.fromEntries(
1012
+ parameters.map((item) => [item.ParameterKey, item.ParameterValue])
1013
+ );
1014
+ const stale = Object.keys(values).filter((key) => !Object.hasOwn(definitions, key));
1015
+ const missing = Object.entries(definitions).filter(
1016
+ ([key, definition]) => !Object.hasOwn(definition, "Default") && !managed.has(key) && !Object.hasOwn(values, key)
1017
+ ).map(([key]) => key);
1018
+ if (missing.length || stale.length)
1019
+ throw new Error(
1020
+ `out of sync with template (missing: ${missing.join(", ") || "none"}; stale: ${stale.join(", ") || "none"})`
1021
+ );
1022
+ return { values, definitions };
1023
+ }
1024
+ function failureDetail(error) {
1025
+ if (error && typeof error === "object" && "code" in error && error.code === "ENOENT")
1026
+ return "not found on PATH";
1027
+ return error instanceof Error ? error.message : String(error);
1028
+ }
1029
+ async function runDoctor(options, dependencies = actualDependencies) {
1030
+ const checks = [];
1031
+ const check = async (name, action) => {
1032
+ try {
1033
+ checks.push({ name, ok: true, detail: await action() });
1034
+ } catch (error) {
1035
+ checks.push({ name, ok: false, detail: failureDetail(error) });
1036
+ }
1037
+ };
1038
+ await check("Node.js", async () => {
1039
+ const major = Number(dependencies.nodeVersion.split(".")[0]);
1040
+ if (!Number.isInteger(major) || major < 22)
1041
+ throw new Error(`v${dependencies.nodeVersion} is unsupported; Node.js 22+ is required`);
1042
+ return `v${dependencies.nodeVersion}`;
1043
+ });
1044
+ for (const [name, command, args2] of [
1045
+ ["npm", "npm", ["--version"]],
1046
+ ["AWS CLI", "aws", ["--version"]],
1047
+ ["jq", "jq", ["--version"]]
1048
+ ])
1049
+ await check(name, () => dependencies.execute(command, [...args2]));
1050
+ const awsAvailable = checks.find(({ name }) => name === "AWS CLI")?.ok === true;
1051
+ await check("AWS identity", async () => {
1052
+ if (!awsAvailable) throw new Error("skipped because the AWS CLI is unavailable");
1053
+ const identity = await dependencies.execute("aws", [
1054
+ "sts",
1055
+ "get-caller-identity",
1056
+ "--region",
1057
+ options.region,
1058
+ "--output",
1059
+ "json",
1060
+ "--no-cli-pager"
1061
+ ]);
1062
+ const parsed = JSON.parse(identity);
1063
+ if (typeof parsed.Arn !== "string" || typeof parsed.Account !== "string")
1064
+ throw new Error("AWS returned an invalid identity");
1065
+ return `${parsed.Arn} (${parsed.Account})`;
1066
+ });
1067
+ let parameterData;
1068
+ await check("Parameters/template", async () => {
1069
+ const parameters = readParameterValues(
1070
+ JSON.parse(await readFile3(options.parametersPath, "utf8"))
1071
+ );
1072
+ parameterData = await templateContract(parameters);
1073
+ return `${options.parametersPath} is compatible`;
1074
+ });
1075
+ await check("Artifact bucket", async () => {
1076
+ const bucket = parameterData?.values.LambdaArtifactBucket;
1077
+ if (!bucket) throw new Error("skipped because parameters do not provide LambdaArtifactBucket");
1078
+ if (!awsAvailable) throw new Error("skipped because the AWS CLI is unavailable");
1079
+ const output = await dependencies.execute("aws", [
1080
+ "s3api",
1081
+ "get-bucket-location",
1082
+ "--bucket",
1083
+ bucket,
1084
+ "--region",
1085
+ options.region,
1086
+ "--output",
1087
+ "json",
1088
+ "--no-cli-pager"
1089
+ ]);
1090
+ const location = JSON.parse(output).LocationConstraint;
1091
+ const bucketRegion = location === null || location === void 0 ? "us-east-1" : location;
1092
+ if (bucketRegion !== options.region)
1093
+ throw new Error(`bucket is in ${bucketRegion}, not ${options.region}`);
1094
+ return `${bucket} exists in ${bucketRegion}`;
1095
+ });
1096
+ await check("Hosted client", async () => {
1097
+ const baseUrl = parameterData?.definitions.AssetBaseUrl?.Default;
1098
+ if (typeof baseUrl !== "string") throw new Error("template has no AssetBaseUrl default");
1099
+ if (!dependencies.packageVersion) throw new Error("installed package version is unavailable");
1100
+ const url = `${baseUrl.replace(/\/+$/, "")}/dashboard/${dependencies.packageVersion}/index.html`;
1101
+ const response = await dependencies.fetch(url);
1102
+ if (!response.ok) throw new Error(`${url} returned HTTP ${response.status}`);
1103
+ return `${url} returned HTTP ${response.status}`;
1104
+ });
1105
+ return checks;
1106
+ }
1107
+
240
1108
  // packages/aws/src/cli.ts
241
1109
  var args = process.argv.slice(2);
242
1110
  var option = (name, fallback) => {
243
- const i = args.indexOf(name);
244
- return i >= 0 ? args[i + 1] : fallback;
1111
+ const i2 = args.indexOf(name);
1112
+ return i2 >= 0 ? args[i2 + 1] : fallback;
245
1113
  };
246
1114
  async function installedPackageVersion() {
247
1115
  const packageManifest = JSON.parse(
248
- await readFile3(new URL("../package.json", import.meta.url), "utf8")
1116
+ await readFile4(new URL("../package.json", import.meta.url), "utf8")
249
1117
  );
250
1118
  return typeof packageManifest.version === "string" ? packageManifest.version : "";
251
1119
  }
@@ -259,7 +1127,7 @@ function parameter(key, value) {
259
1127
  }
260
1128
  async function existingParameters(path) {
261
1129
  try {
262
- const parsed = JSON.parse(await readFile3(path, "utf8"));
1130
+ const parsed = JSON.parse(await readFile4(path, "utf8"));
263
1131
  if (!Array.isArray(parsed)) throw new Error(`${path} must contain a JSON parameter array`);
264
1132
  const values = parsed.map((value) => {
265
1133
  if (!value || typeof value !== "object" || typeof value.ParameterKey !== "string" || typeof value.ParameterValue !== "string")
@@ -280,10 +1148,10 @@ async function templateParameters() {
280
1148
  const template = await cloudFormationTemplate();
281
1149
  const block = template.match(/^Parameters:\n[\s\S]*?(?=^[A-Za-z][A-Za-z0-9]*:\s*$)/m)?.[0];
282
1150
  if (!block) throw new Error("Unable to read Parameters from the CloudFormation template");
283
- const parsed = parse2(block);
1151
+ const parsed = parse3(block);
284
1152
  if (!parsed.Parameters) throw new Error("CloudFormation template has no Parameters");
285
1153
  const metadataBlock = template.match(/^Metadata:\n[\s\S]*?(?=^Parameters:\s*$)/m)?.[0];
286
- const metadata = metadataBlock ? parse2(metadataBlock).Metadata ?? {} : {};
1154
+ const metadata = metadataBlock ? parse3(metadataBlock).Metadata ?? {} : {};
287
1155
  if (metadata.PackageManagedParameters !== void 0 && (!Array.isArray(metadata.PackageManagedParameters) || !metadata.PackageManagedParameters.every((key) => typeof key === "string")))
288
1156
  throw new Error("CloudFormation template has invalid PackageManagedParameters metadata");
289
1157
  const packageManaged = new Set(metadata.PackageManagedParameters ?? []);
@@ -297,18 +1165,42 @@ async function templateParameters() {
297
1165
  return { definitions: parsed.Parameters, packageManaged };
298
1166
  }
299
1167
  try {
1168
+ const packageVersion = await installedPackageVersion();
1169
+ const bundledAssets = fileURLToPath2(new URL("../client", import.meta.url));
300
1170
  if (args[0] === "deploy") {
301
1171
  const artifactDir = requiredOption("--artifact-dir");
1172
+ const version = requiredOption("--version", packageVersion);
302
1173
  await deployLambda({
303
1174
  artifactDir,
304
- assetsDir: option("--assets-dir", join3(artifactDir, "assets")) ?? join3(artifactDir, "assets"),
1175
+ assetsDir: option("--assets-dir", bundledAssets) ?? bundledAssets,
305
1176
  assetsBucket: requiredOption("--assets-bucket"),
306
1177
  assetsBaseUrl: requiredOption("--assets-base-url"),
307
1178
  functionName: requiredOption("--function-name"),
308
- version: requiredOption("--version"),
1179
+ version,
309
1180
  dryRun: args.includes("--dry-run")
310
1181
  });
311
- console.log(JSON.stringify({ deployed: true, version: requiredOption("--version") }));
1182
+ console.log(JSON.stringify({ deployed: true, version }));
1183
+ } else if (args[0] === "doctor") {
1184
+ const parametersPath = option("--parameters", "aws-dashboard-parameters.json") ?? "aws-dashboard-parameters.json";
1185
+ const region = option("--region", process.env.AWS_REGION ?? process.env.AWS_DEFAULT_REGION ?? "us-east-1") ?? "us-east-1";
1186
+ const checks = await runDoctor(
1187
+ { parametersPath, region },
1188
+ {
1189
+ async execute(command, commandArgs) {
1190
+ const { execFile: execFile3 } = await import("node:child_process");
1191
+ const { promisify: promisify3 } = await import("node:util");
1192
+ return (await promisify3(execFile3)(command, commandArgs)).stdout.trim();
1193
+ },
1194
+ async fetch(url) {
1195
+ return fetch(url);
1196
+ },
1197
+ nodeVersion: process.versions.node,
1198
+ packageVersion
1199
+ }
1200
+ );
1201
+ for (const check of checks)
1202
+ console.log(`${check.ok ? "PASS" : "FAIL"} ${check.name}: ${check.detail}`);
1203
+ if (checks.some(({ ok }) => !ok)) process.exitCode = 1;
312
1204
  } else if (args[0] === "parameters") {
313
1205
  const output = option("--output", "aws-dashboard-parameters.json") ?? "aws-dashboard-parameters.json";
314
1206
  const existing = await existingParameters(output);
@@ -345,10 +1237,9 @@ try {
345
1237
  `);
346
1238
  console.log(JSON.stringify({ output }));
347
1239
  } else if (args[0] !== "package")
348
- throw new Error("Usage: ze-great-dashboard-aws package|parameters|deploy [options]");
1240
+ throw new Error("Usage: ze-great-dashboard-aws package|parameters|deploy|doctor [options]");
349
1241
  else {
350
1242
  const boardConfig = option("--board-config");
351
- const packageVersion = await installedPackageVersion();
352
1243
  const version = option("--version", process.env.DASHBOARD_VERSION ?? packageVersion);
353
1244
  if (!boardConfig) throw new Error("--board-config is required");
354
1245
  if (!version)