@binaryandthread/cli 0.4.10 → 0.4.11
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/bin.js +3 -3
- package/dist/bin.js.map +1 -1
- package/dist/{chunk-PVKB77IE.js → chunk-UTSTDWKZ.js} +59 -21
- package/dist/chunk-UTSTDWKZ.js.map +1 -0
- package/dist/{interactive-B5TALADG.js → interactive-UM5FCZDG.js} +2 -2
- package/package.json +1 -1
- package/dist/chunk-PVKB77IE.js.map +0 -1
- /package/dist/{interactive-B5TALADG.js.map → interactive-UM5FCZDG.js.map} +0 -0
|
@@ -624,12 +624,20 @@ function supplierOf(p) {
|
|
|
624
624
|
return v === "gelato" || v === "printful" ? v : null;
|
|
625
625
|
}
|
|
626
626
|
var PRINTFUL_BLANK_COLOURS = {
|
|
627
|
-
"ascolour-5082": ["black", "white", "coal", "eucalyptus", "bone", "grey", "khaki", "indigo"]
|
|
627
|
+
"ascolour-5082": ["black", "white", "coal", "eucalyptus", "bone", "grey", "khaki", "indigo"],
|
|
628
628
|
// TB124, TB126
|
|
629
|
+
"bellacanvas-4711": ["asphalt", "dust", "navy", "maroon", "forest"]
|
|
630
|
+
// TB128: the sweatshirt
|
|
629
631
|
};
|
|
630
632
|
var PRINTFUL_BLANK_SIZES = {
|
|
631
|
-
"ascolour-5082": ["s", "m", "l", "xl", "2xl"]
|
|
633
|
+
"ascolour-5082": ["s", "m", "l", "xl", "2xl"],
|
|
634
|
+
"bellacanvas-4711": ["s", "m", "l", "xl", "2xl"]
|
|
632
635
|
};
|
|
636
|
+
function printfulBlankOf(p) {
|
|
637
|
+
const v = (p.metadata ?? {})["bt_blank"];
|
|
638
|
+
if (v === void 0 || v === null) return "ascolour-5082";
|
|
639
|
+
return typeof v === "string" && Object.prototype.hasOwnProperty.call(PRINTFUL_BLANK_COLOURS, v) ? v : null;
|
|
640
|
+
}
|
|
633
641
|
var PRINTFUL_SERVED_COUNTRIES = [
|
|
634
642
|
"se",
|
|
635
643
|
"us",
|
|
@@ -660,29 +668,30 @@ var PRINTFUL_SERVED_COUNTRIES = [
|
|
|
660
668
|
"si",
|
|
661
669
|
"es"
|
|
662
670
|
];
|
|
663
|
-
function printfulBlankFor(fit, countryCode) {
|
|
671
|
+
function printfulBlankFor(fit, countryCode, productBlank = "ascolour-5082") {
|
|
664
672
|
if (!PRINTFUL_SERVED_COUNTRIES.includes((countryCode ?? "").trim().toLowerCase())) return null;
|
|
665
|
-
|
|
673
|
+
if (productBlank === null) return null;
|
|
674
|
+
return fit === "regular" ? productBlank : null;
|
|
666
675
|
}
|
|
667
676
|
function sizeKey(size) {
|
|
668
677
|
const s = size.trim().toLowerCase();
|
|
669
678
|
return s === "xxl" ? "2xl" : s === "xxxl" ? "3xl" : s;
|
|
670
679
|
}
|
|
671
|
-
function blankRule(fit, countryCode, supplier) {
|
|
680
|
+
function blankRule(fit, countryCode, supplier, productBlank) {
|
|
672
681
|
if (supplier === null) return null;
|
|
673
682
|
if (supplier === "printful") {
|
|
674
|
-
const pb = printfulBlankFor(fit, countryCode);
|
|
683
|
+
const pb = printfulBlankFor(fit, countryCode, productBlank);
|
|
675
684
|
return pb ? { colours: PRINTFUL_BLANK_COLOURS[pb], sizes: PRINTFUL_BLANK_SIZES[pb] } : null;
|
|
676
685
|
}
|
|
677
686
|
const blank = blankFor(fit, countryCode);
|
|
678
687
|
return blank ? { colours: BLANK_COLOURS[blank], sizes: BLANK_SIZES[blank] } : null;
|
|
679
688
|
}
|
|
680
|
-
function colourBuyable(fit, colour, countryCode, supplier = "gelato") {
|
|
681
|
-
const rule2 = blankRule(fit, countryCode, supplier);
|
|
689
|
+
function colourBuyable(fit, colour, countryCode, supplier = "gelato", printfulBlank = "ascolour-5082") {
|
|
690
|
+
const rule2 = blankRule(fit, countryCode, supplier, printfulBlank);
|
|
682
691
|
return !!rule2 && rule2.colours.includes(colour.trim().toLowerCase());
|
|
683
692
|
}
|
|
684
|
-
function sizeBuyable(fit, size, countryCode, supplier = "gelato") {
|
|
685
|
-
const rule2 = blankRule(fit, countryCode, supplier);
|
|
693
|
+
function sizeBuyable(fit, size, countryCode, supplier = "gelato", printfulBlank = "ascolour-5082") {
|
|
694
|
+
const rule2 = blankRule(fit, countryCode, supplier, printfulBlank);
|
|
686
695
|
return !!rule2 && rule2.sizes.includes(sizeKey(size));
|
|
687
696
|
}
|
|
688
697
|
function legacyFit(p) {
|
|
@@ -701,11 +710,12 @@ function variantsOfFit(p, fit) {
|
|
|
701
710
|
function coloursFor(p, fit, countryCode) {
|
|
702
711
|
const gate = gateFit(p, fit);
|
|
703
712
|
const supplier = supplierOf(p);
|
|
713
|
+
const pb = printfulBlankOf(p);
|
|
704
714
|
const out = [];
|
|
705
715
|
for (const v of variantsOfFit(p, fit)) {
|
|
706
716
|
const c = variantColour(v);
|
|
707
717
|
if (!c || out.includes(c)) continue;
|
|
708
|
-
if (gate && countryCode !== void 0 && !colourBuyable(gate, c, countryCode, supplier)) continue;
|
|
718
|
+
if (gate && countryCode !== void 0 && !colourBuyable(gate, c, countryCode, supplier, pb)) continue;
|
|
709
719
|
out.push(c);
|
|
710
720
|
}
|
|
711
721
|
return out;
|
|
@@ -713,13 +723,14 @@ function coloursFor(p, fit, countryCode) {
|
|
|
713
723
|
function sizesFor(p, fit, colour, countryCode) {
|
|
714
724
|
const gate = gateFit(p, fit);
|
|
715
725
|
const supplier = supplierOf(p);
|
|
726
|
+
const pb = printfulBlankOf(p);
|
|
716
727
|
const target = colour.trim().toLowerCase();
|
|
717
728
|
const out = [];
|
|
718
729
|
for (const v of variantsOfFit(p, fit)) {
|
|
719
730
|
if (variantColour(v) !== target) continue;
|
|
720
731
|
const s = sizeOfVariant(v);
|
|
721
732
|
if (!s || out.includes(s)) continue;
|
|
722
|
-
if (gate && countryCode !== void 0 && !sizeBuyable(gate, s, countryCode, supplier)) continue;
|
|
733
|
+
if (gate && countryCode !== void 0 && !sizeBuyable(gate, s, countryCode, supplier, pb)) continue;
|
|
723
734
|
out.push(s);
|
|
724
735
|
}
|
|
725
736
|
return out;
|
|
@@ -758,21 +769,22 @@ function resolveVariant(p, opts) {
|
|
|
758
769
|
const pool = variantsOfFit(p, fit);
|
|
759
770
|
const gate = gateFit(p, fit);
|
|
760
771
|
const supplier = supplierOf(p);
|
|
772
|
+
const pb = printfulBlankOf(p);
|
|
761
773
|
const colours = coloursFor(p, fit, opts.countryCode);
|
|
762
774
|
const colour = colourKey(opts.colour ?? "") || (colours[0] ?? null);
|
|
763
|
-
if (gate && colour && opts.countryCode !== void 0 && !colourBuyable(gate, colour, opts.countryCode, supplier)) {
|
|
775
|
+
if (gate && colour && opts.countryCode !== void 0 && !colourBuyable(gate, colour, opts.countryCode, supplier, pb)) {
|
|
764
776
|
return { ok: false, reason: "fit_unavailable", fit: gate, colour };
|
|
765
777
|
}
|
|
766
778
|
const size = (opts.size ?? "").trim() || null;
|
|
767
779
|
const sizeLc = size?.toLowerCase();
|
|
768
780
|
const buyableSizes = colour ? sizesFor(p, fit, colour, opts.countryCode) : [];
|
|
769
781
|
const sizeExists = !!size && pool.some((x) => (sizeOfVariant(x) ?? x.title ?? "").toLowerCase() === size.toLowerCase());
|
|
770
|
-
if (gate && size && sizeExists && opts.countryCode !== void 0 && !sizeBuyable(gate, size, opts.countryCode, supplier)) {
|
|
782
|
+
if (gate && size && sizeExists && opts.countryCode !== void 0 && !sizeBuyable(gate, size, opts.countryCode, supplier, pb)) {
|
|
771
783
|
return { ok: false, reason: "size_unavailable", fit: gate, size, sizes: buyableSizes };
|
|
772
784
|
}
|
|
773
785
|
const sellable = gate && opts.countryCode !== void 0 ? pool.filter((x) => {
|
|
774
786
|
const s = sizeOfVariant(x);
|
|
775
|
-
return !s || sizeBuyable(gate, s, opts.countryCode, supplier);
|
|
787
|
+
return !s || sizeBuyable(gate, s, opts.countryCode, supplier, pb);
|
|
776
788
|
}) : pool;
|
|
777
789
|
const v = sellable.find((x) => {
|
|
778
790
|
const colourOk = !colour || variantColour(x) === colour;
|
|
@@ -1619,7 +1631,7 @@ async function runView(client, config, args) {
|
|
|
1619
1631
|
lines.push(` colours ${colours.map((c) => `${colourSwatch(c)} ${colourLabel(c)}`).join(" \xB7 ")}`);
|
|
1620
1632
|
for (const c of colours) {
|
|
1621
1633
|
const sizes = sortSizes(sizesFor(product, fit, c, countryCode));
|
|
1622
|
-
lines.push(` ${colourSwatch(c)} ${colourLabel(c).padEnd(12)} ${sizes.join(" ")}`);
|
|
1634
|
+
lines.push(` ${colourSwatch(c)} ${colourLabel(c).padEnd(12)} ${sizes.join(" ").padEnd(22)} ${dim(style, `--colour ${c}`)}`);
|
|
1623
1635
|
}
|
|
1624
1636
|
for (const c of unavailable) {
|
|
1625
1637
|
lines.push(dim(style, ` ${colourSwatch(c)} ${colourLabel(c).padEnd(12)} not available where you ship (${countryCode ?? "your region"})`));
|
|
@@ -1653,6 +1665,13 @@ async function runView(client, config, args) {
|
|
|
1653
1665
|
if (blackNote) {
|
|
1654
1666
|
lines.push(blackNote);
|
|
1655
1667
|
}
|
|
1668
|
+
if (colours.length > 0) {
|
|
1669
|
+
const c0 = colours[0];
|
|
1670
|
+
const sz = sortSizes(sizesFor(product, fit, c0, countryCode));
|
|
1671
|
+
const pick = sz.find((s) => s.toUpperCase() === "M") ?? sz[0] ?? "M";
|
|
1672
|
+
const fitFlag = fit && fits.length > 1 ? ` --fit ${fit}` : "";
|
|
1673
|
+
lines.push(` stage one \u2192 bt stage ${handle}${fitFlag} --size ${pick} --colour ${c0} (colour is the one word shown on its row)`);
|
|
1674
|
+
}
|
|
1656
1675
|
if (colours.length > 1 && !args.colour) {
|
|
1657
1676
|
const others = colours.filter((c) => c !== colours[0]).join(", ");
|
|
1658
1677
|
lines.push(` see another colour \u2192 bt view ${handle} --colour ${others.split(",")[0]?.trim()}${fit && fits.length > 1 ? ` --fit ${fit}` : ""}`);
|
|
@@ -1796,6 +1815,17 @@ async function runStage(client, config, args) {
|
|
|
1796
1815
|
fix: r.fits.length ? `${r.fits.length > 1 ? "ask which fit is wanted, then: " : ""}${r.fits.map((f) => `bt stage ${handleShown} --fit ${f}${size ? ` --size ${size}` : ""}`).join(" | ")}` : `bt stage ${handleShown}${size ? ` --size ${size}` : ""} (this design comes in one fit)`
|
|
1797
1816
|
});
|
|
1798
1817
|
}
|
|
1818
|
+
const fitFlag = r.fit && productFits(product).length > 1 ? ` --fit ${r.fit}` : "";
|
|
1819
|
+
const colourAsked = "colour" in r ? r.colour : null;
|
|
1820
|
+
const madeIn = coloursFor(product, r.fit ?? null);
|
|
1821
|
+
if (colourAsked && (r.reason === "fit_unavailable" || r.reason === "not_found") && !madeIn.includes(colourAsked)) {
|
|
1822
|
+
return failResult({
|
|
1823
|
+
code: EXIT.DATAERR,
|
|
1824
|
+
what: `${handleShown} isn't made in ${colourAsked}. colours: ${madeIn.join(" \xB7 ")}.`,
|
|
1825
|
+
money: "nothing staged, nothing charged.",
|
|
1826
|
+
fix: madeIn.length ? `bt stage ${handleShown}${fitFlag}${size ? ` --size ${size}` : ""} --colour ${madeIn[0]} (one word, as listed)` : `bt view ${handleShown}`
|
|
1827
|
+
});
|
|
1828
|
+
}
|
|
1799
1829
|
if (r.reason === "fit_unavailable") {
|
|
1800
1830
|
return failResult({
|
|
1801
1831
|
code: EXIT.DATAERR,
|
|
@@ -1812,12 +1842,20 @@ async function runStage(client, config, args) {
|
|
|
1812
1842
|
fix: r.sizes.length ? `bt stage ${handleShown} --fit ${r.fit} --size ${r.sizes[0]} (sizes here: ${r.sizes.join(" ")})` : `bt view ${handleShown} --fit ${r.fit} (to see the sizes you can buy)`
|
|
1813
1843
|
});
|
|
1814
1844
|
}
|
|
1815
|
-
const
|
|
1816
|
-
|
|
1845
|
+
const inColour = r.colour ? ` in ${r.colour}` : "";
|
|
1846
|
+
if (size && r.sizes.length) {
|
|
1847
|
+
return failResult({
|
|
1848
|
+
code: EXIT.DATAERR,
|
|
1849
|
+
what: `${handleShown} doesn't come in size ${size}${inColour}. sizes: ${r.sizes.join(" ")}.`,
|
|
1850
|
+
money: "nothing staged, nothing charged.",
|
|
1851
|
+
fix: `bt stage ${handleShown}${fitFlag} --size ${r.sizes[0]}${r.colour ? ` --colour ${r.colour}` : ""}`
|
|
1852
|
+
});
|
|
1853
|
+
}
|
|
1817
1854
|
return failResult({
|
|
1818
1855
|
code: EXIT.DATAERR,
|
|
1819
|
-
what: `no variant for ${
|
|
1820
|
-
|
|
1856
|
+
what: `no variant for ${handleShown}${fitFlag}${size ? ` --size ${size}` : ""}${r.colour ? ` --colour ${r.colour}` : ""}.`,
|
|
1857
|
+
money: "nothing staged, nothing charged.",
|
|
1858
|
+
fix: `bt view ${handleShown}${fitFlag} (to see the sizes + colours you can buy)`
|
|
1821
1859
|
});
|
|
1822
1860
|
}
|
|
1823
1861
|
const variant = r.variant;
|
|
@@ -1971,4 +2009,4 @@ export {
|
|
|
1971
2009
|
runStage,
|
|
1972
2010
|
registerStage
|
|
1973
2011
|
};
|
|
1974
|
-
//# sourceMappingURL=chunk-
|
|
2012
|
+
//# sourceMappingURL=chunk-UTSTDWKZ.js.map
|