fluncle 0.217.0 → 0.219.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/bin/fluncle.mjs +36 -15
- package/package.json +1 -1
package/bin/fluncle.mjs
CHANGED
|
@@ -610,7 +610,7 @@ function parseVersion(version) {
|
|
|
610
610
|
var currentVersion;
|
|
611
611
|
var init_version = __esm(() => {
|
|
612
612
|
init_output();
|
|
613
|
-
currentVersion = "0.
|
|
613
|
+
currentVersion = "0.219.0".trim() ? "0.219.0".trim() : "0.1.0";
|
|
614
614
|
});
|
|
615
615
|
|
|
616
616
|
// src/update-notifier.ts
|
|
@@ -2452,7 +2452,7 @@ function parseVersion2(version) {
|
|
|
2452
2452
|
var currentVersion2, latestReleaseUrl = "https://api.github.com/repos/mauricekleine/fluncle/releases/latest";
|
|
2453
2453
|
var init_version2 = __esm(() => {
|
|
2454
2454
|
init_output();
|
|
2455
|
-
currentVersion2 = "0.
|
|
2455
|
+
currentVersion2 = "0.219.0".trim() ? "0.219.0".trim() : "0.1.0";
|
|
2456
2456
|
});
|
|
2457
2457
|
|
|
2458
2458
|
// ../../packages/registry/src/index.ts
|
|
@@ -2779,7 +2779,7 @@ var init_src = __esm(() => {
|
|
|
2779
2779
|
},
|
|
2780
2780
|
{
|
|
2781
2781
|
exposedContent: [
|
|
2782
|
-
"the R2 media zone
|
|
2782
|
+
"the R2 media zone: each finding's video bundle and mixtape audio",
|
|
2783
2783
|
"the /cdn-cgi/media transform base (same zone, no cross-origin)"
|
|
2784
2784
|
],
|
|
2785
2785
|
kind: "subdomain",
|
|
@@ -2810,7 +2810,7 @@ var init_src = __esm(() => {
|
|
|
2810
2810
|
},
|
|
2811
2811
|
{
|
|
2812
2812
|
exposedContent: [
|
|
2813
|
-
"the Tor onion mirror of www.fluncle.com
|
|
2813
|
+
"the Tor onion mirror of www.fluncle.com: the archive, API, RSS, and MCP over Tor"
|
|
2814
2814
|
],
|
|
2815
2815
|
kind: "subdomain",
|
|
2816
2816
|
name: "subdomain.onion",
|
|
@@ -7114,13 +7114,16 @@ async function mergeLabelCommand(losingSlug, canonicalSlug) {
|
|
|
7114
7114
|
const response = await adminApiPost(`/api/v1/admin/labels/${encodeURIComponent(losingSlug)}/merge`, { canonicalSlug });
|
|
7115
7115
|
return response.result;
|
|
7116
7116
|
}
|
|
7117
|
-
async function updateLabelCommand(slugOrId, seedState) {
|
|
7117
|
+
async function updateLabelCommand(slugOrId, seedState, rewalk = false) {
|
|
7118
7118
|
const { labels } = await adminApiGet("/api/v1/admin/labels");
|
|
7119
7119
|
const match = labels.find((label) => label.slug === slugOrId || label.id === slugOrId);
|
|
7120
7120
|
if (!match) {
|
|
7121
7121
|
throw new Error(`No label with slug or id '${slugOrId}' — check \`fluncle labels\``);
|
|
7122
7122
|
}
|
|
7123
|
-
const response = await adminApiPatch(`/api/v1/admin/labels/${encodeURIComponent(match.id)}`, {
|
|
7123
|
+
const response = await adminApiPatch(`/api/v1/admin/labels/${encodeURIComponent(match.id)}`, {
|
|
7124
|
+
...rewalk ? { rewalk: true } : {},
|
|
7125
|
+
...seedState === undefined ? {} : { seedState }
|
|
7126
|
+
});
|
|
7124
7127
|
return response.label;
|
|
7125
7128
|
}
|
|
7126
7129
|
async function describeLabelCommand(slug, options) {
|
|
@@ -9678,6 +9681,18 @@ function toJsonFailure(error) {
|
|
|
9678
9681
|
init_util();
|
|
9679
9682
|
|
|
9680
9683
|
// src/cli.ts
|
|
9684
|
+
function labelUpdateLines(label, options) {
|
|
9685
|
+
const lines = [];
|
|
9686
|
+
if (options.seedState !== undefined) {
|
|
9687
|
+
lines.push(`${label.name} (${label.slug}) \u2192 ${label.seedState}.`);
|
|
9688
|
+
lines.push(label.seedState === "enabled" ? " The next crawl seeds from it and stores its releases." : " The next crawl will not seed from it; nothing already stored is touched.");
|
|
9689
|
+
}
|
|
9690
|
+
if (options.rewalk) {
|
|
9691
|
+
lines.push(`${label.name} (${label.slug}) \u2192 scoped re-walk armed.`);
|
|
9692
|
+
lines.push(" The next crawl rechecks its MusicBrainz releases.");
|
|
9693
|
+
}
|
|
9694
|
+
return lines;
|
|
9695
|
+
}
|
|
9681
9696
|
function createProgram() {
|
|
9682
9697
|
const program2 = configureCommand(new Command);
|
|
9683
9698
|
program2.name("fluncle").description(fluncleTagline.toLowerCase()).option("--env <local|production>", "Config profile to load (default: production)").showSuggestionAfterError(false).addHelpCommand("help [command]", "display help for command").hook("preAction", (_thisCommand, actionCommand) => {
|
|
@@ -10471,14 +10486,15 @@ JSON field reference:
|
|
|
10471
10486
|
});
|
|
10472
10487
|
reach.command("collect").description("Collect + record one daily reach snapshot across every platform").option("--json", "Print JSON", false).action(async (options) => {
|
|
10473
10488
|
const { reachCollectCommand: reachCollectCommand2 } = await Promise.resolve().then(() => (init_admin_reach(), exports_admin_reach));
|
|
10474
|
-
const { collected, inserted, skipped } = await reachCollectCommand2();
|
|
10489
|
+
const { collected, failed, inserted, skipped } = await reachCollectCommand2();
|
|
10475
10490
|
if (options.json) {
|
|
10476
|
-
printJson({ collected, inserted, ok: true, skipped });
|
|
10491
|
+
printJson({ collected, failed, inserted, ok: true, skipped });
|
|
10477
10492
|
return;
|
|
10478
10493
|
}
|
|
10479
10494
|
const landed = collected.map((entry) => `${entry.platform} (${entry.metrics.join(", ")})`).join("; ");
|
|
10480
|
-
const missed = skipped.map((entry) => `${entry.platform}: ${entry.reason}`).join("; ");
|
|
10481
|
-
|
|
10495
|
+
const missed = skipped.map((entry) => `${entry.platform} (${entry.kind}): ${entry.reason}`).join("; ");
|
|
10496
|
+
const faults = failed.map((entry) => `${entry.platform}: ${entry.reason}`).join("; ");
|
|
10497
|
+
console.log(`Collected ${collected.length} platform(s), wrote ${inserted} new row(s).${landed ? ` Landed: ${landed}.` : ""}${missed ? ` Skipped: ${missed}.` : ""}${faults ? ` Failed: ${faults}.` : ""}`);
|
|
10482
10498
|
});
|
|
10483
10499
|
const backfill = configureCommand(admin.command("backfills").description("Backfill operator-only archives"));
|
|
10484
10500
|
backfill.action(() => {
|
|
@@ -10591,19 +10607,23 @@ JSON field reference:
|
|
|
10591
10607
|
const { draftLabelBioCommand: draftLabelBioCommand2 } = await Promise.resolve().then(() => (init_admin_labels(), exports_admin_labels));
|
|
10592
10608
|
await runEntityBioDraft("label", slug, options, draftLabelBioCommand2);
|
|
10593
10609
|
});
|
|
10594
|
-
labels.command("update").description("Rule on a label's crawl
|
|
10610
|
+
labels.command("update").description("Rule on a label's crawl scope or arm a scoped re-walk (operator)").argument("<slug>", "The label's slug (an exact lbl_\u2026 id also works)").option("--seed-state <state>", "The ruling: enabled, disabled, or undecided").option("--rewalk", "Arm a scoped re-walk without changing the ruling", false).option("--json", "Print JSON", false).action(async (slug, options) => {
|
|
10595
10611
|
const seedState = options.seedState;
|
|
10596
|
-
if (seedState !== "enabled" && seedState !== "disabled" && seedState !== "undecided") {
|
|
10612
|
+
if (seedState !== undefined && seedState !== "enabled" && seedState !== "disabled" && seedState !== "undecided") {
|
|
10597
10613
|
throw new Error("Pass --seed-state enabled|disabled|undecided");
|
|
10598
10614
|
}
|
|
10615
|
+
if (seedState === undefined && !options.rewalk) {
|
|
10616
|
+
throw new Error("Pass --seed-state enabled|disabled|undecided or --rewalk");
|
|
10617
|
+
}
|
|
10599
10618
|
const { updateLabelCommand: updateLabelCommand2 } = await Promise.resolve().then(() => (init_admin_labels(), exports_admin_labels));
|
|
10600
|
-
const label = await updateLabelCommand2(slug, seedState);
|
|
10619
|
+
const label = await updateLabelCommand2(slug, seedState, options.rewalk);
|
|
10601
10620
|
if (options.json) {
|
|
10602
10621
|
printJson({ label, ok: true });
|
|
10603
10622
|
return;
|
|
10604
10623
|
}
|
|
10605
|
-
|
|
10606
|
-
|
|
10624
|
+
for (const line of labelUpdateLines(label, options)) {
|
|
10625
|
+
console.log(line);
|
|
10626
|
+
}
|
|
10607
10627
|
});
|
|
10608
10628
|
labels.command("merge").description("Merge a slug-split label into its canonical row (operator; re-points + redirects)").argument("<losingSlug>", "The duplicate label to fold away").argument("<canonicalSlug>", "The label to keep \u2014 everything re-points onto it").option("--json", "Print JSON", false).action(async (losingSlug, canonicalSlug, options) => {
|
|
10609
10629
|
const { mergeLabelCommand: mergeLabelCommand2 } = await Promise.resolve().then(() => (init_admin_labels(), exports_admin_labels));
|
|
@@ -13614,5 +13634,6 @@ if (__require.main == __require.module) {
|
|
|
13614
13634
|
}
|
|
13615
13635
|
export {
|
|
13616
13636
|
parseTelemetryTimestamp,
|
|
13637
|
+
labelUpdateLines,
|
|
13617
13638
|
createProgram
|
|
13618
13639
|
};
|
package/package.json
CHANGED