fluncle 0.207.0 → 0.209.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 +21 -9
- 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.209.0".trim() ? "0.209.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.209.0".trim() ? "0.209.0".trim() : "0.1.0";
|
|
2456
2456
|
});
|
|
2457
2457
|
|
|
2458
2458
|
// ../../packages/registry/src/index.ts
|
|
@@ -2677,6 +2677,20 @@ var init_src = __esm(() => {
|
|
|
2677
2677
|
url: `${SITE}/galaxies`,
|
|
2678
2678
|
weights: { ssh: "secondary", web: "secondary" }
|
|
2679
2679
|
},
|
|
2680
|
+
{
|
|
2681
|
+
discoveryUrl: `${SITE}/llms.txt`,
|
|
2682
|
+
exposedContent: [
|
|
2683
|
+
"/identity — look a recording up by ISRC, MusicBrainz recording id, or Log ID",
|
|
2684
|
+
"/identity/:key — one recording's identifiers and platform links, each carrying whether Fluncle found it, looked and found nothing, will not look, or hands out no such link"
|
|
2685
|
+
],
|
|
2686
|
+
kind: "web_route",
|
|
2687
|
+
name: "web.identity",
|
|
2688
|
+
operatorNotes: "The public face of the identity envelope (lib/server/identity-envelope.ts); the machine twin is `get_track`'s identity projection (?identity= / ?isrc= / ?mbid=), and both read the same module so page and API cannot diverge — except on Apple Music, the one audience-scoped field: the page reads `first-party` and renders an Apple link as /log does, the API answers `unsupported` because Apple's terms bar passing those links on. The DOOR is probeable (always 200, and a bare GET with no ?key= renders the explainer); the keyed page is not, and it renders `noindex, follow` on purpose — one recording is reachable under up to three identifiers, so indexing them would put three near-identical URLs in front of one answer at catalogue scale. Only the door is in the sitemap. Both the page's server fn and the op charge the SAME two dials (identity-dials.ts: 30/min + 1,000/day per caller), so the meter cannot be dodged by switching doors; a spent dial renders as a calm page state, never a fault. The keyed page answers 200 with an honest 'nothing under this identifier' rather than 404ing, because an unknown key is a real question with a real answer.",
|
|
2689
|
+
probeConfig: { cadenceMs: PROBE_CADENCE_MS, kind: "http", timeoutMs: PROBE_TIMEOUT_MS },
|
|
2690
|
+
route: "/identity",
|
|
2691
|
+
url: `${SITE}/identity`,
|
|
2692
|
+
weights: { web: "tertiary" }
|
|
2693
|
+
},
|
|
2680
2694
|
{
|
|
2681
2695
|
exposedContent: [
|
|
2682
2696
|
"the signed-in account door: a listener's Galaxy progress, the findings and sets they saved, the tracks they submitted, and their account settings"
|
|
@@ -10831,6 +10845,7 @@ async function runBackfillDiscogs(options, backfillDiscogsCommand2) {
|
|
|
10831
10845
|
let cursor;
|
|
10832
10846
|
let dryRun = options.dryRun;
|
|
10833
10847
|
let throttled = false;
|
|
10848
|
+
let rateLimitedBy = null;
|
|
10834
10849
|
while (resolved.length + unresolved.length < limit) {
|
|
10835
10850
|
const remaining = limit - (resolved.length + unresolved.length);
|
|
10836
10851
|
const result = await backfillDiscogsCommand2(remaining, options.dryRun, cursor);
|
|
@@ -10844,6 +10859,7 @@ async function runBackfillDiscogs(options, backfillDiscogsCommand2) {
|
|
|
10844
10859
|
}
|
|
10845
10860
|
if (result.rateLimited) {
|
|
10846
10861
|
throttled = true;
|
|
10862
|
+
rateLimitedBy = result.rateLimitedBy;
|
|
10847
10863
|
break;
|
|
10848
10864
|
}
|
|
10849
10865
|
if (result.nextCursor === null) {
|
|
@@ -10856,6 +10872,7 @@ async function runBackfillDiscogs(options, backfillDiscogsCommand2) {
|
|
|
10856
10872
|
dryRun,
|
|
10857
10873
|
ok: true,
|
|
10858
10874
|
rateLimited: throttled,
|
|
10875
|
+
rateLimitedBy,
|
|
10859
10876
|
resolved,
|
|
10860
10877
|
resolvedCount: resolved.length,
|
|
10861
10878
|
skipped,
|
|
@@ -11254,20 +11271,15 @@ async function runBackfillLabelImages(options, backfillLabelImagesCommand2) {
|
|
|
11254
11271
|
cursor = result.nextCursor;
|
|
11255
11272
|
}
|
|
11256
11273
|
if (options.json) {
|
|
11257
|
-
|
|
11274
|
+
printSweepJson({
|
|
11258
11275
|
dryRun,
|
|
11259
11276
|
failed,
|
|
11260
|
-
failedCount: failed.length,
|
|
11261
11277
|
none,
|
|
11262
11278
|
noneCount: none.length,
|
|
11263
|
-
ok: true,
|
|
11264
11279
|
rateLimited: throttled,
|
|
11265
11280
|
resolved,
|
|
11266
11281
|
resolvedCount: resolved.length
|
|
11267
|
-
});
|
|
11268
|
-
if (failed.length > 0) {
|
|
11269
|
-
process.exitCode = 1;
|
|
11270
|
-
}
|
|
11282
|
+
}, failed.length);
|
|
11271
11283
|
return;
|
|
11272
11284
|
}
|
|
11273
11285
|
const verb = dryRun ? "Would resolve" : "Resolved";
|
package/package.json
CHANGED