server: fix html caching rules

This commit is contained in:
nym21
2026-01-27 01:39:09 +01:00
parent 79d14cd260
commit 6cdc5879bb
6 changed files with 3502 additions and 5773 deletions

View File

@@ -1535,18 +1535,18 @@ impl<T: DeserializeOwned> ClassDaysInLossPattern<T> {
/// Create a new pattern node with accumulated metric name.
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
Self {
_2015: MetricPattern4::new(client.clone(), _m(&acc, "2015_max_drawdown")),
_2016: MetricPattern4::new(client.clone(), _m(&acc, "2016_max_drawdown")),
_2017: MetricPattern4::new(client.clone(), _m(&acc, "2017_max_drawdown")),
_2018: MetricPattern4::new(client.clone(), _m(&acc, "2018_max_drawdown")),
_2019: MetricPattern4::new(client.clone(), _m(&acc, "2019_max_drawdown")),
_2020: MetricPattern4::new(client.clone(), _m(&acc, "2020_max_drawdown")),
_2021: MetricPattern4::new(client.clone(), _m(&acc, "2021_max_drawdown")),
_2022: MetricPattern4::new(client.clone(), _m(&acc, "2022_max_drawdown")),
_2023: MetricPattern4::new(client.clone(), _m(&acc, "2023_max_drawdown")),
_2024: MetricPattern4::new(client.clone(), _m(&acc, "2024_max_drawdown")),
_2025: MetricPattern4::new(client.clone(), _m(&acc, "2025_max_drawdown")),
_2026: MetricPattern4::new(client.clone(), _m(&acc, "2026_max_drawdown")),
_2015: MetricPattern4::new(client.clone(), _m(&acc, "2015_days_in_profit")),
_2016: MetricPattern4::new(client.clone(), _m(&acc, "2016_days_in_profit")),
_2017: MetricPattern4::new(client.clone(), _m(&acc, "2017_days_in_profit")),
_2018: MetricPattern4::new(client.clone(), _m(&acc, "2018_days_in_profit")),
_2019: MetricPattern4::new(client.clone(), _m(&acc, "2019_days_in_profit")),
_2020: MetricPattern4::new(client.clone(), _m(&acc, "2020_days_in_profit")),
_2021: MetricPattern4::new(client.clone(), _m(&acc, "2021_days_in_profit")),
_2022: MetricPattern4::new(client.clone(), _m(&acc, "2022_days_in_profit")),
_2023: MetricPattern4::new(client.clone(), _m(&acc, "2023_days_in_profit")),
_2024: MetricPattern4::new(client.clone(), _m(&acc, "2024_days_in_profit")),
_2025: MetricPattern4::new(client.clone(), _m(&acc, "2025_days_in_profit")),
_2026: MetricPattern4::new(client.clone(), _m(&acc, "2026_days_in_profit")),
}
}
}
@@ -1833,84 +1833,6 @@ impl _0satsPattern {
}
}
/// Pattern struct for repeated tree structure.
pub struct _0satsPattern2 {
pub activity: ActivityPattern2,
pub cost_basis: CostBasisPattern,
pub outputs: OutputsPattern,
pub realized: RealizedPattern,
pub relative: RelativePattern4,
pub supply: SupplyPattern2,
pub unrealized: UnrealizedPattern,
}
impl _0satsPattern2 {
/// Create a new pattern node with accumulated metric name.
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
Self {
activity: ActivityPattern2::new(client.clone(), acc.clone()),
cost_basis: CostBasisPattern::new(client.clone(), acc.clone()),
outputs: OutputsPattern::new(client.clone(), _m(&acc, "utxo_count")),
realized: RealizedPattern::new(client.clone(), acc.clone()),
relative: RelativePattern4::new(client.clone(), _m(&acc, "supply_in")),
supply: SupplyPattern2::new(client.clone(), _m(&acc, "supply")),
unrealized: UnrealizedPattern::new(client.clone(), acc.clone()),
}
}
}
/// Pattern struct for repeated tree structure.
pub struct PeriodCagrPattern {
pub _10y: MetricPattern4<StoredF32>,
pub _2y: MetricPattern4<StoredF32>,
pub _3y: MetricPattern4<StoredF32>,
pub _4y: MetricPattern4<StoredF32>,
pub _5y: MetricPattern4<StoredF32>,
pub _6y: MetricPattern4<StoredF32>,
pub _8y: MetricPattern4<StoredF32>,
}
impl PeriodCagrPattern {
/// Create a new pattern node with accumulated metric name.
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
Self {
_10y: MetricPattern4::new(client.clone(), _p("10y", &acc)),
_2y: MetricPattern4::new(client.clone(), _p("2y", &acc)),
_3y: MetricPattern4::new(client.clone(), _p("3y", &acc)),
_4y: MetricPattern4::new(client.clone(), _p("4y", &acc)),
_5y: MetricPattern4::new(client.clone(), _p("5y", &acc)),
_6y: MetricPattern4::new(client.clone(), _p("6y", &acc)),
_8y: MetricPattern4::new(client.clone(), _p("8y", &acc)),
}
}
}
/// Pattern struct for repeated tree structure.
pub struct _10yTo12yPattern {
pub activity: ActivityPattern2,
pub cost_basis: CostBasisPattern2,
pub outputs: OutputsPattern,
pub realized: RealizedPattern2,
pub relative: RelativePattern2,
pub supply: SupplyPattern2,
pub unrealized: UnrealizedPattern,
}
impl _10yTo12yPattern {
/// Create a new pattern node with accumulated metric name.
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
Self {
activity: ActivityPattern2::new(client.clone(), acc.clone()),
cost_basis: CostBasisPattern2::new(client.clone(), acc.clone()),
outputs: OutputsPattern::new(client.clone(), _m(&acc, "utxo_count")),
realized: RealizedPattern2::new(client.clone(), acc.clone()),
relative: RelativePattern2::new(client.clone(), acc.clone()),
supply: SupplyPattern2::new(client.clone(), _m(&acc, "supply")),
unrealized: UnrealizedPattern::new(client.clone(), acc.clone()),
}
}
}
/// Pattern struct for repeated tree structure.
pub struct _100btcPattern {
pub activity: ActivityPattern2,
@@ -1937,6 +1859,32 @@ impl _100btcPattern {
}
}
/// Pattern struct for repeated tree structure.
pub struct _0satsPattern2 {
pub activity: ActivityPattern2,
pub cost_basis: CostBasisPattern,
pub outputs: OutputsPattern,
pub realized: RealizedPattern,
pub relative: RelativePattern4,
pub supply: SupplyPattern2,
pub unrealized: UnrealizedPattern,
}
impl _0satsPattern2 {
/// Create a new pattern node with accumulated metric name.
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
Self {
activity: ActivityPattern2::new(client.clone(), acc.clone()),
cost_basis: CostBasisPattern::new(client.clone(), acc.clone()),
outputs: OutputsPattern::new(client.clone(), _m(&acc, "utxo_count")),
realized: RealizedPattern::new(client.clone(), acc.clone()),
relative: RelativePattern4::new(client.clone(), _m(&acc, "supply_in")),
supply: SupplyPattern2::new(client.clone(), _m(&acc, "supply")),
unrealized: UnrealizedPattern::new(client.clone(), acc.clone()),
}
}
}
/// Pattern struct for repeated tree structure.
pub struct _10yPattern {
pub activity: ActivityPattern2,
@@ -1989,6 +1937,58 @@ impl UnrealizedPattern {
}
}
/// Pattern struct for repeated tree structure.
pub struct PeriodCagrPattern {
pub _10y: MetricPattern4<StoredF32>,
pub _2y: MetricPattern4<StoredF32>,
pub _3y: MetricPattern4<StoredF32>,
pub _4y: MetricPattern4<StoredF32>,
pub _5y: MetricPattern4<StoredF32>,
pub _6y: MetricPattern4<StoredF32>,
pub _8y: MetricPattern4<StoredF32>,
}
impl PeriodCagrPattern {
/// Create a new pattern node with accumulated metric name.
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
Self {
_10y: MetricPattern4::new(client.clone(), _p("10y", &acc)),
_2y: MetricPattern4::new(client.clone(), _p("2y", &acc)),
_3y: MetricPattern4::new(client.clone(), _p("3y", &acc)),
_4y: MetricPattern4::new(client.clone(), _p("4y", &acc)),
_5y: MetricPattern4::new(client.clone(), _p("5y", &acc)),
_6y: MetricPattern4::new(client.clone(), _p("6y", &acc)),
_8y: MetricPattern4::new(client.clone(), _p("8y", &acc)),
}
}
}
/// Pattern struct for repeated tree structure.
pub struct _10yTo12yPattern {
pub activity: ActivityPattern2,
pub cost_basis: CostBasisPattern2,
pub outputs: OutputsPattern,
pub realized: RealizedPattern2,
pub relative: RelativePattern2,
pub supply: SupplyPattern2,
pub unrealized: UnrealizedPattern,
}
impl _10yTo12yPattern {
/// Create a new pattern node with accumulated metric name.
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
Self {
activity: ActivityPattern2::new(client.clone(), acc.clone()),
cost_basis: CostBasisPattern2::new(client.clone(), acc.clone()),
outputs: OutputsPattern::new(client.clone(), _m(&acc, "utxo_count")),
realized: RealizedPattern2::new(client.clone(), acc.clone()),
relative: RelativePattern2::new(client.clone(), acc.clone()),
supply: SupplyPattern2::new(client.clone(), _m(&acc, "supply")),
unrealized: UnrealizedPattern::new(client.clone(), acc.clone()),
}
}
}
/// Pattern struct for repeated tree structure.
pub struct AllPattern {
pub balance_decreased: FullnessPattern<StoredU32>,
@@ -2055,6 +2055,60 @@ impl<T: DeserializeOwned> SplitPattern2<T> {
}
}
/// Pattern struct for repeated tree structure.
pub struct UnclaimedRewardsPattern {
pub bitcoin: BitcoinPattern2<Bitcoin>,
pub dollars: BlockCountPattern<Dollars>,
pub sats: BlockCountPattern<Sats>,
}
impl UnclaimedRewardsPattern {
/// Create a new pattern node with accumulated metric name.
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
Self {
bitcoin: BitcoinPattern2::new(client.clone(), _m(&acc, "btc")),
dollars: BlockCountPattern::new(client.clone(), _m(&acc, "usd")),
sats: BlockCountPattern::new(client.clone(), acc.clone()),
}
}
}
/// Pattern struct for repeated tree structure.
pub struct _2015Pattern {
pub bitcoin: MetricPattern4<Bitcoin>,
pub dollars: MetricPattern4<Dollars>,
pub sats: MetricPattern4<Sats>,
}
impl _2015Pattern {
/// Create a new pattern node with accumulated metric name.
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
Self {
bitcoin: MetricPattern4::new(client.clone(), _m(&acc, "btc")),
dollars: MetricPattern4::new(client.clone(), _m(&acc, "usd")),
sats: MetricPattern4::new(client.clone(), acc.clone()),
}
}
}
/// Pattern struct for repeated tree structure.
pub struct ActiveSupplyPattern {
pub bitcoin: MetricPattern1<Bitcoin>,
pub dollars: MetricPattern1<Dollars>,
pub sats: MetricPattern1<Sats>,
}
impl ActiveSupplyPattern {
/// Create a new pattern node with accumulated metric name.
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
Self {
bitcoin: MetricPattern1::new(client.clone(), _m(&acc, "btc")),
dollars: MetricPattern1::new(client.clone(), _m(&acc, "usd")),
sats: MetricPattern1::new(client.clone(), acc.clone()),
}
}
}
/// Pattern struct for repeated tree structure.
pub struct CoinbasePattern {
pub bitcoin: BitcoinPattern,
@@ -2073,6 +2127,24 @@ impl CoinbasePattern {
}
}
/// Pattern struct for repeated tree structure.
pub struct SegwitAdoptionPattern {
pub base: MetricPattern11<StoredF32>,
pub cumulative: MetricPattern2<StoredF32>,
pub sum: MetricPattern2<StoredF32>,
}
impl SegwitAdoptionPattern {
/// Create a new pattern node with accumulated metric name.
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
Self {
base: MetricPattern11::new(client.clone(), acc.clone()),
cumulative: MetricPattern2::new(client.clone(), _m(&acc, "cumulative")),
sum: MetricPattern2::new(client.clone(), _m(&acc, "sum")),
}
}
}
/// Pattern struct for repeated tree structure.
pub struct CostBasisPattern2 {
pub max: ActivePricePattern,
@@ -2110,73 +2182,17 @@ impl CoinbasePattern2 {
}
/// Pattern struct for repeated tree structure.
pub struct SegwitAdoptionPattern {
pub base: MetricPattern11<StoredF32>,
pub cumulative: MetricPattern2<StoredF32>,
pub sum: MetricPattern2<StoredF32>,
pub struct RelativePattern4 {
pub supply_in_loss_rel_to_own_supply: MetricPattern1<StoredF64>,
pub supply_in_profit_rel_to_own_supply: MetricPattern1<StoredF64>,
}
impl SegwitAdoptionPattern {
impl RelativePattern4 {
/// Create a new pattern node with accumulated metric name.
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
Self {
base: MetricPattern11::new(client.clone(), acc.clone()),
cumulative: MetricPattern2::new(client.clone(), _m(&acc, "cumulative")),
sum: MetricPattern2::new(client.clone(), _m(&acc, "sum")),
}
}
}
/// Pattern struct for repeated tree structure.
pub struct UnclaimedRewardsPattern {
pub bitcoin: BitcoinPattern2<Bitcoin>,
pub dollars: BlockCountPattern<Dollars>,
pub sats: BlockCountPattern<Sats>,
}
impl UnclaimedRewardsPattern {
/// Create a new pattern node with accumulated metric name.
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
Self {
bitcoin: BitcoinPattern2::new(client.clone(), _m(&acc, "btc")),
dollars: BlockCountPattern::new(client.clone(), _m(&acc, "usd")),
sats: BlockCountPattern::new(client.clone(), acc.clone()),
}
}
}
/// Pattern struct for repeated tree structure.
pub struct ActiveSupplyPattern {
pub bitcoin: MetricPattern1<Bitcoin>,
pub dollars: MetricPattern1<Dollars>,
pub sats: MetricPattern1<Sats>,
}
impl ActiveSupplyPattern {
/// Create a new pattern node with accumulated metric name.
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
Self {
bitcoin: MetricPattern1::new(client.clone(), _m(&acc, "btc")),
dollars: MetricPattern1::new(client.clone(), _m(&acc, "usd")),
sats: MetricPattern1::new(client.clone(), acc.clone()),
}
}
}
/// Pattern struct for repeated tree structure.
pub struct _2015Pattern {
pub bitcoin: MetricPattern4<Bitcoin>,
pub dollars: MetricPattern4<Dollars>,
pub sats: MetricPattern4<Sats>,
}
impl _2015Pattern {
/// Create a new pattern node with accumulated metric name.
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
Self {
bitcoin: MetricPattern4::new(client.clone(), _m(&acc, "btc")),
dollars: MetricPattern4::new(client.clone(), _m(&acc, "usd")),
sats: MetricPattern4::new(client.clone(), acc.clone()),
supply_in_loss_rel_to_own_supply: MetricPattern1::new(client.clone(), _m(&acc, "loss_rel_to_own_supply")),
supply_in_profit_rel_to_own_supply: MetricPattern1::new(client.clone(), _m(&acc, "profit_rel_to_own_supply")),
}
}
}
@@ -2197,38 +2213,6 @@ impl ActivePricePattern {
}
}
/// Pattern struct for repeated tree structure.
pub struct CostBasisPattern {
pub max: ActivePricePattern,
pub min: ActivePricePattern,
}
impl CostBasisPattern {
/// Create a new pattern node with accumulated metric name.
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
Self {
max: ActivePricePattern::new(client.clone(), _m(&acc, "max_cost_basis")),
min: ActivePricePattern::new(client.clone(), _m(&acc, "min_cost_basis")),
}
}
}
/// Pattern struct for repeated tree structure.
pub struct _0sdUsdPattern {
pub dollars: MetricPattern4<Dollars>,
pub sats: MetricPattern4<SatsFract>,
}
impl _0sdUsdPattern {
/// Create a new pattern node with accumulated metric name.
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
Self {
dollars: MetricPattern4::new(client.clone(), acc.clone()),
sats: MetricPattern4::new(client.clone(), _m(&acc, "sats")),
}
}
}
/// Pattern struct for repeated tree structure.
pub struct _1dReturns1mSdPattern {
pub sd: MetricPattern4<StoredF32>,
@@ -2245,22 +2229,6 @@ impl _1dReturns1mSdPattern {
}
}
/// Pattern struct for repeated tree structure.
pub struct RelativePattern4 {
pub supply_in_loss_rel_to_own_supply: MetricPattern1<StoredF64>,
pub supply_in_profit_rel_to_own_supply: MetricPattern1<StoredF64>,
}
impl RelativePattern4 {
/// Create a new pattern node with accumulated metric name.
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
Self {
supply_in_loss_rel_to_own_supply: MetricPattern1::new(client.clone(), _m(&acc, "loss_rel_to_own_supply")),
supply_in_profit_rel_to_own_supply: MetricPattern1::new(client.clone(), _m(&acc, "profit_rel_to_own_supply")),
}
}
}
/// Pattern struct for repeated tree structure.
pub struct SupplyPattern2 {
pub halved: ActiveSupplyPattern,
@@ -2277,6 +2245,38 @@ impl SupplyPattern2 {
}
}
/// Pattern struct for repeated tree structure.
pub struct _0sdUsdPattern {
pub dollars: MetricPattern4<Dollars>,
pub sats: MetricPattern4<SatsFract>,
}
impl _0sdUsdPattern {
/// Create a new pattern node with accumulated metric name.
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
Self {
dollars: MetricPattern4::new(client.clone(), acc.clone()),
sats: MetricPattern4::new(client.clone(), _m(&acc, "sats")),
}
}
}
/// Pattern struct for repeated tree structure.
pub struct CostBasisPattern {
pub max: ActivePricePattern,
pub min: ActivePricePattern,
}
impl CostBasisPattern {
/// Create a new pattern node with accumulated metric name.
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
Self {
max: ActivePricePattern::new(client.clone(), _m(&acc, "max_cost_basis")),
min: ActivePricePattern::new(client.clone(), _m(&acc, "min_cost_basis")),
}
}
}
/// Pattern struct for repeated tree structure.
pub struct BlockCountPattern<T> {
pub cumulative: MetricPattern1<T>,
@@ -2293,22 +2293,6 @@ impl<T: DeserializeOwned> BlockCountPattern<T> {
}
}
/// Pattern struct for repeated tree structure.
pub struct SatsPattern<T> {
pub ohlc: MetricPattern1<T>,
pub split: SplitPattern2<T>,
}
impl<T: DeserializeOwned> SatsPattern<T> {
/// Create a new pattern node with accumulated metric name.
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
Self {
ohlc: MetricPattern1::new(client.clone(), _m(&acc, "ohlc")),
split: SplitPattern2::new(client.clone(), acc.clone()),
}
}
}
/// Pattern struct for repeated tree structure.
pub struct BitcoinPattern2<T> {
pub cumulative: MetricPattern2<T>,
@@ -2325,6 +2309,22 @@ impl<T: DeserializeOwned> BitcoinPattern2<T> {
}
}
/// Pattern struct for repeated tree structure.
pub struct SatsPattern<T> {
pub ohlc: MetricPattern1<T>,
pub split: SplitPattern2<T>,
}
impl<T: DeserializeOwned> SatsPattern<T> {
/// Create a new pattern node with accumulated metric name.
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
Self {
ohlc: MetricPattern1::new(client.clone(), _m(&acc, "ohlc_sats")),
split: SplitPattern2::new(client.clone(), _m(&acc, "sats")),
}
}
}
/// Pattern struct for repeated tree structure.
pub struct OutputsPattern {
pub utxo_count: MetricPattern1<StoredU64>,
@@ -4276,8 +4276,8 @@ impl MetricsTree_Market_Ath {
pub struct MetricsTree_Market_Dca {
pub class_average_price: MetricsTree_Market_Dca_ClassAveragePrice,
pub class_days_in_loss: MetricsTree_Market_Dca_ClassDaysInLoss,
pub class_days_in_profit: MetricsTree_Market_Dca_ClassDaysInProfit,
pub class_max_drawdown: ClassDaysInLossPattern<StoredF32>,
pub class_days_in_profit: ClassDaysInLossPattern<StoredU32>,
pub class_max_drawdown: MetricsTree_Market_Dca_ClassMaxDrawdown,
pub class_max_return: MetricsTree_Market_Dca_ClassMaxReturn,
pub class_returns: MetricsTree_Market_Dca_ClassReturns,
pub class_stack: MetricsTree_Market_Dca_ClassStack,
@@ -4302,8 +4302,8 @@ impl MetricsTree_Market_Dca {
Self {
class_average_price: MetricsTree_Market_Dca_ClassAveragePrice::new(client.clone(), format!("{base_path}_class_average_price")),
class_days_in_loss: MetricsTree_Market_Dca_ClassDaysInLoss::new(client.clone(), format!("{base_path}_class_days_in_loss")),
class_days_in_profit: MetricsTree_Market_Dca_ClassDaysInProfit::new(client.clone(), format!("{base_path}_class_days_in_profit")),
class_max_drawdown: ClassDaysInLossPattern::new(client.clone(), "dca_class".to_string()),
class_days_in_profit: ClassDaysInLossPattern::new(client.clone(), "dca_class".to_string()),
class_max_drawdown: MetricsTree_Market_Dca_ClassMaxDrawdown::new(client.clone(), format!("{base_path}_class_max_drawdown")),
class_max_return: MetricsTree_Market_Dca_ClassMaxReturn::new(client.clone(), format!("{base_path}_class_max_return")),
class_returns: MetricsTree_Market_Dca_ClassReturns::new(client.clone(), format!("{base_path}_class_returns")),
class_stack: MetricsTree_Market_Dca_ClassStack::new(client.clone(), format!("{base_path}_class_stack")),
@@ -4396,36 +4396,36 @@ impl MetricsTree_Market_Dca_ClassDaysInLoss {
}
/// Metrics tree node.
pub struct MetricsTree_Market_Dca_ClassDaysInProfit {
pub _2015: MetricPattern4<StoredU32>,
pub _2016: MetricPattern4<StoredU32>,
pub _2017: MetricPattern4<StoredU32>,
pub _2018: MetricPattern4<StoredU32>,
pub _2019: MetricPattern4<StoredU32>,
pub _2020: MetricPattern4<StoredU32>,
pub _2021: MetricPattern4<StoredU32>,
pub _2022: MetricPattern4<StoredU32>,
pub _2023: MetricPattern4<StoredU32>,
pub _2024: MetricPattern4<StoredU32>,
pub _2025: MetricPattern4<StoredU32>,
pub _2026: MetricPattern4<StoredU32>,
pub struct MetricsTree_Market_Dca_ClassMaxDrawdown {
pub _2015: MetricPattern4<StoredF32>,
pub _2016: MetricPattern4<StoredF32>,
pub _2017: MetricPattern4<StoredF32>,
pub _2018: MetricPattern4<StoredF32>,
pub _2019: MetricPattern4<StoredF32>,
pub _2020: MetricPattern4<StoredF32>,
pub _2021: MetricPattern4<StoredF32>,
pub _2022: MetricPattern4<StoredF32>,
pub _2023: MetricPattern4<StoredF32>,
pub _2024: MetricPattern4<StoredF32>,
pub _2025: MetricPattern4<StoredF32>,
pub _2026: MetricPattern4<StoredF32>,
}
impl MetricsTree_Market_Dca_ClassDaysInProfit {
impl MetricsTree_Market_Dca_ClassMaxDrawdown {
pub fn new(client: Arc<BrkClientBase>, base_path: String) -> Self {
Self {
_2015: MetricPattern4::new(client.clone(), "dca_class_2015_days_in_profit".to_string()),
_2016: MetricPattern4::new(client.clone(), "dca_class_2016_days_in_profit".to_string()),
_2017: MetricPattern4::new(client.clone(), "dca_class_2017_days_in_profit".to_string()),
_2018: MetricPattern4::new(client.clone(), "dca_class_2018_days_in_profit".to_string()),
_2019: MetricPattern4::new(client.clone(), "dca_class_2019_days_in_profit".to_string()),
_2020: MetricPattern4::new(client.clone(), "dca_class_2020_days_in_profit".to_string()),
_2021: MetricPattern4::new(client.clone(), "dca_class_2021_days_in_profit".to_string()),
_2022: MetricPattern4::new(client.clone(), "dca_class_2022_days_in_profit".to_string()),
_2023: MetricPattern4::new(client.clone(), "dca_class_2023_days_in_profit".to_string()),
_2024: MetricPattern4::new(client.clone(), "dca_class_2024_days_in_profit".to_string()),
_2025: MetricPattern4::new(client.clone(), "dca_class_2025_days_in_profit".to_string()),
_2026: MetricPattern4::new(client.clone(), "dca_class_2026_days_in_profit".to_string()),
_2015: MetricPattern4::new(client.clone(), "dca_class_2015_max_drawdown".to_string()),
_2016: MetricPattern4::new(client.clone(), "dca_class_2016_max_drawdown".to_string()),
_2017: MetricPattern4::new(client.clone(), "dca_class_2017_max_drawdown".to_string()),
_2018: MetricPattern4::new(client.clone(), "dca_class_2018_max_drawdown".to_string()),
_2019: MetricPattern4::new(client.clone(), "dca_class_2019_max_drawdown".to_string()),
_2020: MetricPattern4::new(client.clone(), "dca_class_2020_max_drawdown".to_string()),
_2021: MetricPattern4::new(client.clone(), "dca_class_2021_max_drawdown".to_string()),
_2022: MetricPattern4::new(client.clone(), "dca_class_2022_max_drawdown".to_string()),
_2023: MetricPattern4::new(client.clone(), "dca_class_2023_max_drawdown".to_string()),
_2024: MetricPattern4::new(client.clone(), "dca_class_2024_max_drawdown".to_string()),
_2025: MetricPattern4::new(client.clone(), "dca_class_2025_max_drawdown".to_string()),
_2026: MetricPattern4::new(client.clone(), "dca_class_2026_max_drawdown".to_string()),
}
}
}
@@ -5278,16 +5278,16 @@ impl MetricsTree_Positions {
/// Metrics tree node.
pub struct MetricsTree_Price {
pub cents: MetricsTree_Price_Cents,
pub sats: MetricsTree_Price_Sats,
pub usd: SatsPattern<OHLCDollars>,
pub sats: SatsPattern<OHLCSats>,
pub usd: MetricsTree_Price_Usd,
}
impl MetricsTree_Price {
pub fn new(client: Arc<BrkClientBase>, base_path: String) -> Self {
Self {
cents: MetricsTree_Price_Cents::new(client.clone(), format!("{base_path}_cents")),
sats: MetricsTree_Price_Sats::new(client.clone(), format!("{base_path}_sats")),
usd: SatsPattern::new(client.clone(), "price".to_string()),
sats: SatsPattern::new(client.clone(), "price".to_string()),
usd: MetricsTree_Price_Usd::new(client.clone(), format!("{base_path}_usd")),
}
}
}
@@ -5327,16 +5327,16 @@ impl MetricsTree_Price_Cents_Split {
}
/// Metrics tree node.
pub struct MetricsTree_Price_Sats {
pub ohlc: MetricPattern1<OHLCSats>,
pub split: SplitPattern2<Sats>,
pub struct MetricsTree_Price_Usd {
pub ohlc: MetricPattern1<OHLCDollars>,
pub split: SplitPattern2<Dollars>,
}
impl MetricsTree_Price_Sats {
impl MetricsTree_Price_Usd {
pub fn new(client: Arc<BrkClientBase>, base_path: String) -> Self {
Self {
ohlc: MetricPattern1::new(client.clone(), "price_ohlc_sats".to_string()),
split: SplitPattern2::new(client.clone(), "price_sats".to_string()),
ohlc: MetricPattern1::new(client.clone(), "price_ohlc".to_string()),
split: SplitPattern2::new(client.clone(), "price".to_string()),
}
}
}
@@ -5651,7 +5651,7 @@ pub struct BrkClient {
impl BrkClient {
/// Client version.
pub const VERSION: &'static str = "v0.1.0-beta.1";
pub const VERSION: &'static str = "v0.1.0";
/// Create a new client with the given base URL.
pub fn new(base_url: impl Into<String>) -> Self {

View File

@@ -23,13 +23,17 @@ fn serve(website: &Website, path: &str) -> Result<Response<Body>> {
let headers = response.headers_mut();
// Empty path or no extension = index.html (SPA fallback)
if path.is_empty() || Path::new(&path).extension().is_none() {
let is_html = path.is_empty()
|| Path::new(&path).extension().is_none()
|| path.ends_with(".html");
if is_html {
headers.insert_content_type_text_html();
} else {
headers.insert_content_type(Path::new(&path));
}
if cfg!(debug_assertions) {
if cfg!(debug_assertions) || is_html {
headers.insert_cache_control_must_revalidate();
} else {
headers.insert_cache_control_immutable();

View File

@@ -1953,18 +1953,18 @@ function createPeriodDaysInLossPattern(client, acc) {
*/
function createClassDaysInLossPattern(client, acc) {
return {
_2015: createMetricPattern4(client, _m(acc, '2015_max_drawdown')),
_2016: createMetricPattern4(client, _m(acc, '2016_max_drawdown')),
_2017: createMetricPattern4(client, _m(acc, '2017_max_drawdown')),
_2018: createMetricPattern4(client, _m(acc, '2018_max_drawdown')),
_2019: createMetricPattern4(client, _m(acc, '2019_max_drawdown')),
_2020: createMetricPattern4(client, _m(acc, '2020_max_drawdown')),
_2021: createMetricPattern4(client, _m(acc, '2021_max_drawdown')),
_2022: createMetricPattern4(client, _m(acc, '2022_max_drawdown')),
_2023: createMetricPattern4(client, _m(acc, '2023_max_drawdown')),
_2024: createMetricPattern4(client, _m(acc, '2024_max_drawdown')),
_2025: createMetricPattern4(client, _m(acc, '2025_max_drawdown')),
_2026: createMetricPattern4(client, _m(acc, '2026_max_drawdown')),
_2015: createMetricPattern4(client, _m(acc, '2015_days_in_profit')),
_2016: createMetricPattern4(client, _m(acc, '2016_days_in_profit')),
_2017: createMetricPattern4(client, _m(acc, '2017_days_in_profit')),
_2018: createMetricPattern4(client, _m(acc, '2018_days_in_profit')),
_2019: createMetricPattern4(client, _m(acc, '2019_days_in_profit')),
_2020: createMetricPattern4(client, _m(acc, '2020_days_in_profit')),
_2021: createMetricPattern4(client, _m(acc, '2021_days_in_profit')),
_2022: createMetricPattern4(client, _m(acc, '2022_days_in_profit')),
_2023: createMetricPattern4(client, _m(acc, '2023_days_in_profit')),
_2024: createMetricPattern4(client, _m(acc, '2024_days_in_profit')),
_2025: createMetricPattern4(client, _m(acc, '2025_days_in_profit')),
_2026: createMetricPattern4(client, _m(acc, '2026_days_in_profit')),
};
}
@@ -2285,93 +2285,6 @@ function create_0satsPattern(client, acc) {
};
}
/**
* @typedef {Object} _0satsPattern2
* @property {ActivityPattern2} activity
* @property {CostBasisPattern} costBasis
* @property {OutputsPattern} outputs
* @property {RealizedPattern} realized
* @property {RelativePattern4} relative
* @property {SupplyPattern2} supply
* @property {UnrealizedPattern} unrealized
*/
/**
* Create a _0satsPattern2 pattern node
* @param {BrkClientBase} client
* @param {string} acc - Accumulated metric name
* @returns {_0satsPattern2}
*/
function create_0satsPattern2(client, acc) {
return {
activity: createActivityPattern2(client, acc),
costBasis: createCostBasisPattern(client, acc),
outputs: createOutputsPattern(client, _m(acc, 'utxo_count')),
realized: createRealizedPattern(client, acc),
relative: createRelativePattern4(client, _m(acc, 'supply_in')),
supply: createSupplyPattern2(client, _m(acc, 'supply')),
unrealized: createUnrealizedPattern(client, acc),
};
}
/**
* @typedef {Object} PeriodCagrPattern
* @property {MetricPattern4<StoredF32>} _10y
* @property {MetricPattern4<StoredF32>} _2y
* @property {MetricPattern4<StoredF32>} _3y
* @property {MetricPattern4<StoredF32>} _4y
* @property {MetricPattern4<StoredF32>} _5y
* @property {MetricPattern4<StoredF32>} _6y
* @property {MetricPattern4<StoredF32>} _8y
*/
/**
* Create a PeriodCagrPattern pattern node
* @param {BrkClientBase} client
* @param {string} acc - Accumulated metric name
* @returns {PeriodCagrPattern}
*/
function createPeriodCagrPattern(client, acc) {
return {
_10y: createMetricPattern4(client, _p('10y', acc)),
_2y: createMetricPattern4(client, _p('2y', acc)),
_3y: createMetricPattern4(client, _p('3y', acc)),
_4y: createMetricPattern4(client, _p('4y', acc)),
_5y: createMetricPattern4(client, _p('5y', acc)),
_6y: createMetricPattern4(client, _p('6y', acc)),
_8y: createMetricPattern4(client, _p('8y', acc)),
};
}
/**
* @typedef {Object} _10yTo12yPattern
* @property {ActivityPattern2} activity
* @property {CostBasisPattern2} costBasis
* @property {OutputsPattern} outputs
* @property {RealizedPattern2} realized
* @property {RelativePattern2} relative
* @property {SupplyPattern2} supply
* @property {UnrealizedPattern} unrealized
*/
/**
* Create a _10yTo12yPattern pattern node
* @param {BrkClientBase} client
* @param {string} acc - Accumulated metric name
* @returns {_10yTo12yPattern}
*/
function create_10yTo12yPattern(client, acc) {
return {
activity: createActivityPattern2(client, acc),
costBasis: createCostBasisPattern2(client, acc),
outputs: createOutputsPattern(client, _m(acc, 'utxo_count')),
realized: createRealizedPattern2(client, acc),
relative: createRelativePattern2(client, acc),
supply: createSupplyPattern2(client, _m(acc, 'supply')),
unrealized: createUnrealizedPattern(client, acc),
};
}
/**
* @typedef {Object} _100btcPattern
* @property {ActivityPattern2} activity
@@ -2401,6 +2314,35 @@ function create_100btcPattern(client, acc) {
};
}
/**
* @typedef {Object} _0satsPattern2
* @property {ActivityPattern2} activity
* @property {CostBasisPattern} costBasis
* @property {OutputsPattern} outputs
* @property {RealizedPattern} realized
* @property {RelativePattern4} relative
* @property {SupplyPattern2} supply
* @property {UnrealizedPattern} unrealized
*/
/**
* Create a _0satsPattern2 pattern node
* @param {BrkClientBase} client
* @param {string} acc - Accumulated metric name
* @returns {_0satsPattern2}
*/
function create_0satsPattern2(client, acc) {
return {
activity: createActivityPattern2(client, acc),
costBasis: createCostBasisPattern(client, acc),
outputs: createOutputsPattern(client, _m(acc, 'utxo_count')),
realized: createRealizedPattern(client, acc),
relative: createRelativePattern4(client, _m(acc, 'supply_in')),
supply: createSupplyPattern2(client, _m(acc, 'supply')),
unrealized: createUnrealizedPattern(client, acc),
};
}
/**
* @typedef {Object} _10yPattern
* @property {ActivityPattern2} activity
@@ -2459,6 +2401,64 @@ function createUnrealizedPattern(client, acc) {
};
}
/**
* @typedef {Object} PeriodCagrPattern
* @property {MetricPattern4<StoredF32>} _10y
* @property {MetricPattern4<StoredF32>} _2y
* @property {MetricPattern4<StoredF32>} _3y
* @property {MetricPattern4<StoredF32>} _4y
* @property {MetricPattern4<StoredF32>} _5y
* @property {MetricPattern4<StoredF32>} _6y
* @property {MetricPattern4<StoredF32>} _8y
*/
/**
* Create a PeriodCagrPattern pattern node
* @param {BrkClientBase} client
* @param {string} acc - Accumulated metric name
* @returns {PeriodCagrPattern}
*/
function createPeriodCagrPattern(client, acc) {
return {
_10y: createMetricPattern4(client, _p('10y', acc)),
_2y: createMetricPattern4(client, _p('2y', acc)),
_3y: createMetricPattern4(client, _p('3y', acc)),
_4y: createMetricPattern4(client, _p('4y', acc)),
_5y: createMetricPattern4(client, _p('5y', acc)),
_6y: createMetricPattern4(client, _p('6y', acc)),
_8y: createMetricPattern4(client, _p('8y', acc)),
};
}
/**
* @typedef {Object} _10yTo12yPattern
* @property {ActivityPattern2} activity
* @property {CostBasisPattern2} costBasis
* @property {OutputsPattern} outputs
* @property {RealizedPattern2} realized
* @property {RelativePattern2} relative
* @property {SupplyPattern2} supply
* @property {UnrealizedPattern} unrealized
*/
/**
* Create a _10yTo12yPattern pattern node
* @param {BrkClientBase} client
* @param {string} acc - Accumulated metric name
* @returns {_10yTo12yPattern}
*/
function create_10yTo12yPattern(client, acc) {
return {
activity: createActivityPattern2(client, acc),
costBasis: createCostBasisPattern2(client, acc),
outputs: createOutputsPattern(client, _m(acc, 'utxo_count')),
realized: createRealizedPattern2(client, acc),
relative: createRelativePattern2(client, acc),
supply: createSupplyPattern2(client, _m(acc, 'supply')),
unrealized: createUnrealizedPattern(client, acc),
};
}
/**
* @typedef {Object} AllPattern
* @property {FullnessPattern<StoredU32>} balanceDecreased
@@ -2536,6 +2536,69 @@ function createSplitPattern2(client, acc) {
};
}
/**
* @typedef {Object} UnclaimedRewardsPattern
* @property {BitcoinPattern2<Bitcoin>} bitcoin
* @property {BlockCountPattern<Dollars>} dollars
* @property {BlockCountPattern<Sats>} sats
*/
/**
* Create a UnclaimedRewardsPattern pattern node
* @param {BrkClientBase} client
* @param {string} acc - Accumulated metric name
* @returns {UnclaimedRewardsPattern}
*/
function createUnclaimedRewardsPattern(client, acc) {
return {
bitcoin: createBitcoinPattern2(client, _m(acc, 'btc')),
dollars: createBlockCountPattern(client, _m(acc, 'usd')),
sats: createBlockCountPattern(client, acc),
};
}
/**
* @typedef {Object} _2015Pattern
* @property {MetricPattern4<Bitcoin>} bitcoin
* @property {MetricPattern4<Dollars>} dollars
* @property {MetricPattern4<Sats>} sats
*/
/**
* Create a _2015Pattern pattern node
* @param {BrkClientBase} client
* @param {string} acc - Accumulated metric name
* @returns {_2015Pattern}
*/
function create_2015Pattern(client, acc) {
return {
bitcoin: createMetricPattern4(client, _m(acc, 'btc')),
dollars: createMetricPattern4(client, _m(acc, 'usd')),
sats: createMetricPattern4(client, acc),
};
}
/**
* @typedef {Object} ActiveSupplyPattern
* @property {MetricPattern1<Bitcoin>} bitcoin
* @property {MetricPattern1<Dollars>} dollars
* @property {MetricPattern1<Sats>} sats
*/
/**
* Create a ActiveSupplyPattern pattern node
* @param {BrkClientBase} client
* @param {string} acc - Accumulated metric name
* @returns {ActiveSupplyPattern}
*/
function createActiveSupplyPattern(client, acc) {
return {
bitcoin: createMetricPattern1(client, _m(acc, 'btc')),
dollars: createMetricPattern1(client, _m(acc, 'usd')),
sats: createMetricPattern1(client, acc),
};
}
/**
* @typedef {Object} CoinbasePattern
* @property {BitcoinPattern} bitcoin
@@ -2557,6 +2620,27 @@ function createCoinbasePattern(client, acc) {
};
}
/**
* @typedef {Object} SegwitAdoptionPattern
* @property {MetricPattern11<StoredF32>} base
* @property {MetricPattern2<StoredF32>} cumulative
* @property {MetricPattern2<StoredF32>} sum
*/
/**
* Create a SegwitAdoptionPattern pattern node
* @param {BrkClientBase} client
* @param {string} acc - Accumulated metric name
* @returns {SegwitAdoptionPattern}
*/
function createSegwitAdoptionPattern(client, acc) {
return {
base: createMetricPattern11(client, acc),
cumulative: createMetricPattern2(client, _m(acc, 'cumulative')),
sum: createMetricPattern2(client, _m(acc, 'sum')),
};
}
/**
* @typedef {Object} CostBasisPattern2
* @property {ActivePricePattern} max
@@ -2600,86 +2684,21 @@ function createCoinbasePattern2(client, acc) {
}
/**
* @typedef {Object} SegwitAdoptionPattern
* @property {MetricPattern11<StoredF32>} base
* @property {MetricPattern2<StoredF32>} cumulative
* @property {MetricPattern2<StoredF32>} sum
* @typedef {Object} RelativePattern4
* @property {MetricPattern1<StoredF64>} supplyInLossRelToOwnSupply
* @property {MetricPattern1<StoredF64>} supplyInProfitRelToOwnSupply
*/
/**
* Create a SegwitAdoptionPattern pattern node
* Create a RelativePattern4 pattern node
* @param {BrkClientBase} client
* @param {string} acc - Accumulated metric name
* @returns {SegwitAdoptionPattern}
* @returns {RelativePattern4}
*/
function createSegwitAdoptionPattern(client, acc) {
function createRelativePattern4(client, acc) {
return {
base: createMetricPattern11(client, acc),
cumulative: createMetricPattern2(client, _m(acc, 'cumulative')),
sum: createMetricPattern2(client, _m(acc, 'sum')),
};
}
/**
* @typedef {Object} UnclaimedRewardsPattern
* @property {BitcoinPattern2<Bitcoin>} bitcoin
* @property {BlockCountPattern<Dollars>} dollars
* @property {BlockCountPattern<Sats>} sats
*/
/**
* Create a UnclaimedRewardsPattern pattern node
* @param {BrkClientBase} client
* @param {string} acc - Accumulated metric name
* @returns {UnclaimedRewardsPattern}
*/
function createUnclaimedRewardsPattern(client, acc) {
return {
bitcoin: createBitcoinPattern2(client, _m(acc, 'btc')),
dollars: createBlockCountPattern(client, _m(acc, 'usd')),
sats: createBlockCountPattern(client, acc),
};
}
/**
* @typedef {Object} ActiveSupplyPattern
* @property {MetricPattern1<Bitcoin>} bitcoin
* @property {MetricPattern1<Dollars>} dollars
* @property {MetricPattern1<Sats>} sats
*/
/**
* Create a ActiveSupplyPattern pattern node
* @param {BrkClientBase} client
* @param {string} acc - Accumulated metric name
* @returns {ActiveSupplyPattern}
*/
function createActiveSupplyPattern(client, acc) {
return {
bitcoin: createMetricPattern1(client, _m(acc, 'btc')),
dollars: createMetricPattern1(client, _m(acc, 'usd')),
sats: createMetricPattern1(client, acc),
};
}
/**
* @typedef {Object} _2015Pattern
* @property {MetricPattern4<Bitcoin>} bitcoin
* @property {MetricPattern4<Dollars>} dollars
* @property {MetricPattern4<Sats>} sats
*/
/**
* Create a _2015Pattern pattern node
* @param {BrkClientBase} client
* @param {string} acc - Accumulated metric name
* @returns {_2015Pattern}
*/
function create_2015Pattern(client, acc) {
return {
bitcoin: createMetricPattern4(client, _m(acc, 'btc')),
dollars: createMetricPattern4(client, _m(acc, 'usd')),
sats: createMetricPattern4(client, acc),
supplyInLossRelToOwnSupply: createMetricPattern1(client, _m(acc, 'loss_rel_to_own_supply')),
supplyInProfitRelToOwnSupply: createMetricPattern1(client, _m(acc, 'profit_rel_to_own_supply')),
};
}
@@ -2703,21 +2722,40 @@ function createActivePricePattern(client, acc) {
}
/**
* @typedef {Object} CostBasisPattern
* @property {ActivePricePattern} max
* @property {ActivePricePattern} min
* @typedef {Object} _1dReturns1mSdPattern
* @property {MetricPattern4<StoredF32>} sd
* @property {MetricPattern4<StoredF32>} sma
*/
/**
* Create a CostBasisPattern pattern node
* Create a _1dReturns1mSdPattern pattern node
* @param {BrkClientBase} client
* @param {string} acc - Accumulated metric name
* @returns {CostBasisPattern}
* @returns {_1dReturns1mSdPattern}
*/
function createCostBasisPattern(client, acc) {
function create_1dReturns1mSdPattern(client, acc) {
return {
max: createActivePricePattern(client, _m(acc, 'max_cost_basis')),
min: createActivePricePattern(client, _m(acc, 'min_cost_basis')),
sd: createMetricPattern4(client, _m(acc, 'sd')),
sma: createMetricPattern4(client, _m(acc, 'sma')),
};
}
/**
* @typedef {Object} SupplyPattern2
* @property {ActiveSupplyPattern} halved
* @property {ActiveSupplyPattern} total
*/
/**
* Create a SupplyPattern2 pattern node
* @param {BrkClientBase} client
* @param {string} acc - Accumulated metric name
* @returns {SupplyPattern2}
*/
function createSupplyPattern2(client, acc) {
return {
halved: createActiveSupplyPattern(client, _m(acc, 'halved')),
total: createActiveSupplyPattern(client, acc),
};
}
@@ -2741,59 +2779,21 @@ function create_0sdUsdPattern(client, acc) {
}
/**
* @typedef {Object} _1dReturns1mSdPattern
* @property {MetricPattern4<StoredF32>} sd
* @property {MetricPattern4<StoredF32>} sma
* @typedef {Object} CostBasisPattern
* @property {ActivePricePattern} max
* @property {ActivePricePattern} min
*/
/**
* Create a _1dReturns1mSdPattern pattern node
* Create a CostBasisPattern pattern node
* @param {BrkClientBase} client
* @param {string} acc - Accumulated metric name
* @returns {_1dReturns1mSdPattern}
* @returns {CostBasisPattern}
*/
function create_1dReturns1mSdPattern(client, acc) {
function createCostBasisPattern(client, acc) {
return {
sd: createMetricPattern4(client, _m(acc, 'sd')),
sma: createMetricPattern4(client, _m(acc, 'sma')),
};
}
/**
* @typedef {Object} RelativePattern4
* @property {MetricPattern1<StoredF64>} supplyInLossRelToOwnSupply
* @property {MetricPattern1<StoredF64>} supplyInProfitRelToOwnSupply
*/
/**
* Create a RelativePattern4 pattern node
* @param {BrkClientBase} client
* @param {string} acc - Accumulated metric name
* @returns {RelativePattern4}
*/
function createRelativePattern4(client, acc) {
return {
supplyInLossRelToOwnSupply: createMetricPattern1(client, _m(acc, 'loss_rel_to_own_supply')),
supplyInProfitRelToOwnSupply: createMetricPattern1(client, _m(acc, 'profit_rel_to_own_supply')),
};
}
/**
* @typedef {Object} SupplyPattern2
* @property {ActiveSupplyPattern} halved
* @property {ActiveSupplyPattern} total
*/
/**
* Create a SupplyPattern2 pattern node
* @param {BrkClientBase} client
* @param {string} acc - Accumulated metric name
* @returns {SupplyPattern2}
*/
function createSupplyPattern2(client, acc) {
return {
halved: createActiveSupplyPattern(client, _m(acc, 'halved')),
total: createActiveSupplyPattern(client, acc),
max: createActivePricePattern(client, _m(acc, 'max_cost_basis')),
min: createActivePricePattern(client, _m(acc, 'min_cost_basis')),
};
}
@@ -2818,27 +2818,6 @@ function createBlockCountPattern(client, acc) {
};
}
/**
* @template T
* @typedef {Object} SatsPattern
* @property {MetricPattern1<T>} ohlc
* @property {SplitPattern2<T>} split
*/
/**
* Create a SatsPattern pattern node
* @template T
* @param {BrkClientBase} client
* @param {string} acc - Accumulated metric name
* @returns {SatsPattern<T>}
*/
function createSatsPattern(client, acc) {
return {
ohlc: createMetricPattern1(client, _m(acc, 'ohlc')),
split: createSplitPattern2(client, acc),
};
}
/**
* @template T
* @typedef {Object} BitcoinPattern2
@@ -2860,6 +2839,27 @@ function createBitcoinPattern2(client, acc) {
};
}
/**
* @template T
* @typedef {Object} SatsPattern
* @property {MetricPattern1<T>} ohlc
* @property {SplitPattern2<T>} split
*/
/**
* Create a SatsPattern pattern node
* @template T
* @param {BrkClientBase} client
* @param {string} acc - Accumulated metric name
* @returns {SatsPattern<T>}
*/
function createSatsPattern(client, acc) {
return {
ohlc: createMetricPattern1(client, _m(acc, 'ohlc_sats')),
split: createSplitPattern2(client, _m(acc, 'sats')),
};
}
/**
* @typedef {Object} OutputsPattern
* @property {MetricPattern1<StoredU64>} utxoCount
@@ -3743,8 +3743,8 @@ function createRealizedPriceExtraPattern(client, acc) {
* @typedef {Object} MetricsTree_Market_Dca
* @property {MetricsTree_Market_Dca_ClassAveragePrice} classAveragePrice
* @property {MetricsTree_Market_Dca_ClassDaysInLoss} classDaysInLoss
* @property {MetricsTree_Market_Dca_ClassDaysInProfit} classDaysInProfit
* @property {ClassDaysInLossPattern<StoredF32>} classMaxDrawdown
* @property {ClassDaysInLossPattern<StoredU32>} classDaysInProfit
* @property {MetricsTree_Market_Dca_ClassMaxDrawdown} classMaxDrawdown
* @property {MetricsTree_Market_Dca_ClassMaxReturn} classMaxReturn
* @property {MetricsTree_Market_Dca_ClassReturns} classReturns
* @property {MetricsTree_Market_Dca_ClassStack} classStack
@@ -3797,19 +3797,19 @@ function createRealizedPriceExtraPattern(client, acc) {
*/
/**
* @typedef {Object} MetricsTree_Market_Dca_ClassDaysInProfit
* @property {MetricPattern4<StoredU32>} _2015
* @property {MetricPattern4<StoredU32>} _2016
* @property {MetricPattern4<StoredU32>} _2017
* @property {MetricPattern4<StoredU32>} _2018
* @property {MetricPattern4<StoredU32>} _2019
* @property {MetricPattern4<StoredU32>} _2020
* @property {MetricPattern4<StoredU32>} _2021
* @property {MetricPattern4<StoredU32>} _2022
* @property {MetricPattern4<StoredU32>} _2023
* @property {MetricPattern4<StoredU32>} _2024
* @property {MetricPattern4<StoredU32>} _2025
* @property {MetricPattern4<StoredU32>} _2026
* @typedef {Object} MetricsTree_Market_Dca_ClassMaxDrawdown
* @property {MetricPattern4<StoredF32>} _2015
* @property {MetricPattern4<StoredF32>} _2016
* @property {MetricPattern4<StoredF32>} _2017
* @property {MetricPattern4<StoredF32>} _2018
* @property {MetricPattern4<StoredF32>} _2019
* @property {MetricPattern4<StoredF32>} _2020
* @property {MetricPattern4<StoredF32>} _2021
* @property {MetricPattern4<StoredF32>} _2022
* @property {MetricPattern4<StoredF32>} _2023
* @property {MetricPattern4<StoredF32>} _2024
* @property {MetricPattern4<StoredF32>} _2025
* @property {MetricPattern4<StoredF32>} _2026
*/
/**
@@ -4212,8 +4212,8 @@ function createRealizedPriceExtraPattern(client, acc) {
/**
* @typedef {Object} MetricsTree_Price
* @property {MetricsTree_Price_Cents} cents
* @property {MetricsTree_Price_Sats} sats
* @property {SatsPattern<OHLCDollars>} usd
* @property {SatsPattern<OHLCSats>} sats
* @property {MetricsTree_Price_Usd} usd
*/
/**
@@ -4231,9 +4231,9 @@ function createRealizedPriceExtraPattern(client, acc) {
*/
/**
* @typedef {Object} MetricsTree_Price_Sats
* @property {MetricPattern1<OHLCSats>} ohlc
* @property {SplitPattern2<Sats>} split
* @typedef {Object} MetricsTree_Price_Usd
* @property {MetricPattern1<OHLCDollars>} ohlc
* @property {SplitPattern2<Dollars>} split
*/
/**
@@ -4371,7 +4371,7 @@ function createRealizedPriceExtraPattern(client, acc) {
* @extends BrkClientBase
*/
class BrkClient extends BrkClientBase {
VERSION = "v0.1.0-beta.1";
VERSION = "v0.1.0";
INDEXES = /** @type {const} */ ([
"dateindex",
@@ -5906,21 +5906,21 @@ class BrkClient extends BrkClientBase {
_2025: createMetricPattern4(this, 'dca_class_2025_days_in_loss'),
_2026: createMetricPattern4(this, 'dca_class_2026_days_in_loss'),
},
classDaysInProfit: {
_2015: createMetricPattern4(this, 'dca_class_2015_days_in_profit'),
_2016: createMetricPattern4(this, 'dca_class_2016_days_in_profit'),
_2017: createMetricPattern4(this, 'dca_class_2017_days_in_profit'),
_2018: createMetricPattern4(this, 'dca_class_2018_days_in_profit'),
_2019: createMetricPattern4(this, 'dca_class_2019_days_in_profit'),
_2020: createMetricPattern4(this, 'dca_class_2020_days_in_profit'),
_2021: createMetricPattern4(this, 'dca_class_2021_days_in_profit'),
_2022: createMetricPattern4(this, 'dca_class_2022_days_in_profit'),
_2023: createMetricPattern4(this, 'dca_class_2023_days_in_profit'),
_2024: createMetricPattern4(this, 'dca_class_2024_days_in_profit'),
_2025: createMetricPattern4(this, 'dca_class_2025_days_in_profit'),
_2026: createMetricPattern4(this, 'dca_class_2026_days_in_profit'),
classDaysInProfit: createClassDaysInLossPattern(this, 'dca_class'),
classMaxDrawdown: {
_2015: createMetricPattern4(this, 'dca_class_2015_max_drawdown'),
_2016: createMetricPattern4(this, 'dca_class_2016_max_drawdown'),
_2017: createMetricPattern4(this, 'dca_class_2017_max_drawdown'),
_2018: createMetricPattern4(this, 'dca_class_2018_max_drawdown'),
_2019: createMetricPattern4(this, 'dca_class_2019_max_drawdown'),
_2020: createMetricPattern4(this, 'dca_class_2020_max_drawdown'),
_2021: createMetricPattern4(this, 'dca_class_2021_max_drawdown'),
_2022: createMetricPattern4(this, 'dca_class_2022_max_drawdown'),
_2023: createMetricPattern4(this, 'dca_class_2023_max_drawdown'),
_2024: createMetricPattern4(this, 'dca_class_2024_max_drawdown'),
_2025: createMetricPattern4(this, 'dca_class_2025_max_drawdown'),
_2026: createMetricPattern4(this, 'dca_class_2026_max_drawdown'),
},
classMaxDrawdown: createClassDaysInLossPattern(this, 'dca_class'),
classMaxReturn: {
_2015: createMetricPattern4(this, 'dca_class_2015_max_return'),
_2016: createMetricPattern4(this, 'dca_class_2016_max_return'),
@@ -6305,11 +6305,11 @@ class BrkClient extends BrkClientBase {
open: createMetricPattern5(this, 'price_open_cents'),
},
},
sats: {
ohlc: createMetricPattern1(this, 'price_ohlc_sats'),
split: createSplitPattern2(this, 'price_sats'),
sats: createSatsPattern(this, 'price'),
usd: {
ohlc: createMetricPattern1(this, 'price_ohlc'),
split: createSplitPattern2(this, 'price'),
},
usd: createSatsPattern(this, 'price'),
},
scripts: {
count: {

View File

@@ -34,5 +34,5 @@
"url": "git+https://github.com/bitcoinresearchkit/brk.git"
},
"type": "module",
"version": "0.1.0-beta.1"
"version": "0.1.0"
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,13 +1,13 @@
[project]
name = "brk-client"
version = "0.1.0-beta.1"
version = "0.1.0"
description = "Python client for the Bitcoin Research Kit"
readme = "README.md"
requires-python = ">=3.9"
license = "MIT"
keywords = ["bitcoin", "blockchain", "analytics", "on-chain"]
classifiers = [
"Development Status :: 4 - Beta",
"Development Status :: 5 - Production/Stable",
"Intended Audience :: Developers",
"License :: OSI Approved :: MIT License",
"Programming Language :: Python :: 3",