@hbar-kit/core 0.1.3 → 0.2.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/dist/index.cjs +7 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +5 -1
- package/dist/index.d.ts +5 -1
- package/dist/index.js +7 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/errors.ts +7 -0
package/dist/index.cjs
CHANGED
|
@@ -79,6 +79,12 @@ var PaymentVerificationError = class extends HbarKitError {
|
|
|
79
79
|
this.name = "PaymentVerificationError";
|
|
80
80
|
}
|
|
81
81
|
};
|
|
82
|
+
var UnsupportedAssetError = class extends HbarKitError {
|
|
83
|
+
constructor(message, opts) {
|
|
84
|
+
super(message, opts);
|
|
85
|
+
this.name = "UnsupportedAssetError";
|
|
86
|
+
}
|
|
87
|
+
};
|
|
82
88
|
|
|
83
89
|
// src/network.ts
|
|
84
90
|
var NETWORKS = {
|
|
@@ -227,6 +233,7 @@ exports.NotFoundError = NotFoundError;
|
|
|
227
233
|
exports.PaymentVerificationError = PaymentVerificationError;
|
|
228
234
|
exports.RateLimitError = RateLimitError;
|
|
229
235
|
exports.TimeoutError = TimeoutError;
|
|
236
|
+
exports.UnsupportedAssetError = UnsupportedAssetError;
|
|
230
237
|
exports.assertEntityId = assertEntityId;
|
|
231
238
|
exports.dateToTimestamp = dateToTimestamp;
|
|
232
239
|
exports.formatHbar = formatHbar;
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/errors.ts","../src/network.ts","../src/units.ts","../src/ids.ts","../src/timestamp.ts","../src/query.ts"],"names":[],"mappings":"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","file":"index.cjs","sourcesContent":["export interface HbarKitErrorOptions {\n cause?: unknown\n details?: string\n docsPath?: string\n}\n\nexport class HbarKitError extends Error {\n readonly shortMessage: string\n readonly details: string | undefined\n readonly docsPath: string | undefined\n constructor(message: string, opts: HbarKitErrorOptions = {}) {\n super(message, opts.cause !== undefined ? { cause: opts.cause } : undefined)\n this.name = \"HbarKitError\"\n this.shortMessage = message\n this.details = opts.details\n this.docsPath = opts.docsPath\n }\n /** Walk the cause chain; returns the first error matching fn, or the deepest cause. */\n walk(fn?: (err: unknown) => boolean): unknown {\n return walkCauseChain(this, fn)\n }\n}\n\n/** Walk an error's cause chain; returns the first match for fn, or the deepest cause. */\nfunction walkCauseChain(start: unknown, fn?: (err: unknown) => boolean): unknown {\n let current: unknown = start\n while (current) {\n if (fn?.(current)) return current\n const next: unknown = (current as { cause?: unknown }).cause\n if (!next) return fn ? null : current\n current = next\n }\n return null\n}\n\nexport class MirrorHttpError extends HbarKitError {\n readonly status: number\n constructor(message: string, status: number, opts?: HbarKitErrorOptions) {\n super(message, opts)\n this.name = \"MirrorHttpError\"\n this.status = status\n }\n}\nexport class RateLimitError extends MirrorHttpError {\n readonly retryAfter: number | undefined\n constructor(message: string, opts?: HbarKitErrorOptions & { retryAfter?: number }) {\n super(message, 429, opts)\n this.name = \"RateLimitError\"\n this.retryAfter = opts?.retryAfter\n }\n}\nexport class NotFoundError extends HbarKitError {\n constructor(message: string, opts?: HbarKitErrorOptions) {\n super(message, opts)\n this.name = \"NotFoundError\"\n }\n}\nexport class TimeoutError extends HbarKitError {\n constructor(message: string, opts?: HbarKitErrorOptions) {\n super(message, opts)\n this.name = \"TimeoutError\"\n }\n}\nexport class NetworkError extends HbarKitError {\n constructor(message: string, opts?: HbarKitErrorOptions) {\n super(message, opts)\n this.name = \"NetworkError\"\n }\n}\nexport class InvalidAmountError extends HbarKitError {\n constructor(message: string, opts?: HbarKitErrorOptions) {\n super(message, opts)\n this.name = \"InvalidAmountError\"\n }\n}\nexport class InvalidParamsError extends HbarKitError {\n constructor(message: string, opts?: HbarKitErrorOptions) {\n super(message, opts)\n this.name = \"InvalidParamsError\"\n }\n}\nexport class PaymentVerificationError extends HbarKitError {\n constructor(message: string, opts?: HbarKitErrorOptions) {\n super(message, opts)\n this.name = \"PaymentVerificationError\"\n }\n}\n","import { InvalidParamsError } from \"./errors.js\"\n\nexport type HederaNetwork = \"mainnet\" | \"testnet\" | \"previewnet\"\n\nexport interface NetworkConfig {\n network: HederaNetwork\n baseUrl: string\n hashscan: string\n currency: { symbol: \"HBAR\"; decimals: 8 }\n}\n\nexport const NETWORKS: Record<HederaNetwork, NetworkConfig> = {\n mainnet: {\n network: \"mainnet\",\n baseUrl: \"https://mainnet-public.mirrornode.hedera.com\",\n hashscan: \"https://hashscan.io/mainnet\",\n currency: { symbol: \"HBAR\", decimals: 8 },\n },\n testnet: {\n network: \"testnet\",\n baseUrl: \"https://testnet.mirrornode.hedera.com\",\n hashscan: \"https://hashscan.io/testnet\",\n currency: { symbol: \"HBAR\", decimals: 8 },\n },\n previewnet: {\n network: \"previewnet\",\n baseUrl: \"https://previewnet.mirrornode.hedera.com\",\n hashscan: \"https://hashscan.io/previewnet\",\n currency: { symbol: \"HBAR\", decimals: 8 },\n },\n}\n\nexport interface NetworkInput {\n network?: HederaNetwork\n baseUrl?: string\n}\n\n/** Resolve a network input to a full config. Requires `network` or `baseUrl`. */\nexport function resolveNetwork(input: NetworkInput): NetworkConfig {\n if (!input.network && !input.baseUrl) {\n throw new InvalidParamsError(\"`network` (or `baseUrl`) is required — there is no default\")\n }\n const network: HederaNetwork = input.network ?? \"mainnet\"\n const preset = NETWORKS[network]\n const baseUrl = input.baseUrl ? input.baseUrl.replace(/\\/+$/, \"\") : preset.baseUrl\n return { ...preset, baseUrl }\n}\n","import { InvalidAmountError } from \"./errors.js\"\n\nconst AMOUNT_RE = /^(-?)(\\d*)(?:\\.(\\d*))?$/\n\n/** Parse a decimal string into a bigint in the smallest unit. Strict: rejects excess precision. */\nexport function parseUnits(value: string, decimals: number): bigint {\n const m = AMOUNT_RE.exec(value)\n if (!m || value === \"\" || value === \"-\" || value === \".\") {\n throw new InvalidAmountError(`Invalid amount: \"${value}\"`)\n }\n const [, sign, whole = \"\", frac = \"\"] = m\n if (frac.length > decimals) {\n throw new InvalidAmountError(\n `Amount \"${value}\" has more precision than ${decimals} decimals allow`,\n )\n }\n const digits = `${whole}${frac.padEnd(decimals, \"0\")}` || \"0\"\n const base = BigInt(digits === \"\" ? \"0\" : digits)\n return sign === \"-\" ? -base : base\n}\n\n/** Format a bigint smallest-unit value into a trimmed decimal string. */\nexport function formatUnits(value: bigint, decimals: number): string {\n const neg = value < 0n\n const abs = neg ? -value : value\n const s = abs.toString().padStart(decimals + 1, \"0\")\n const whole = s.slice(0, s.length - decimals)\n const frac = decimals === 0 ? \"\" : s.slice(s.length - decimals).replace(/0+$/, \"\")\n const out = frac ? `${whole}.${frac}` : whole\n return neg && out !== \"0\" ? `-${out}` : out\n}\n\nexport const HBAR_DECIMALS = 8\nexport const parseHbar = (value: string): bigint => parseUnits(value, HBAR_DECIMALS)\nexport const formatHbar = (value: bigint): string => formatUnits(value, HBAR_DECIMALS)\n","import { InvalidParamsError } from \"./errors.js\"\n\nconst ENTITY_RE = /^\\d+\\.\\d+\\.\\d+$/\n\nexport function isEntityId(value: string): boolean {\n return ENTITY_RE.test(value)\n}\nexport function assertEntityId(value: string): string {\n if (!isEntityId(value)) throw new InvalidParamsError(`Invalid account/entity id: \"${value}\"`)\n return value\n}\n\nconst padNanos = (nanos: string): string => nanos.padStart(9, \"0\").slice(0, 9)\n\n// SDK form: 0.0.payer@seconds.nanos Mirror form: 0.0.payer-seconds-nanos\nconst SDK_TX_RE = /^(\\d+\\.\\d+\\.\\d+)@(\\d+)\\.(\\d+)$/\nconst MIRROR_TX_RE = /^(\\d+\\.\\d+\\.\\d+)-(\\d+)-(\\d+)$/\n\nexport function txIdToMirror(id: string): string {\n if (MIRROR_TX_RE.test(id)) return id\n const m = SDK_TX_RE.exec(id)\n if (!m) throw new InvalidParamsError(`Invalid transaction id: \"${id}\"`)\n const [, account, seconds, nanos] = m\n return `${account}-${seconds}-${padNanos(nanos!)}`\n}\nexport function txIdToSdk(id: string): string {\n if (SDK_TX_RE.test(id)) return id\n const m = MIRROR_TX_RE.exec(id)\n if (!m) throw new InvalidParamsError(`Invalid transaction id: \"${id}\"`)\n const [, account, seconds, nanos] = m\n return `${account}@${seconds}.${padNanos(nanos!)}`\n}\n","import { InvalidParamsError } from \"./errors.js\"\n\nexport interface HederaTimestamp {\n readonly raw: string\n readonly seconds: number\n readonly nanos: number\n toNanos(): bigint\n toDate(): Date\n}\n\nconst TS_RE = /^(\\d{1,15})(?:\\.(\\d{1,9}))?$/\n\nexport function parseTimestamp(raw: string): HederaTimestamp {\n const m = TS_RE.exec(raw)\n if (!m) throw new InvalidParamsError(`Invalid timestamp: \"${raw}\"`)\n const seconds = Number(m[1])\n const nanosStr = (m[2] ?? \"\").padEnd(9, \"0\")\n const nanos = Number(nanosStr)\n return {\n raw,\n seconds,\n nanos,\n toNanos: () => BigInt(m![1]!) * 1_000_000_000n + BigInt(nanosStr || \"0\"),\n toDate: () => new Date(seconds * 1000 + Math.floor(nanos / 1_000_000)),\n }\n}\n\nexport function dateToTimestamp(date: Date): string {\n const ms = date.getTime()\n const seconds = Math.floor(ms / 1000)\n const millis = ms - seconds * 1000\n return `${seconds}.${String(millis).padStart(3, \"0\")}000000`\n}\n\nexport type TsOp = \"eq\" | \"ne\" | \"gt\" | \"gte\" | \"lt\" | \"lte\"\n\nexport function tsFilter(op: TsOp, value: string | Date): string {\n const v = value instanceof Date ? dateToTimestamp(value) : value\n return `${op}:${v}`\n}\n","/** Deterministic, bigint-safe hash for TanStack Query keys (used from Phase 3). */\nexport function hashFn(key: unknown): string {\n return JSON.stringify(key, (_k, value) => {\n if (typeof value === \"bigint\") return `${value}#bigint`\n if (value && typeof value === \"object\" && !Array.isArray(value)) {\n return Object.keys(value as Record<string, unknown>)\n .sort()\n .reduce<Record<string, unknown>>((acc, k) => {\n acc[k] = (value as Record<string, unknown>)[k]\n return acc\n }, {})\n }\n return value\n })\n}\n\n/** Build a const-style [resource, options] query key, dropping undefined entries. */\nexport function makeQueryKey<T extends Record<string, unknown>>(\n resource: string,\n options: T,\n): readonly [string, Partial<T>] {\n const filtered: Partial<T> = {}\n for (const [k, v] of Object.entries(options)) {\n if (v !== undefined) filtered[k as keyof T] = v as T[keyof T]\n }\n return [resource, filtered] as const\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/errors.ts","../src/network.ts","../src/units.ts","../src/ids.ts","../src/timestamp.ts","../src/query.ts"],"names":[],"mappings":"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","file":"index.cjs","sourcesContent":["export interface HbarKitErrorOptions {\n cause?: unknown\n details?: string\n docsPath?: string\n}\n\nexport class HbarKitError extends Error {\n readonly shortMessage: string\n readonly details: string | undefined\n readonly docsPath: string | undefined\n constructor(message: string, opts: HbarKitErrorOptions = {}) {\n super(message, opts.cause !== undefined ? { cause: opts.cause } : undefined)\n this.name = \"HbarKitError\"\n this.shortMessage = message\n this.details = opts.details\n this.docsPath = opts.docsPath\n }\n /** Walk the cause chain; returns the first error matching fn, or the deepest cause. */\n walk(fn?: (err: unknown) => boolean): unknown {\n return walkCauseChain(this, fn)\n }\n}\n\n/** Walk an error's cause chain; returns the first match for fn, or the deepest cause. */\nfunction walkCauseChain(start: unknown, fn?: (err: unknown) => boolean): unknown {\n let current: unknown = start\n while (current) {\n if (fn?.(current)) return current\n const next: unknown = (current as { cause?: unknown }).cause\n if (!next) return fn ? null : current\n current = next\n }\n return null\n}\n\nexport class MirrorHttpError extends HbarKitError {\n readonly status: number\n constructor(message: string, status: number, opts?: HbarKitErrorOptions) {\n super(message, opts)\n this.name = \"MirrorHttpError\"\n this.status = status\n }\n}\nexport class RateLimitError extends MirrorHttpError {\n readonly retryAfter: number | undefined\n constructor(message: string, opts?: HbarKitErrorOptions & { retryAfter?: number }) {\n super(message, 429, opts)\n this.name = \"RateLimitError\"\n this.retryAfter = opts?.retryAfter\n }\n}\nexport class NotFoundError extends HbarKitError {\n constructor(message: string, opts?: HbarKitErrorOptions) {\n super(message, opts)\n this.name = \"NotFoundError\"\n }\n}\nexport class TimeoutError extends HbarKitError {\n constructor(message: string, opts?: HbarKitErrorOptions) {\n super(message, opts)\n this.name = \"TimeoutError\"\n }\n}\nexport class NetworkError extends HbarKitError {\n constructor(message: string, opts?: HbarKitErrorOptions) {\n super(message, opts)\n this.name = \"NetworkError\"\n }\n}\nexport class InvalidAmountError extends HbarKitError {\n constructor(message: string, opts?: HbarKitErrorOptions) {\n super(message, opts)\n this.name = \"InvalidAmountError\"\n }\n}\nexport class InvalidParamsError extends HbarKitError {\n constructor(message: string, opts?: HbarKitErrorOptions) {\n super(message, opts)\n this.name = \"InvalidParamsError\"\n }\n}\nexport class PaymentVerificationError extends HbarKitError {\n constructor(message: string, opts?: HbarKitErrorOptions) {\n super(message, opts)\n this.name = \"PaymentVerificationError\"\n }\n}\n/** A requested asset is not available on the selected network (e.g. USDC on previewnet). */\nexport class UnsupportedAssetError extends HbarKitError {\n constructor(message: string, opts?: HbarKitErrorOptions) {\n super(message, opts)\n this.name = \"UnsupportedAssetError\"\n }\n}\n","import { InvalidParamsError } from \"./errors.js\"\n\nexport type HederaNetwork = \"mainnet\" | \"testnet\" | \"previewnet\"\n\nexport interface NetworkConfig {\n network: HederaNetwork\n baseUrl: string\n hashscan: string\n currency: { symbol: \"HBAR\"; decimals: 8 }\n}\n\nexport const NETWORKS: Record<HederaNetwork, NetworkConfig> = {\n mainnet: {\n network: \"mainnet\",\n baseUrl: \"https://mainnet-public.mirrornode.hedera.com\",\n hashscan: \"https://hashscan.io/mainnet\",\n currency: { symbol: \"HBAR\", decimals: 8 },\n },\n testnet: {\n network: \"testnet\",\n baseUrl: \"https://testnet.mirrornode.hedera.com\",\n hashscan: \"https://hashscan.io/testnet\",\n currency: { symbol: \"HBAR\", decimals: 8 },\n },\n previewnet: {\n network: \"previewnet\",\n baseUrl: \"https://previewnet.mirrornode.hedera.com\",\n hashscan: \"https://hashscan.io/previewnet\",\n currency: { symbol: \"HBAR\", decimals: 8 },\n },\n}\n\nexport interface NetworkInput {\n network?: HederaNetwork\n baseUrl?: string\n}\n\n/** Resolve a network input to a full config. Requires `network` or `baseUrl`. */\nexport function resolveNetwork(input: NetworkInput): NetworkConfig {\n if (!input.network && !input.baseUrl) {\n throw new InvalidParamsError(\"`network` (or `baseUrl`) is required — there is no default\")\n }\n const network: HederaNetwork = input.network ?? \"mainnet\"\n const preset = NETWORKS[network]\n const baseUrl = input.baseUrl ? input.baseUrl.replace(/\\/+$/, \"\") : preset.baseUrl\n return { ...preset, baseUrl }\n}\n","import { InvalidAmountError } from \"./errors.js\"\n\nconst AMOUNT_RE = /^(-?)(\\d*)(?:\\.(\\d*))?$/\n\n/** Parse a decimal string into a bigint in the smallest unit. Strict: rejects excess precision. */\nexport function parseUnits(value: string, decimals: number): bigint {\n const m = AMOUNT_RE.exec(value)\n if (!m || value === \"\" || value === \"-\" || value === \".\") {\n throw new InvalidAmountError(`Invalid amount: \"${value}\"`)\n }\n const [, sign, whole = \"\", frac = \"\"] = m\n if (frac.length > decimals) {\n throw new InvalidAmountError(\n `Amount \"${value}\" has more precision than ${decimals} decimals allow`,\n )\n }\n const digits = `${whole}${frac.padEnd(decimals, \"0\")}` || \"0\"\n const base = BigInt(digits === \"\" ? \"0\" : digits)\n return sign === \"-\" ? -base : base\n}\n\n/** Format a bigint smallest-unit value into a trimmed decimal string. */\nexport function formatUnits(value: bigint, decimals: number): string {\n const neg = value < 0n\n const abs = neg ? -value : value\n const s = abs.toString().padStart(decimals + 1, \"0\")\n const whole = s.slice(0, s.length - decimals)\n const frac = decimals === 0 ? \"\" : s.slice(s.length - decimals).replace(/0+$/, \"\")\n const out = frac ? `${whole}.${frac}` : whole\n return neg && out !== \"0\" ? `-${out}` : out\n}\n\nexport const HBAR_DECIMALS = 8\nexport const parseHbar = (value: string): bigint => parseUnits(value, HBAR_DECIMALS)\nexport const formatHbar = (value: bigint): string => formatUnits(value, HBAR_DECIMALS)\n","import { InvalidParamsError } from \"./errors.js\"\n\nconst ENTITY_RE = /^\\d+\\.\\d+\\.\\d+$/\n\nexport function isEntityId(value: string): boolean {\n return ENTITY_RE.test(value)\n}\nexport function assertEntityId(value: string): string {\n if (!isEntityId(value)) throw new InvalidParamsError(`Invalid account/entity id: \"${value}\"`)\n return value\n}\n\nconst padNanos = (nanos: string): string => nanos.padStart(9, \"0\").slice(0, 9)\n\n// SDK form: 0.0.payer@seconds.nanos Mirror form: 0.0.payer-seconds-nanos\nconst SDK_TX_RE = /^(\\d+\\.\\d+\\.\\d+)@(\\d+)\\.(\\d+)$/\nconst MIRROR_TX_RE = /^(\\d+\\.\\d+\\.\\d+)-(\\d+)-(\\d+)$/\n\nexport function txIdToMirror(id: string): string {\n if (MIRROR_TX_RE.test(id)) return id\n const m = SDK_TX_RE.exec(id)\n if (!m) throw new InvalidParamsError(`Invalid transaction id: \"${id}\"`)\n const [, account, seconds, nanos] = m\n return `${account}-${seconds}-${padNanos(nanos!)}`\n}\nexport function txIdToSdk(id: string): string {\n if (SDK_TX_RE.test(id)) return id\n const m = MIRROR_TX_RE.exec(id)\n if (!m) throw new InvalidParamsError(`Invalid transaction id: \"${id}\"`)\n const [, account, seconds, nanos] = m\n return `${account}@${seconds}.${padNanos(nanos!)}`\n}\n","import { InvalidParamsError } from \"./errors.js\"\n\nexport interface HederaTimestamp {\n readonly raw: string\n readonly seconds: number\n readonly nanos: number\n toNanos(): bigint\n toDate(): Date\n}\n\nconst TS_RE = /^(\\d{1,15})(?:\\.(\\d{1,9}))?$/\n\nexport function parseTimestamp(raw: string): HederaTimestamp {\n const m = TS_RE.exec(raw)\n if (!m) throw new InvalidParamsError(`Invalid timestamp: \"${raw}\"`)\n const seconds = Number(m[1])\n const nanosStr = (m[2] ?? \"\").padEnd(9, \"0\")\n const nanos = Number(nanosStr)\n return {\n raw,\n seconds,\n nanos,\n toNanos: () => BigInt(m![1]!) * 1_000_000_000n + BigInt(nanosStr || \"0\"),\n toDate: () => new Date(seconds * 1000 + Math.floor(nanos / 1_000_000)),\n }\n}\n\nexport function dateToTimestamp(date: Date): string {\n const ms = date.getTime()\n const seconds = Math.floor(ms / 1000)\n const millis = ms - seconds * 1000\n return `${seconds}.${String(millis).padStart(3, \"0\")}000000`\n}\n\nexport type TsOp = \"eq\" | \"ne\" | \"gt\" | \"gte\" | \"lt\" | \"lte\"\n\nexport function tsFilter(op: TsOp, value: string | Date): string {\n const v = value instanceof Date ? dateToTimestamp(value) : value\n return `${op}:${v}`\n}\n","/** Deterministic, bigint-safe hash for TanStack Query keys (used from Phase 3). */\nexport function hashFn(key: unknown): string {\n return JSON.stringify(key, (_k, value) => {\n if (typeof value === \"bigint\") return `${value}#bigint`\n if (value && typeof value === \"object\" && !Array.isArray(value)) {\n return Object.keys(value as Record<string, unknown>)\n .sort()\n .reduce<Record<string, unknown>>((acc, k) => {\n acc[k] = (value as Record<string, unknown>)[k]\n return acc\n }, {})\n }\n return value\n })\n}\n\n/** Build a const-style [resource, options] query key, dropping undefined entries. */\nexport function makeQueryKey<T extends Record<string, unknown>>(\n resource: string,\n options: T,\n): readonly [string, Partial<T>] {\n const filtered: Partial<T> = {}\n for (const [k, v] of Object.entries(options)) {\n if (v !== undefined) filtered[k as keyof T] = v as T[keyof T]\n }\n return [resource, filtered] as const\n}\n"]}
|
package/dist/index.d.cts
CHANGED
|
@@ -39,6 +39,10 @@ declare class InvalidParamsError extends HbarKitError {
|
|
|
39
39
|
declare class PaymentVerificationError extends HbarKitError {
|
|
40
40
|
constructor(message: string, opts?: HbarKitErrorOptions);
|
|
41
41
|
}
|
|
42
|
+
/** A requested asset is not available on the selected network (e.g. USDC on previewnet). */
|
|
43
|
+
declare class UnsupportedAssetError extends HbarKitError {
|
|
44
|
+
constructor(message: string, opts?: HbarKitErrorOptions);
|
|
45
|
+
}
|
|
42
46
|
|
|
43
47
|
type HederaNetwork = "mainnet" | "testnet" | "previewnet";
|
|
44
48
|
interface NetworkConfig {
|
|
@@ -88,4 +92,4 @@ declare function hashFn(key: unknown): string;
|
|
|
88
92
|
/** Build a const-style [resource, options] query key, dropping undefined entries. */
|
|
89
93
|
declare function makeQueryKey<T extends Record<string, unknown>>(resource: string, options: T): readonly [string, Partial<T>];
|
|
90
94
|
|
|
91
|
-
export { HBAR_DECIMALS, HbarKitError, type HbarKitErrorOptions, type HederaNetwork, type HederaTimestamp, InvalidAmountError, InvalidParamsError, MirrorHttpError, NETWORKS, type NetworkConfig, NetworkError, type NetworkInput, NotFoundError, PaymentVerificationError, RateLimitError, TimeoutError, type TsOp, assertEntityId, dateToTimestamp, formatHbar, formatUnits, hashFn, isEntityId, makeQueryKey, parseHbar, parseTimestamp, parseUnits, resolveNetwork, tsFilter, txIdToMirror, txIdToSdk };
|
|
95
|
+
export { HBAR_DECIMALS, HbarKitError, type HbarKitErrorOptions, type HederaNetwork, type HederaTimestamp, InvalidAmountError, InvalidParamsError, MirrorHttpError, NETWORKS, type NetworkConfig, NetworkError, type NetworkInput, NotFoundError, PaymentVerificationError, RateLimitError, TimeoutError, type TsOp, UnsupportedAssetError, assertEntityId, dateToTimestamp, formatHbar, formatUnits, hashFn, isEntityId, makeQueryKey, parseHbar, parseTimestamp, parseUnits, resolveNetwork, tsFilter, txIdToMirror, txIdToSdk };
|
package/dist/index.d.ts
CHANGED
|
@@ -39,6 +39,10 @@ declare class InvalidParamsError extends HbarKitError {
|
|
|
39
39
|
declare class PaymentVerificationError extends HbarKitError {
|
|
40
40
|
constructor(message: string, opts?: HbarKitErrorOptions);
|
|
41
41
|
}
|
|
42
|
+
/** A requested asset is not available on the selected network (e.g. USDC on previewnet). */
|
|
43
|
+
declare class UnsupportedAssetError extends HbarKitError {
|
|
44
|
+
constructor(message: string, opts?: HbarKitErrorOptions);
|
|
45
|
+
}
|
|
42
46
|
|
|
43
47
|
type HederaNetwork = "mainnet" | "testnet" | "previewnet";
|
|
44
48
|
interface NetworkConfig {
|
|
@@ -88,4 +92,4 @@ declare function hashFn(key: unknown): string;
|
|
|
88
92
|
/** Build a const-style [resource, options] query key, dropping undefined entries. */
|
|
89
93
|
declare function makeQueryKey<T extends Record<string, unknown>>(resource: string, options: T): readonly [string, Partial<T>];
|
|
90
94
|
|
|
91
|
-
export { HBAR_DECIMALS, HbarKitError, type HbarKitErrorOptions, type HederaNetwork, type HederaTimestamp, InvalidAmountError, InvalidParamsError, MirrorHttpError, NETWORKS, type NetworkConfig, NetworkError, type NetworkInput, NotFoundError, PaymentVerificationError, RateLimitError, TimeoutError, type TsOp, assertEntityId, dateToTimestamp, formatHbar, formatUnits, hashFn, isEntityId, makeQueryKey, parseHbar, parseTimestamp, parseUnits, resolveNetwork, tsFilter, txIdToMirror, txIdToSdk };
|
|
95
|
+
export { HBAR_DECIMALS, HbarKitError, type HbarKitErrorOptions, type HederaNetwork, type HederaTimestamp, InvalidAmountError, InvalidParamsError, MirrorHttpError, NETWORKS, type NetworkConfig, NetworkError, type NetworkInput, NotFoundError, PaymentVerificationError, RateLimitError, TimeoutError, type TsOp, UnsupportedAssetError, assertEntityId, dateToTimestamp, formatHbar, formatUnits, hashFn, isEntityId, makeQueryKey, parseHbar, parseTimestamp, parseUnits, resolveNetwork, tsFilter, txIdToMirror, txIdToSdk };
|
package/dist/index.js
CHANGED
|
@@ -77,6 +77,12 @@ var PaymentVerificationError = class extends HbarKitError {
|
|
|
77
77
|
this.name = "PaymentVerificationError";
|
|
78
78
|
}
|
|
79
79
|
};
|
|
80
|
+
var UnsupportedAssetError = class extends HbarKitError {
|
|
81
|
+
constructor(message, opts) {
|
|
82
|
+
super(message, opts);
|
|
83
|
+
this.name = "UnsupportedAssetError";
|
|
84
|
+
}
|
|
85
|
+
};
|
|
80
86
|
|
|
81
87
|
// src/network.ts
|
|
82
88
|
var NETWORKS = {
|
|
@@ -214,6 +220,6 @@ function makeQueryKey(resource, options) {
|
|
|
214
220
|
return [resource, filtered];
|
|
215
221
|
}
|
|
216
222
|
|
|
217
|
-
export { HBAR_DECIMALS, HbarKitError, InvalidAmountError, InvalidParamsError, MirrorHttpError, NETWORKS, NetworkError, NotFoundError, PaymentVerificationError, RateLimitError, TimeoutError, assertEntityId, dateToTimestamp, formatHbar, formatUnits, hashFn, isEntityId, makeQueryKey, parseHbar, parseTimestamp, parseUnits, resolveNetwork, tsFilter, txIdToMirror, txIdToSdk };
|
|
223
|
+
export { HBAR_DECIMALS, HbarKitError, InvalidAmountError, InvalidParamsError, MirrorHttpError, NETWORKS, NetworkError, NotFoundError, PaymentVerificationError, RateLimitError, TimeoutError, UnsupportedAssetError, assertEntityId, dateToTimestamp, formatHbar, formatUnits, hashFn, isEntityId, makeQueryKey, parseHbar, parseTimestamp, parseUnits, resolveNetwork, tsFilter, txIdToMirror, txIdToSdk };
|
|
218
224
|
//# sourceMappingURL=index.js.map
|
|
219
225
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/errors.ts","../src/network.ts","../src/units.ts","../src/ids.ts","../src/timestamp.ts","../src/query.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["export interface HbarKitErrorOptions {\n cause?: unknown\n details?: string\n docsPath?: string\n}\n\nexport class HbarKitError extends Error {\n readonly shortMessage: string\n readonly details: string | undefined\n readonly docsPath: string | undefined\n constructor(message: string, opts: HbarKitErrorOptions = {}) {\n super(message, opts.cause !== undefined ? { cause: opts.cause } : undefined)\n this.name = \"HbarKitError\"\n this.shortMessage = message\n this.details = opts.details\n this.docsPath = opts.docsPath\n }\n /** Walk the cause chain; returns the first error matching fn, or the deepest cause. */\n walk(fn?: (err: unknown) => boolean): unknown {\n return walkCauseChain(this, fn)\n }\n}\n\n/** Walk an error's cause chain; returns the first match for fn, or the deepest cause. */\nfunction walkCauseChain(start: unknown, fn?: (err: unknown) => boolean): unknown {\n let current: unknown = start\n while (current) {\n if (fn?.(current)) return current\n const next: unknown = (current as { cause?: unknown }).cause\n if (!next) return fn ? null : current\n current = next\n }\n return null\n}\n\nexport class MirrorHttpError extends HbarKitError {\n readonly status: number\n constructor(message: string, status: number, opts?: HbarKitErrorOptions) {\n super(message, opts)\n this.name = \"MirrorHttpError\"\n this.status = status\n }\n}\nexport class RateLimitError extends MirrorHttpError {\n readonly retryAfter: number | undefined\n constructor(message: string, opts?: HbarKitErrorOptions & { retryAfter?: number }) {\n super(message, 429, opts)\n this.name = \"RateLimitError\"\n this.retryAfter = opts?.retryAfter\n }\n}\nexport class NotFoundError extends HbarKitError {\n constructor(message: string, opts?: HbarKitErrorOptions) {\n super(message, opts)\n this.name = \"NotFoundError\"\n }\n}\nexport class TimeoutError extends HbarKitError {\n constructor(message: string, opts?: HbarKitErrorOptions) {\n super(message, opts)\n this.name = \"TimeoutError\"\n }\n}\nexport class NetworkError extends HbarKitError {\n constructor(message: string, opts?: HbarKitErrorOptions) {\n super(message, opts)\n this.name = \"NetworkError\"\n }\n}\nexport class InvalidAmountError extends HbarKitError {\n constructor(message: string, opts?: HbarKitErrorOptions) {\n super(message, opts)\n this.name = \"InvalidAmountError\"\n }\n}\nexport class InvalidParamsError extends HbarKitError {\n constructor(message: string, opts?: HbarKitErrorOptions) {\n super(message, opts)\n this.name = \"InvalidParamsError\"\n }\n}\nexport class PaymentVerificationError extends HbarKitError {\n constructor(message: string, opts?: HbarKitErrorOptions) {\n super(message, opts)\n this.name = \"PaymentVerificationError\"\n }\n}\n","import { InvalidParamsError } from \"./errors.js\"\n\nexport type HederaNetwork = \"mainnet\" | \"testnet\" | \"previewnet\"\n\nexport interface NetworkConfig {\n network: HederaNetwork\n baseUrl: string\n hashscan: string\n currency: { symbol: \"HBAR\"; decimals: 8 }\n}\n\nexport const NETWORKS: Record<HederaNetwork, NetworkConfig> = {\n mainnet: {\n network: \"mainnet\",\n baseUrl: \"https://mainnet-public.mirrornode.hedera.com\",\n hashscan: \"https://hashscan.io/mainnet\",\n currency: { symbol: \"HBAR\", decimals: 8 },\n },\n testnet: {\n network: \"testnet\",\n baseUrl: \"https://testnet.mirrornode.hedera.com\",\n hashscan: \"https://hashscan.io/testnet\",\n currency: { symbol: \"HBAR\", decimals: 8 },\n },\n previewnet: {\n network: \"previewnet\",\n baseUrl: \"https://previewnet.mirrornode.hedera.com\",\n hashscan: \"https://hashscan.io/previewnet\",\n currency: { symbol: \"HBAR\", decimals: 8 },\n },\n}\n\nexport interface NetworkInput {\n network?: HederaNetwork\n baseUrl?: string\n}\n\n/** Resolve a network input to a full config. Requires `network` or `baseUrl`. */\nexport function resolveNetwork(input: NetworkInput): NetworkConfig {\n if (!input.network && !input.baseUrl) {\n throw new InvalidParamsError(\"`network` (or `baseUrl`) is required — there is no default\")\n }\n const network: HederaNetwork = input.network ?? \"mainnet\"\n const preset = NETWORKS[network]\n const baseUrl = input.baseUrl ? input.baseUrl.replace(/\\/+$/, \"\") : preset.baseUrl\n return { ...preset, baseUrl }\n}\n","import { InvalidAmountError } from \"./errors.js\"\n\nconst AMOUNT_RE = /^(-?)(\\d*)(?:\\.(\\d*))?$/\n\n/** Parse a decimal string into a bigint in the smallest unit. Strict: rejects excess precision. */\nexport function parseUnits(value: string, decimals: number): bigint {\n const m = AMOUNT_RE.exec(value)\n if (!m || value === \"\" || value === \"-\" || value === \".\") {\n throw new InvalidAmountError(`Invalid amount: \"${value}\"`)\n }\n const [, sign, whole = \"\", frac = \"\"] = m\n if (frac.length > decimals) {\n throw new InvalidAmountError(\n `Amount \"${value}\" has more precision than ${decimals} decimals allow`,\n )\n }\n const digits = `${whole}${frac.padEnd(decimals, \"0\")}` || \"0\"\n const base = BigInt(digits === \"\" ? \"0\" : digits)\n return sign === \"-\" ? -base : base\n}\n\n/** Format a bigint smallest-unit value into a trimmed decimal string. */\nexport function formatUnits(value: bigint, decimals: number): string {\n const neg = value < 0n\n const abs = neg ? -value : value\n const s = abs.toString().padStart(decimals + 1, \"0\")\n const whole = s.slice(0, s.length - decimals)\n const frac = decimals === 0 ? \"\" : s.slice(s.length - decimals).replace(/0+$/, \"\")\n const out = frac ? `${whole}.${frac}` : whole\n return neg && out !== \"0\" ? `-${out}` : out\n}\n\nexport const HBAR_DECIMALS = 8\nexport const parseHbar = (value: string): bigint => parseUnits(value, HBAR_DECIMALS)\nexport const formatHbar = (value: bigint): string => formatUnits(value, HBAR_DECIMALS)\n","import { InvalidParamsError } from \"./errors.js\"\n\nconst ENTITY_RE = /^\\d+\\.\\d+\\.\\d+$/\n\nexport function isEntityId(value: string): boolean {\n return ENTITY_RE.test(value)\n}\nexport function assertEntityId(value: string): string {\n if (!isEntityId(value)) throw new InvalidParamsError(`Invalid account/entity id: \"${value}\"`)\n return value\n}\n\nconst padNanos = (nanos: string): string => nanos.padStart(9, \"0\").slice(0, 9)\n\n// SDK form: 0.0.payer@seconds.nanos Mirror form: 0.0.payer-seconds-nanos\nconst SDK_TX_RE = /^(\\d+\\.\\d+\\.\\d+)@(\\d+)\\.(\\d+)$/\nconst MIRROR_TX_RE = /^(\\d+\\.\\d+\\.\\d+)-(\\d+)-(\\d+)$/\n\nexport function txIdToMirror(id: string): string {\n if (MIRROR_TX_RE.test(id)) return id\n const m = SDK_TX_RE.exec(id)\n if (!m) throw new InvalidParamsError(`Invalid transaction id: \"${id}\"`)\n const [, account, seconds, nanos] = m\n return `${account}-${seconds}-${padNanos(nanos!)}`\n}\nexport function txIdToSdk(id: string): string {\n if (SDK_TX_RE.test(id)) return id\n const m = MIRROR_TX_RE.exec(id)\n if (!m) throw new InvalidParamsError(`Invalid transaction id: \"${id}\"`)\n const [, account, seconds, nanos] = m\n return `${account}@${seconds}.${padNanos(nanos!)}`\n}\n","import { InvalidParamsError } from \"./errors.js\"\n\nexport interface HederaTimestamp {\n readonly raw: string\n readonly seconds: number\n readonly nanos: number\n toNanos(): bigint\n toDate(): Date\n}\n\nconst TS_RE = /^(\\d{1,15})(?:\\.(\\d{1,9}))?$/\n\nexport function parseTimestamp(raw: string): HederaTimestamp {\n const m = TS_RE.exec(raw)\n if (!m) throw new InvalidParamsError(`Invalid timestamp: \"${raw}\"`)\n const seconds = Number(m[1])\n const nanosStr = (m[2] ?? \"\").padEnd(9, \"0\")\n const nanos = Number(nanosStr)\n return {\n raw,\n seconds,\n nanos,\n toNanos: () => BigInt(m![1]!) * 1_000_000_000n + BigInt(nanosStr || \"0\"),\n toDate: () => new Date(seconds * 1000 + Math.floor(nanos / 1_000_000)),\n }\n}\n\nexport function dateToTimestamp(date: Date): string {\n const ms = date.getTime()\n const seconds = Math.floor(ms / 1000)\n const millis = ms - seconds * 1000\n return `${seconds}.${String(millis).padStart(3, \"0\")}000000`\n}\n\nexport type TsOp = \"eq\" | \"ne\" | \"gt\" | \"gte\" | \"lt\" | \"lte\"\n\nexport function tsFilter(op: TsOp, value: string | Date): string {\n const v = value instanceof Date ? dateToTimestamp(value) : value\n return `${op}:${v}`\n}\n","/** Deterministic, bigint-safe hash for TanStack Query keys (used from Phase 3). */\nexport function hashFn(key: unknown): string {\n return JSON.stringify(key, (_k, value) => {\n if (typeof value === \"bigint\") return `${value}#bigint`\n if (value && typeof value === \"object\" && !Array.isArray(value)) {\n return Object.keys(value as Record<string, unknown>)\n .sort()\n .reduce<Record<string, unknown>>((acc, k) => {\n acc[k] = (value as Record<string, unknown>)[k]\n return acc\n }, {})\n }\n return value\n })\n}\n\n/** Build a const-style [resource, options] query key, dropping undefined entries. */\nexport function makeQueryKey<T extends Record<string, unknown>>(\n resource: string,\n options: T,\n): readonly [string, Partial<T>] {\n const filtered: Partial<T> = {}\n for (const [k, v] of Object.entries(options)) {\n if (v !== undefined) filtered[k as keyof T] = v as T[keyof T]\n }\n return [resource, filtered] as const\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/errors.ts","../src/network.ts","../src/units.ts","../src/ids.ts","../src/timestamp.ts","../src/query.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["export interface HbarKitErrorOptions {\n cause?: unknown\n details?: string\n docsPath?: string\n}\n\nexport class HbarKitError extends Error {\n readonly shortMessage: string\n readonly details: string | undefined\n readonly docsPath: string | undefined\n constructor(message: string, opts: HbarKitErrorOptions = {}) {\n super(message, opts.cause !== undefined ? { cause: opts.cause } : undefined)\n this.name = \"HbarKitError\"\n this.shortMessage = message\n this.details = opts.details\n this.docsPath = opts.docsPath\n }\n /** Walk the cause chain; returns the first error matching fn, or the deepest cause. */\n walk(fn?: (err: unknown) => boolean): unknown {\n return walkCauseChain(this, fn)\n }\n}\n\n/** Walk an error's cause chain; returns the first match for fn, or the deepest cause. */\nfunction walkCauseChain(start: unknown, fn?: (err: unknown) => boolean): unknown {\n let current: unknown = start\n while (current) {\n if (fn?.(current)) return current\n const next: unknown = (current as { cause?: unknown }).cause\n if (!next) return fn ? null : current\n current = next\n }\n return null\n}\n\nexport class MirrorHttpError extends HbarKitError {\n readonly status: number\n constructor(message: string, status: number, opts?: HbarKitErrorOptions) {\n super(message, opts)\n this.name = \"MirrorHttpError\"\n this.status = status\n }\n}\nexport class RateLimitError extends MirrorHttpError {\n readonly retryAfter: number | undefined\n constructor(message: string, opts?: HbarKitErrorOptions & { retryAfter?: number }) {\n super(message, 429, opts)\n this.name = \"RateLimitError\"\n this.retryAfter = opts?.retryAfter\n }\n}\nexport class NotFoundError extends HbarKitError {\n constructor(message: string, opts?: HbarKitErrorOptions) {\n super(message, opts)\n this.name = \"NotFoundError\"\n }\n}\nexport class TimeoutError extends HbarKitError {\n constructor(message: string, opts?: HbarKitErrorOptions) {\n super(message, opts)\n this.name = \"TimeoutError\"\n }\n}\nexport class NetworkError extends HbarKitError {\n constructor(message: string, opts?: HbarKitErrorOptions) {\n super(message, opts)\n this.name = \"NetworkError\"\n }\n}\nexport class InvalidAmountError extends HbarKitError {\n constructor(message: string, opts?: HbarKitErrorOptions) {\n super(message, opts)\n this.name = \"InvalidAmountError\"\n }\n}\nexport class InvalidParamsError extends HbarKitError {\n constructor(message: string, opts?: HbarKitErrorOptions) {\n super(message, opts)\n this.name = \"InvalidParamsError\"\n }\n}\nexport class PaymentVerificationError extends HbarKitError {\n constructor(message: string, opts?: HbarKitErrorOptions) {\n super(message, opts)\n this.name = \"PaymentVerificationError\"\n }\n}\n/** A requested asset is not available on the selected network (e.g. USDC on previewnet). */\nexport class UnsupportedAssetError extends HbarKitError {\n constructor(message: string, opts?: HbarKitErrorOptions) {\n super(message, opts)\n this.name = \"UnsupportedAssetError\"\n }\n}\n","import { InvalidParamsError } from \"./errors.js\"\n\nexport type HederaNetwork = \"mainnet\" | \"testnet\" | \"previewnet\"\n\nexport interface NetworkConfig {\n network: HederaNetwork\n baseUrl: string\n hashscan: string\n currency: { symbol: \"HBAR\"; decimals: 8 }\n}\n\nexport const NETWORKS: Record<HederaNetwork, NetworkConfig> = {\n mainnet: {\n network: \"mainnet\",\n baseUrl: \"https://mainnet-public.mirrornode.hedera.com\",\n hashscan: \"https://hashscan.io/mainnet\",\n currency: { symbol: \"HBAR\", decimals: 8 },\n },\n testnet: {\n network: \"testnet\",\n baseUrl: \"https://testnet.mirrornode.hedera.com\",\n hashscan: \"https://hashscan.io/testnet\",\n currency: { symbol: \"HBAR\", decimals: 8 },\n },\n previewnet: {\n network: \"previewnet\",\n baseUrl: \"https://previewnet.mirrornode.hedera.com\",\n hashscan: \"https://hashscan.io/previewnet\",\n currency: { symbol: \"HBAR\", decimals: 8 },\n },\n}\n\nexport interface NetworkInput {\n network?: HederaNetwork\n baseUrl?: string\n}\n\n/** Resolve a network input to a full config. Requires `network` or `baseUrl`. */\nexport function resolveNetwork(input: NetworkInput): NetworkConfig {\n if (!input.network && !input.baseUrl) {\n throw new InvalidParamsError(\"`network` (or `baseUrl`) is required — there is no default\")\n }\n const network: HederaNetwork = input.network ?? \"mainnet\"\n const preset = NETWORKS[network]\n const baseUrl = input.baseUrl ? input.baseUrl.replace(/\\/+$/, \"\") : preset.baseUrl\n return { ...preset, baseUrl }\n}\n","import { InvalidAmountError } from \"./errors.js\"\n\nconst AMOUNT_RE = /^(-?)(\\d*)(?:\\.(\\d*))?$/\n\n/** Parse a decimal string into a bigint in the smallest unit. Strict: rejects excess precision. */\nexport function parseUnits(value: string, decimals: number): bigint {\n const m = AMOUNT_RE.exec(value)\n if (!m || value === \"\" || value === \"-\" || value === \".\") {\n throw new InvalidAmountError(`Invalid amount: \"${value}\"`)\n }\n const [, sign, whole = \"\", frac = \"\"] = m\n if (frac.length > decimals) {\n throw new InvalidAmountError(\n `Amount \"${value}\" has more precision than ${decimals} decimals allow`,\n )\n }\n const digits = `${whole}${frac.padEnd(decimals, \"0\")}` || \"0\"\n const base = BigInt(digits === \"\" ? \"0\" : digits)\n return sign === \"-\" ? -base : base\n}\n\n/** Format a bigint smallest-unit value into a trimmed decimal string. */\nexport function formatUnits(value: bigint, decimals: number): string {\n const neg = value < 0n\n const abs = neg ? -value : value\n const s = abs.toString().padStart(decimals + 1, \"0\")\n const whole = s.slice(0, s.length - decimals)\n const frac = decimals === 0 ? \"\" : s.slice(s.length - decimals).replace(/0+$/, \"\")\n const out = frac ? `${whole}.${frac}` : whole\n return neg && out !== \"0\" ? `-${out}` : out\n}\n\nexport const HBAR_DECIMALS = 8\nexport const parseHbar = (value: string): bigint => parseUnits(value, HBAR_DECIMALS)\nexport const formatHbar = (value: bigint): string => formatUnits(value, HBAR_DECIMALS)\n","import { InvalidParamsError } from \"./errors.js\"\n\nconst ENTITY_RE = /^\\d+\\.\\d+\\.\\d+$/\n\nexport function isEntityId(value: string): boolean {\n return ENTITY_RE.test(value)\n}\nexport function assertEntityId(value: string): string {\n if (!isEntityId(value)) throw new InvalidParamsError(`Invalid account/entity id: \"${value}\"`)\n return value\n}\n\nconst padNanos = (nanos: string): string => nanos.padStart(9, \"0\").slice(0, 9)\n\n// SDK form: 0.0.payer@seconds.nanos Mirror form: 0.0.payer-seconds-nanos\nconst SDK_TX_RE = /^(\\d+\\.\\d+\\.\\d+)@(\\d+)\\.(\\d+)$/\nconst MIRROR_TX_RE = /^(\\d+\\.\\d+\\.\\d+)-(\\d+)-(\\d+)$/\n\nexport function txIdToMirror(id: string): string {\n if (MIRROR_TX_RE.test(id)) return id\n const m = SDK_TX_RE.exec(id)\n if (!m) throw new InvalidParamsError(`Invalid transaction id: \"${id}\"`)\n const [, account, seconds, nanos] = m\n return `${account}-${seconds}-${padNanos(nanos!)}`\n}\nexport function txIdToSdk(id: string): string {\n if (SDK_TX_RE.test(id)) return id\n const m = MIRROR_TX_RE.exec(id)\n if (!m) throw new InvalidParamsError(`Invalid transaction id: \"${id}\"`)\n const [, account, seconds, nanos] = m\n return `${account}@${seconds}.${padNanos(nanos!)}`\n}\n","import { InvalidParamsError } from \"./errors.js\"\n\nexport interface HederaTimestamp {\n readonly raw: string\n readonly seconds: number\n readonly nanos: number\n toNanos(): bigint\n toDate(): Date\n}\n\nconst TS_RE = /^(\\d{1,15})(?:\\.(\\d{1,9}))?$/\n\nexport function parseTimestamp(raw: string): HederaTimestamp {\n const m = TS_RE.exec(raw)\n if (!m) throw new InvalidParamsError(`Invalid timestamp: \"${raw}\"`)\n const seconds = Number(m[1])\n const nanosStr = (m[2] ?? \"\").padEnd(9, \"0\")\n const nanos = Number(nanosStr)\n return {\n raw,\n seconds,\n nanos,\n toNanos: () => BigInt(m![1]!) * 1_000_000_000n + BigInt(nanosStr || \"0\"),\n toDate: () => new Date(seconds * 1000 + Math.floor(nanos / 1_000_000)),\n }\n}\n\nexport function dateToTimestamp(date: Date): string {\n const ms = date.getTime()\n const seconds = Math.floor(ms / 1000)\n const millis = ms - seconds * 1000\n return `${seconds}.${String(millis).padStart(3, \"0\")}000000`\n}\n\nexport type TsOp = \"eq\" | \"ne\" | \"gt\" | \"gte\" | \"lt\" | \"lte\"\n\nexport function tsFilter(op: TsOp, value: string | Date): string {\n const v = value instanceof Date ? dateToTimestamp(value) : value\n return `${op}:${v}`\n}\n","/** Deterministic, bigint-safe hash for TanStack Query keys (used from Phase 3). */\nexport function hashFn(key: unknown): string {\n return JSON.stringify(key, (_k, value) => {\n if (typeof value === \"bigint\") return `${value}#bigint`\n if (value && typeof value === \"object\" && !Array.isArray(value)) {\n return Object.keys(value as Record<string, unknown>)\n .sort()\n .reduce<Record<string, unknown>>((acc, k) => {\n acc[k] = (value as Record<string, unknown>)[k]\n return acc\n }, {})\n }\n return value\n })\n}\n\n/** Build a const-style [resource, options] query key, dropping undefined entries. */\nexport function makeQueryKey<T extends Record<string, unknown>>(\n resource: string,\n options: T,\n): readonly [string, Partial<T>] {\n const filtered: Partial<T> = {}\n for (const [k, v] of Object.entries(options)) {\n if (v !== undefined) filtered[k as keyof T] = v as T[keyof T]\n }\n return [resource, filtered] as const\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hbar-kit/core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Zero-dependency Hedera primitives for TypeScript: network config, bigint money (tinybars & HTS decimals), id/timestamp parsing, errors.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"homepage": "https://devwhodevs.github.io/hbar-kit/",
|
package/src/errors.ts
CHANGED
|
@@ -85,3 +85,10 @@ export class PaymentVerificationError extends HbarKitError {
|
|
|
85
85
|
this.name = "PaymentVerificationError"
|
|
86
86
|
}
|
|
87
87
|
}
|
|
88
|
+
/** A requested asset is not available on the selected network (e.g. USDC on previewnet). */
|
|
89
|
+
export class UnsupportedAssetError extends HbarKitError {
|
|
90
|
+
constructor(message: string, opts?: HbarKitErrorOptions) {
|
|
91
|
+
super(message, opts)
|
|
92
|
+
this.name = "UnsupportedAssetError"
|
|
93
|
+
}
|
|
94
|
+
}
|