Skip to content

Commit 45c3067

Browse files
Copilotrotu
andauthored
chore: polish dynamic field API
Agent-Logs-Url: https://github.com/rotu/structview/sessions/0716fb80-af23-468f-86bd-27d35fdca170 Co-authored-by: rotu <119948+rotu@users.noreply.github.com>
1 parent 58535ed commit 45c3067

1 file changed

Lines changed: 10 additions & 8 deletions

File tree

fields.ts

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,14 @@ import type {
1212
TypedArraySpecies,
1313
} from "./types.ts"
1414

15-
type FieldValue<T> = T | string | ((struct: AnyStruct) => T)
16-
type BooleanFieldValue = FieldValue<boolean>
17-
type NumberFieldValue = FieldValue<number>
18-
type OptionalNumberFieldValue = FieldValue<number | undefined> | undefined
15+
type ResolvableValue<T> = T | string | ((struct: AnyStruct) => T)
16+
type BooleanFieldValue = ResolvableValue<boolean>
17+
type NumberFieldValue = ResolvableValue<number>
18+
type OptionalNumberFieldValue = ResolvableValue<number | undefined> | undefined
1919

2020
function resolveFieldValue<T>(
2121
struct: AnyStruct,
22-
value: FieldValue<T>,
22+
value: ResolvableValue<T>,
2323
): T {
2424
if (typeof value === "function") {
2525
return value(struct)
@@ -88,8 +88,8 @@ function setBooleanFieldValue(
8888

8989
function dataViewField<T>(
9090
fieldOffset: NumberFieldValue,
91-
fieldGetter: (dv: DataView, fieldOffset: number) => T,
92-
fieldSetter: (dv: DataView, fieldOffset: number, value: T) => void,
91+
fieldGetter: (dv: DataView, offset: number) => T,
92+
fieldSetter: (dv: DataView, offset: number, value: T) => void,
9393
): StructPropertyDescriptor<T> {
9494
return {
9595
get() {
@@ -420,7 +420,9 @@ export function optional<T>(
420420
): StructPropertyDescriptor<T | undefined> {
421421
const getter = field.get
422422
if (typeof getter !== "function") {
423-
throw new TypeError("optional() requires a getter")
423+
throw new TypeError(
424+
"optional() requires a field descriptor with a getter function",
425+
)
424426
}
425427
const presentDescriptor = typeof present === "object"
426428
? present

0 commit comments

Comments
 (0)