From 9327b1ae81482f5c67a88b16d4073657bb1a143e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Ciszczo=C5=84?= Date: Sun, 24 Nov 2024 17:59:45 +0100 Subject: [PATCH 1/4] Add accounts loader --- src/adapters/accounts.ts | 37 +++++++++++++++ src/api/accounts.ts | 9 ++++ src/index.ts | 2 +- src/loaders/accountsLoader.ts | 24 ++++++++++ src/schema/accounts.ts | 52 +++++++++++++++++++++ src/schema/{community.ts => communities.ts} | 2 +- src/schema/posts.ts | 4 +- src/schema/utils.ts | 25 ++++++++++ src/tests/api/accounts.test.ts | 16 +++++++ 9 files changed, 167 insertions(+), 4 deletions(-) create mode 100644 src/adapters/accounts.ts create mode 100644 src/api/accounts.ts create mode 100644 src/loaders/accountsLoader.ts create mode 100644 src/schema/accounts.ts rename src/schema/{community.ts => communities.ts} (54%) create mode 100644 src/tests/api/accounts.test.ts diff --git a/src/adapters/accounts.ts b/src/adapters/accounts.ts new file mode 100644 index 0000000..a3a207a --- /dev/null +++ b/src/adapters/accounts.ts @@ -0,0 +1,37 @@ +import type { DynamicGlobalProperties, ExtendedAccount } from "@hiveio/dhive"; +import { type Account } from "~/schema/accounts.ts"; +import { balanceToMoney, vestsToHive } from "~/schema/utils.ts"; + +const adaptAccount = ( + account: ExtendedAccount, + params: DynamicGlobalProperties +): Account => { + const jsonMetadata = JSON.parse(account.posting_json_metadata); + + return { + id: account.id.toString(), + name: account.name, + created: new Date(account.created), + wallet: { + hive: { + liquid: balanceToMoney(account.balance as string, 3)!, + frozen: vestsToHive(account.vesting_shares as string, params) + }, + hbd: { + liquid: balanceToMoney(account.hbd_balance as string, 3)!, + frozen: balanceToMoney(account.savings_hbd_balance as string, 3)! + } + }, + postCount: account.post_count, + profile: { + name: jsonMetadata.profile.name, + about: jsonMetadata.profile.about, + coverImage: jsonMetadata.profile.cover_image, + profileImage: jsonMetadata.profile.profile_image, + website: jsonMetadata.profile.website, + location: jsonMetadata.profile.location + } + }; +}; + +export { adaptAccount }; diff --git a/src/api/accounts.ts b/src/api/accounts.ts new file mode 100644 index 0000000..d5c3739 --- /dev/null +++ b/src/api/accounts.ts @@ -0,0 +1,9 @@ +import { hive } from "~/api/common"; +import type { Account } from "~/schema/accounts.ts"; +import { adaptAccount } from "~/adapters/accounts.ts"; + +export async function getAccounts(usernames: string[]): Promise { + const params = await hive.database.getDynamicGlobalProperties(); + const accounts = await hive.database.getAccounts(usernames); + return accounts.map((acc) => adaptAccount(acc, params)); +} diff --git a/src/index.ts b/src/index.ts index 61a98f2..bed2516 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,4 +1,4 @@ export { hiveBlogLoader } from "~/loaders/blogLoader"; export type { Post } from "~/schema/posts.ts"; -export type { Community } from "~/schema/community.ts"; +export type { Communities } from "~/schema/communities.ts"; diff --git a/src/loaders/accountsLoader.ts b/src/loaders/accountsLoader.ts new file mode 100644 index 0000000..082d4be --- /dev/null +++ b/src/loaders/accountsLoader.ts @@ -0,0 +1,24 @@ +import type { Loader } from "astro/loaders"; +import { typeToZ } from "~/schema/utils.ts"; +import type { Account } from "~/schema/accounts.ts"; +import { getAccounts } from "~/api/accounts.ts"; + +export function hiveAccountsLoader(username: string | string[]): Loader { + return { + name: "hive-accounts-loader", + load: async function (this: Loader, { store, logger }) { + logger.debug(`Fetching accounts [usernames: ${username}]`); + const data = await getAccounts( + Array.isArray(username) ? username : [username] + ); + store.clear(); + data.forEach((account) => { + store.set({ + id: account.id.toString(), + data: { ...account } + }); + }); + }, + schema: typeToZ + }; +} diff --git a/src/schema/accounts.ts b/src/schema/accounts.ts new file mode 100644 index 0000000..71d6070 --- /dev/null +++ b/src/schema/accounts.ts @@ -0,0 +1,52 @@ +export type Account = { + id: string; + name: string; + created: Date; + wallet: Wallet; + postCount: number; + profile: Profile; +}; + +export type Profile = { + name: string; + about: string; + coverImage: string; + profileImage: string; + website: string; + location: string; +}; + +export type Wallet = { + hive: { + liquid: Money; + frozen: Money; + }; + hbd: { + liquid: Money; + frozen: Money; + }; +}; + +export interface MoneyInterface { + currency: string; + amount: string; + precision: number; + + asFloat(): number; +} + +export class Money implements MoneyInterface { + currency: string; + amount: string; + precision: number; + + constructor(currency: string, amount: string, precision: number) { + this.currency = currency; + this.amount = parseFloat(amount).toFixed(precision).toString(); + this.precision = precision; + } + + asFloat(): number { + return parseFloat(this.amount); + } +} diff --git a/src/schema/community.ts b/src/schema/communities.ts similarity index 54% rename from src/schema/community.ts rename to src/schema/communities.ts index 14a1636..8437166 100644 --- a/src/schema/community.ts +++ b/src/schema/communities.ts @@ -1,4 +1,4 @@ -export type Community = { +export type Communities = { id: string; name: string; }; diff --git a/src/schema/posts.ts b/src/schema/posts.ts index 6834ceb..bc9cf46 100644 --- a/src/schema/posts.ts +++ b/src/schema/posts.ts @@ -1,4 +1,4 @@ -import type { Community } from "~/schema/community.ts"; +import type { Communities } from "~/schema/communities.ts"; export type Post = { id: string; @@ -7,7 +7,7 @@ export type Post = { description: string; created: Date; updated?: Date; - community?: Community; + community?: Communities; category: string; tags: string[]; image?: string; diff --git a/src/schema/utils.ts b/src/schema/utils.ts index 23257a8..0dded21 100644 --- a/src/schema/utils.ts +++ b/src/schema/utils.ts @@ -1,5 +1,30 @@ import { z } from "astro/zod"; +import { Money } from "~/schema/accounts.ts"; +import type { DynamicGlobalProperties } from "@hiveio/dhive"; export function typeToZ() { return z.custom(() => true) as z.ZodType; } + +export function balanceToMoney( + balance: string, + precision: number +): Money | null { + const [amount, currency] = balance.split(" "); + if (!amount || !currency) { + throw new Error(`Invalid balance: ${balance}`); + } + return new Money(currency, amount, precision); +} + +export const vestsToHive = ( + vests: string, + params: DynamicGlobalProperties +): Money => { + const [v] = vests.split(" "); + const [totalFund] = (params.total_vesting_fund_hive as string).split(" "); + const [totalShares] = (params.total_vesting_shares as string).split(" "); + const hive = + (parseFloat(v!) * parseFloat(totalFund!)) / parseFloat(totalShares!); + return new Money("HIVE", hive.toString(), 3); +}; diff --git a/src/tests/api/accounts.test.ts b/src/tests/api/accounts.test.ts new file mode 100644 index 0000000..1fadd7b --- /dev/null +++ b/src/tests/api/accounts.test.ts @@ -0,0 +1,16 @@ +import { describe, test, expect } from "bun:test"; +import { getAccounts } from "~/api/accounts.ts"; + +describe("getAccounts", () => { + test("returns accounts", async () => { + const accounts = await getAccounts(["hive.coding", "mciszczon"]); + expect(accounts).toBeArray(); + expect(accounts.length).toEqual(2); + const acc1 = accounts[0]!; + expect(acc1.name).toEqual("hive.coding"); + const acc2 = accounts[1]!; + expect(acc2.name).toEqual("mciszczon"); + expect(acc2.wallet.hive.liquid.asFloat()).toBeNumber(); + expect(acc2.wallet.hive.frozen.asFloat()).toBeNumber(); + }); +}); From d3633c9953764ce7a583db31afb03c9746804904 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Ciszczo=C5=84?= Date: Sun, 24 Nov 2024 18:00:34 +0100 Subject: [PATCH 2/4] Update dependencies --- bun.lockb | Bin 244911 -> 250551 bytes package.json | 18 +++++++++--------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/bun.lockb b/bun.lockb index 8eb87c152b0f4c5b127b6cfc3e7c7a6a732642c6..4aa310f6e0689c8a7da11085b4448a686e1ee4b0 100755 GIT binary patch delta 49861 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 diff --git a/package.json b/package.json index c2d874c..cc25293 100644 --- a/package.json +++ b/package.json @@ -22,21 +22,21 @@ "prepare": "bunx husky" }, "dependencies": { - "@hiveio/dhive": "^1.3.1-beta" + "@hiveio/dhive": "^1.3.2" }, "devDependencies": { - "@eslint/js": "^9.13.0", - "@faker-js/faker": "^9.1.0", + "@eslint/js": "^9.15.0", + "@faker-js/faker": "^9.2.0", "@types/bun": "latest", - "eslint": "^9.13.0", + "eslint": "^9.15.0", "eslint-config-prettier": "^9.1.0", - "globals": "^15.11.0", - "husky": "^9.1.6", + "globals": "^15.12.0", + "husky": "^9.1.7", "lint-staged": "^15.2.10", "prettier": "^3.3.3", - "tsup": "^8.3.0", - "typescript": "^5.6.3", - "typescript-eslint": "^8.11.0" + "tsup": "^8.3.5", + "typescript": "^5.7.2", + "typescript-eslint": "^8.15.0" }, "peerDependencies": { "astro": "^4.16.7" From 1cb6105c788462d502ff79e2cc9e670880249418 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Ciszczo=C5=84?= Date: Sun, 24 Nov 2024 18:04:43 +0100 Subject: [PATCH 3/4] Update REAMDE.md --- README.md | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 3b98e6a..705c3e7 100644 --- a/README.md +++ b/README.md @@ -18,9 +18,10 @@ Or use our favorite package manager. ## Usage -### Hive Blog Loader +In your Astro project, edit the `/src/content/config.ts` and define any collections using the loaders +that this package provides: -In your Astro project, edit the `/src/content/config.ts`: +### Hive Blog Loader ```ts import { defineCollection } from "astro:content"; @@ -30,11 +31,22 @@ export const collections = { blog: defineCollection({ type: "content_layer", loader: hiveBlogLoader("hive.coding") // Selected username + }), + accounts: defineCollection({ + type: "content_layer", + loader: hiveAccountsLoader("hive.coding") // or ["acc1", "acc2"] for multiple accounts }) }; ``` -For now only `hiveBlogLoader` is available, more coming soon! +## Learn more + +- [Astro](https://astro.build/) +- [Content Layer API](https://astro.build/blog/content-layer-deep-dive/) + +## Support + +If you have any questions or need help, please join our [Discord server](https://discord.gg/3u9v7b4w). ## Contributing From 74b343cab704c2955b9bc670dce72ce1048c30aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Ciszczo=C5=84?= Date: Sun, 24 Nov 2024 18:11:02 +0100 Subject: [PATCH 4/4] 0.2.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index cc25293..c606c64 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@onhive.io/astro-loader", - "version": "0.1.2", + "version": "0.2.0", "author": "mietek.dev ", "repository": { "type": "git",