@ai-ecoverse/slicc-spectrum 1.99.3 → 1.100.0
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/README.md +6 -2
- package/dist/slicc-dummy.js +83 -2
- package/dist/slicc-dummy.js.map +3 -3
- package/dist/slicc-ui.js +327 -130
- package/dist/slicc-ui.js.map +3 -3
- package/dist/types/app/markdown.d.ts +5 -1
- package/dist/types/app/updates.d.ts +11 -1
- package/dist/types/model/types.d.ts +7 -0
- package/package.json +2 -2
package/dist/slicc-ui.js
CHANGED
|
@@ -25699,7 +25699,7 @@ var titleBefore = {
|
|
|
25699
25699
|
};
|
|
25700
25700
|
function tokenizeDefinition(effects, ok4, nok) {
|
|
25701
25701
|
const self2 = this;
|
|
25702
|
-
let
|
|
25702
|
+
let identifier2;
|
|
25703
25703
|
return start2;
|
|
25704
25704
|
function start2(code3) {
|
|
25705
25705
|
effects.enter("definition");
|
|
@@ -25718,7 +25718,7 @@ function tokenizeDefinition(effects, ok4, nok) {
|
|
|
25718
25718
|
)(code3);
|
|
25719
25719
|
}
|
|
25720
25720
|
function labelAfter(code3) {
|
|
25721
|
-
|
|
25721
|
+
identifier2 = normalizeIdentifier(self2.sliceSerialize(self2.events[self2.events.length - 1][1]).slice(1, -1));
|
|
25722
25722
|
if (code3 === 58) {
|
|
25723
25723
|
effects.enter("definitionMarker");
|
|
25724
25724
|
effects.consume(code3);
|
|
@@ -25752,7 +25752,7 @@ function tokenizeDefinition(effects, ok4, nok) {
|
|
|
25752
25752
|
function afterWhitespace(code3) {
|
|
25753
25753
|
if (code3 === null || markdownLineEnding(code3)) {
|
|
25754
25754
|
effects.exit("definition");
|
|
25755
|
-
self2.parser.defined.push(
|
|
25755
|
+
self2.parser.defined.push(identifier2);
|
|
25756
25756
|
return ok4(code3);
|
|
25757
25757
|
}
|
|
25758
25758
|
return nok(code3);
|
|
@@ -29073,16 +29073,16 @@ function findUrl(_9, protocol, domain2, path2, match) {
|
|
|
29073
29073
|
if (!isCorrectDomain(domain2)) {
|
|
29074
29074
|
return false;
|
|
29075
29075
|
}
|
|
29076
|
-
const
|
|
29077
|
-
if (!
|
|
29076
|
+
const parts3 = splitUrl(domain2 + path2);
|
|
29077
|
+
if (!parts3[0]) return false;
|
|
29078
29078
|
const result = {
|
|
29079
29079
|
type: "link",
|
|
29080
29080
|
title: null,
|
|
29081
|
-
url: prefix + protocol +
|
|
29082
|
-
children: [{ type: "text", value: protocol +
|
|
29081
|
+
url: prefix + protocol + parts3[0],
|
|
29082
|
+
children: [{ type: "text", value: protocol + parts3[0] }]
|
|
29083
29083
|
};
|
|
29084
|
-
if (
|
|
29085
|
-
return [result, { type: "text", value:
|
|
29084
|
+
if (parts3[1]) {
|
|
29085
|
+
return [result, { type: "text", value: parts3[1] }];
|
|
29086
29086
|
}
|
|
29087
29087
|
return result;
|
|
29088
29088
|
}
|
|
@@ -29102,8 +29102,8 @@ function findEmail(_9, atext, label, match) {
|
|
|
29102
29102
|
};
|
|
29103
29103
|
}
|
|
29104
29104
|
function isCorrectDomain(domain2) {
|
|
29105
|
-
const
|
|
29106
|
-
if (
|
|
29105
|
+
const parts3 = domain2.split(".");
|
|
29106
|
+
if (parts3.length < 2 || parts3[parts3.length - 1] && (/_/.test(parts3[parts3.length - 1]) || !/[a-zA-Z\d]/.test(parts3[parts3.length - 1])) || parts3[parts3.length - 2] && (/_/.test(parts3[parts3.length - 2]) || !/[a-zA-Z\d]/.test(parts3[parts3.length - 2]))) {
|
|
29107
29107
|
return false;
|
|
29108
29108
|
}
|
|
29109
29109
|
return true;
|
|
@@ -30329,7 +30329,7 @@ var options = {
|
|
|
30329
30329
|
var empty2 = { text: "", blocks: [], starts: [], keep: 0, definitions: /* @__PURE__ */ new Map() };
|
|
30330
30330
|
var cache = /* @__PURE__ */ new Map();
|
|
30331
30331
|
var streams = [];
|
|
30332
|
-
var rendered = /* @__PURE__ */ new
|
|
30332
|
+
var rendered = /* @__PURE__ */ new Map();
|
|
30333
30333
|
function collect(nodes, found) {
|
|
30334
30334
|
for (const node2 of nodes) {
|
|
30335
30335
|
if (node2.type === "definition" && !found.has(node2.identifier)) found.set(node2.identifier, node2);
|
|
@@ -30369,103 +30369,115 @@ function parse2(text5) {
|
|
|
30369
30369
|
streams.length = Math.min(streams.length, 8);
|
|
30370
30370
|
return parsed;
|
|
30371
30371
|
}
|
|
30372
|
-
function
|
|
30372
|
+
function inert(value, strict) {
|
|
30373
|
+
return strict ? value.replace(/<[^>]*>/g, "") : value;
|
|
30374
|
+
}
|
|
30375
|
+
function safeUrl(url, images = false, strict = false) {
|
|
30376
|
+
if (strict) return /^https:\/\//i.test(url);
|
|
30373
30377
|
return /^https?:\/\//.test(url) || !images && /^mailto:/.test(url) || images && /^data:image\/(png|jpeg|gif|webp|svg\+xml)[;,]/.test(url);
|
|
30374
30378
|
}
|
|
30375
|
-
function link(url, title, label) {
|
|
30376
|
-
return safeUrl(url) ? b`<a href=${url} title=${title ?? A} target="_blank" rel="noopener noreferrer">${label}</a>` : b`${label}`;
|
|
30379
|
+
function link(url, title, label, strict) {
|
|
30380
|
+
return safeUrl(url, false, strict) ? b`<a href=${url} title=${title ?? A} target="_blank" rel="noopener noreferrer">${label}</a>` : b`${label}`;
|
|
30377
30381
|
}
|
|
30378
|
-
function image(url, title, alt) {
|
|
30382
|
+
function image(url, title, alt, strict) {
|
|
30383
|
+
if (strict) return link(url, title, alt || url, true);
|
|
30379
30384
|
return safeUrl(url, true) ? b`<img src=${url} alt=${alt} title=${title ?? A} />` : alt;
|
|
30380
30385
|
}
|
|
30381
|
-
function inline3(node2,
|
|
30382
|
-
return node2.children.map((child) => phrasing(child,
|
|
30386
|
+
function inline3(node2, context) {
|
|
30387
|
+
return node2.children.map((child) => phrasing(child, context));
|
|
30383
30388
|
}
|
|
30384
|
-
function phrasing(node2,
|
|
30389
|
+
function phrasing(node2, context) {
|
|
30385
30390
|
switch (node2.type) {
|
|
30386
30391
|
case "text":
|
|
30387
|
-
case "html":
|
|
30388
30392
|
return node2.value;
|
|
30393
|
+
case "html":
|
|
30394
|
+
return inert(node2.value, context.strict);
|
|
30389
30395
|
case "inlineCode":
|
|
30390
30396
|
return b`<code>${node2.value}</code>`;
|
|
30391
30397
|
case "strong":
|
|
30392
|
-
return b`<strong>${inline3(node2,
|
|
30398
|
+
return b`<strong>${inline3(node2, context)}</strong>`;
|
|
30393
30399
|
case "emphasis":
|
|
30394
|
-
return b`<em>${inline3(node2,
|
|
30400
|
+
return b`<em>${inline3(node2, context)}</em>`;
|
|
30395
30401
|
case "delete":
|
|
30396
|
-
return b`<s>${inline3(node2,
|
|
30402
|
+
return b`<s>${inline3(node2, context)}</s>`;
|
|
30397
30403
|
case "break":
|
|
30398
30404
|
return b`<br />`;
|
|
30399
30405
|
case "link":
|
|
30400
|
-
return link(node2.url, node2.title, inline3(node2,
|
|
30406
|
+
return link(node2.url, node2.title, inline3(node2, context), context.strict);
|
|
30401
30407
|
case "linkReference": {
|
|
30402
|
-
const target2 = definitions.get(node2.identifier);
|
|
30403
|
-
return link(target2.url, target2.title, inline3(node2,
|
|
30408
|
+
const target2 = context.definitions.get(node2.identifier);
|
|
30409
|
+
return link(target2.url, target2.title, inline3(node2, context), context.strict);
|
|
30404
30410
|
}
|
|
30405
30411
|
case "image":
|
|
30406
|
-
return image(node2.url, node2.title, node2.alt);
|
|
30412
|
+
return image(node2.url, node2.title, node2.alt, context.strict);
|
|
30407
30413
|
default: {
|
|
30408
|
-
const target2 = definitions.get(node2.identifier);
|
|
30409
|
-
return image(target2.url, target2.title, node2.alt);
|
|
30414
|
+
const target2 = context.definitions.get(node2.identifier);
|
|
30415
|
+
return image(target2.url, target2.title, node2.alt, context.strict);
|
|
30410
30416
|
}
|
|
30411
30417
|
}
|
|
30412
30418
|
}
|
|
30413
|
-
function paragraph(node2,
|
|
30414
|
-
const content3 = inline3(node2,
|
|
30419
|
+
function paragraph(node2, context, tight, lead) {
|
|
30420
|
+
const content3 = inline3(node2, context);
|
|
30415
30421
|
return tight ? b`${lead}${content3}` : b`<p>${lead}${content3}</p>`;
|
|
30416
30422
|
}
|
|
30417
|
-
function item(node2,
|
|
30423
|
+
function item(node2, context, tight) {
|
|
30418
30424
|
const box = typeof node2.checked === "boolean" ? b`<span class="task" data-done=${node2.checked ? "true" : "false"} aria-label=${node2.checked ? "done" : "open"}>${node2.checked ? "\u2611" : "\u2610"}</span> ` : A;
|
|
30419
30425
|
return b`<li>${node2.children.map(
|
|
30420
|
-
(child, index2) => child.type === "paragraph" ? paragraph(child,
|
|
30426
|
+
(child, index2) => child.type === "paragraph" ? paragraph(child, context, tight, index2 ? A : box) : flow3(child, context)
|
|
30421
30427
|
)}</li>`;
|
|
30422
30428
|
}
|
|
30423
|
-
function list3(node2,
|
|
30429
|
+
function list3(node2, context) {
|
|
30424
30430
|
const tight = !node2.spread && !node2.children.some((entry) => entry.spread);
|
|
30425
|
-
const items = node2.children.map((entry) => item(entry,
|
|
30431
|
+
const items = node2.children.map((entry) => item(entry, context, tight));
|
|
30426
30432
|
return node2.ordered ? b`<ol start=${node2.start === 1 ? A : node2.start}>${items}</ol>` : b`<ul>${items}</ul>`;
|
|
30427
30433
|
}
|
|
30428
|
-
function table(node2,
|
|
30434
|
+
function table(node2, context) {
|
|
30429
30435
|
const [head2, ...body4] = node2.children;
|
|
30430
30436
|
const align = (index2) => node2.align[index2] ?? A;
|
|
30431
30437
|
return b`<div class="table"><table>
|
|
30432
|
-
<thead><tr>${head2.children.map((cell, index2) => b`<th data-align=${align(index2)}>${inline3(cell,
|
|
30433
|
-
<tbody>${body4.map((row) => b`<tr>${row.children.map((cell, index2) => b`<td data-align=${align(index2)}>${inline3(cell,
|
|
30438
|
+
<thead><tr>${head2.children.map((cell, index2) => b`<th data-align=${align(index2)}>${inline3(cell, context)}</th>`)}</tr></thead>
|
|
30439
|
+
<tbody>${body4.map((row) => b`<tr>${row.children.map((cell, index2) => b`<td data-align=${align(index2)}>${inline3(cell, context)}</td>`)}</tr>`)}</tbody>
|
|
30434
30440
|
</table></div>`;
|
|
30435
30441
|
}
|
|
30436
|
-
function flow3(node2,
|
|
30442
|
+
function flow3(node2, context) {
|
|
30437
30443
|
switch (node2.type) {
|
|
30438
30444
|
case "paragraph":
|
|
30439
|
-
return paragraph(node2,
|
|
30445
|
+
return paragraph(node2, context, false, A);
|
|
30440
30446
|
case "heading":
|
|
30441
|
-
return b`<p class="heading" role="heading" aria-level=${Math.min(node2.depth + 2, 6)}>${inline3(node2,
|
|
30447
|
+
return b`<p class="heading" role="heading" aria-level=${Math.min(context.level === null ? node2.depth + 2 : context.level + 1, 6)}>${inline3(node2, context)}</p>`;
|
|
30442
30448
|
case "code":
|
|
30443
30449
|
return b`<pre class="code" data-lang=${node2.lang || A}><code>${node2.value}</code></pre>`;
|
|
30444
30450
|
case "list":
|
|
30445
|
-
return list3(node2,
|
|
30451
|
+
return list3(node2, context);
|
|
30446
30452
|
case "table":
|
|
30447
|
-
return table(node2,
|
|
30453
|
+
return table(node2, context);
|
|
30448
30454
|
case "blockquote":
|
|
30449
|
-
return b`<blockquote>${node2.children.map((child) => flow3(child,
|
|
30455
|
+
return b`<blockquote>${node2.children.map((child) => flow3(child, context))}</blockquote>`;
|
|
30450
30456
|
case "thematicBreak":
|
|
30451
30457
|
return b`<hr />`;
|
|
30452
|
-
case "html":
|
|
30453
|
-
|
|
30458
|
+
case "html": {
|
|
30459
|
+
const text5 = inert(node2.value, context.strict).trim();
|
|
30460
|
+
return text5 ? b`<p>${text5}</p>` : A;
|
|
30461
|
+
}
|
|
30454
30462
|
default:
|
|
30455
30463
|
return A;
|
|
30456
30464
|
}
|
|
30457
30465
|
}
|
|
30458
|
-
function block(node2,
|
|
30459
|
-
|
|
30466
|
+
function block(node2, context) {
|
|
30467
|
+
const key2 = `${context.strict}:${context.level}`;
|
|
30468
|
+
const cache5 = rendered.get(key2) ?? /* @__PURE__ */ new WeakMap();
|
|
30469
|
+
rendered.set(key2, cache5);
|
|
30470
|
+
let output = cache5.get(node2);
|
|
30460
30471
|
if (output === void 0) {
|
|
30461
|
-
output = flow3(node2,
|
|
30462
|
-
|
|
30472
|
+
output = flow3(node2, context);
|
|
30473
|
+
cache5.set(node2, output);
|
|
30463
30474
|
}
|
|
30464
30475
|
return output;
|
|
30465
30476
|
}
|
|
30466
|
-
function markdown(text5) {
|
|
30477
|
+
function markdown(text5, options2 = {}) {
|
|
30467
30478
|
const { blocks, definitions } = parse2(text5);
|
|
30468
|
-
|
|
30479
|
+
const context = { definitions, strict: options2.strict === true, level: options2.level ?? null };
|
|
30480
|
+
return b`${blocks.map((node2) => block(node2, context))}`;
|
|
30469
30481
|
}
|
|
30470
30482
|
var markdownCss = i`
|
|
30471
30483
|
.markdown :is(p, ul, ol, .table, pre, blockquote) {
|
|
@@ -35217,8 +35229,8 @@ function treeStatus(changes2) {
|
|
|
35217
35229
|
function ancestors(paths) {
|
|
35218
35230
|
const out = /* @__PURE__ */ new Set();
|
|
35219
35231
|
for (const path2 of paths) {
|
|
35220
|
-
const
|
|
35221
|
-
for (let i26 = 1; i26 <=
|
|
35232
|
+
const parts3 = relative(path2).split("/").slice(0, -1);
|
|
35233
|
+
for (let i26 = 1; i26 <= parts3.length; i26++) out.add(parts3.slice(0, i26).join("/"));
|
|
35222
35234
|
}
|
|
35223
35235
|
return [...out];
|
|
35224
35236
|
}
|
|
@@ -36772,7 +36784,7 @@ function block2(text5, copied, copy, first2 = false) {
|
|
|
36772
36784
|
}
|
|
36773
36785
|
function breakable(text5) {
|
|
36774
36786
|
return text5.split("/").map(
|
|
36775
|
-
(part2, index2,
|
|
36787
|
+
(part2, index2, parts3) => b`${part2}${index2 < parts3.length - 1 ? b`/<wbr />` : A}`
|
|
36776
36788
|
);
|
|
36777
36789
|
}
|
|
36778
36790
|
function reach({ intro, extensionUrl, copied, uncopied, copy }) {
|
|
@@ -39113,11 +39125,11 @@ function budgetVariant(percent2) {
|
|
|
39113
39125
|
return variant === "informative" ? "neutral" : variant;
|
|
39114
39126
|
}
|
|
39115
39127
|
function spendLine(status2) {
|
|
39116
|
-
const
|
|
39128
|
+
const parts3 = [
|
|
39117
39129
|
status2.spent ? `Spent $${status2.spent.toFixed(2)}` : "",
|
|
39118
39130
|
status2.rate ? `$${status2.rate.toFixed(2)}/h` : ""
|
|
39119
39131
|
];
|
|
39120
|
-
const line =
|
|
39132
|
+
const line = parts3.filter(Boolean).join(" \xB7 ");
|
|
39121
39133
|
return line ? `${line}. ` : "";
|
|
39122
39134
|
}
|
|
39123
39135
|
function budgetLine(status2, budget) {
|
|
@@ -44662,8 +44674,8 @@ function placed(item2) {
|
|
|
44662
44674
|
const installs = item2.installs ?? [];
|
|
44663
44675
|
if (!installs.length) return item2;
|
|
44664
44676
|
const version2 = item2.version ?? installs[0].version;
|
|
44665
|
-
const
|
|
44666
|
-
const state2 = item2.state === "available" ?
|
|
44677
|
+
const newer2 = item2.offered !== null && item2.offered !== version2;
|
|
44678
|
+
const state2 = item2.state === "available" ? newer2 ? "outdated" : "installed" : item2.state;
|
|
44667
44679
|
const owned = installs.some((install) => install.manager === "panel");
|
|
44668
44680
|
const hidden = new Set(owned ? ["install"] : ["install", "remove"]);
|
|
44669
44681
|
return { ...item2, version: version2, state: state2, actions: item2.actions.filter((action) => !hidden.has(action)) };
|
|
@@ -44693,11 +44705,11 @@ function requiresText(item2, all3) {
|
|
|
44693
44705
|
});
|
|
44694
44706
|
const present = needs.filter((need) => !need.missing).map((need) => need.label);
|
|
44695
44707
|
const missing = needs.filter((need) => need.missing).map((need) => need.label);
|
|
44696
|
-
const
|
|
44708
|
+
const parts3 = [
|
|
44697
44709
|
present.length ? `Uses ${list5(present)}` : "",
|
|
44698
44710
|
item2.version === null && missing.length ? `Installs ${list5(missing)} too` : ""
|
|
44699
44711
|
].filter(Boolean);
|
|
44700
|
-
return
|
|
44712
|
+
return parts3.length ? parts3.join("; ") : null;
|
|
44701
44713
|
}
|
|
44702
44714
|
var fetched = (progress) => progress.phase === "download" && (progress.bytes?.total ?? 0) > 0 ? progress.bytes : null;
|
|
44703
44715
|
var phased = (progress) => {
|
|
@@ -44712,6 +44724,62 @@ var counted = (progress, unit = "") => {
|
|
|
44712
44724
|
};
|
|
44713
44725
|
var itemBusy = (item2) => running.has(item2.state) || item2.state === "starting" || item2.progress !== null;
|
|
44714
44726
|
var packageBusy = (item2) => packageRunning.has(item2.state) || item2.progress !== null;
|
|
44727
|
+
var parts2 = (version2) => {
|
|
44728
|
+
const main2 = version2.replace(/^v/, "").split("+")[0];
|
|
44729
|
+
const dash2 = main2.indexOf("-");
|
|
44730
|
+
return dash2 < 0 ? [main2, null] : [main2.slice(0, dash2), main2.slice(dash2 + 1)];
|
|
44731
|
+
};
|
|
44732
|
+
var identifier = (a23, b13) => {
|
|
44733
|
+
const numeric = [/^\d+$/.test(a23), /^\d+$/.test(b13)];
|
|
44734
|
+
if (numeric[0] && numeric[1]) return Math.sign(Number(a23) - Number(b13));
|
|
44735
|
+
if (numeric[0] !== numeric[1]) return numeric[0] ? -1 : 1;
|
|
44736
|
+
return a23 < b13 ? -1 : a23 > b13 ? 1 : 0;
|
|
44737
|
+
};
|
|
44738
|
+
var dotted = (a23, b13) => {
|
|
44739
|
+
const left = a23.split(".");
|
|
44740
|
+
const right = b13.split(".");
|
|
44741
|
+
for (let index2 = 0; index2 < Math.min(left.length, right.length); index2++) {
|
|
44742
|
+
const order = identifier(left[index2], right[index2]);
|
|
44743
|
+
if (order) return order;
|
|
44744
|
+
}
|
|
44745
|
+
return Math.sign(left.length - right.length);
|
|
44746
|
+
};
|
|
44747
|
+
var newer = (a23, b13) => {
|
|
44748
|
+
const [coreA, preA] = parts2(a23);
|
|
44749
|
+
const [coreB, preB] = parts2(b13);
|
|
44750
|
+
const core2 = dotted(coreA, coreB);
|
|
44751
|
+
if (core2 || preA === preB) return core2;
|
|
44752
|
+
if (preA === null) return 1;
|
|
44753
|
+
return preB === null ? -1 : dotted(preA, preB);
|
|
44754
|
+
};
|
|
44755
|
+
var certBlock = /<!--\s*cert-verify\s*-->([\s\S]*?)<!--\s*\/cert-verify\s*-->/g;
|
|
44756
|
+
var notesLimit = 8192;
|
|
44757
|
+
var noted = /* @__PURE__ */ new WeakMap();
|
|
44758
|
+
function releaseNotes(release2) {
|
|
44759
|
+
const known = noted.get(release2);
|
|
44760
|
+
if (known) return known;
|
|
44761
|
+
const text5 = release2.notes ?? "";
|
|
44762
|
+
const certified = [...text5.matchAll(certBlock)].some(
|
|
44763
|
+
([, inner]) => /^certified\b/.test(inner.trim())
|
|
44764
|
+
);
|
|
44765
|
+
const lines = text5.replace(certBlock, "").trim().split("\n");
|
|
44766
|
+
const heading = /^#{1,6}\s/.test(lines[0]) && lines[0].includes(release2.version.replace(/^v/, ""));
|
|
44767
|
+
const full = lines.slice(heading ? 1 : 0).join("\n").trim();
|
|
44768
|
+
const cut = full.length > notesLimit;
|
|
44769
|
+
const head2 = full.slice(0, notesLimit);
|
|
44770
|
+
const line = head2.lastIndexOf("\n");
|
|
44771
|
+
const body4 = cut ? `${(line > notesLimit / 2 ? head2.slice(0, line) : head2).trimEnd()}\u2026` : full;
|
|
44772
|
+
const notes2 = { release: release2, body: body4, certified, cut };
|
|
44773
|
+
noted.set(release2, notes2);
|
|
44774
|
+
return notes2;
|
|
44775
|
+
}
|
|
44776
|
+
function whatsNew(releases, from, to) {
|
|
44777
|
+
if (!releases || from === null || to === null || to === from) return [];
|
|
44778
|
+
const range3 = releases.filter((release2) => newer(release2.version, from) > 0 && newer(release2.version, to) <= 0).sort((a23, b13) => newer(b13.version, a23.version)).map(releaseNotes);
|
|
44779
|
+
return range3.some((entry) => entry.body) ? range3 : [];
|
|
44780
|
+
}
|
|
44781
|
+
var secure = (url) => /^https:\/\//i.test(url);
|
|
44782
|
+
var installed2 = (releases, version2) => releases?.find((release2) => newer(release2.version, version2) === 0 && secure(release2.url));
|
|
44715
44783
|
var snapshot = (items) => new Map(items.map(({ id, state: state2, error }) => [id, { state: state2, error }]));
|
|
44716
44784
|
function settled2(failures, before, after) {
|
|
44717
44785
|
return new Map(
|
|
@@ -44783,7 +44851,9 @@ var SliccUpdates = class extends ModelElement {
|
|
|
44783
44851
|
return running2 ? "a package is installing" : null;
|
|
44784
44852
|
}
|
|
44785
44853
|
static styles = [
|
|
44854
|
+
r(link_default),
|
|
44786
44855
|
disclosureStyles,
|
|
44856
|
+
markdownCss,
|
|
44787
44857
|
i`
|
|
44788
44858
|
:host {
|
|
44789
44859
|
display: block;
|
|
@@ -44881,12 +44951,12 @@ var SliccUpdates = class extends ModelElement {
|
|
|
44881
44951
|
section > .hint {
|
|
44882
44952
|
margin-block-end: var(--swc-spacing-100);
|
|
44883
44953
|
}
|
|
44884
|
-
|
|
44954
|
+
.rows {
|
|
44885
44955
|
margin: 0;
|
|
44886
44956
|
padding: 0;
|
|
44887
44957
|
list-style: none;
|
|
44888
44958
|
}
|
|
44889
|
-
li {
|
|
44959
|
+
.rows > li {
|
|
44890
44960
|
display: grid;
|
|
44891
44961
|
grid-template-columns: minmax(0, 1fr) auto;
|
|
44892
44962
|
grid-template-areas: 'name buttons' 'description buttons';
|
|
@@ -44895,7 +44965,7 @@ var SliccUpdates = class extends ModelElement {
|
|
|
44895
44965
|
padding: var(--swc-spacing-200) 0;
|
|
44896
44966
|
border-bottom: var(--swc-border-width-100) solid var(--swc-gray-200);
|
|
44897
44967
|
}
|
|
44898
|
-
li > :not(.name, .buttons, .description) {
|
|
44968
|
+
.rows > li > :not(.name, .buttons, .description) {
|
|
44899
44969
|
grid-column: 1 / -1;
|
|
44900
44970
|
margin: 0;
|
|
44901
44971
|
}
|
|
@@ -44926,11 +44996,11 @@ var SliccUpdates = class extends ModelElement {
|
|
|
44926
44996
|
text-overflow: ellipsis;
|
|
44927
44997
|
white-space: nowrap;
|
|
44928
44998
|
}
|
|
44929
|
-
li .meta {
|
|
44999
|
+
.rows > li > .meta {
|
|
44930
45000
|
justify-content: flex-start;
|
|
44931
45001
|
gap: 0;
|
|
44932
45002
|
}
|
|
44933
|
-
li .meta > * + *::before {
|
|
45003
|
+
.rows > li > .meta > * + *::before {
|
|
44934
45004
|
content: '·';
|
|
44935
45005
|
margin-inline: var(--swc-spacing-100);
|
|
44936
45006
|
}
|
|
@@ -44984,6 +45054,55 @@ var SliccUpdates = class extends ModelElement {
|
|
|
44984
45054
|
.package {
|
|
44985
45055
|
color: var(--swc-neutral-subdued-content-color-default);
|
|
44986
45056
|
}
|
|
45057
|
+
.swc-Link {
|
|
45058
|
+
font-size: inherit;
|
|
45059
|
+
}
|
|
45060
|
+
.title .swc-Link {
|
|
45061
|
+
font-weight: inherit;
|
|
45062
|
+
}
|
|
45063
|
+
.installed {
|
|
45064
|
+
display: flex;
|
|
45065
|
+
flex-wrap: wrap;
|
|
45066
|
+
align-items: baseline;
|
|
45067
|
+
gap: var(--swc-spacing-200);
|
|
45068
|
+
}
|
|
45069
|
+
.releases {
|
|
45070
|
+
display: grid;
|
|
45071
|
+
grid-template-columns: minmax(0, 1fr);
|
|
45072
|
+
gap: var(--swc-spacing-400);
|
|
45073
|
+
margin-block-start: var(--swc-spacing-200);
|
|
45074
|
+
padding: var(--swc-spacing-300);
|
|
45075
|
+
border: var(--swc-border-width-100) solid transparent;
|
|
45076
|
+
background: var(--swc-background-layer-1-color);
|
|
45077
|
+
border-radius: var(--swc-corner-radius-medium-default);
|
|
45078
|
+
overflow-wrap: anywhere;
|
|
45079
|
+
}
|
|
45080
|
+
.release {
|
|
45081
|
+
min-width: 0;
|
|
45082
|
+
}
|
|
45083
|
+
.title {
|
|
45084
|
+
margin: 0;
|
|
45085
|
+
font-size: var(--swc-font-size-100);
|
|
45086
|
+
font-weight: var(--swc-bold-font-weight);
|
|
45087
|
+
color: var(--swc-heading-color);
|
|
45088
|
+
display: flex;
|
|
45089
|
+
align-items: center;
|
|
45090
|
+
flex-wrap: wrap;
|
|
45091
|
+
gap: var(--swc-spacing-100);
|
|
45092
|
+
}
|
|
45093
|
+
.cut {
|
|
45094
|
+
margin: var(--swc-spacing-100) 0 0;
|
|
45095
|
+
}
|
|
45096
|
+
.release > .markdown {
|
|
45097
|
+
margin-block-start: var(--swc-spacing-100);
|
|
45098
|
+
line-height: var(--swc-line-height-200);
|
|
45099
|
+
}
|
|
45100
|
+
.release .markdown .heading[aria-level] {
|
|
45101
|
+
font-size: var(--swc-font-size-100);
|
|
45102
|
+
font-weight: var(--swc-bold-font-weight);
|
|
45103
|
+
color: var(--swc-neutral-subdued-content-color-default);
|
|
45104
|
+
margin-block: var(--swc-spacing-200) var(--swc-spacing-75);
|
|
45105
|
+
}
|
|
44987
45106
|
@container (max-width: 480px) {
|
|
44988
45107
|
.page {
|
|
44989
45108
|
padding: var(--swc-spacing-300);
|
|
@@ -44993,7 +45112,7 @@ var SliccUpdates = class extends ModelElement {
|
|
|
44993
45112
|
flex-direction: column;
|
|
44994
45113
|
gap: var(--swc-spacing-50);
|
|
44995
45114
|
}
|
|
44996
|
-
li {
|
|
45115
|
+
.rows > li {
|
|
44997
45116
|
grid-template-areas: 'name buttons' 'description description';
|
|
44998
45117
|
}
|
|
44999
45118
|
.description {
|
|
@@ -45142,6 +45261,37 @@ var SliccUpdates = class extends ModelElement {
|
|
|
45142
45261
|
const shown4 = date.toLocaleString("en-GB", { dateStyle: "medium", timeStyle: "short" });
|
|
45143
45262
|
return b`<span>Checked <time datetime=${date.toISOString()}>${shown4}</time></span>`;
|
|
45144
45263
|
}
|
|
45264
|
+
#whatsNew(key2, label, entries, level) {
|
|
45265
|
+
if (!entries.length) return A;
|
|
45266
|
+
return b`<details data-releases ?open=${this.#logs.has(key2)} @toggle=${this.#logs.details(key2)}>
|
|
45267
|
+
<summary data-action="whats-new">${chevron}What’s new</summary>
|
|
45268
|
+
<div class="releases">${entries.map(
|
|
45269
|
+
({
|
|
45270
|
+
release: release2,
|
|
45271
|
+
body: body4,
|
|
45272
|
+
certified,
|
|
45273
|
+
cut
|
|
45274
|
+
}) => b`<div class="release" data-version=${release2.version}>
|
|
45275
|
+
<p class="title" role="heading" aria-level=${level}>${secure(release2.url) ? b`<a class="swc-Link swc-Link--standalone" href=${release2.url} target="_blank" rel="noopener noreferrer" data-action="release-notes" aria-label=${`${label} ${release2.version} release notes`}>${release2.version}</a>` : release2.version}${certified ? b`<swc-badge size="s" variant="positive" subtle data-certified>Certified</swc-badge>` : A}</p>
|
|
45276
|
+
${body4 ? b`<div class="markdown">${markdown(body4, { strict: true, level })}</div>` : A}
|
|
45277
|
+
${cut && secure(release2.url) ? b`<p class="cut" data-cut><a class="swc-Link swc-Link--standalone" href=${release2.url} target="_blank" rel="noopener noreferrer" data-action="release-notes" aria-label=${`Read the full notes for ${label} ${release2.version}`}>Read the full notes</a></p>` : A}
|
|
45278
|
+
</div>`
|
|
45279
|
+
)}</div>
|
|
45280
|
+
</details>`;
|
|
45281
|
+
}
|
|
45282
|
+
#releaseLink(label, version2, releases, npm) {
|
|
45283
|
+
const release2 = installed2(releases, version2);
|
|
45284
|
+
if (release2) {
|
|
45285
|
+
return b`<a class="swc-Link swc-Link--standalone" href=${release2.url} target="_blank" rel="noopener noreferrer" data-action="release-notes" aria-label=${`${label} ${version2} release notes`}>Release notes</a>`;
|
|
45286
|
+
}
|
|
45287
|
+
if (!npm) return A;
|
|
45288
|
+
return b`<a class="swc-Link swc-Link--standalone" href=${`https://www.npmjs.com/package/${npm}/v/${version2}`} target="_blank" rel="noopener noreferrer" data-action="npm-page" aria-label=${`npm page for ${label} ${version2}`}>npm page</a>`;
|
|
45289
|
+
}
|
|
45290
|
+
#version(item2) {
|
|
45291
|
+
const text5 = b`<span class="version">${item2.from ?? "Not installed"}${item2.to && item2.to !== item2.from ? b` → ${item2.to}` : A}</span>`;
|
|
45292
|
+
const link2 = item2.from !== null && (item2.to === null || item2.to === item2.from) ? this.#releaseLink(item2.label, item2.from, item2.releases) : A;
|
|
45293
|
+
return link2 === A ? text5 : b`<span class="installed">${text5}${link2}</span>`;
|
|
45294
|
+
}
|
|
45145
45295
|
#item(item2) {
|
|
45146
45296
|
const [variant, state2] = states[item2.state];
|
|
45147
45297
|
const label = item2.state === "failed" && item2.from !== null ? "Update failed" : state2;
|
|
@@ -45153,7 +45303,7 @@ var SliccUpdates = class extends ModelElement {
|
|
|
45153
45303
|
<swc-status-light variant=${variant}>${label}</swc-status-light>
|
|
45154
45304
|
</div>
|
|
45155
45305
|
<div class="meta">
|
|
45156
|
-
|
|
45306
|
+
${this.#version(item2)}
|
|
45157
45307
|
${item2.state === "starting" ? A : this.#checked(item2.checkedAt)}
|
|
45158
45308
|
</div>
|
|
45159
45309
|
${this.#progress(item2)}
|
|
@@ -45162,6 +45312,7 @@ var SliccUpdates = class extends ModelElement {
|
|
|
45162
45312
|
<span>${error}</span>
|
|
45163
45313
|
</div>` : A}
|
|
45164
45314
|
${this.#actions(item2)}
|
|
45315
|
+
${this.#whatsNew(`releases:item:${item2.id}`, item2.label, whatsNew(item2.releases, item2.from, item2.to), 3)}
|
|
45165
45316
|
${item2.log ? b`<details ?open=${this.#logs.has(`item:${item2.id}`)} @toggle=${this.#logs.details(`item:${item2.id}`)}><summary>${chevron}Install log</summary><pre>${item2.log}</pre></details>` : A}
|
|
45166
45317
|
</article>`;
|
|
45167
45318
|
}
|
|
@@ -45183,8 +45334,14 @@ var SliccUpdates = class extends ModelElement {
|
|
|
45183
45334
|
${elsewhere(item2).map((install) => b`<span data-install>${installText(install, item2.version)}</span>`)}
|
|
45184
45335
|
${download2 ? b`<span>${size3(item2.size)}</span>` : A}
|
|
45185
45336
|
${requires ? b`<span data-requires>${requires}</span>` : A}
|
|
45337
|
+
${this.#packageLink(item2)}
|
|
45186
45338
|
</p>`;
|
|
45187
45339
|
}
|
|
45340
|
+
#packageLink(item2) {
|
|
45341
|
+
if (item2.version === null || item2.offered !== null && item2.offered !== item2.version)
|
|
45342
|
+
return A;
|
|
45343
|
+
return b`<span>${this.#releaseLink(item2.label, item2.version, item2.releases, item2.package)}</span>`;
|
|
45344
|
+
}
|
|
45188
45345
|
#packageProgress(item2) {
|
|
45189
45346
|
const progress = item2.progress;
|
|
45190
45347
|
const phase = progress ? progress.phase === "download" ? "downloading" : "linking" : null;
|
|
@@ -45226,6 +45383,7 @@ var SliccUpdates = class extends ModelElement {
|
|
|
45226
45383
|
${item2.commands.length ? b`<p class="commands"><span class="hidden">Commands: </span>${item2.commands.map(
|
|
45227
45384
|
(command3) => b`<code>${command3}</code>`
|
|
45228
45385
|
)}</p>` : A}
|
|
45386
|
+
${this.#whatsNew(`releases:package:${item2.id}`, item2.label, whatsNew(item2.releases, item2.version, item2.offered), 4)}
|
|
45229
45387
|
${this.#packageProgress(item2)}
|
|
45230
45388
|
${error ? b`<div class="error" role="alert" data-error>
|
|
45231
45389
|
<swc-icon-alert-triangle size="s" aria-hidden="true"></swc-icon-alert-triangle>
|
|
@@ -45235,7 +45393,7 @@ var SliccUpdates = class extends ModelElement {
|
|
|
45235
45393
|
</li>`;
|
|
45236
45394
|
}
|
|
45237
45395
|
#list(items, all3, port) {
|
|
45238
|
-
return b`<ul>${c(
|
|
45396
|
+
return b`<ul class="rows">${c(
|
|
45239
45397
|
items,
|
|
45240
45398
|
(item2) => item2.id,
|
|
45241
45399
|
(item2) => this.#package(item2, all3, Boolean(port.actPackage))
|
|
@@ -46253,16 +46411,16 @@ function sudo(approval) {
|
|
|
46253
46411
|
var rulePaths = ["/etc/fnox", "/etc/fnox/config.toml", "/etc/slicc/secrets-policy.toml"];
|
|
46254
46412
|
var ruleParents = ["/", "/etc", "/etc/slicc"];
|
|
46255
46413
|
function absolute(cwd, word) {
|
|
46256
|
-
const
|
|
46414
|
+
const parts3 = [];
|
|
46257
46415
|
for (const part2 of `${word.startsWith("/") ? "" : cwd}/${word}`.split("/")) {
|
|
46258
|
-
if (part2 === "..")
|
|
46259
|
-
else if (part2 && part2 !== ".")
|
|
46260
|
-
const alias =
|
|
46261
|
-
if (alias?.[2] === "root")
|
|
46416
|
+
if (part2 === "..") parts3.pop();
|
|
46417
|
+
else if (part2 && part2 !== ".") parts3.push(part2);
|
|
46418
|
+
const alias = parts3.join("/").match(/^proc\/([^/]+)\/(?:task\/[^/]+\/)?(root|cwd)$/);
|
|
46419
|
+
if (alias?.[2] === "root") parts3.length = 0;
|
|
46262
46420
|
else if (alias && /^(?:self|thread-self)$/.test(alias[1]))
|
|
46263
|
-
|
|
46421
|
+
parts3.splice(0, parts3.length, ...cwd.split("/").filter(Boolean));
|
|
46264
46422
|
}
|
|
46265
|
-
return `/${
|
|
46423
|
+
return `/${parts3.join("/")}`;
|
|
46266
46424
|
}
|
|
46267
46425
|
function pattern(path2) {
|
|
46268
46426
|
const source = path2.replace(/[.+^${}()|[\]\\]/g, "\\$&").replace(/\*\*\//g, "").replace(/\*\*/g, "").replace(/\*/g, "[^/]*").replace(/\?/g, "[^/]").replace(/\u0001/g, "(?:.*/)?").replace(/\u0002/g, ".*");
|
|
@@ -48098,12 +48256,12 @@ function groups(changes2) {
|
|
|
48098
48256
|
return [...byRepo];
|
|
48099
48257
|
}
|
|
48100
48258
|
function commands2(text5) {
|
|
48101
|
-
const
|
|
48102
|
-
if (
|
|
48103
|
-
const codes =
|
|
48259
|
+
const parts3 = text5.split("`").map((part2, index2) => index2 % 2 ? { code: part2 } : part2);
|
|
48260
|
+
if (parts3.length % 2 === 0) return { parts: [text5], codes: [] };
|
|
48261
|
+
const codes = parts3.flatMap(
|
|
48104
48262
|
(part2) => typeof part2 === "string" || !part2.code ? [] : [part2.code]
|
|
48105
48263
|
);
|
|
48106
|
-
return { parts:
|
|
48264
|
+
return { parts: parts3, codes: [...new Set(codes)] };
|
|
48107
48265
|
}
|
|
48108
48266
|
function errorLine(error) {
|
|
48109
48267
|
return b`<div class="error" role="status" aria-live="polite">${error ? b`<swc-icon-alert-diamond size="s" aria-hidden="true"></swc-icon-alert-diamond><span>${error}</span>` : A}</div>`;
|
|
@@ -48363,10 +48521,10 @@ var SliccChanges = class extends ModelElement {
|
|
|
48363
48521
|
}
|
|
48364
48522
|
#unavailable(text5, extra) {
|
|
48365
48523
|
const found = commands2(text5);
|
|
48366
|
-
const { parts:
|
|
48524
|
+
const { parts: parts3 } = found;
|
|
48367
48525
|
const codes = [.../* @__PURE__ */ new Set([...found.codes, ...extra])];
|
|
48368
48526
|
return b`<div class="unavailable">
|
|
48369
|
-
<p data-unavailable>${
|
|
48527
|
+
<p data-unavailable>${parts3.map((part2) => typeof part2 === "string" ? part2 : b`<code>${part2.code}</code>`)}</p>
|
|
48370
48528
|
${codes.map(
|
|
48371
48529
|
(code3) => b`<div class="command" data-command=${code3}>
|
|
48372
48530
|
<code>${breakable(code3)}</code>
|
|
@@ -48834,10 +48992,17 @@ var SliccMemory = class extends ModelElement {
|
|
|
48834
48992
|
.row {
|
|
48835
48993
|
--lead: var(--swc-spacing-300);
|
|
48836
48994
|
--indent: calc(var(--swc-spacing-100) + var(--lead) + var(--swc-spacing-75));
|
|
48995
|
+
position: relative;
|
|
48837
48996
|
border-radius: var(--swc-corner-radius-medium-default);
|
|
48838
48997
|
}
|
|
48839
|
-
li.row + li.row {
|
|
48840
|
-
|
|
48998
|
+
li.row + li.row::before {
|
|
48999
|
+
content: '';
|
|
49000
|
+
position: absolute;
|
|
49001
|
+
inset-block-start: 0;
|
|
49002
|
+
inset-inline: 0;
|
|
49003
|
+
block-size: var(--swc-border-width-100);
|
|
49004
|
+
background: var(--swc-gray-200);
|
|
49005
|
+
pointer-events: none;
|
|
48841
49006
|
}
|
|
48842
49007
|
.row:not([data-open]):hover,
|
|
48843
49008
|
.row[data-open] .head:hover {
|
|
@@ -48894,9 +49059,12 @@ var SliccMemory = class extends ModelElement {
|
|
|
48894
49059
|
.mark {
|
|
48895
49060
|
display: inline-flex;
|
|
48896
49061
|
}
|
|
49062
|
+
.row[data-open] .head :is(.tag, .scope) {
|
|
49063
|
+
visibility: hidden;
|
|
49064
|
+
}
|
|
48897
49065
|
.content {
|
|
48898
49066
|
overflow: hidden;
|
|
48899
|
-
max-height: 2lh;
|
|
49067
|
+
max-height: calc(2lh + var(--swc-spacing-100));
|
|
48900
49068
|
margin: 0 var(--swc-spacing-100) var(--swc-spacing-100) var(--indent);
|
|
48901
49069
|
line-height: var(--swc-line-height-100);
|
|
48902
49070
|
color: var(--swc-neutral-subdued-content-color-default);
|
|
@@ -48910,7 +49078,7 @@ var SliccMemory = class extends ModelElement {
|
|
|
48910
49078
|
@supports (height: calc-size(auto, size)) {
|
|
48911
49079
|
.content {
|
|
48912
49080
|
max-height: none;
|
|
48913
|
-
height: calc-size(auto, min(size, 2lh));
|
|
49081
|
+
height: calc-size(auto, min(size, 2lh + var(--swc-spacing-100)));
|
|
48914
49082
|
transition: height var(--swc-animation-duration-100) var(--swc-animation-ease-in-out);
|
|
48915
49083
|
}
|
|
48916
49084
|
.row[data-open] .content {
|
|
@@ -48940,10 +49108,30 @@ var SliccMemory = class extends ModelElement {
|
|
|
48940
49108
|
}
|
|
48941
49109
|
.actions {
|
|
48942
49110
|
display: flex;
|
|
49111
|
+
flex-wrap: wrap;
|
|
49112
|
+
align-items: center;
|
|
48943
49113
|
justify-content: flex-end;
|
|
48944
49114
|
gap: var(--swc-spacing-75);
|
|
48945
49115
|
padding-block-start: var(--swc-spacing-100);
|
|
48946
49116
|
}
|
|
49117
|
+
.meta {
|
|
49118
|
+
display: flex;
|
|
49119
|
+
flex-wrap: wrap;
|
|
49120
|
+
align-items: center;
|
|
49121
|
+
gap: var(--swc-spacing-50) var(--swc-spacing-200);
|
|
49122
|
+
margin-inline-end: auto;
|
|
49123
|
+
font-size: var(--swc-font-size-75);
|
|
49124
|
+
}
|
|
49125
|
+
.meta .label {
|
|
49126
|
+
display: inline-flex;
|
|
49127
|
+
align-items: center;
|
|
49128
|
+
gap: var(--swc-spacing-75);
|
|
49129
|
+
}
|
|
49130
|
+
.buttons {
|
|
49131
|
+
display: flex;
|
|
49132
|
+
gap: var(--swc-spacing-75);
|
|
49133
|
+
margin-inline-start: auto;
|
|
49134
|
+
}
|
|
48947
49135
|
.actions [data-action='forget'] {
|
|
48948
49136
|
--swc-action-button-content-color-default: var(--swc-negative-content-color-default);
|
|
48949
49137
|
--swc-action-button-content-color-hover: var(--swc-negative-content-color-hover);
|
|
@@ -49038,6 +49226,12 @@ var SliccMemory = class extends ModelElement {
|
|
|
49038
49226
|
}
|
|
49039
49227
|
return marks;
|
|
49040
49228
|
}
|
|
49229
|
+
#meta(marks) {
|
|
49230
|
+
const labelled = marks.filter((mark2) => mark2.kind !== "from");
|
|
49231
|
+
return labelled.length ? b`<div class="meta">${labelled.map(
|
|
49232
|
+
(mark2) => b`<span class="label" data-label=${mark2.kind}>${mark2.icon}${mark2.label}</span>`
|
|
49233
|
+
)}</div>` : A;
|
|
49234
|
+
}
|
|
49041
49235
|
#row(memory, section) {
|
|
49042
49236
|
if (this.editing === memory.id)
|
|
49043
49237
|
return b`<li class="row" data-id=${memory.id}>${this.#form(memory)}</li>`;
|
|
@@ -49057,12 +49251,15 @@ var SliccMemory = class extends ModelElement {
|
|
|
49057
49251
|
<div class="content" id=${`content-${memory.id}`} @click=${() => open || toggle()}>
|
|
49058
49252
|
<div class="body markdown">${markdown(memory.body)}</div>
|
|
49059
49253
|
${open ? b`<div class="actions">
|
|
49254
|
+
${this.#meta(marks)}
|
|
49255
|
+
<div class="buttons">
|
|
49060
49256
|
<swc-action-button size="s" quiet data-action="edit" @click=${() => this.editing = memory.id}>
|
|
49061
49257
|
<swc-icon-edit slot="icon"></swc-icon-edit>Edit
|
|
49062
49258
|
</swc-action-button>
|
|
49063
49259
|
<swc-action-button size="s" quiet data-action="forget" @click=${(event2) => this.#forget(memory, event2.currentTarget)}>
|
|
49064
49260
|
<swc-icon-delete slot="icon"></swc-icon-delete>Forget
|
|
49065
49261
|
</swc-action-button>
|
|
49262
|
+
</div>
|
|
49066
49263
|
</div>` : A}
|
|
49067
49264
|
</div>
|
|
49068
49265
|
</li>`;
|
|
@@ -49402,24 +49599,24 @@ function changes(entry, devices) {
|
|
|
49402
49599
|
}
|
|
49403
49600
|
var listed = (items, one3) => items.map((item2, index2) => b`${index2 ? ", " : ""}${one3(item2)}`);
|
|
49404
49601
|
function endpointsLine(entry, named2 = (provider) => provider) {
|
|
49405
|
-
const
|
|
49602
|
+
const parts3 = [];
|
|
49406
49603
|
if (entry.purged?.length)
|
|
49407
|
-
|
|
49604
|
+
parts3.push(
|
|
49408
49605
|
b`<span class="part" data-part="purged">Removed custom model URLs an agent set, automatically: ${listed(entry.purged, (item2) => b`${named2(item2.provider)} at <code>${item2.host ?? item2.url}</code>`)}. Only you can set a model URL now, in Settings › Accounts</span>`
|
|
49409
49606
|
);
|
|
49410
49607
|
if (entry.adopted?.length)
|
|
49411
|
-
|
|
49608
|
+
parts3.push(
|
|
49412
49609
|
b`<span class="part" data-part="adopted">Kept the MCP servers your tokens use, automatically: ${listed(entry.adopted, (item2) => b`${item2.server} at <code>${item2.host}</code>`)}</span>`
|
|
49413
49610
|
);
|
|
49414
49611
|
if (entry.pinned)
|
|
49415
|
-
|
|
49612
|
+
parts3.push(
|
|
49416
49613
|
b`<span class="part" data-part="pinned"><code>${entry.pinned.name ?? entry.pinned.server}</code> pinned to <code>${entry.pinned.host}</code> automatically, on first use</span>`
|
|
49417
49614
|
);
|
|
49418
49615
|
if (entry.unpinned)
|
|
49419
|
-
|
|
49616
|
+
parts3.push(
|
|
49420
49617
|
b`<span class="part" data-part="unpinned"><code>${entry.unpinned.name ?? entry.unpinned.server}</code> unpinned from <code>${entry.unpinned.host}</code>; the next use pins it again</span>`
|
|
49421
49618
|
);
|
|
49422
|
-
return b`${
|
|
49619
|
+
return b`${parts3.map((part2, index2) => b`${index2 ? ". " : ""}${part2}`)}`;
|
|
49423
49620
|
}
|
|
49424
49621
|
function auditLine(entry, devices, named2) {
|
|
49425
49622
|
switch (entry.type) {
|
|
@@ -51984,7 +52181,7 @@ function closure(found, source) {
|
|
|
51984
52181
|
return used;
|
|
51985
52182
|
}
|
|
51986
52183
|
function args(value, start2) {
|
|
51987
|
-
const
|
|
52184
|
+
const parts3 = [];
|
|
51988
52185
|
let depth = 0;
|
|
51989
52186
|
let from = start2;
|
|
51990
52187
|
let at = start2;
|
|
@@ -51994,18 +52191,18 @@ function args(value, start2) {
|
|
|
51994
52191
|
else if (char === ")" && depth === 0) break;
|
|
51995
52192
|
else if (char === ")") depth--;
|
|
51996
52193
|
else if (char === "," && depth === 0) {
|
|
51997
|
-
|
|
52194
|
+
parts3.push(value.slice(from, at));
|
|
51998
52195
|
from = at + 1;
|
|
51999
52196
|
}
|
|
52000
52197
|
}
|
|
52001
|
-
|
|
52002
|
-
return [
|
|
52198
|
+
parts3.push(value.slice(from, at));
|
|
52199
|
+
return [parts3, at];
|
|
52003
52200
|
}
|
|
52004
52201
|
function branch(value, side) {
|
|
52005
52202
|
const at = value.indexOf("light-dark(");
|
|
52006
52203
|
if (at < 0) return value;
|
|
52007
|
-
const [
|
|
52008
|
-
const picked = branch((
|
|
52204
|
+
const [parts3, end] = args(value, at + "light-dark(".length);
|
|
52205
|
+
const picked = branch((parts3[side] ?? "").trim(), side);
|
|
52009
52206
|
return value.slice(0, at) + picked + branch(value.slice(end + 1), side);
|
|
52010
52207
|
}
|
|
52011
52208
|
function frameTokens(found) {
|
|
@@ -57430,9 +57627,9 @@ function nameMatcher(identifers, scopes) {
|
|
|
57430
57627
|
return false;
|
|
57431
57628
|
}
|
|
57432
57629
|
let lastIndex = 0;
|
|
57433
|
-
return identifers.every((
|
|
57630
|
+
return identifers.every((identifier2) => {
|
|
57434
57631
|
for (let i26 = lastIndex; i26 < scopes.length; i26++) {
|
|
57435
|
-
if (scopesAreMatching(scopes[i26],
|
|
57632
|
+
if (scopesAreMatching(scopes[i26], identifier2)) {
|
|
57436
57633
|
lastIndex = i26 + 1;
|
|
57437
57634
|
return true;
|
|
57438
57635
|
}
|
|
@@ -58400,14 +58597,14 @@ function isSpecialTheme(theme3) {
|
|
|
58400
58597
|
var RE_NEWLINE = /(\r?\n)/g;
|
|
58401
58598
|
function splitLines(code3, preserveEnding = false) {
|
|
58402
58599
|
if (code3.length === 0) return [["", 0]];
|
|
58403
|
-
const
|
|
58600
|
+
const parts3 = code3.split(RE_NEWLINE);
|
|
58404
58601
|
let index2 = 0;
|
|
58405
58602
|
const lines = [];
|
|
58406
|
-
for (let i26 = 0; i26 <
|
|
58407
|
-
const line = preserveEnding ?
|
|
58603
|
+
for (let i26 = 0; i26 < parts3.length; i26 += 2) {
|
|
58604
|
+
const line = preserveEnding ? parts3[i26] + (parts3[i26 + 1] || "") : parts3[i26];
|
|
58408
58605
|
lines.push([line, index2]);
|
|
58409
|
-
index2 +=
|
|
58410
|
-
index2 +=
|
|
58606
|
+
index2 += parts3[i26].length;
|
|
58607
|
+
index2 += parts3[i26 + 1]?.length || 0;
|
|
58411
58608
|
}
|
|
58412
58609
|
return lines;
|
|
58413
58610
|
}
|
|
@@ -61050,7 +61247,7 @@ function element2(node2, index2, parent, state2) {
|
|
|
61050
61247
|
const schema = state2.schema;
|
|
61051
61248
|
const omit = schema.space === "svg" ? false : state2.settings.omitOptionalTags;
|
|
61052
61249
|
let selfClosing = schema.space === "svg" ? state2.settings.closeEmptyElements : state2.settings.voids.includes(node2.tagName.toLowerCase());
|
|
61053
|
-
const
|
|
61250
|
+
const parts3 = [];
|
|
61054
61251
|
let last;
|
|
61055
61252
|
if (schema.space === "html" && node2.tagName === "svg") {
|
|
61056
61253
|
state2.schema = svg3;
|
|
@@ -61062,21 +61259,21 @@ function element2(node2, index2, parent, state2) {
|
|
|
61062
61259
|
state2.schema = schema;
|
|
61063
61260
|
if (content3) selfClosing = false;
|
|
61064
61261
|
if (attributes || !omit || !opening(node2, index2, parent)) {
|
|
61065
|
-
|
|
61262
|
+
parts3.push("<", node2.tagName, attributes ? " " + attributes : "");
|
|
61066
61263
|
if (selfClosing && (schema.space === "svg" || state2.settings.closeSelfClosing)) {
|
|
61067
61264
|
last = attributes.charAt(attributes.length - 1);
|
|
61068
61265
|
if (!state2.settings.tightSelfClosing || last === "/" || last && last !== '"' && last !== "'") {
|
|
61069
|
-
|
|
61266
|
+
parts3.push(" ");
|
|
61070
61267
|
}
|
|
61071
|
-
|
|
61268
|
+
parts3.push("/");
|
|
61072
61269
|
}
|
|
61073
|
-
|
|
61270
|
+
parts3.push(">");
|
|
61074
61271
|
}
|
|
61075
|
-
|
|
61272
|
+
parts3.push(content3);
|
|
61076
61273
|
if (!selfClosing && (!omit || !closing(node2, index2, parent))) {
|
|
61077
|
-
|
|
61274
|
+
parts3.push("</" + node2.tagName + ">");
|
|
61078
61275
|
}
|
|
61079
|
-
return
|
|
61276
|
+
return parts3.join("");
|
|
61080
61277
|
}
|
|
61081
61278
|
function serializeAttributes(state2, properties) {
|
|
61082
61279
|
const values = [];
|
|
@@ -68623,8 +68820,8 @@ function getFunctionalAlpha(color2) {
|
|
|
68623
68820
|
const slashIndex = inner.lastIndexOf("/");
|
|
68624
68821
|
if (slashIndex !== -1) return inner.slice(slashIndex + 1).trim();
|
|
68625
68822
|
if (/^(?:rgba|hsla)$/i.test(fn)) {
|
|
68626
|
-
const
|
|
68627
|
-
if (
|
|
68823
|
+
const parts3 = inner.split(",");
|
|
68824
|
+
if (parts3.length === 4) return parts3[3]?.trim();
|
|
68628
68825
|
}
|
|
68629
68826
|
}
|
|
68630
68827
|
function parseHexRgba(color2) {
|
|
@@ -71808,17 +72005,17 @@ function splitAtLinePrefix(contents, prefix) {
|
|
|
71808
72005
|
${prefix}`;
|
|
71809
72006
|
const firstBoundaryIndex = contents.startsWith(prefix) ? 0 : findLinePrefixIndex(contents, newlinePrefix, 0);
|
|
71810
72007
|
if (firstBoundaryIndex === -1) return [contents];
|
|
71811
|
-
const
|
|
71812
|
-
if (firstBoundaryIndex > 0)
|
|
72008
|
+
const parts3 = [];
|
|
72009
|
+
if (firstBoundaryIndex > 0) parts3.push(contents.slice(0, firstBoundaryIndex));
|
|
71813
72010
|
let startIndex = firstBoundaryIndex;
|
|
71814
72011
|
for (; ; ) {
|
|
71815
72012
|
const nextBoundaryIndex = findLinePrefixIndex(contents, newlinePrefix, startIndex + 1);
|
|
71816
72013
|
if (nextBoundaryIndex === -1) break;
|
|
71817
|
-
|
|
72014
|
+
parts3.push(contents.slice(startIndex, nextBoundaryIndex));
|
|
71818
72015
|
startIndex = nextBoundaryIndex;
|
|
71819
72016
|
}
|
|
71820
|
-
|
|
71821
|
-
return
|
|
72017
|
+
parts3.push(contents.slice(startIndex));
|
|
72018
|
+
return parts3;
|
|
71822
72019
|
}
|
|
71823
72020
|
function findLinePrefixIndex(contents, newlinePrefix, fromIndex) {
|
|
71824
72021
|
const index2 = contents.indexOf(newlinePrefix, fromIndex);
|
|
@@ -72143,16 +72340,16 @@ function overlapCount(a23, b13) {
|
|
|
72143
72340
|
return k8;
|
|
72144
72341
|
}
|
|
72145
72342
|
function segment(string3, segmenter) {
|
|
72146
|
-
const
|
|
72343
|
+
const parts3 = [];
|
|
72147
72344
|
for (const segmentObj of Array.from(segmenter.segment(string3))) {
|
|
72148
72345
|
const segment2 = segmentObj.segment;
|
|
72149
|
-
if (
|
|
72150
|
-
|
|
72346
|
+
if (parts3.length && /\s/.test(parts3[parts3.length - 1]) && /\s/.test(segment2)) {
|
|
72347
|
+
parts3[parts3.length - 1] += segment2;
|
|
72151
72348
|
} else {
|
|
72152
|
-
|
|
72349
|
+
parts3.push(segment2);
|
|
72153
72350
|
}
|
|
72154
72351
|
}
|
|
72155
|
-
return
|
|
72352
|
+
return parts3;
|
|
72156
72353
|
}
|
|
72157
72354
|
function trailingWs(string3, segmenter) {
|
|
72158
72355
|
if (segmenter) {
|
|
@@ -72200,19 +72397,19 @@ var WordDiff = class extends Diff {
|
|
|
72200
72397
|
return left.trim() === right.trim();
|
|
72201
72398
|
}
|
|
72202
72399
|
tokenize(value, options2 = {}) {
|
|
72203
|
-
let
|
|
72400
|
+
let parts3;
|
|
72204
72401
|
if (options2.intlSegmenter) {
|
|
72205
72402
|
const segmenter = options2.intlSegmenter;
|
|
72206
72403
|
if (segmenter.resolvedOptions().granularity != "word") {
|
|
72207
72404
|
throw new Error('The segmenter passed must have a granularity of "word"');
|
|
72208
72405
|
}
|
|
72209
|
-
|
|
72406
|
+
parts3 = segment(value, segmenter);
|
|
72210
72407
|
} else {
|
|
72211
|
-
|
|
72408
|
+
parts3 = value.match(tokenizeIncludingWhitespace) || [];
|
|
72212
72409
|
}
|
|
72213
72410
|
const tokens = [];
|
|
72214
72411
|
let prevPart = null;
|
|
72215
|
-
|
|
72412
|
+
parts3.forEach((part2) => {
|
|
72216
72413
|
if (/\s/.test(part2)) {
|
|
72217
72414
|
if (prevPart == null) {
|
|
72218
72415
|
tokens.push(part2);
|
|
@@ -95113,7 +95310,7 @@ var SliccFileTree = class extends HTMLElement {
|
|
|
95113
95310
|
const item2 = tree?.getItem(path2);
|
|
95114
95311
|
return item2 && "isExpanded" in item2 ? item2.isExpanded() : null;
|
|
95115
95312
|
};
|
|
95116
|
-
const shown4 = (path2) => path2.split("/").slice(0, -2).every((_9, i26,
|
|
95313
|
+
const shown4 = (path2) => path2.split("/").slice(0, -2).every((_9, i26, parts3) => open(`${parts3.slice(0, i26 + 1).join("/")}/`) !== false);
|
|
95117
95314
|
return this.#paths.filter((path2) => path2.endsWith("/") && open(path2) === true && shown4(path2)).map((path2) => path2.slice(0, -1));
|
|
95118
95315
|
}
|
|
95119
95316
|
get gitStatus() {
|