From 741b664970c9775268afa0d9d5f19057a1b4338c Mon Sep 17 00:00:00 2001 From: Tony Garnock-Jones Date: Wed, 3 May 2023 10:22:20 +0300 Subject: [PATCH] Make field numbers accessible --- implementations/javascript/packages/core/src/record.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/implementations/javascript/packages/core/src/record.ts b/implementations/javascript/packages/core/src/record.ts index eb94f0a..7a53b2c 100644 --- a/implementations/javascript/packages/core/src/record.ts +++ b/implementations/javascript/packages/core/src/record.ts @@ -20,6 +20,7 @@ export interface RecordConstructor, Fs, Names extends Tuple; isClassOf(v: any): v is Record, T>; _: RecordGetters, T>>; + fieldNumbers: { [K in string & keyof Fs]: number }; }; export interface RecordConstructorInfo, T = GenericEmbedded> { @@ -74,8 +75,12 @@ export namespace Record { const constructorInfo = { label, arity: fieldNames.length }; ctor.constructorInfo = constructorInfo; ctor.isClassOf = (v: any): v is Record, T> => Record.isClassOf, T>(constructorInfo, v); + (ctor as any).fieldNumbers = {}; (ctor as any)._ = {}; - fieldNames.forEach((name, i) => (ctor._ as any)[name] = (r: Record, T>) => r[i]); + fieldNames.forEach((name, i) => { + (ctor._ as any)[name] = (r: Record, T>) => r[i]; + (ctor.fieldNumbers as any)[name] = i; + }); return ctor; }; }