@components-kit/open-workbook 0.1.3 → 0.1.5

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,47 +1,572 @@
1
+ :root {
2
+ color-scheme: light;
3
+ font-family: "Instrument Sans", "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
4
+ --brand: oklch(62.31% 0.209 259.53);
5
+ --brand-ring: oklch(80.9% 0.105 251.81);
6
+ --neutral-0: oklch(100% 0 0);
7
+ --neutral-50: oklch(98.5% 0 0);
8
+ --neutral-100: oklch(96.5% 0 0);
9
+ --neutral-200: oklch(92.5% 0 0);
10
+ --neutral-300: oklch(87% 0 0);
11
+ --neutral-500: oklch(55.5% 0 0);
12
+ --neutral-600: oklch(44.5% 0 0);
13
+ --neutral-700: oklch(37% 0 0);
14
+ --neutral-950: oklch(14% 0 0);
15
+ --success: oklch(63% 0.18 145);
16
+ --warning: oklch(72% 0.17 78);
17
+ --error: oklch(61% 0.22 27);
18
+ }
19
+
20
+ @keyframes connection-border-race {
21
+ to {
22
+ transform: rotate(360deg);
23
+ }
24
+ }
25
+
26
+ @keyframes excel-hero-card-glow-a {
27
+ 0%,
28
+ 100% {
29
+ opacity: 0.58;
30
+ transform: translate3d(0, 0, 0) scale(1);
31
+ }
32
+
33
+ 45% {
34
+ opacity: 0.9;
35
+ transform: translate3d(-7%, 8%, 0) scale(1.14);
36
+ }
37
+
38
+ 72% {
39
+ opacity: 0.7;
40
+ transform: translate3d(4%, -4%, 0) scale(1.06);
41
+ }
42
+ }
43
+
44
+ @keyframes excel-hero-card-glow-b {
45
+ 0%,
46
+ 100% {
47
+ opacity: 0.46;
48
+ transform: translate3d(0, 0, 0) scale(1.08);
49
+ }
50
+
51
+ 38% {
52
+ opacity: 0.78;
53
+ transform: translate3d(6%, -7%, 0) scale(0.98);
54
+ }
55
+
56
+ 76% {
57
+ opacity: 0.62;
58
+ transform: translate3d(-4%, 5%, 0) scale(1.16);
59
+ }
60
+ }
61
+
62
+ * {
63
+ box-sizing: border-box;
64
+ }
65
+
1
66
  html,
67
+ body,
68
+ #root {
69
+ min-height: 100%;
70
+ }
71
+
2
72
  body {
3
73
  margin: 0;
4
- min-height: 100%;
5
- font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
6
- color: #1f2933;
7
- background: #f7f9fb;
74
+ background: var(--neutral-0);
75
+ color: var(--neutral-600);
76
+ font-family: inherit;
77
+ font-feature-settings: "ss01", "cv11", "kern";
78
+ font-weight: 450;
79
+ }
80
+
81
+ button,
82
+ input,
83
+ textarea,
84
+ select {
85
+ font: inherit;
86
+ }
87
+
88
+ .taskpane-shell {
89
+ min-height: 100vh;
90
+ padding: 18px;
91
+ background: var(--neutral-0);
92
+ }
93
+
94
+ .landing-view,
95
+ .status-view {
96
+ display: flex;
97
+ min-height: calc(100vh - 36px);
98
+ flex-direction: column;
99
+ }
100
+
101
+ .landing-view {
102
+ align-items: center;
103
+ justify-content: space-between;
104
+ gap: 16px;
105
+ text-align: center;
106
+ }
107
+
108
+ .status-view {
109
+ gap: 18px;
110
+ }
111
+
112
+ .landing-content {
113
+ display: flex;
114
+ width: 100%;
115
+ flex: 1 1 auto;
116
+ flex-direction: column;
117
+ align-items: center;
118
+ justify-content: center;
119
+ gap: 18px;
120
+ }
121
+
122
+ .brand-lockup {
123
+ display: inline-flex;
124
+ max-width: 100%;
125
+ align-items: center;
126
+ gap: 8px;
127
+ color: var(--neutral-950);
8
128
  }
9
129
 
