snapper-sdk
Version:
An SDK for building applications on top of Snapper.
1 lines • 29.4 kB
Source Map (JSON)
{"version":3,"sources":["../../src/marshmallow/index.ts","../../src/marshmallow/buffer-layout.ts"],"sourcesContent":["import { PublicKey } from \"@solana/web3.js\";\nimport BN, { isBN } from \"bn.js\";\n\nimport {\n bits,\n blob,\n Blob,\n Layout,\n offset as _offset,\n seq as _seq,\n Structure as _Structure,\n u32 as _u32,\n u8 as _u8,\n UInt,\n union as _union,\n Union as _Union,\n} from \"./buffer-layout\";\n\nexport * from \"./buffer-layout\";\nexport { blob };\n\nexport class BNLayout<P extends string = \"\"> extends Layout<BN, P> {\n blob: Layout<Buffer>;\n signed: boolean;\n\n constructor(span: number, signed: boolean, property?: P) {\n //@ts-expect-error type wrong for super()'s type different from extends, but it desn't matter\n super(span, property);\n this.blob = blob(span);\n this.signed = signed;\n }\n\n /** @override */\n decode(b: Buffer, offset = 0): BN {\n const num = new BN(this.blob.decode(b, offset), 10, \"le\");\n if (this.signed) {\n return num.fromTwos(this.span * 8).clone();\n }\n return num;\n }\n\n /** @override */\n encode(src: BN, b: Buffer, offset = 0): number {\n if (typeof src === \"number\") src = new BN(src); // src will pass a number accidently in union\n if (this.signed) {\n src = src.toTwos(this.span * 8);\n }\n return this.blob.encode(src.toArrayLike(Buffer, \"le\", this.span), b, offset);\n }\n}\n\nexport class WideBits<P extends string = \"\"> extends Layout<Record<string, boolean>, P> {\n _lower: any;\n _upper: any;\n // TODO: unknown\n constructor(property?: P) {\n //@ts-expect-error type wrong for super()'s type different from extends , but it desn't matter\n super(8, property);\n this._lower = bits(_u32(), false);\n this._upper = bits(_u32(), false);\n }\n\n addBoolean(property: string): void {\n if (this._lower.fields.length < 32) {\n this._lower.addBoolean(property);\n } else {\n this._upper.addBoolean(property);\n }\n }\n\n decode(b: Buffer, offset = 0): Record<string, boolean> {\n const lowerDecoded = this._lower.decode(b, offset);\n const upperDecoded = this._upper.decode(b, offset + this._lower.span);\n return { ...lowerDecoded, ...upperDecoded };\n }\n\n encode(src: any /* TEMP */, b: Buffer, offset = 0): any {\n return this._lower.encode(src, b, offset) + this._upper.encode(src, b, offset + this._lower.span);\n }\n}\n\nexport function u8<P extends string = \"\">(property?: P): UInt<number, P> {\n return new UInt(1, property);\n}\n\nexport function u32<P extends string = \"\">(property?: P): UInt<number, P> {\n return new UInt(4, property);\n}\n\nexport function u64<P extends string = \"\">(property?: P): BNLayout<P> {\n return new BNLayout(8, false, property);\n}\n\nexport function u128<P extends string = \"\">(property?: P): BNLayout<P> {\n return new BNLayout(16, false, property);\n}\n\nexport function i8<P extends string = \"\">(property?: P): BNLayout<P> {\n return new BNLayout(1, true, property);\n}\n\nexport function i64<P extends string = \"\">(property?: P): BNLayout<P> {\n return new BNLayout(8, true, property);\n}\n\nexport function i128<P extends string = \"\">(property?: P): BNLayout<P> {\n return new BNLayout(16, true, property);\n}\n\nexport class WrappedLayout<T, U, P extends string = \"\"> extends Layout<U, P> {\n layout: Layout<T>;\n decoder: (data: T) => U;\n encoder: (src: U) => T;\n\n constructor(layout: Layout<T>, decoder: (data: T) => U, encoder: (src: U) => T, property?: P) {\n //@ts-expect-error type wrong for super()'s type different from extends , but it desn't matter\n super(layout.span, property);\n this.layout = layout;\n this.decoder = decoder;\n this.encoder = encoder;\n }\n\n decode(b: Buffer, offset?: number): U {\n return this.decoder(this.layout.decode(b, offset));\n }\n\n encode(src: U, b: Buffer, offset?: number): number {\n return this.layout.encode(this.encoder(src), b, offset);\n }\n\n getSpan(b: Buffer, offset?: number): number {\n return this.layout.getSpan(b, offset);\n }\n}\n\nexport function publicKey<P extends string = \"\">(property?: P): Layout<PublicKey, P> {\n return new WrappedLayout(\n blob(32),\n (b: Buffer) => new PublicKey(b),\n (key: PublicKey) => key.toBuffer(),\n property,\n );\n}\n\nexport class OptionLayout<T, P> extends Layout<T | null, P> {\n layout: Layout<T>;\n discriminator: Layout<number>;\n\n constructor(layout: Layout<T>, property?: P) {\n //@ts-expect-error type wrong for super()'s type different from extends , but it desn't matter\n super(-1, property);\n this.layout = layout;\n this.discriminator = _u8();\n }\n\n encode(src: T | null, b: Buffer, offset = 0): number {\n if (src === null || src === undefined) {\n return this.discriminator.encode(0, b, offset);\n }\n this.discriminator.encode(1, b, offset);\n return this.layout.encode(src, b, offset + 1) + 1;\n }\n\n decode(b: Buffer, offset = 0): T | null {\n const discriminator = this.discriminator.decode(b, offset);\n if (discriminator === 0) {\n return null;\n } else if (discriminator === 1) {\n return this.layout.decode(b, offset + 1);\n }\n throw new Error(\"Invalid option \" + this.property);\n }\n\n getSpan(b: Buffer, offset = 0): number {\n const discriminator = this.discriminator.decode(b, offset);\n if (discriminator === 0) {\n return 1;\n } else if (discriminator === 1) {\n return this.layout.getSpan(b, offset + 1) + 1;\n }\n throw new Error(\"Invalid option \" + this.property);\n }\n}\n\nexport function option<T, P extends string = \"\">(layout: Layout<T>, property?: P): Layout<T | null, P> {\n return new OptionLayout<T, P>(layout, property);\n}\n\nexport function bool<P extends string = \"\">(property?: P): Layout<boolean, P> {\n return new WrappedLayout(_u8(), decodeBool, encodeBool, property);\n}\n\nexport function decodeBool(value: number): boolean {\n if (value === 0) {\n return false;\n } else if (value === 1) {\n return true;\n }\n throw new Error(\"Invalid bool: \" + value);\n}\n\nexport function encodeBool(value: boolean): number {\n return value ? 1 : 0;\n}\n\nexport function vec<T, P extends string = \"\">(elementLayout: Layout<T>, property?: P): Layout<T[], P> {\n const length = _u32(\"length\");\n const layout: Layout<{ values: T[] }> = struct([\n length,\n seq(elementLayout, _offset(length, -length.span), \"values\"),\n ]) as any; // Something I don't know\n return new WrappedLayout(\n layout,\n ({ values }) => values,\n (values) => ({ values }),\n property,\n );\n}\n\nexport function tagged<T, P extends string = \"\">(tag: BN, layout: Layout<T>, property?: P): Layout<T, P> {\n const wrappedLayout: Layout<{ tag: BN; data: T }> = struct([u64(\"tag\"), layout.replicate(\"data\")]) as any; // Something I don't know\n\n function decodeTag({ tag: receivedTag, data }: { tag: BN; data: T }): T {\n if (!receivedTag.eq(tag)) {\n throw new Error(\"Invalid tag, expected: \" + tag.toString(\"hex\") + \", got: \" + receivedTag.toString(\"hex\"));\n }\n return data;\n }\n\n return new WrappedLayout(wrappedLayout, decodeTag, (data) => ({ tag, data }), property);\n}\n\nexport function vecU8<P extends string = \"\">(property?: P): Layout<Buffer, P> {\n const length = _u32(\"length\");\n const layout: Layout<{ data: Buffer }> = struct([length, blob(_offset(length, -length.span), \"data\")]) as any; // Something I don't know\n return new WrappedLayout(\n layout,\n ({ data }) => data,\n (data) => ({ data }),\n property,\n );\n}\n\nexport function str<P extends string = \"\">(property?: P): Layout<string, P> {\n return new WrappedLayout(\n vecU8(),\n (data) => data.toString(\"utf-8\"),\n (s) => Buffer.from(s, \"utf-8\"),\n property,\n );\n}\n\nexport interface EnumLayout<T, P extends string = \"\"> extends Layout<T, P> {\n registry: Record<string, Layout<any>>;\n}\n\nexport function rustEnum<T, P extends string = \"\">(variants: Layout<any>[], property?: P): EnumLayout<T, P> {\n const unionLayout = _union(_u8(), property);\n variants.forEach((variant, index) => unionLayout.addVariant(index, variant, variant.property));\n return unionLayout as any; // ?why use UnionLayout? This must be a fault\n}\n\nexport function array<T, P extends string = \"\">(\n elementLayout: Layout<T>,\n length: number,\n property?: P,\n): Layout<T[], P> {\n const layout = struct([seq(elementLayout, length, \"values\")]) as any as Layout<{ values: T[] }>; // Something I don't know\n return new WrappedLayout(\n layout,\n ({ values }) => values,\n (values) => ({ values }),\n property,\n );\n}\n\nexport class Structure<T, P, D extends { [key: string]: any; }> extends _Structure<T, P, D> {\n /** @override */\n decode(b: Buffer, offset?: number): D {\n return super.decode(b, offset);\n }\n}\n\nexport function struct<T, P extends string = \"\">(\n fields: T,\n property?: P,\n decodePrefixes?: boolean,\n): T extends Layout<infer Value, infer Property>[]\n ? Structure<\n Value,\n P,\n {\n [K in Exclude<Extract<Property, string>, \"\">]: Extract<T[number], Layout<any, K>> extends Layout<infer V, any>\n ? V\n : any;\n }\n >\n : any {\n //@ts-expect-error this type is not quite satisfied the define, but, never no need to worry about.\n return new Structure(fields, property, decodePrefixes);\n}\n\nexport type GetLayoutSchemaFromStructure<T extends Structure<any, any, any>> = T extends Structure<any, any, infer S>\n ? S\n : any;\nexport type GetStructureFromLayoutSchema<S extends { [key: string]: any; }> = Structure<any, any, S>;\n\nexport class Union<Schema extends { [key: string]: any; }> extends _Union<Schema> {\n encodeInstruction(instruction: any): Buffer {\n const instructionMaxSpan = Math.max(...Object.values(this.registry).map((r) => r.span));\n const b = Buffer.alloc(instructionMaxSpan);\n return b.slice(0, this.encode(instruction, b));\n }\n\n decodeInstruction(instruction: any): Partial<Schema> {\n return this.decode(instruction);\n }\n}\nexport function union<UnionSchema extends { [key: string]: any } = any>(\n discr: any,\n defaultLayout?: any,\n property?: string,\n): Union<UnionSchema> {\n return new Union(discr, defaultLayout, property);\n}\n\nclass Zeros extends Blob {\n decode(b: Buffer, offset: number): Buffer {\n const slice = super.decode(b, offset);\n if (!slice.every((v) => v === 0)) {\n throw new Error(\"nonzero padding bytes\");\n }\n return slice;\n }\n}\n\nexport function zeros(length: number): Zeros {\n return new Zeros(length);\n}\n\nexport function seq<T, P extends string = \"\", AnotherP extends string = \"\">(\n elementLayout: Layout<T, P>,\n count: number | BN | Layout<BN | number, P>,\n property?: AnotherP,\n): Layout<T[], AnotherP> {\n let parsedCount: number;\n const superCount =\n typeof count === \"number\"\n ? count\n : isBN(count)\n ? count.toNumber()\n : new Proxy(count as unknown as Layout<number> /* pretend to be Layout<number> */, {\n get(target, property): any {\n if (!parsedCount) {\n // get count in targetLayout. note that count may be BN\n const countProperty = Reflect.get(target, \"count\");\n\n // let targetLayout's property:count be a number\n parsedCount = isBN(countProperty) ? countProperty.toNumber() : countProperty;\n\n // record the count\n Reflect.set(target, \"count\", parsedCount);\n }\n return Reflect.get(target, property);\n },\n set(target, property, value): any {\n if (property === \"count\") {\n parsedCount = value;\n }\n return Reflect.set(target, property, value);\n },\n });\n\n // @ts-expect-error force type\n return _seq(elementLayout, superCount, property);\n}\n","import {\n bits as _bits,\n BitStructure as _BitStructure,\n blob as _blob,\n Blob as _Blob,\n cstr as _cstr,\n f32 as _f32,\n f32be as _f32be,\n f64 as _f64,\n f64be as _f64be,\n greedy as _greedy,\n Layout as _Layout,\n ns64 as _ns64,\n ns64be as _ns64be,\n nu64 as _nu64,\n nu64be as _nu64be,\n offset as _offset,\n s16 as _s16,\n s16be as _s16be,\n s24 as _s24,\n s24be as _s24be,\n s32 as _s32,\n s32be as _s32be,\n s40 as _s40,\n s40be as _s40be,\n s48 as _s48,\n s48be as _s48be,\n s8 as _s8,\n seq as _seq,\n struct as _struct,\n Structure as _Structure,\n u16 as _u16,\n u16be as _u16be,\n u24 as _u24,\n u24be as _u24be,\n u32 as _u32,\n u32be as _u32be,\n u40 as _u40,\n u40be as _u40be,\n u48 as _u48,\n u48be as _u48be,\n u8 as _u8,\n UInt as _UInt,\n union as _union,\n Union as _Union,\n unionLayoutDiscriminator as _unionLayoutDiscriminator,\n utf8 as _utf8,\n} from \"@solana/buffer-layout\";\n\n//#region ------------------- Layout -------------------\nexport interface Layout<T = any, P = \"\"> {\n span: number;\n property?: P;\n decode(b: Buffer, offset?: number): T;\n encode(src: T, b: Buffer, offset?: number): number;\n getSpan(b: Buffer, offset?: number): number;\n replicate<AP extends string>(name: AP): Layout<T, AP>;\n}\nexport interface LayoutConstructor {\n new <T, P>(): Layout<T, P>; // for class extends syntex\n new <T, P>(span?: T, property?: P): Layout<T, P>;\n readonly prototype: Layout;\n}\nexport const Layout = _Layout as unknown as LayoutConstructor;\n//#endregion\n\n//#region ------------------- Structure -------------------\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport interface Structure<T = any, P = \"\", DecodeSchema extends { [key: string]: any } = any>\n extends Layout<DecodeSchema, P> {\n span: number;\n decode(b: Buffer, offset?: number): DecodeSchema;\n layoutFor<AP extends string>(property: AP): Layout<DecodeSchema[AP]>;\n offsetOf<AP extends string>(property: AP): number;\n}\ninterface StructureConstructor {\n new <T = any, P = \"\", DecodeSchema extends { [key: string]: any } = any>(): Structure<T, P, DecodeSchema>;\n new <T = any, P = \"\", DecodeSchema extends { [key: string]: any } = any>(\n fields: T,\n property?: P,\n decodePrefixes?: boolean,\n ): Structure<T, P, DecodeSchema>;\n}\nexport const Structure = _Structure as unknown as StructureConstructor;\n//#endregion\n\n//#region ------------------- Union -------------------\nexport interface Union<UnionSchema extends { [key: string]: any } = any> extends Layout {\n registry: object;\n decode(b: Buffer, offset?: number): Partial<UnionSchema>;\n addVariant(\n variant: number,\n layout: Structure<any, any, Partial<UnionSchema>> | Layout<any, keyof UnionSchema>,\n property?: string,\n ): any /* TEMP: code in Layout.js 1809 */;\n}\ninterface UnionConstructor {\n new <UnionSchema extends { [key: string]: any } = any>(): Union<UnionSchema>;\n new <UnionSchema extends { [key: string]: any } = any>(\n discr: Layout<any, any>,\n defaultLayout: Layout<any, any>,\n property?: string,\n ): Union<UnionSchema>;\n}\nexport const Union = _Union as unknown as UnionConstructor;\n//#endregion\n\n//#region ------------------- BitStructure -------------------\nexport type BitStructure<T = unknown /* TEMP */, P = \"\"> = Layout<T, P>;\ninterface BitStructureConstructor {\n new (...params: any[]): BitStructure;\n}\nexport const BitStructure = _BitStructure as BitStructureConstructor;\n//#endregion\n\n//#region ------------------- UInt -------------------\nexport type UInt<T = any, P = \"\"> = Layout<T, P>;\ninterface UIntConstructor {\n new <T, P>(span?: T, property?: P): UInt<T, P>;\n}\nexport const UInt = _UInt as UIntConstructor;\n//#endregion\n\n//#region ------------------- Blob -------------------\nexport type Blob<P extends string = \"\"> = Layout<Buffer, P>;\ninterface BlobConstructor {\n new (...params: ConstructorParameters<LayoutConstructor>): Blob;\n}\nexport const Blob = _Blob as unknown as BlobConstructor;\n//#endregion\n\nexport const greedy = _greedy as <P extends string = \"\">(elementSpan?: number, property?: P) => Layout<number, P>;\nexport const u8 = _u8 as <P extends string = \"\">(property?: P) => Layout<number, P>;\nexport const u16 = _u16 as <P extends string = \"\">(property?: P) => Layout<number, P>;\nexport const u24 = _u24 as <P extends string = \"\">(property?: P) => Layout<number, P>;\nexport const u32 = _u32 as <P extends string = \"\">(property?: P) => Layout<number, P>;\nexport const u40 = _u40 as <P extends string = \"\">(property?: P) => Layout<number, P>;\nexport const u48 = _u48 as <P extends string = \"\">(property?: P) => Layout<number, P>;\nexport const nu64 = _nu64 as <P extends string = \"\">(property?: P) => Layout<number, P>;\nexport const u16be = _u16be as <P extends string = \"\">(property?: P) => Layout<number, P>;\nexport const u24be = _u24be as <P extends string = \"\">(property?: P) => Layout<number, P>;\nexport const u32be = _u32be as <P extends string = \"\">(property?: P) => Layout<number, P>;\nexport const u40be = _u40be as <P extends string = \"\">(property?: P) => Layout<number, P>;\nexport const u48be = _u48be as <P extends string = \"\">(property?: P) => Layout<number, P>;\nexport const nu64be = _nu64be as <P extends string = \"\">(property?: P) => Layout<number, P>;\nexport const s8 = _s8 as <P extends string = \"\">(property?: P) => Layout<number, P>;\nexport const s16 = _s16 as <P extends string = \"\">(property?: P) => Layout<number, P>;\nexport const s24 = _s24 as <P extends string = \"\">(property?: P) => Layout<number, P>;\nexport const s32 = _s32 as <P extends string = \"\">(property?: P) => Layout<number, P>;\nexport const s40 = _s40 as <P extends string = \"\">(property?: P) => Layout<number, P>;\nexport const s48 = _s48 as <P extends string = \"\">(property?: P) => Layout<number, P>;\nexport const ns64 = _ns64 as <P extends string = \"\">(property?: P) => Layout<number, P>;\nexport const s16be = _s16be as <P extends string = \"\">(property?: P) => Layout<number, P>;\nexport const s24be = _s24be as <P extends string = \"\">(property?: P) => Layout<number, P>;\nexport const s32be = _s32be as <P extends string = \"\">(property?: P) => Layout<number, P>;\nexport const s40be = _s40be as <P extends string = \"\">(property?: P) => Layout<number, P>;\nexport const s48be = _s48be as <P extends string = \"\">(property?: P) => Layout<number, P>;\nexport const ns64be = _ns64be as <P extends string = \"\">(property?: P) => Layout<number, P>;\nexport const f32 = _f32 as <P extends string = \"\">(property?: P) => Layout<number, P>;\nexport const f32be = _f32be as <P extends string = \"\">(property?: P) => Layout<number, P>;\nexport const f64 = _f64 as <P extends string = \"\">(property?: P) => Layout<number, P>;\nexport const f64be = _f64be as <P extends string = \"\">(property?: P) => Layout<number, P>;\n\nexport const struct = _struct as <T, P extends string = \"\">(\n fields: T,\n property?: P,\n decodePrefixes?: boolean,\n) => T extends Layout<infer Value, infer Property>[]\n ? Structure<\n Value,\n P,\n {\n [K in Exclude<Extract<Property, string>, \"\">]: Extract<T[number], Layout<any, K>> extends Layout<infer V, any>\n ? V\n : any;\n }\n >\n : any;\n\nexport const seq = _seq as unknown as <T, P>(\n elementLayout: Layout<T, string>,\n count: number | Layout<number, string>,\n property?: P,\n) => Layout<T[]>;\nexport const union = _union as <UnionSchema extends { [key: string]: any } = any>(\n discr: Layout<any, any>,\n defaultLayout?: any,\n property?: string,\n) => Union<UnionSchema>;\nexport const unionLayoutDiscriminator = _unionLayoutDiscriminator as <P extends string = \"\">(\n layout: Layout<any, P>,\n property?: P,\n) => any;\nexport const blob = _blob as unknown as <P extends string = \"\">(\n length: number | Layout<number, P>,\n property?: P,\n) => Blob<P>;\nexport const cstr = _cstr as <P extends string = \"\">(property?: P) => Layout<string, P>;\nexport const utf8 = _utf8 as <P extends string = \"\">(maxSpan: number, property?: P) => Layout<string, P>;\nexport const bits = _bits as unknown as <T, P extends string = \"\">(\n word: Layout<T>,\n msb?: boolean,\n property?: P,\n) => BitStructure<T, P>; // TODO: not quite sure\nexport const offset = _offset as unknown as <T, P extends string = \"\">(\n layout: Layout<T, P>,\n offset?: number,\n property?: P,\n) => Layout<T, P>;\n\nexport type GetStructureSchema<T extends Structure> = T extends Structure<any, any, infer S> ? S : unknown;\n"],"mappings":"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","names":["PublicKey","BN","isBN","_bits","_BitStructure","_blob","_Blob","_cstr","_f32","_f32be","_f64","_f64be","_greedy","_Layout","_ns64","_ns64be","_nu64","_nu64be","_offset","_s16","_s16be","_s24","_s24be","_s32","_s32be","_s40","_s40be","_s48","_s48be","_s8","_seq","_struct","_Structure","_u16","_u16be","_u24","_u24be","_u32","_u32be","_u40","_u40be","_u48","_u48be","_u8","_UInt","_union","_Union","_unionLayoutDiscriminator","_utf8","Layout","Structure","Union","BitStructure","UInt","Blob","greedy","u8","u16","u24","u32","u40","u48","nu64","u16be","u24be","u32be","u40be","u48be","nu64be","s8","s16","s24","s32","s40","s48","ns64","s16be","s24be","s32be","s40be","s48be","ns64be","f32","f32be","f64","f64be","seq","_seq","union","_union","unionLayoutDiscriminator","_unionLayoutDiscriminator","blob","_blob","cstr","_cstr","utf8","_utf8","bits","_bits","offset","_offset","BNLayout","Layout","span","signed","property","blob","b","offset","num","BN","src","WideBits","bits","u32","lowerDecoded","upperDecoded","u8","UInt","u64","u128","i8","i64","i128","WrappedLayout","layout","decoder","encoder","publicKey","PublicKey","key","OptionLayout","discriminator","option","bool","decodeBool","encodeBool","value","vec","elementLayout","length","struct","seq","values","tagged","tag","wrappedLayout","decodeTag","receivedTag","data","vecU8","str","s","rustEnum","variants","unionLayout","union","variant","index","array","Structure","fields","decodePrefixes","Union","instruction","instructionMaxSpan","r","discr","defaultLayout","Zeros","Blob","slice","v","zeros","count","parsedCount","superCount","isBN","target","countProperty"]}