diff options
| author | Mateusz Franik <47059999+Im-Beast@users.noreply.github.com> | 2024-10-16 07:55:11 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-10-16 07:55:11 +0200 |
| commit | fd7bb6ae1c27ffe5d41f3a818ee9034d9bb76138 (patch) | |
| tree | 01e57a1c483370a3f023ed27d401069502694396 /impls/monero.ts/src/utils.ts | |
| parent | 44fd5e17bbce52caf681850ac79f463d9ce6bb31 (diff) | |
feat: wownero typescript bindings, regression tests (#71)
* regression tests
* ci: move regression_check to full_check workflow, reuse artifact build
* feat: support wownero in monero.ts bindings
* ci: test wownero regressions as well
* extract wownero-cli as wownero
* actually load wownero when specified
* fix: commitUR not being a symbol in wownero
Diffstat (limited to 'impls/monero.ts/src/utils.ts')
| -rw-r--r-- | impls/monero.ts/src/utils.ts | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/impls/monero.ts/src/utils.ts b/impls/monero.ts/src/utils.ts index 6fa640f..e88ddcd 100644 --- a/impls/monero.ts/src/utils.ts +++ b/impls/monero.ts/src/utils.ts @@ -1,4 +1,5 @@ import { dylib } from "../mod.ts"; +import type { moneroSymbols, MoneroTsDylib, WowneroTsDylib } from "./symbols.ts"; export type Sanitizer = () => void | PromiseLike<void>; @@ -7,6 +8,17 @@ export function CString(string: string): Deno.PointerValue<string> { return Deno.UnsafePointer.of(textEncoder.encode(`${string}\x00`)); } +type SymbolWithoutPrefix = keyof typeof moneroSymbols extends `MONERO_${infer DylibSymbol}` ? DylibSymbol : never; +export function getSymbol<S extends SymbolWithoutPrefix>( + symbol: S, +): MoneroTsDylib["symbols"][`MONERO_${S}`] | WowneroTsDylib["symbols"][`WOWNERO_${S}`] { + if ("MONERO_free" in dylib.symbols) { + return dylib.symbols[`MONERO_${symbol}` as const]; + } else { + return dylib.symbols[`WOWNERO_${symbol}` as const]; + } +} + /** * This method reads string from the given pointer and frees the string. * @@ -19,7 +31,7 @@ export async function readCString(pointer: Deno.PointerValue, free = true): Prom if (!pointer) return null; const string = new Deno.UnsafePointerView(pointer).getCString(); if (free) { - await dylib.symbols.MONERO_free(pointer); + await getSymbol("free")(pointer); } return string; } |