10
- main {
11
- padding: 16px;
130
+ .brand-logo {
131
+ width: 28px;
132
+ height: 28px;
133
+ flex: 0 0 auto;
134
+ image-rendering: auto;
135
+ }
136
+
137
+ .brand-divider {
138
+ color: var(--neutral-300);
139
+ font-size: 15px;
140
+ }
141
+
142
+ .brand-product {
143
+ min-width: 0;
144
+ overflow: hidden;
145
+ color: var(--neutral-950);
146
+ font-size: 14px;
147
+ font-weight: 550;
148
+ text-overflow: ellipsis;
149
+ white-space: nowrap;
150
+ }
151
+
152
+ .landing-copy {
153
+ max-width: 318px;
12
154
  }
13
155
 
14
156
  h1 {
15
- margin: 0 0 12px;
16
- font-size: 18px;
17
- font-weight: 650;
157
+ margin: 0;
158
+ color: var(--neutral-950);
159
+ font-size: clamp(26px, 8.4vw, 32px);
160
+ font-weight: 500;
161
+ letter-spacing: 0;
162
+ line-height: 1.15;
18
163
  }
19
164
 
20
165
  p {
21
- margin: 0 0 16px;
22
- font-size: 13px;
23
- line-height: 1.5;
166
+ margin: 10px 0 0;
167
+ color: var(--neutral-600);
168
+ font-size: 14px;
169
+ font-weight: 400;
170
+ line-height: 1.48;
24
171
  }
25
172
 
26
- dl {
27
- margin: 0;
28
- border-top: 1px solid #d9e2ec;
173
+ .connection-badge {
174
+ position: relative;
175
+ isolation: isolate;
176
+ overflow: hidden;
177
+ display: inline-flex;
178
+ align-items: center;
179
+ justify-content: center;
180
+ min-height: 28px;
181
+ max-width: min(100%, 318px);
182
+ border: 1px solid transparent;
183
+ border-radius: 999px;
184
+ background: transparent;
185
+ padding: 6px 11px;
186
+ color: var(--connection-fg, var(--neutral-600));
187
+ font-size: 12px;
188
+ font-weight: 500;
189
+ line-height: 1.15;
190
+ text-align: center;
191
+ box-shadow:
192
+ 0 1px 2px var(--connection-shadow, oklch(42% 0 0 / 0.08)),
193
+ inset 0 0 0 1px var(--connection-inset, oklch(72% 0 0 / 0.16));
29
194
  }
30
195
 
31
- div {
32
- padding: 10px 0;
33
- border-bottom: 1px solid #d9e2ec;
196
+ .connection-badge::before {
197
+ position: absolute;
198
+ inset: -60%;
199
+ z-index: -2;
200
+ background: var(--connection-ring, oklch(74% 0 0 / 0.08));
201
+ animation: connection-border-race 4.2s linear infinite;
202
+ content: "";
34
203
  }
35
204
 
36
- dt {
37
- font-size: 11px;
38
- font-weight: 650;
39
- color: #52606d;
40
- text-transform: uppercase;
205
+ .connection-badge::after {
206
+ position: absolute;
207
+ inset: 1px;
208
+ z-index: -1;
209
+ border-radius: inherit;
210
+ background: var(--connection-bg, var(--neutral-50));
211
+ content: "";
212
+ }
213
+
214
+ .connection-neutral {
215
+ --connection-fg: var(--neutral-600);
216
+ --connection-bg: linear-gradient(180deg, var(--neutral-0), var(--neutral-100));
217
+ --connection-ring: conic-gradient(
218
+ from 0deg,
219
+ oklch(74% 0 0 / 0.04),
220
+ oklch(74% 0 0 / 0.04) 22%,
221
+ oklch(70% 0 0 / 0.34) 48%,
222
+ oklch(82% 0 0 / 0.18) 68%,
223
+ oklch(74% 0 0 / 0.04)
224
+ );
225
+ --connection-inset: oklch(72% 0 0 / 0.14);
226
+ --connection-shadow: oklch(42% 0 0 / 0.08);
227
+ }
228
+
229
+ .connection-success {
230
+ --connection-fg: oklch(36% 0.14 155);
231
+ --connection-bg: linear-gradient(180deg, oklch(98% 0.028 155), oklch(95.5% 0.038 158));
232
+ --connection-ring: conic-gradient(
233
+ from 0deg,
234
+ oklch(74% 0.11 160 / 0.05),
235
+ oklch(74% 0.11 160 / 0.05) 18%,
236
+ oklch(76% 0.12 165 / 0.22) 32%,
237
+ oklch(72% 0.16 155 / 0.74) 48%,
238
+ oklch(84% 0.12 180 / 0.56) 62%,
239
+ oklch(78% 0.11 165 / 0.2) 76%,
240
+ oklch(74% 0.11 160 / 0.05)
241
+ );
242
+ --connection-inset: oklch(72% 0.1 155 / 0.16);
243
+ --connection-shadow: oklch(42% 0.12 155 / 0.08);
244
+ }
245
+
246
+ .connection-warning {
247
+ --connection-fg: oklch(43% 0.13 78);
248
+ --connection-bg: linear-gradient(180deg, oklch(98% 0.028 82), oklch(95.5% 0.045 82));
249
+ --connection-ring: conic-gradient(
250
+ from 0deg,
251
+ oklch(80% 0.12 82 / 0.06),
252
+ oklch(80% 0.12 82 / 0.06) 18%,
253
+ oklch(78% 0.16 78 / 0.26) 34%,
254
+ oklch(74% 0.18 72 / 0.76) 50%,
255
+ oklch(86% 0.14 88 / 0.48) 66%,
256
+ oklch(80% 0.12 82 / 0.06)
257
+ );
258
+ --connection-inset: oklch(72% 0.13 78 / 0.2);
259
+ --connection-shadow: oklch(48% 0.12 78 / 0.1);
260
+ }
261
+
262
+ .connection-error {
263
+ --connection-fg: oklch(42% 0.18 27);
264
+ --connection-bg: linear-gradient(180deg, oklch(98% 0.028 27), oklch(95.5% 0.04 27));
265
+ --connection-ring: conic-gradient(
266
+ from 0deg,
267
+ oklch(76% 0.14 27 / 0.06),
268
+ oklch(76% 0.14 27 / 0.06) 18%,
269
+ oklch(72% 0.18 27 / 0.28) 34%,
270
+ oklch(62% 0.22 27 / 0.8) 50%,
271
+ oklch(82% 0.14 42 / 0.48) 66%,
272
+ oklch(76% 0.14 27 / 0.06)
273
+ );
274
+ --connection-inset: oklch(70% 0.16 27 / 0.2);
275
+ --connection-shadow: oklch(44% 0.16 27 / 0.1);
276
+ }
277
+
278
+ .workbook-preview-card {
279
+ position: relative;
280
+ isolation: isolate;
281
+ overflow: hidden;
282
+ width: calc(100% + 36px);
283
+ min-height: 236px;
284
+ max-height: min(46vh, 320px);
285
+ flex: 0 1 320px;
286
+ margin-right: -18px;
287
+ margin-bottom: -18px;
288
+ margin-left: -18px;
289
+ border-radius: 0;
290
+ background: linear-gradient(
291
+ 135deg,
292
+ oklch(94% 0.032 155) 0%,
293
+ oklch(90% 0.048 205) 48%,
294
+ oklch(86% 0.062 245) 100%
295
+ );
296
+ }
297
+
298
+ .workbook-preview-card::before,
299
+ .workbook-preview-card::after {
300
+ position: absolute;
301
+ z-index: 0;
302
+ border-radius: 9999px;
303
+ content: "";
304
+ filter: blur(42px);
305
+ pointer-events: none;
306
+ }
307
+
308
+ .workbook-preview-card::before {
309
+ top: -58px;
310
+ right: -62px;
311
+ width: 168px;
312
+ height: 168px;
313
+ animation: excel-hero-card-glow-a 4.6s ease-in-out infinite;
314
+ background: oklch(78% 0.13 245 / 0.56);
315
+ }
316
+
317
+ .workbook-preview-card::after {
318
+ bottom: -72px;
319
+ left: -62px;
320
+ width: 190px;
321
+ height: 190px;
322
+ animation: excel-hero-card-glow-b 5.8s ease-in-out infinite;
323
+ background: oklch(84% 0.11 155 / 0.52);
324
+ }
325
+
326
+ .workbook-preview-window {
327
+ position: absolute;
328
+ top: 24px;
329
+ right: -72px;
330
+ bottom: -36px;
331
+ left: 16px;
332
+ z-index: 1;
333
+ overflow: hidden;
334
+ border: 1px solid oklch(86% 0 0 / 0.76);
335
+ border-radius: 0;
336
+ background: oklch(100% 0 0 / 0.94);
337
+ box-shadow: 0 20px 42px oklch(18% 0.04 245 / 0.22);
338
+ backdrop-filter: blur(14px);
339
+ text-align: left;
340
+ }
341
+
342
+ .workbook-preview-titlebar {
343
+ display: flex;
344
+ height: 32px;
345
+ align-items: center;
346
+ gap: 8px;
347
+ border-bottom: 1px solid var(--neutral-200);
348
+ background: oklch(98.5% 0 0 / 0.86);
349
+ padding: 0 10px;
350
+ color: var(--neutral-500);
351
+ font-size: 10px;
352
+ font-weight: 500;
353
+ }
354
+
355
+ .window-dots {
356
+ display: flex;
357
+ gap: 5px;
41
358
  }
42
359
 
43
- dd {
44
- margin: 4px 0 0;
360
+ .window-dots span {
361
+ width: 8px;
362
+ height: 8px;
363
+ border-radius: 999px;
364
+ }
365
+
366
+ .dot-red {
367
+ background: #ff5f57;
368
+ }
369
+
370
+ .dot-yellow {
371
+ background: #ffbd2e;
372
+ }
373
+
374
+ .dot-green {
375
+ background: #28c840;
376
+ }
377
+
378
+ .autosave-label {
379
+ margin-left: 3px;
380
+ }
381
+
382
+ .autosave-toggle {
383
+ width: 23px;
384
+ height: 11px;
385
+ border-radius: 999px;
386
+ background: var(--neutral-300);
387
+ }
388
+
389
+ .preview-tool {
390
+ color: var(--neutral-700);
391
+ }
392
+
393
+ .preview-tool.muted {
394
+ color: var(--neutral-500);
395
+ }
396
+
397
+ .workbook-preview-ribbon {
398
+ display: flex;
399
+ height: 34px;
400
+ align-items: center;
401
+ gap: 8px;
402
+ overflow: hidden;
403
+ border-bottom: 1px solid var(--neutral-200);
404
+ background: var(--neutral-0);
405
+ padding: 0 10px;
406
+ }
407
+
408
+ .ribbon-button {
409
+ width: 42px;
410
+ height: 18px;
411
+ border: 1px solid var(--neutral-200);
412
+ border-radius: 4px;
413
+ background: var(--neutral-50);
414
+ }
415
+
416
+ .ribbon-button.wide {
417
+ width: 56px;
418
+ }
419
+
420
+ .ribbon-button.short {
421
+ width: 30px;
422
+ }
423
+
424
+ .ribbon-divider {
425
+ width: 1px;
426
+ height: 18px;
427
+ background: var(--neutral-200);
428
+ }
429
+
430
+ .ribbon-pill {
431
+ border-radius: 4px;
432
+ background: var(--neutral-200);
433
+ padding: 4px 8px;
434
+ color: var(--neutral-700);
435
+ font-size: 10px;
436
+ white-space: nowrap;
437
+ }
438
+
439
+ .workbook-preview-formula {
440
+ display: flex;
441
+ height: 32px;
442
+ align-items: center;
443
+ gap: 8px;
444
+ border-bottom: 1px solid var(--neutral-200);
445
+ background: var(--neutral-0);
446
+ padding: 0 8px;
447
+ color: var(--neutral-600);
448
+ font-size: 10px;
449
+ }
450
+
451
+ .name-box,
452
+ .formula-box {
453
+ height: 18px;
454
+ border: 1px solid var(--neutral-200);
455
+ border-radius: 4px;
456
+ background: var(--neutral-0);
457
+ line-height: 16px;
458
+ }
459
+
460
+ .name-box {
461
+ width: 42px;
462
+ text-align: center;
463
+ }
464
+
465
+ .formula-mark {
466
+ color: var(--neutral-500);
467
+ font-family: Georgia, serif;
45
468
  font-size: 12px;
46
- overflow-wrap: anywhere;
469
+ }
470
+
471
+ .formula-box {
472
+ min-width: 172px;
473
+ flex: 1;
474
+ padding: 0 7px;
475
+ color: var(--neutral-700);
476
+ }
477
+
478
+ .workbook-preview-sheet {
479
+ overflow: hidden;
480
+ background: var(--neutral-0);
481
+ }
482
+
483
+ .sheet-grid {
484
+ display: grid;
485
+ min-width: 560px;
486
+ grid-template-columns: 30px 104px 84px 88px 178px;
487
+ color: var(--neutral-700);
488
+ font-size: 11px;
489
+ }
490
+
491
+ .sheet-corner,
492
+ .sheet-column,
493
+ .sheet-row-number,
494
+ .sheet-cell {
495
+ border-right: 1px solid var(--neutral-200);
496
+ border-bottom: 1px solid var(--neutral-200);
497
+ }
498
+
499
+ .sheet-corner,
500
+ .sheet-column,
501
+ .sheet-row-number {
502
+ background: var(--neutral-100);
503
+ color: var(--neutral-500);
504
+ font-weight: 500;
505
+ text-align: center;
506
+ }
507
+
508
+ .sheet-corner,
509
+ .sheet-column {
510
+ height: 26px;
511
+ line-height: 25px;
512
+ }
513
+
514
+ .sheet-row-number {
515
+ height: 42px;
516
+ line-height: 41px;
517
+ }
518
+
519
+ .sheet-cell {
520
+ height: 42px;
521
+ overflow: hidden;
522
+ background: var(--neutral-0);
523
+ padding: 12px 9px;
524
+ }
525
+
526
+ .sheet-cell span {
527
+ display: block;
528
+ overflow: hidden;
529
+ text-overflow: ellipsis;
530
+ white-space: nowrap;
531
+ }
532
+
533
+ .sheet-header {
534
+ background: oklch(45% 0.14 158);
535
+ color: white;
536
+ font-weight: 600;
537
+ }
538
+
539
+ .sheet-selected {
540
+ position: relative;
541
+ z-index: 1;
542
+ box-shadow: inset 0 0 0 2px oklch(45% 0.14 158);
543
+ }
544
+
545
+ .sheet-agent-cell span {
546
+ color: oklch(37% 0.12 155);
547
+ }
548
+
549
+ @media (max-width: 320px) {
550
+ .taskpane-shell {
551
+ padding: 14px;
552
+ }
553
+
554
+ .landing-view {
555
+ gap: 14px;
556
+ }
557
+
558
+ .workbook-preview-card {
559
+ width: calc(100% + 28px);
560
+ min-height: 218px;
561
+ margin-right: -14px;
562
+ margin-bottom: -14px;
563
+ margin-left: -14px;
564
+ }
565
+
566
+ .workbook-preview-window {
567
+ top: 20px;
568
+ right: -118px;
569
+ bottom: -42px;
570
+ left: 12px;
571
+ }
47
572
  }
@@ -3,8 +3,14 @@
3
3
  <head>
4
4
  <meta charset="utf-8" />
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1" />
6
- <title>Open Workbook</title>
7
- <link rel="stylesheet" href="/taskpane.css" />
6
+ <title>OpenWorkbook</title>
7
+ <link rel="preconnect" href="https://fonts.googleapis.com" />
8
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
9
+ <link
10
+ href="https://fonts.googleapis.com/css2?family=Instrument+Sans:ital,wght@0,400..700;1,400..700&display=swap"
11
+ rel="stylesheet"
12
+ />
13
+ <link rel="stylesheet" href="/taskpane.css?v=20260613-2" />
8
14
  <script src="https://appsforoffice.microsoft.com/lib/1/hosted/office.js"></script>
9
15
  <script type="importmap">
10
16
  {
@@ -16,20 +22,7 @@
16
22
  </script>
17
23
  </head>
18
24
  <body>
19
- <main>
20
- <h1>Open Workbook</h1>
21
- <p id="status">Connecting to local MCP runtime...</p>
22
- <dl>
23
- <div>
24
- <dt>Backend</dt>
25
- <dd id="backend-url">ws://127.0.0.1:37845/addin</dd>
26
- </div>
27
- <div>
28
- <dt>Mode</dt>
29
- <dd>Local sideload</dd>
30
- </div>
31
- </dl>
32
- </main>
33
- <script type="module" src="/dist/taskpane.js?v=20260613-2"></script>
25
+ <div id="root"></div>
26
+ <script type="module" src="/dist/taskpane.bundle.js?v=20260613-1"></script>
34
27
  </body>
35
28
  </html>
@@ -1,5 +1,4 @@
1
1
  import { createServer as createHttpServer } from "node:http";
2
- import { createServer as createHttpsServer } from "node:https";
3
2
  import { existsSync, readFileSync } from "node:fs";
4
3
  import { extname, join, normalize } from "node:path";
5
4
  import { fileURLToPath } from "node:url";
@@ -24,8 +23,7 @@ const workspaceModuleDirs = new Map([
24
23
  ]);
25
24
  const port = Number(process.env.OPEN_WORKBOOK_ADDIN_PORT ?? 37846);
26
25
  const host = process.env.OPEN_WORKBOOK_ADDIN_HOST ?? "127.0.0.1";
27
- const httpsEnabled = process.env.OPEN_WORKBOOK_ADDIN_HTTPS === "1" || process.env.OPEN_WORKBOOK_ADDIN_PROTOCOL === "https";
28
- const protocol = httpsEnabled ? "https" : "http";
26
+ const protocol = "http";
29
27
  const runtimeVersion = process.env.OPEN_WORKBOOK_VERSION ?? readPackageVersion() ?? "0.1.1";
30
28
 
31
29
  const contentTypes = new Map([
@@ -33,6 +31,7 @@ const contentTypes = new Map([
33
31
  [".css", "text/css; charset=utf-8"],
34
32
  [".js", "text/javascript; charset=utf-8"],
35
33
  [".png", "image/png"],
34
+ [".svg", "image/svg+xml; charset=utf-8"],
36
35
  [".xml", "application/xml; charset=utf-8"]
37
36
  ]);
38
37
 
@@ -46,14 +45,6 @@ const requestHandler = (request, response) => {
46
45
  response.end(JSON.stringify(getStatus()));
47
46
  return;
48
47
  }
49
- if (url.pathname.startsWith("/assets/icon-") && url.pathname.endsWith(".png")) {
50
- response.writeHead(200, {
51
- "content-type": "image/png",
52
- "cache-control": "no-store"
53
- });
54
- response.end(Buffer.from(ICON_PNG_BASE64, "base64"));
55
- return;
56
- }
57
48
  if (url.pathname === "/manifest.xml") {
58
49
  response.writeHead(200, {
59
50
  "content-type": "application/xml; charset=utf-8",
@@ -82,7 +73,7 @@ const requestHandler = (request, response) => {
82
73
  response.end(extname(normalized) === ".js" ? rewriteBrowserImports(body.toString("utf8")) : body);
83
74
  };
84
75
 
85
- const server = httpsEnabled ? createHttpsServer(readHttpsOptions(), requestHandler) : createHttpServer(requestHandler);
76
+ const server = createHttpServer(requestHandler);
86
77
 
87
78
  server.listen(port, host, () => {
88
79
  console.log(`Open Workbook add-in server listening on ${protocol}://${host}:${port}`);
@@ -147,23 +138,6 @@ function generateManifest() {
147
138
  .replaceAll("http://localhost:37846", addinUrl);
148
139
  }
149
140
 
150
- function readHttpsOptions() {
151
- const keyPath = process.env.OPEN_WORKBOOK_ADDIN_TLS_KEY;
152
- const certPath = process.env.OPEN_WORKBOOK_ADDIN_TLS_CERT;
153
- if (!keyPath || !certPath) {
154
- console.error("OPEN_WORKBOOK_ADDIN_TLS_KEY and OPEN_WORKBOOK_ADDIN_TLS_CERT are required when HTTPS add-in serving is enabled.");
155
- process.exit(1);
156
- }
157
- if (!existsSync(keyPath) || !existsSync(certPath)) {
158
- console.error(`Missing HTTPS certificate files: key=${keyPath} cert=${certPath}`);
159
- process.exit(1);
160
- }
161
- return {
162
- key: readFileSync(keyPath),
163
- cert: readFileSync(certPath)
164
- };
165
- }
166
-
167
141
  function trimTrailingSlash(value) {
168
142
  return value.endsWith("/") ? value.slice(0, -1) : value;
169
143
  }
@@ -184,6 +158,3 @@ function readPackageVersion() {
184
158
  }
185
159
  return undefined;
186
160
  }
187
-
188
- const ICON_PNG_BASE64 =
189
- "iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAAFUlEQVR4nO3BAQEAAACCIP+vbkhAAQAAAO8GEABAAAGl9n6SAAAAAElFTkSuQmCC";