@apibara/protocol 2.1.0-beta.30 → 2.1.0-beta.32
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/codec.cjs +1 -0
- package/dist/codec.cjs.map +1 -0
- package/dist/codec.mjs +1 -0
- package/dist/codec.mjs.map +1 -0
- package/dist/index.cjs +1 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.mjs +1 -0
- package/dist/index.mjs.map +1 -0
- package/dist/shared/protocol.53f81a1e.cjs +1 -0
- package/dist/shared/protocol.53f81a1e.cjs.map +1 -0
- package/dist/shared/protocol.68fdd897.mjs +1 -0
- package/dist/shared/protocol.68fdd897.mjs.map +1 -0
- package/dist/testing/index.cjs +1 -0
- package/dist/testing/index.cjs.map +1 -0
- package/dist/testing/index.mjs +1 -0
- package/dist/testing/index.mjs.map +1 -0
- package/package.json +1 -1
package/dist/codec.cjs
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codec.cjs","sources":["../src/codec.ts"],"sourcesContent":["/*\n\n █████████ █████ \n ███░░░░░███ ░░███ \n ███ ░░░ ██████ ███████ ██████ ██████ \n░███ ███░░███ ███░░███ ███░░███ ███░░███\n░███ ░███ ░███░███ ░███ ░███████ ░███ ░░░ \n░░███ ███░███ ░███░███ ░███ ░███░░░ ░███ ███\n ░░█████████ ░░██████ ░░████████░░██████ ░░██████ \n ░░░░░░░░░ ░░░░░░ ░░░░░░░░ ░░░░░░ ░░░░░░ \n \n*/\n\n/** Codec to encode and decode protobuf messages */\nexport type Codec<TApp = unknown, TProto = unknown> = {\n encode(app: TApp): TProto;\n decode(proto: TProto): TApp;\n};\n\n/* Helper to get the high-level type of a codec */\nexport type CodecType<C extends Codec> = ReturnType<C[\"decode\"]>;\n\n/* Helper to get the protobuf type of a codec */\nexport type CodecProto<C extends Codec> = ReturnType<C[\"encode\"]>;\n\n/*\n \n ██████ ██████ \n░░██████ ██████ \n ░███░█████░███ ██████ █████ █████ ██████ ███████ ██████ \n ░███░░███ ░███ ███░░███ ███░░ ███░░ ░░░░░███ ███░░███ ███░░███\n ░███ ░░░ ░███ ░███████ ░░█████ ░░█████ ███████ ░███ ░███░███████ \n ░███ ░███ ░███░░░ ░░░░███ ░░░░███ ███░░███ ░███ ░███░███░░░ \n █████ █████░░██████ ██████ ██████ ░░████████░░███████░░██████ \n░░░░░ ░░░░░ ░░░░░░ ░░░░░░ ░░░░░░ ░░░░░░░░ ░░░░░███ ░░░░░░ \n ███ ░███ \n ░░██████ \n ░░░░░░ \n*/\n\nexport type Evaluate<T> = T extends infer O ? { [K in keyof O]: O[K] } : never;\n\ntype TPropertyKey = string | symbol;\n// Message properties as codec.\ntype TProperties = Record<TPropertyKey, Codec>;\n\n// Optional properties in an object.\n// Properties are optional when they have the `undefined` type.\ntype OptionalPropertyKeys<T> = {\n [K in keyof T]: undefined extends T[K] ? K : never;\n}[keyof T];\n\n// Properties that are not optional are required.\ntype RequiredPropertyKeys<T> = keyof Omit<T, OptionalPropertyKeys<T>>;\n\n// Helper to get the app type of a message codec.\ntype _MessageCodecType<T extends TProperties> = {\n [K in keyof T]: CodecType<T[K]>;\n};\n\n// Helper to get the protobuf type of a message codec.\ntype _MessageCodecProto<T extends TProperties> = {\n [K in keyof T]: CodecProto<T[K]>;\n};\n\n// Adjust the app type of the codec so that optional properties are optional.\ntype MessageCodecType<T extends TProperties> =\n _MessageCodecType<T> extends infer R\n ? Evaluate<Partial<R> & Required<Pick<R, RequiredPropertyKeys<R>>>>\n : never;\n\n// Adjust the protobuf type of the codec so that optional properties are optional.\ntype MessageCodecProto<T extends TProperties> =\n _MessageCodecProto<T> extends infer R\n ? Evaluate<Partial<R> & Required<Pick<R, RequiredPropertyKeys<R>>>>\n : never;\n\nexport type MessageCodec<T extends TProperties = TProperties> = Codec<\n MessageCodecType<T>,\n MessageCodecProto<T>\n>;\n\nexport function MessageCodec<T extends TProperties>(\n schema: T,\n): MessageCodec<T> {\n return {\n encode(app) {\n return new Proxy(app, {\n get(target, property) {\n if (!Object.hasOwn(target, property)) {\n return Reflect.get(target, property);\n }\n\n const v = Reflect.get(target, property);\n return schema[property].encode(v);\n },\n });\n },\n decode(proto) {\n return new Proxy(proto, {\n get(target, property) {\n if (!Object.hasOwn(target, property)) {\n return Reflect.get(target, property);\n }\n\n const v = Reflect.get(target, property);\n return schema[property].decode(v);\n },\n });\n },\n };\n}\n\n/*\n █████████ \n ███░░░░░███ \n ░███ ░███ ████████ ████████ ██████ █████ ████\n ░███████████ ░░███░░███░░███░░███ ░░░░░███ ░░███ ░███ \n ░███░░░░░███ ░███ ░░░ ░███ ░░░ ███████ ░███ ░███ \n ░███ ░███ ░███ ░███ ███░░███ ░███ ░███ \n █████ █████ █████ █████ ░░████████ ░░███████ \n░░░░░ ░░░░░ ░░░░░ ░░░░░ ░░░░░░░░ ░░░░░███ \n ███ ░███ \n ░░██████ \n ░░░░░░ \n \n*/\n\nexport type ArrayCodec<T extends Codec> = T extends Codec<\n infer TApp,\n infer TProto\n>\n ? Codec<readonly TApp[], readonly TProto[] | undefined>\n : never;\n\nexport function ArrayCodec<T extends Codec<TApp, TProto>, TApp, TProto>(\n t: T,\n): ArrayCodec<T> {\n return {\n encode(app) {\n return app.map(t.encode) as readonly TProto[];\n },\n decode(proto) {\n if (proto === undefined) return [];\n return proto.map(t.decode) as readonly TApp[];\n },\n } as ArrayCodec<T>;\n}\n\n/*\n ██████ ██████ █████ █████ ████ █████████ █████ \n░░██████ ██████ ░░███ ░░███ ░░███ ███░░░░░███ ░░███ \n ░███░█████░███ █████ ████ ███████ ██████ ░███████ ░███ ██████ ███ ░░░ ██████ ███████ ██████ ██████ \n ░███░░███ ░███ ░░███ ░███ ░░░███░ ░░░░░███ ░███░░███ ░███ ███░░███░███ ███░░███ ███░░███ ███░░███ ███░░███\n ░███ ░░░ ░███ ░███ ░███ ░███ ███████ ░███ ░███ ░███ ░███████ ░███ ░███ ░███░███ ░███ ░███████ ░███ ░░░ \n ░███ ░███ ░███ ░███ ░███ ███ ███░░███ ░███ ░███ ░███ ░███░░░ ░░███ ███░███ ░███░███ ░███ ░███░░░ ░███ ███\n █████ █████ ░░████████ ░░█████ ░░████████ ████████ █████░░██████ ░░█████████ ░░██████ ░░████████░░██████ ░░██████ \n░░░░░ ░░░░░ ░░░░░░░░ ░░░░░ ░░░░░░░░ ░░░░░░░░ ░░░░░ ░░░░░░ ░░░░░░░░░ ░░░░░░ ░░░░░░░░ ░░░░░░ ░░░░░░ \n*/\nexport type MutableArrayCodec<\n T extends Codec<TApp, TProto>,\n TApp,\n TProto,\n> = T extends Codec<infer TApp, infer TProto> ? Codec<TApp[], TProto[]> : never;\n\nexport function MutableArrayCodec<T extends Codec<TApp, TProto>, TApp, TProto>(\n t: T,\n): MutableArrayCodec<T, TApp, TProto> {\n return {\n encode(app) {\n return app.map(t.encode) as TProto[];\n },\n decode(proto) {\n if (proto === undefined) return [];\n return proto.map(t.decode) as TApp[];\n },\n } as MutableArrayCodec<T, TApp, TProto>;\n}\n\n/*\n ███████ █████ ███ ████ \n ███░░░░░███ ░░███ ░░░ ░░███ \n ███ ░░███ ████████ ███████ ████ ██████ ████████ ██████ ░███ \n░███ ░███░░███░░███░░░███░ ░░███ ███░░███░░███░░███ ░░░░░███ ░███ \n░███ ░███ ░███ ░███ ░███ ░███ ░███ ░███ ░███ ░███ ███████ ░███ \n░░███ ███ ░███ ░███ ░███ ███ ░███ ░███ ░███ ░███ ░███ ███░░███ ░███ \n ░░░███████░ ░███████ ░░█████ █████░░██████ ████ █████░░████████ █████\n ░░░░░░░ ░███░░░ ░░░░░ ░░░░░ ░░░░░░ ░░░░ ░░░░░ ░░░░░░░░ ░░░░░ \n ░███ \n █████ \n ░░░░░ \n*/\n\nexport type OptionalCodec<T extends Codec> = T extends Codec<\n infer TApp,\n infer TProto\n>\n ? Codec<TApp | undefined, TProto | undefined>\n : never;\n\nexport function OptionalCodec<T extends Codec>(t: T): OptionalCodec<T> {\n return {\n encode(app) {\n if (app === undefined) return undefined;\n return t.encode(app);\n },\n decode(proto) {\n if (proto === undefined) return undefined;\n return t.decode(proto);\n },\n } as OptionalCodec<T>;\n}\n\n/*\n ███████████ ███ █████\n░░███░░░░░███ ░░░ ░░███ \n ░███ ░███ ██████ ████████ █████ ████ ████ ████████ ██████ ███████ \n ░██████████ ███░░███ ███░░███ ░░███ ░███ ░░███ ░░███░░███ ███░░███ ███░░███ \n ░███░░░░░███ ░███████ ░███ ░███ ░███ ░███ ░███ ░███ ░░░ ░███████ ░███ ░███ \n ░███ ░███ ░███░░░ ░███ ░███ ░███ ░███ ░███ ░███ ░███░░░ ░███ ░███ \n █████ █████░░██████ ░░███████ ░░████████ █████ █████ ░░██████ ░░████████\n░░░░░ ░░░░░ ░░░░░░ ░░░░░███ ░░░░░░░░ ░░░░░ ░░░░░ ░░░░░░ ░░░░░░░░ \n ░███ \n █████ \n ░░░░░ \n*/\n\nexport type RequiredCodec<T extends Codec> = T extends Codec<\n infer TApp,\n infer TProto\n>\n ? TApp extends undefined\n ? never\n : Codec<TApp, TProto | undefined>\n : never;\n\nexport function RequiredCodec<T extends Codec>(t: T): RequiredCodec<T> {\n return {\n encode(app) {\n if (app === undefined) throw new Error(\"Value is required but undefined\");\n return t.encode(app);\n },\n decode(proto) {\n if (proto === undefined)\n throw new Error(\"Value is required but undefined\");\n return t.decode(proto);\n },\n } as RequiredCodec<T>;\n}\n\n/*\n ██████ █████ ████ ████ ███████ \n░░██████ ░░███ ░░███ ░░███ ███░░░░░███ \n ░███░███ ░███ █████ ████ ░███ ░███ ███ ░░███ ████████ \n ░███░░███░███ ░░███ ░███ ░███ ░███ ░███ ░███░░███░░███\n ░███ ░░██████ ░███ ░███ ░███ ░███ ░███ ░███ ░███ ░░░ \n ░███ ░░█████ ░███ ░███ ░███ ░███ ░░███ ███ ░███ \n █████ ░░█████ ░░████████ █████ █████ ░░░███████░ █████ \n░░░░░ ░░░░░ ░░░░░░░░ ░░░░░ ░░░░░ ░░░░░░░ ░░░░░ \n*/\n\nexport type NullOrCodec<T extends Codec> = T extends Codec<\n infer TApp,\n infer TProto\n>\n ? Codec<TApp | null, TProto | null>\n : never;\n\nexport function NullOrCodec<T extends Codec>(t: T): NullOrCodec<T> {\n return {\n encode(app) {\n if (app === null) return null;\n return t.encode(app);\n },\n decode(proto) {\n if (proto === null) return null;\n return t.decode(proto);\n },\n } as NullOrCodec<T>;\n}\n\n/*\n\n ███████████ ███ █████ █████ \n░░███░░░░░███ ░░░ ░░███ ░░███ \n ░███ ░███ ████ ███████ ░███ ████████ ███████ \n ░██████████ ░░███ ███░░███ ░███ ░░███░░███ ░░░███░ \n ░███░░░░░███ ░███ ░███ ░███ ░███ ░███ ░███ ░███ \n ░███ ░███ ░███ ░███ ░███ ░███ ░███ ░███ ░███ ███\n ███████████ █████░░███████ █████ ████ █████ ░░█████ \n░░░░░░░░░░░ ░░░░░ ░░░░░███░░░░░ ░░░░ ░░░░░ ░░░░░ \n ███ ░███ \n ░░██████ \n ░░░░░░ \n*/\n\nexport type BigIntCodec = CodecType<typeof BigIntCodec>;\n\nexport const BigIntCodec: Codec<bigint, bigint> = {\n encode(app) {\n return app;\n },\n decode(proto) {\n return proto;\n },\n};\n\n/*\n\n ██████ █████ █████ \n░░██████ ░░███ ░░███ \n ░███░███ ░███ █████ ████ █████████████ ░███████ ██████ ████████ \n ░███░░███░███ ░░███ ░███ ░░███░░███░░███ ░███░░███ ███░░███░░███░░███\n ░███ ░░██████ ░███ ░███ ░███ ░███ ░███ ░███ ░███░███████ ░███ ░░░ \n ░███ ░░█████ ░███ ░███ ░███ ░███ ░███ ░███ ░███░███░░░ ░███ \n █████ ░░█████ ░░████████ █████░███ █████ ████████ ░░██████ █████ \n░░░░░ ░░░░░ ░░░░░░░░ ░░░░░ ░░░ ░░░░░ ░░░░░░░░ ░░░░░░ ░░░░░ \n \n*/\n\nexport type NumberCodec = CodecType<typeof NumberCodec>;\n\nexport const NumberCodec: Codec<number, number> = {\n encode(app) {\n return app;\n },\n decode(proto) {\n return proto;\n },\n};\n\n/*\n █████ █████ ███ █████ ████████ █████████ \n░░███ ░░███ ░░░ ░░███ ███░░░░███ ███░░░░░███ \n ░███ ░███ ████ ████████ ███████ ░███ ░███ ░███ ░███ ████████ ████████ ██████ █████ ████\n ░███ ░███ ░░███ ░░███░░███ ░░░███░ ░░████████ ░███████████ ░░███░░███░░███░░███ ░░░░░███ ░░███ ░███ \n ░███ ░███ ░███ ░███ ░███ ░███ ███░░░░███ ░███░░░░░███ ░███ ░░░ ░███ ░░░ ███████ ░███ ░███ \n ░███ ░███ ░███ ░███ ░███ ░███ ███░███ ░███ ░███ ░███ ░███ ░███ ███░░███ ░███ ░███ \n ░░████████ █████ ████ █████ ░░█████ ░░████████ █████ █████ █████ █████ ░░████████ ░░███████ \n ░░░░░░░░ ░░░░░ ░░░░ ░░░░░ ░░░░░ ░░░░░░░░ ░░░░░ ░░░░░ ░░░░░ ░░░░░ ░░░░░░░░ ░░░░░███ \n ███ ░███ \n ░░██████ \n ░░░░░░ \n*/\n\nexport type Uint8ArrayCodec = CodecType<typeof Uint8ArrayCodec>;\n\nexport const Uint8ArrayCodec: Codec<Uint8Array, Uint8Array> = {\n encode(app) {\n return app;\n },\n decode(proto) {\n return proto;\n },\n};\n\n/*\n\n ██████████ █████ \n░░███░░░░███ ░░███ \n ░███ ░░███ ██████ ███████ ██████ \n ░███ ░███ ░░░░░███ ░░░███░ ███░░███\n ░███ ░███ ███████ ░███ ░███████ \n ░███ ███ ███░░███ ░███ ███░███░░░ \n ██████████ ░░████████ ░░█████ ░░██████ \n░░░░░░░░░░ ░░░░░░░░ ░░░░░ ░░░░░░ \n \n*/\n\nexport type DateCodec = CodecType<typeof DateCodec>;\n\nexport const DateCodec: Codec<Date, Date> = {\n encode(app) {\n return new Date(app);\n },\n decode(proto) {\n return new Date(proto);\n },\n};\n\n/*\n\n ███████████ ████ \n░░███░░░░░███ ░░███ \n ░███ ░███ ██████ ██████ ░███ ██████ ██████ ████████ \n ░██████████ ███░░███ ███░░███ ░███ ███░░███ ░░░░░███ ░░███░░███ \n ░███░░░░░███░███ ░███░███ ░███ ░███ ░███████ ███████ ░███ ░███ \n ░███ ░███░███ ░███░███ ░███ ░███ ░███░░░ ███░░███ ░███ ░███ \n ███████████ ░░██████ ░░██████ █████░░██████ ░░████████ ████ █████\n░░░░░░░░░░░ ░░░░░░ ░░░░░░ ░░░░░ ░░░░░░ ░░░░░░░░ ░░░░ ░░░░░ \n \n*/\n\nexport type BooleanCodec = CodecType<typeof BooleanCodec>;\n\nexport const BooleanCodec: Codec<boolean, boolean> = {\n encode(app) {\n return app;\n },\n decode(proto) {\n return proto;\n },\n};\n\n/*\n\n █████████ █████ ███ \n ███░░░░░███ ░░███ ░░░ \n░███ ░░░ ███████ ████████ ████ ████████ ███████\n░░█████████ ░░░███░ ░░███░░███░░███ ░░███░░███ ███░░███\n ░░░░░░░░███ ░███ ░███ ░░░ ░███ ░███ ░███ ░███ ░███\n ███ ░███ ░███ ███ ░███ ░███ ░███ ░███ ░███ ░███\n░░█████████ ░░█████ █████ █████ ████ █████░░███████\n ░░░░░░░░░ ░░░░░ ░░░░░ ░░░░░ ░░░░ ░░░░░ ░░░░░███\n ███ ░███\n ░░██████ \n ░░░░░░ \n*/\n\nexport type StringCodec = CodecType<typeof StringCodec>;\n\nexport const StringCodec: Codec<string, string> = {\n encode(app) {\n return app;\n },\n decode(proto) {\n return proto;\n },\n};\n\n/*\n\n █████ █████ █████ ██████ ███ █████\n░░███ ░░███ ░░███ ███░░███ ░░░ ░░███ \n ░███ ░███ ████████ ███████ ██████ ░███ ░░░ ████ ████████ ██████ ███████ \n ░███ ░███ ░░███░░███ ███░░███ ███░░███ ███████ ░░███ ░░███░░███ ███░░███ ███░░███ \n ░███ ░███ ░███ ░███ ░███ ░███ ░███████ ░░░███░ ░███ ░███ ░███ ░███████ ░███ ░███ \n ░███ ░███ ░███ ░███ ░███ ░███ ░███░░░ ░███ ░███ ░███ ░███ ░███░░░ ░███ ░███ \n ░░████████ ████ █████░░████████░░██████ █████ █████ ████ █████░░██████ ░░████████\n ░░░░░░░░ ░░░░ ░░░░░ ░░░░░░░░ ░░░░░░ ░░░░░ ░░░░░ ░░░░ ░░░░░ ░░░░░░ ░░░░░░░░ \n \n*/\n\nexport type UndefinedCodec = CodecType<typeof UndefinedCodec>;\n\nexport const UndefinedCodec: Codec<undefined, undefined> = {\n encode(app) {\n return undefined;\n },\n decode(proto) {\n return undefined;\n },\n};\n\n/*\n █████ ███ █████ ████ \n░░███ ░░░ ░░███ ░░███ \n ░███ ████ ███████ ██████ ████████ ██████ ░███ \n ░███ ░░███ ░░░███░ ███░░███░░███░░███ ░░░░░███ ░███ \n ░███ ░███ ░███ ░███████ ░███ ░░░ ███████ ░███ \n ░███ █ ░███ ░███ ███░███░░░ ░███ ███░░███ ░███ \n ███████████ █████ ░░█████ ░░██████ █████ ░░████████ █████\n░░░░░░░░░░░ ░░░░░ ░░░░░ ░░░░░░ ░░░░░ ░░░░░░░░ ░░░░░ \n \n*/\n\ntype Literal = string | number | boolean | null | undefined;\n\nexport type LiteralCodec<T extends Codec, L extends Literal> = T extends Codec<\n infer TApp,\n infer TProto\n>\n ? Codec<TApp, TProto>\n : never;\n\nexport const LiteralCodec = <const L extends Literal>(\n value: L,\n): LiteralCodec<Codec<L, L>, L> => {\n return {\n encode(app) {\n if (app !== value) {\n throw new Error(`Expected ${String(value)}, got ${String(app)}`);\n }\n return app;\n },\n decode(proto) {\n if (proto !== value) {\n throw new Error(`Expected ${String(value)}, got ${String(proto)}`);\n }\n return proto;\n },\n } as LiteralCodec<Codec<L, L>, L>;\n};\n\n/*\n █████ ███ █████ ████ █████ █████ ███ \n░░███ ░░░ ░░███ ░░███ ░░███ ░░███ ░░░ \n ░███ ████ ███████ ██████ ████████ ██████ ░███ ░███ ░███ ████████ ████ ██████ ████████ \n ░███ ░░███ ░░░███░ ███░░███░░███░░███ ░░░░░███ ░███ ░███ ░███ ░░███░░███ ░░███ ███░░███░░███░░███ \n ░███ ░███ ░███ ░███████ ░███ ░░░ ███████ ░███ ░███ ░███ ░███ ░███ ░███ ░███ ░███ ░███ ░███ \n ░███ █ ░███ ░███ ███░███░░░ ░███ ███░░███ ░███ ░███ ░███ ░███ ░███ ░███ ░███ ░███ ░███ ░███ \n ███████████ █████ ░░█████ ░░██████ █████ ░░████████ █████ ░░████████ ████ █████ █████░░██████ ████ █████\n░░░░░░░░░░░ ░░░░░ ░░░░░ ░░░░░░ ░░░░░ ░░░░░░░░ ░░░░░ ░░░░░░░░ ░░░░ ░░░░░ ░░░░░ ░░░░░░ ░░░░ ░░░░░ \n*/\n\nexport type LiteralUnionCodec<\n T extends Codec,\n L extends readonly Literal[],\n> = T extends Codec<infer TApp, infer TProto> ? Codec<TApp, TProto> : never;\n\nexport const LiteralUnionCodec = <const L extends readonly Literal[]>(\n values: L,\n): LiteralUnionCodec<Codec<L[number], L[number]>, L> => {\n return {\n encode(app) {\n if (!values.includes(app as L[number])) {\n throw new Error(\n `Expected one of [${values.join(\", \")}], got ${String(app)}`,\n );\n }\n return app;\n },\n decode(proto) {\n if (!values.includes(proto as L[number])) {\n throw new Error(\n `Expected one of [${values.join(\", \")}], got ${String(proto)}`,\n );\n }\n return proto;\n },\n } as LiteralUnionCodec<Codec<L[number], L[number]>, L>;\n};\n\n/*\n █████ █████ ███ █████ \n░░███ ░░███ ░░░ ░░███ \n ░███ ░███ ██████ ████████ ████ ██████ ████████ ███████ \n ░███ ░███ ░░░░░███ ░░███░░███░░███ ░░░░░███ ░░███░░███ ░░░███░ \n ░░███ ███ ███████ ░███ ░░░ ░███ ███████ ░███ ░███ ░███ \n ░░░█████░ ███░░███ ░███ ░███ ███░░███ ░███ ░███ ░███ ███\n ░░███ ░░████████ █████ █████░░████████ ████ █████ ░░█████ \n ░░░ ░░░░░░░░ ░░░░░ ░░░░░ ░░░░░░░░ ░░░░ ░░░░░ ░░░░░ \n*/\n\n// Maps variant keys to their corresponding decoded types, adding a tag field\n// For example: { _tag: \"declareV1\", declareV1: { data: string } }\n// if the variant is undefined type, it will be just the tag - { _tag: \"heartbeat\" }\ntype AppVariantMap<TTag extends TPropertyKey, TVariants extends TProperties> = {\n [K in keyof TVariants]: {\n [P in TTag]: K;\n } & (CodecType<TVariants[K]> extends UndefinedCodec\n ? // biome-ignore lint/complexity/noBannedTypes: had to return empty object to satisfy type\n {}\n : { [P in K & TPropertyKey]: CodecType<TVariants[K]> });\n};\ntype VariantCodecType<\n TTag extends TPropertyKey,\n TVariants extends TProperties,\n> = AppVariantMap<TTag, TVariants>[keyof TVariants];\n\n// Maps variant keys to their corresponding encoded types, adding a discriminator field\n// For example: { $case: \"declareV1\", declareV1: { data: string } }\ntype ProtoVariantMap<\n TDiscriminator extends TPropertyKey,\n TVariants extends TProperties,\n> = {\n [K in keyof TVariants]: {\n [P in TDiscriminator]: K;\n } & {\n [P in K & TPropertyKey]: CodecProto<TVariants[K]>;\n };\n};\n\ntype VariantCodecProto<\n TDiscriminator extends TPropertyKey,\n TVariants extends TProperties,\n> = ProtoVariantMap<TDiscriminator, TVariants>[keyof TVariants];\n\n// Type helper for VariantCodec that preserves the input/output types\nexport type VariantCodec<\n T extends Codec,\n TTag extends TPropertyKey,\n TDiscriminator extends TPropertyKey,\n> = T extends Codec<infer TApp, infer TProto> ? Codec<TApp, TProto> : never;\n\nexport const VariantCodec = <\n TTag extends TPropertyKey,\n TDiscriminator extends TPropertyKey,\n TVariants extends TProperties,\n TCodec extends Codec<\n VariantCodecType<TTag, TVariants>,\n VariantCodecProto<TDiscriminator, TVariants>\n >,\n>(options: {\n tag: TTag;\n discriminator: TDiscriminator;\n variants: TVariants;\n}): VariantCodec<TCodec, TTag, TDiscriminator> => {\n return {\n encode(app) {\n const tag = app[options.tag];\n const codec = options.variants[tag];\n if (!codec) {\n throw new Error(`Unknown variant: ${String(tag)}`);\n }\n\n const variantData = app[tag as keyof typeof app];\n const encodedData = codec.encode(variantData);\n\n return {\n [options.discriminator]: tag,\n [tag]: encodedData,\n };\n },\n decode(proto) {\n const tag = proto[options.discriminator];\n const codec = options.variants[tag];\n if (!codec) {\n throw new Error(`Unknown variant: ${String(tag)}`);\n }\n\n const variantData = proto[tag as keyof typeof proto];\n const decodedData = codec.decode(variantData);\n\n return {\n [options.tag]: tag,\n [tag]: decodedData,\n };\n },\n } as VariantCodec<TCodec, TTag, TDiscriminator>;\n};\n\n/*\n ███████ ███████ ██████ \n ███░░░░░███ ███░░░░░███ ███░░███\n ███ ░░███ ████████ ██████ ███ ░░███ ░███ ░░░ \n░███ ░███░░███░░███ ███░░███░███ ░███ ███████ \n░███ ░███ ░███ ░███ ░███████ ░███ ░███░░░███░ \n░░███ ███ ░███ ░███ ░███░░░ ░░███ ███ ░███ \n ░░░███████░ ████ █████░░██████ ░░░███████░ █████ \n ░░░░░░░ ░░░░ ░░░░░ ░░░░░░ ░░░░░░░ ░░░░░ \n \n*/\n\nexport type OneOfCodec<TVariants extends TProperties> = VariantCodec<\n Codec<\n VariantCodecType<\"_tag\", TVariants>,\n VariantCodecProto<\"$case\", TVariants>\n >,\n \"_tag\",\n \"$case\"\n>;\n\nexport function OneOfCodec<TVariants extends TProperties>(\n variants: TVariants,\n): OneOfCodec<TVariants> {\n return VariantCodec({\n tag: \"_tag\",\n discriminator: \"$case\",\n variants,\n });\n}\n"],"names":[],"mappings":"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"}
|
package/dist/codec.mjs
CHANGED
|
@@ -221,3 +221,4 @@ function OneOfCodec(variants) {
|
|
|
221
221
|
}
|
|
222
222
|
|
|
223
223
|
export { ArrayCodec, BigIntCodec, BooleanCodec, DateCodec, LiteralCodec, LiteralUnionCodec, MessageCodec, MutableArrayCodec, NullOrCodec, NumberCodec, OneOfCodec, OptionalCodec, RequiredCodec, StringCodec, Uint8ArrayCodec, UndefinedCodec, VariantCodec };
|
|
224
|
+
//# sourceMappingURL=codec.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codec.mjs","sources":["../src/codec.ts"],"sourcesContent":["/*\n\n █████████ █████ \n ███░░░░░███ ░░███ \n ███ ░░░ ██████ ███████ ██████ ██████ \n░███ ███░░███ ███░░███ ███░░███ ███░░███\n░███ ░███ ░███░███ ░███ ░███████ ░███ ░░░ \n░░███ ███░███ ░███░███ ░███ ░███░░░ ░███ ███\n ░░█████████ ░░██████ ░░████████░░██████ ░░██████ \n ░░░░░░░░░ ░░░░░░ ░░░░░░░░ ░░░░░░ ░░░░░░ \n \n*/\n\n/** Codec to encode and decode protobuf messages */\nexport type Codec<TApp = unknown, TProto = unknown> = {\n encode(app: TApp): TProto;\n decode(proto: TProto): TApp;\n};\n\n/* Helper to get the high-level type of a codec */\nexport type CodecType<C extends Codec> = ReturnType<C[\"decode\"]>;\n\n/* Helper to get the protobuf type of a codec */\nexport type CodecProto<C extends Codec> = ReturnType<C[\"encode\"]>;\n\n/*\n \n ██████ ██████ \n░░██████ ██████ \n ░███░█████░███ ██████ █████ █████ ██████ ███████ ██████ \n ░███░░███ ░███ ███░░███ ███░░ ███░░ ░░░░░███ ███░░███ ███░░███\n ░███ ░░░ ░███ ░███████ ░░█████ ░░█████ ███████ ░███ ░███░███████ \n ░███ ░███ ░███░░░ ░░░░███ ░░░░███ ███░░███ ░███ ░███░███░░░ \n █████ █████░░██████ ██████ ██████ ░░████████░░███████░░██████ \n░░░░░ ░░░░░ ░░░░░░ ░░░░░░ ░░░░░░ ░░░░░░░░ ░░░░░███ ░░░░░░ \n ███ ░███ \n ░░██████ \n ░░░░░░ \n*/\n\nexport type Evaluate<T> = T extends infer O ? { [K in keyof O]: O[K] } : never;\n\ntype TPropertyKey = string | symbol;\n// Message properties as codec.\ntype TProperties = Record<TPropertyKey, Codec>;\n\n// Optional properties in an object.\n// Properties are optional when they have the `undefined` type.\ntype OptionalPropertyKeys<T> = {\n [K in keyof T]: undefined extends T[K] ? K : never;\n}[keyof T];\n\n// Properties that are not optional are required.\ntype RequiredPropertyKeys<T> = keyof Omit<T, OptionalPropertyKeys<T>>;\n\n// Helper to get the app type of a message codec.\ntype _MessageCodecType<T extends TProperties> = {\n [K in keyof T]: CodecType<T[K]>;\n};\n\n// Helper to get the protobuf type of a message codec.\ntype _MessageCodecProto<T extends TProperties> = {\n [K in keyof T]: CodecProto<T[K]>;\n};\n\n// Adjust the app type of the codec so that optional properties are optional.\ntype MessageCodecType<T extends TProperties> =\n _MessageCodecType<T> extends infer R\n ? Evaluate<Partial<R> & Required<Pick<R, RequiredPropertyKeys<R>>>>\n : never;\n\n// Adjust the protobuf type of the codec so that optional properties are optional.\ntype MessageCodecProto<T extends TProperties> =\n _MessageCodecProto<T> extends infer R\n ? Evaluate<Partial<R> & Required<Pick<R, RequiredPropertyKeys<R>>>>\n : never;\n\nexport type MessageCodec<T extends TProperties = TProperties> = Codec<\n MessageCodecType<T>,\n MessageCodecProto<T>\n>;\n\nexport function MessageCodec<T extends TProperties>(\n schema: T,\n): MessageCodec<T> {\n return {\n encode(app) {\n return new Proxy(app, {\n get(target, property) {\n if (!Object.hasOwn(target, property)) {\n return Reflect.get(target, property);\n }\n\n const v = Reflect.get(target, property);\n return schema[property].encode(v);\n },\n });\n },\n decode(proto) {\n return new Proxy(proto, {\n get(target, property) {\n if (!Object.hasOwn(target, property)) {\n return Reflect.get(target, property);\n }\n\n const v = Reflect.get(target, property);\n return schema[property].decode(v);\n },\n });\n },\n };\n}\n\n/*\n █████████ \n ███░░░░░███ \n ░███ ░███ ████████ ████████ ██████ █████ ████\n ░███████████ ░░███░░███░░███░░███ ░░░░░███ ░░███ ░███ \n ░███░░░░░███ ░███ ░░░ ░███ ░░░ ███████ ░███ ░███ \n ░███ ░███ ░███ ░███ ███░░███ ░███ ░███ \n █████ █████ █████ █████ ░░████████ ░░███████ \n░░░░░ ░░░░░ ░░░░░ ░░░░░ ░░░░░░░░ ░░░░░███ \n ███ ░███ \n ░░██████ \n ░░░░░░ \n \n*/\n\nexport type ArrayCodec<T extends Codec> = T extends Codec<\n infer TApp,\n infer TProto\n>\n ? Codec<readonly TApp[], readonly TProto[] | undefined>\n : never;\n\nexport function ArrayCodec<T extends Codec<TApp, TProto>, TApp, TProto>(\n t: T,\n): ArrayCodec<T> {\n return {\n encode(app) {\n return app.map(t.encode) as readonly TProto[];\n },\n decode(proto) {\n if (proto === undefined) return [];\n return proto.map(t.decode) as readonly TApp[];\n },\n } as ArrayCodec<T>;\n}\n\n/*\n ██████ ██████ █████ █████ ████ █████████ █████ \n░░██████ ██████ ░░███ ░░███ ░░███ ███░░░░░███ ░░███ \n ░███░█████░███ █████ ████ ███████ ██████ ░███████ ░███ ██████ ███ ░░░ ██████ ███████ ██████ ██████ \n ░███░░███ ░███ ░░███ ░███ ░░░███░ ░░░░░███ ░███░░███ ░███ ███░░███░███ ███░░███ ███░░███ ███░░███ ███░░███\n ░███ ░░░ ░███ ░███ ░███ ░███ ███████ ░███ ░███ ░███ ░███████ ░███ ░███ ░███░███ ░███ ░███████ ░███ ░░░ \n ░███ ░███ ░███ ░███ ░███ ███ ███░░███ ░███ ░███ ░███ ░███░░░ ░░███ ███░███ ░███░███ ░███ ░███░░░ ░███ ███\n █████ █████ ░░████████ ░░█████ ░░████████ ████████ █████░░██████ ░░█████████ ░░██████ ░░████████░░██████ ░░██████ \n░░░░░ ░░░░░ ░░░░░░░░ ░░░░░ ░░░░░░░░ ░░░░░░░░ ░░░░░ ░░░░░░ ░░░░░░░░░ ░░░░░░ ░░░░░░░░ ░░░░░░ ░░░░░░ \n*/\nexport type MutableArrayCodec<\n T extends Codec<TApp, TProto>,\n TApp,\n TProto,\n> = T extends Codec<infer TApp, infer TProto> ? Codec<TApp[], TProto[]> : never;\n\nexport function MutableArrayCodec<T extends Codec<TApp, TProto>, TApp, TProto>(\n t: T,\n): MutableArrayCodec<T, TApp, TProto> {\n return {\n encode(app) {\n return app.map(t.encode) as TProto[];\n },\n decode(proto) {\n if (proto === undefined) return [];\n return proto.map(t.decode) as TApp[];\n },\n } as MutableArrayCodec<T, TApp, TProto>;\n}\n\n/*\n ███████ █████ ███ ████ \n ███░░░░░███ ░░███ ░░░ ░░███ \n ███ ░░███ ████████ ███████ ████ ██████ ████████ ██████ ░███ \n░███ ░███░░███░░███░░░███░ ░░███ ███░░███░░███░░███ ░░░░░███ ░███ \n░███ ░███ ░███ ░███ ░███ ░███ ░███ ░███ ░███ ░███ ███████ ░███ \n░░███ ███ ░███ ░███ ░███ ███ ░███ ░███ ░███ ░███ ░███ ███░░███ ░███ \n ░░░███████░ ░███████ ░░█████ █████░░██████ ████ █████░░████████ █████\n ░░░░░░░ ░███░░░ ░░░░░ ░░░░░ ░░░░░░ ░░░░ ░░░░░ ░░░░░░░░ ░░░░░ \n ░███ \n █████ \n ░░░░░ \n*/\n\nexport type OptionalCodec<T extends Codec> = T extends Codec<\n infer TApp,\n infer TProto\n>\n ? Codec<TApp | undefined, TProto | undefined>\n : never;\n\nexport function OptionalCodec<T extends Codec>(t: T): OptionalCodec<T> {\n return {\n encode(app) {\n if (app === undefined) return undefined;\n return t.encode(app);\n },\n decode(proto) {\n if (proto === undefined) return undefined;\n return t.decode(proto);\n },\n } as OptionalCodec<T>;\n}\n\n/*\n ███████████ ███ █████\n░░███░░░░░███ ░░░ ░░███ \n ░███ ░███ ██████ ████████ █████ ████ ████ ████████ ██████ ███████ \n ░██████████ ███░░███ ███░░███ ░░███ ░███ ░░███ ░░███░░███ ███░░███ ███░░███ \n ░███░░░░░███ ░███████ ░███ ░███ ░███ ░███ ░███ ░███ ░░░ ░███████ ░███ ░███ \n ░███ ░███ ░███░░░ ░███ ░███ ░███ ░███ ░███ ░███ ░███░░░ ░███ ░███ \n █████ █████░░██████ ░░███████ ░░████████ █████ █████ ░░██████ ░░████████\n░░░░░ ░░░░░ ░░░░░░ ░░░░░███ ░░░░░░░░ ░░░░░ ░░░░░ ░░░░░░ ░░░░░░░░ \n ░███ \n █████ \n ░░░░░ \n*/\n\nexport type RequiredCodec<T extends Codec> = T extends Codec<\n infer TApp,\n infer TProto\n>\n ? TApp extends undefined\n ? never\n : Codec<TApp, TProto | undefined>\n : never;\n\nexport function RequiredCodec<T extends Codec>(t: T): RequiredCodec<T> {\n return {\n encode(app) {\n if (app === undefined) throw new Error(\"Value is required but undefined\");\n return t.encode(app);\n },\n decode(proto) {\n if (proto === undefined)\n throw new Error(\"Value is required but undefined\");\n return t.decode(proto);\n },\n } as RequiredCodec<T>;\n}\n\n/*\n ██████ █████ ████ ████ ███████ \n░░██████ ░░███ ░░███ ░░███ ███░░░░░███ \n ░███░███ ░███ █████ ████ ░███ ░███ ███ ░░███ ████████ \n ░███░░███░███ ░░███ ░███ ░███ ░███ ░███ ░███░░███░░███\n ░███ ░░██████ ░███ ░███ ░███ ░███ ░███ ░███ ░███ ░░░ \n ░███ ░░█████ ░███ ░███ ░███ ░███ ░░███ ███ ░███ \n █████ ░░█████ ░░████████ █████ █████ ░░░███████░ █████ \n░░░░░ ░░░░░ ░░░░░░░░ ░░░░░ ░░░░░ ░░░░░░░ ░░░░░ \n*/\n\nexport type NullOrCodec<T extends Codec> = T extends Codec<\n infer TApp,\n infer TProto\n>\n ? Codec<TApp | null, TProto | null>\n : never;\n\nexport function NullOrCodec<T extends Codec>(t: T): NullOrCodec<T> {\n return {\n encode(app) {\n if (app === null) return null;\n return t.encode(app);\n },\n decode(proto) {\n if (proto === null) return null;\n return t.decode(proto);\n },\n } as NullOrCodec<T>;\n}\n\n/*\n\n ███████████ ███ █████ █████ \n░░███░░░░░███ ░░░ ░░███ ░░███ \n ░███ ░███ ████ ███████ ░███ ████████ ███████ \n ░██████████ ░░███ ███░░███ ░███ ░░███░░███ ░░░███░ \n ░███░░░░░███ ░███ ░███ ░███ ░███ ░███ ░███ ░███ \n ░███ ░███ ░███ ░███ ░███ ░███ ░███ ░███ ░███ ███\n ███████████ █████░░███████ █████ ████ █████ ░░█████ \n░░░░░░░░░░░ ░░░░░ ░░░░░███░░░░░ ░░░░ ░░░░░ ░░░░░ \n ███ ░███ \n ░░██████ \n ░░░░░░ \n*/\n\nexport type BigIntCodec = CodecType<typeof BigIntCodec>;\n\nexport const BigIntCodec: Codec<bigint, bigint> = {\n encode(app) {\n return app;\n },\n decode(proto) {\n return proto;\n },\n};\n\n/*\n\n ██████ █████ █████ \n░░██████ ░░███ ░░███ \n ░███░███ ░███ █████ ████ █████████████ ░███████ ██████ ████████ \n ░███░░███░███ ░░███ ░███ ░░███░░███░░███ ░███░░███ ███░░███░░███░░███\n ░███ ░░██████ ░███ ░███ ░███ ░███ ░███ ░███ ░███░███████ ░███ ░░░ \n ░███ ░░█████ ░███ ░███ ░███ ░███ ░███ ░███ ░███░███░░░ ░███ \n █████ ░░█████ ░░████████ █████░███ █████ ████████ ░░██████ █████ \n░░░░░ ░░░░░ ░░░░░░░░ ░░░░░ ░░░ ░░░░░ ░░░░░░░░ ░░░░░░ ░░░░░ \n \n*/\n\nexport type NumberCodec = CodecType<typeof NumberCodec>;\n\nexport const NumberCodec: Codec<number, number> = {\n encode(app) {\n return app;\n },\n decode(proto) {\n return proto;\n },\n};\n\n/*\n █████ █████ ███ █████ ████████ █████████ \n░░███ ░░███ ░░░ ░░███ ███░░░░███ ███░░░░░███ \n ░███ ░███ ████ ████████ ███████ ░███ ░███ ░███ ░███ ████████ ████████ ██████ █████ ████\n ░███ ░███ ░░███ ░░███░░███ ░░░███░ ░░████████ ░███████████ ░░███░░███░░███░░███ ░░░░░███ ░░███ ░███ \n ░███ ░███ ░███ ░███ ░███ ░███ ███░░░░███ ░███░░░░░███ ░███ ░░░ ░███ ░░░ ███████ ░███ ░███ \n ░███ ░███ ░███ ░███ ░███ ░███ ███░███ ░███ ░███ ░███ ░███ ░███ ███░░███ ░███ ░███ \n ░░████████ █████ ████ █████ ░░█████ ░░████████ █████ █████ █████ █████ ░░████████ ░░███████ \n ░░░░░░░░ ░░░░░ ░░░░ ░░░░░ ░░░░░ ░░░░░░░░ ░░░░░ ░░░░░ ░░░░░ ░░░░░ ░░░░░░░░ ░░░░░███ \n ███ ░███ \n ░░██████ \n ░░░░░░ \n*/\n\nexport type Uint8ArrayCodec = CodecType<typeof Uint8ArrayCodec>;\n\nexport const Uint8ArrayCodec: Codec<Uint8Array, Uint8Array> = {\n encode(app) {\n return app;\n },\n decode(proto) {\n return proto;\n },\n};\n\n/*\n\n ██████████ █████ \n░░███░░░░███ ░░███ \n ░███ ░░███ ██████ ███████ ██████ \n ░███ ░███ ░░░░░███ ░░░███░ ███░░███\n ░███ ░███ ███████ ░███ ░███████ \n ░███ ███ ███░░███ ░███ ███░███░░░ \n ██████████ ░░████████ ░░█████ ░░██████ \n░░░░░░░░░░ ░░░░░░░░ ░░░░░ ░░░░░░ \n \n*/\n\nexport type DateCodec = CodecType<typeof DateCodec>;\n\nexport const DateCodec: Codec<Date, Date> = {\n encode(app) {\n return new Date(app);\n },\n decode(proto) {\n return new Date(proto);\n },\n};\n\n/*\n\n ███████████ ████ \n░░███░░░░░███ ░░███ \n ░███ ░███ ██████ ██████ ░███ ██████ ██████ ████████ \n ░██████████ ███░░███ ███░░███ ░███ ███░░███ ░░░░░███ ░░███░░███ \n ░███░░░░░███░███ ░███░███ ░███ ░███ ░███████ ███████ ░███ ░███ \n ░███ ░███░███ ░███░███ ░███ ░███ ░███░░░ ███░░███ ░███ ░███ \n ███████████ ░░██████ ░░██████ █████░░██████ ░░████████ ████ █████\n░░░░░░░░░░░ ░░░░░░ ░░░░░░ ░░░░░ ░░░░░░ ░░░░░░░░ ░░░░ ░░░░░ \n \n*/\n\nexport type BooleanCodec = CodecType<typeof BooleanCodec>;\n\nexport const BooleanCodec: Codec<boolean, boolean> = {\n encode(app) {\n return app;\n },\n decode(proto) {\n return proto;\n },\n};\n\n/*\n\n █████████ █████ ███ \n ███░░░░░███ ░░███ ░░░ \n░███ ░░░ ███████ ████████ ████ ████████ ███████\n░░█████████ ░░░███░ ░░███░░███░░███ ░░███░░███ ███░░███\n ░░░░░░░░███ ░███ ░███ ░░░ ░███ ░███ ░███ ░███ ░███\n ███ ░███ ░███ ███ ░███ ░███ ░███ ░███ ░███ ░███\n░░█████████ ░░█████ █████ █████ ████ █████░░███████\n ░░░░░░░░░ ░░░░░ ░░░░░ ░░░░░ ░░░░ ░░░░░ ░░░░░███\n ███ ░███\n ░░██████ \n ░░░░░░ \n*/\n\nexport type StringCodec = CodecType<typeof StringCodec>;\n\nexport const StringCodec: Codec<string, string> = {\n encode(app) {\n return app;\n },\n decode(proto) {\n return proto;\n },\n};\n\n/*\n\n █████ █████ █████ ██████ ███ █████\n░░███ ░░███ ░░███ ███░░███ ░░░ ░░███ \n ░███ ░███ ████████ ███████ ██████ ░███ ░░░ ████ ████████ ██████ ███████ \n ░███ ░███ ░░███░░███ ███░░███ ███░░███ ███████ ░░███ ░░███░░███ ███░░███ ███░░███ \n ░███ ░███ ░███ ░███ ░███ ░███ ░███████ ░░░███░ ░███ ░███ ░███ ░███████ ░███ ░███ \n ░███ ░███ ░███ ░███ ░███ ░███ ░███░░░ ░███ ░███ ░███ ░███ ░███░░░ ░███ ░███ \n ░░████████ ████ █████░░████████░░██████ █████ █████ ████ █████░░██████ ░░████████\n ░░░░░░░░ ░░░░ ░░░░░ ░░░░░░░░ ░░░░░░ ░░░░░ ░░░░░ ░░░░ ░░░░░ ░░░░░░ ░░░░░░░░ \n \n*/\n\nexport type UndefinedCodec = CodecType<typeof UndefinedCodec>;\n\nexport const UndefinedCodec: Codec<undefined, undefined> = {\n encode(app) {\n return undefined;\n },\n decode(proto) {\n return undefined;\n },\n};\n\n/*\n █████ ███ █████ ████ \n░░███ ░░░ ░░███ ░░███ \n ░███ ████ ███████ ██████ ████████ ██████ ░███ \n ░███ ░░███ ░░░███░ ███░░███░░███░░███ ░░░░░███ ░███ \n ░███ ░███ ░███ ░███████ ░███ ░░░ ███████ ░███ \n ░███ █ ░███ ░███ ███░███░░░ ░███ ███░░███ ░███ \n ███████████ █████ ░░█████ ░░██████ █████ ░░████████ █████\n░░░░░░░░░░░ ░░░░░ ░░░░░ ░░░░░░ ░░░░░ ░░░░░░░░ ░░░░░ \n \n*/\n\ntype Literal = string | number | boolean | null | undefined;\n\nexport type LiteralCodec<T extends Codec, L extends Literal> = T extends Codec<\n infer TApp,\n infer TProto\n>\n ? Codec<TApp, TProto>\n : never;\n\nexport const LiteralCodec = <const L extends Literal>(\n value: L,\n): LiteralCodec<Codec<L, L>, L> => {\n return {\n encode(app) {\n if (app !== value) {\n throw new Error(`Expected ${String(value)}, got ${String(app)}`);\n }\n return app;\n },\n decode(proto) {\n if (proto !== value) {\n throw new Error(`Expected ${String(value)}, got ${String(proto)}`);\n }\n return proto;\n },\n } as LiteralCodec<Codec<L, L>, L>;\n};\n\n/*\n █████ ███ █████ ████ █████ █████ ███ \n░░███ ░░░ ░░███ ░░███ ░░███ ░░███ ░░░ \n ░███ ████ ███████ ██████ ████████ ██████ ░███ ░███ ░███ ████████ ████ ██████ ████████ \n ░███ ░░███ ░░░███░ ███░░███░░███░░███ ░░░░░███ ░███ ░███ ░███ ░░███░░███ ░░███ ███░░███░░███░░███ \n ░███ ░███ ░███ ░███████ ░███ ░░░ ███████ ░███ ░███ ░███ ░███ ░███ ░███ ░███ ░███ ░███ ░███ \n ░███ █ ░███ ░███ ███░███░░░ ░███ ███░░███ ░███ ░███ ░███ ░███ ░███ ░███ ░███ ░███ ░███ ░███ \n ███████████ █████ ░░█████ ░░██████ █████ ░░████████ █████ ░░████████ ████ █████ █████░░██████ ████ █████\n░░░░░░░░░░░ ░░░░░ ░░░░░ ░░░░░░ ░░░░░ ░░░░░░░░ ░░░░░ ░░░░░░░░ ░░░░ ░░░░░ ░░░░░ ░░░░░░ ░░░░ ░░░░░ \n*/\n\nexport type LiteralUnionCodec<\n T extends Codec,\n L extends readonly Literal[],\n> = T extends Codec<infer TApp, infer TProto> ? Codec<TApp, TProto> : never;\n\nexport const LiteralUnionCodec = <const L extends readonly Literal[]>(\n values: L,\n): LiteralUnionCodec<Codec<L[number], L[number]>, L> => {\n return {\n encode(app) {\n if (!values.includes(app as L[number])) {\n throw new Error(\n `Expected one of [${values.join(\", \")}], got ${String(app)}`,\n );\n }\n return app;\n },\n decode(proto) {\n if (!values.includes(proto as L[number])) {\n throw new Error(\n `Expected one of [${values.join(\", \")}], got ${String(proto)}`,\n );\n }\n return proto;\n },\n } as LiteralUnionCodec<Codec<L[number], L[number]>, L>;\n};\n\n/*\n █████ █████ ███ █████ \n░░███ ░░███ ░░░ ░░███ \n ░███ ░███ ██████ ████████ ████ ██████ ████████ ███████ \n ░███ ░███ ░░░░░███ ░░███░░███░░███ ░░░░░███ ░░███░░███ ░░░███░ \n ░░███ ███ ███████ ░███ ░░░ ░███ ███████ ░███ ░███ ░███ \n ░░░█████░ ███░░███ ░███ ░███ ███░░███ ░███ ░███ ░███ ███\n ░░███ ░░████████ █████ █████░░████████ ████ █████ ░░█████ \n ░░░ ░░░░░░░░ ░░░░░ ░░░░░ ░░░░░░░░ ░░░░ ░░░░░ ░░░░░ \n*/\n\n// Maps variant keys to their corresponding decoded types, adding a tag field\n// For example: { _tag: \"declareV1\", declareV1: { data: string } }\n// if the variant is undefined type, it will be just the tag - { _tag: \"heartbeat\" }\ntype AppVariantMap<TTag extends TPropertyKey, TVariants extends TProperties> = {\n [K in keyof TVariants]: {\n [P in TTag]: K;\n } & (CodecType<TVariants[K]> extends UndefinedCodec\n ? // biome-ignore lint/complexity/noBannedTypes: had to return empty object to satisfy type\n {}\n : { [P in K & TPropertyKey]: CodecType<TVariants[K]> });\n};\ntype VariantCodecType<\n TTag extends TPropertyKey,\n TVariants extends TProperties,\n> = AppVariantMap<TTag, TVariants>[keyof TVariants];\n\n// Maps variant keys to their corresponding encoded types, adding a discriminator field\n// For example: { $case: \"declareV1\", declareV1: { data: string } }\ntype ProtoVariantMap<\n TDiscriminator extends TPropertyKey,\n TVariants extends TProperties,\n> = {\n [K in keyof TVariants]: {\n [P in TDiscriminator]: K;\n } & {\n [P in K & TPropertyKey]: CodecProto<TVariants[K]>;\n };\n};\n\ntype VariantCodecProto<\n TDiscriminator extends TPropertyKey,\n TVariants extends TProperties,\n> = ProtoVariantMap<TDiscriminator, TVariants>[keyof TVariants];\n\n// Type helper for VariantCodec that preserves the input/output types\nexport type VariantCodec<\n T extends Codec,\n TTag extends TPropertyKey,\n TDiscriminator extends TPropertyKey,\n> = T extends Codec<infer TApp, infer TProto> ? Codec<TApp, TProto> : never;\n\nexport const VariantCodec = <\n TTag extends TPropertyKey,\n TDiscriminator extends TPropertyKey,\n TVariants extends TProperties,\n TCodec extends Codec<\n VariantCodecType<TTag, TVariants>,\n VariantCodecProto<TDiscriminator, TVariants>\n >,\n>(options: {\n tag: TTag;\n discriminator: TDiscriminator;\n variants: TVariants;\n}): VariantCodec<TCodec, TTag, TDiscriminator> => {\n return {\n encode(app) {\n const tag = app[options.tag];\n const codec = options.variants[tag];\n if (!codec) {\n throw new Error(`Unknown variant: ${String(tag)}`);\n }\n\n const variantData = app[tag as keyof typeof app];\n const encodedData = codec.encode(variantData);\n\n return {\n [options.discriminator]: tag,\n [tag]: encodedData,\n };\n },\n decode(proto) {\n const tag = proto[options.discriminator];\n const codec = options.variants[tag];\n if (!codec) {\n throw new Error(`Unknown variant: ${String(tag)}`);\n }\n\n const variantData = proto[tag as keyof typeof proto];\n const decodedData = codec.decode(variantData);\n\n return {\n [options.tag]: tag,\n [tag]: decodedData,\n };\n },\n } as VariantCodec<TCodec, TTag, TDiscriminator>;\n};\n\n/*\n ███████ ███████ ██████ \n ███░░░░░███ ███░░░░░███ ███░░███\n ███ ░░███ ████████ ██████ ███ ░░███ ░███ ░░░ \n░███ ░███░░███░░███ ███░░███░███ ░███ ███████ \n░███ ░███ ░███ ░███ ░███████ ░███ ░███░░░███░ \n░░███ ███ ░███ ░███ ░███░░░ ░░███ ███ ░███ \n ░░░███████░ ████ █████░░██████ ░░░███████░ █████ \n ░░░░░░░ ░░░░ ░░░░░ ░░░░░░ ░░░░░░░ ░░░░░ \n \n*/\n\nexport type OneOfCodec<TVariants extends TProperties> = VariantCodec<\n Codec<\n VariantCodecType<\"_tag\", TVariants>,\n VariantCodecProto<\"$case\", TVariants>\n >,\n \"_tag\",\n \"$case\"\n>;\n\nexport function OneOfCodec<TVariants extends TProperties>(\n variants: TVariants,\n): OneOfCodec<TVariants> {\n return VariantCodec({\n tag: \"_tag\",\n discriminator: \"$case\",\n variants,\n });\n}\n"],"names":[],"mappings":"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"}
|
package/dist/index.cjs
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../src/status.ts","../src/client.ts","../src/rate.ts"],"sourcesContent":["import { type CodecType, MessageCodec, OptionalCodec } from \"./codec\";\nimport { Cursor } from \"./common\";\n\n/** The request to the `status` endpoint. */\nexport const StatusRequest = MessageCodec({});\n\nexport type StatusRequest = CodecType<typeof StatusRequest>;\n\n/** The response from the `status` endpoint. */\nexport const StatusResponse = MessageCodec({\n currentHead: OptionalCodec(Cursor),\n lastIngested: OptionalCodec(Cursor),\n finalized: OptionalCodec(Cursor),\n starting: OptionalCodec(Cursor),\n});\n\nexport type StatusResponse = CodecType<typeof StatusResponse>;\n","import {\n type ChannelCredentials,\n type ChannelOptions,\n type DefaultCallOptions,\n type NormalizedServiceDefinition,\n createChannel,\n createClient as grpcCreateClient,\n} from \"nice-grpc\";\n\nimport * as proto from \"./proto\";\n\nimport assert from \"node:assert\";\nimport type { Codec } from \"./codec\";\nimport type { Cursor } from \"./common\";\nimport type { StreamConfig } from \"./config\";\nimport { StatusRequest, StatusResponse } from \"./status\";\nimport { type StreamDataRequest, StreamDataResponse } from \"./stream\";\n\nexport { ClientError, ServerError, Status, Metadata } from \"nice-grpc\";\n\nconst DEFAULT_TIMEOUT_MS = 45_000;\n\nexport class TimeoutError extends Error {\n constructor(timeout: number) {\n super(`No message received in ${timeout}ms`);\n this.name = \"TimeoutError\";\n }\n}\n\n/** Client call options. */\nexport interface ClientCallOptions {\n signal?: AbortSignal;\n}\n\nexport interface StreamDataOptions extends ClientCallOptions {\n /** Stop at the specified cursor (inclusive). */\n endingCursor?: Cursor;\n /** Timeout between messages, in milliseconds. */\n timeout?: number;\n}\n\n/** DNA client. */\nexport interface Client<TFilter, TBlock> {\n /** Fetch the DNA stream status. */\n status(\n request?: StatusRequest,\n options?: ClientCallOptions,\n ): Promise<StatusResponse>;\n\n /** Start streaming data from the DNA server. */\n streamData(\n request: StreamDataRequest<TFilter>,\n options?: StreamDataOptions,\n ): AsyncIterable<StreamDataResponse<TBlock>>;\n}\n\nexport type CreateClientOptions = {\n defaultCallOptions?: DefaultCallOptions<\n NormalizedServiceDefinition<proto.stream.DnaStreamDefinition>\n >;\n credentials?: ChannelCredentials;\n channelOptions?: ChannelOptions;\n};\n\n/** Create a client connecting to the DNA grpc service. */\nexport function createClient<TFilter, TBlock>(\n config: StreamConfig<TFilter, TBlock>,\n streamUrl: string,\n options: CreateClientOptions = {},\n) {\n const channel = createChannel(\n streamUrl,\n options?.credentials,\n options?.channelOptions,\n );\n\n const client: proto.stream.DnaStreamClient = grpcCreateClient(\n proto.stream.DnaStreamDefinition,\n channel,\n options?.defaultCallOptions,\n );\n\n return new GrpcClient(config, client);\n}\n\nexport class GrpcClient<TFilter, TBlock> implements Client<TFilter, TBlock> {\n private encodeRequest;\n\n constructor(\n private config: StreamConfig<TFilter, TBlock>,\n private client: proto.stream.DnaStreamClient,\n ) {\n this.encodeRequest = config.Request.encode;\n }\n\n async status(request?: StatusRequest, options?: ClientCallOptions) {\n const response = await this.client.status(\n StatusRequest.encode(request ?? {}),\n options,\n );\n return StatusResponse.decode(response);\n }\n\n streamData(request: StreamDataRequest<TFilter>, options?: StreamDataOptions) {\n const it = this.client.streamData(this.encodeRequest(request), options);\n return new StreamDataIterable(it, this.config.Block, options);\n }\n}\n\nexport class StreamDataIterable<TBlock> {\n constructor(\n private it: AsyncIterable<proto.stream.StreamDataResponse>,\n private schema: Codec<TBlock, Uint8Array>,\n private options?: StreamDataOptions,\n ) {}\n\n [Symbol.asyncIterator](): AsyncIterator<StreamDataResponse<TBlock>> {\n const inner = this.it[Symbol.asyncIterator]();\n const schema = StreamDataResponse(this.schema);\n const decoder = schema.decode;\n const { endingCursor, timeout = DEFAULT_TIMEOUT_MS } = this.options ?? {};\n let shouldStop = false;\n\n let clock: string | number | NodeJS.Timeout | undefined;\n\n return {\n async next() {\n if (shouldStop) {\n return { done: true, value: undefined };\n }\n\n // biome-ignore lint/suspicious/noExplicitAny: any is ok\n const t: Promise<{ done: boolean; value: any }> = new Promise(\n (_, reject) => {\n clock = setTimeout(() => {\n reject(new TimeoutError(timeout));\n }, timeout);\n },\n );\n\n try {\n const { done, value } = await Promise.race([inner.next(), t]);\n\n clearTimeout(clock);\n\n if (done || value.message === undefined) {\n return { done: true, value: undefined };\n }\n\n const decodedMessage = decoder(value.message);\n\n if (endingCursor) {\n assert(value.message.$case === \"data\");\n assert(decodedMessage._tag === \"data\");\n\n const { orderKey, uniqueKey } = endingCursor;\n const endCursor = decodedMessage.data.endCursor;\n\n // Check if the orderKey matches\n if (orderKey === endCursor?.orderKey) {\n // If a uniqueKey is specified, it must also match\n if (!uniqueKey || uniqueKey === endCursor.uniqueKey) {\n shouldStop = true;\n return { done: false, value: decodedMessage };\n }\n }\n }\n\n return {\n done: false,\n value: decodedMessage,\n };\n } finally {\n clearTimeout(clock);\n }\n },\n };\n }\n}\n","/** Track data rate using high precision timers. */\nexport class RateGauge {\n private interval: number;\n private prev?: bigint;\n private rateMs?: number;\n private var: number;\n\n constructor(intervalSeconds: number) {\n // Convert seconds to milliseconds.\n this.interval = intervalSeconds * 1_000;\n this.var = 0;\n }\n\n public record(items: number) {\n // Compute the exponential moving average of the rate.\n const prev = this.prev;\n const now = process.hrtime.bigint();\n this.prev = now;\n\n if (!prev) {\n return;\n }\n\n const deltaMs = Number(now - prev) / 1_000_000;\n // rate in items/ms.\n const rateMs = items / deltaMs;\n\n if (this.rateMs === undefined) {\n this.rateMs = rateMs;\n this.var = 0;\n return;\n }\n\n const alpha = 1 - Math.exp(-deltaMs / this.interval);\n this.rateMs = alpha * rateMs + (1 - alpha) * this.rateMs;\n\n const diff = rateMs - this.rateMs;\n const incr = alpha * diff;\n this.var = (1 - alpha) * (this.var + incr * diff);\n }\n\n /** Returns the average rate per second. */\n public average() {\n if (this.rateMs === undefined) {\n return undefined;\n }\n return this.rateMs * 1_000;\n }\n\n /** Returns the variance. */\n public variance() {\n return this.var;\n }\n}\n"],"names":["MessageCodec","OptionalCodec","Cursor","config","createChannel","grpcCreateClient","proto.stream.DnaStreamDefinition","__publicField","StreamDataResponse","assert"],"mappings":"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"}
|
package/dist/index.mjs
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../src/status.ts","../src/client.ts","../src/rate.ts"],"sourcesContent":["import { type CodecType, MessageCodec, OptionalCodec } from \"./codec\";\nimport { Cursor } from \"./common\";\n\n/** The request to the `status` endpoint. */\nexport const StatusRequest = MessageCodec({});\n\nexport type StatusRequest = CodecType<typeof StatusRequest>;\n\n/** The response from the `status` endpoint. */\nexport const StatusResponse = MessageCodec({\n currentHead: OptionalCodec(Cursor),\n lastIngested: OptionalCodec(Cursor),\n finalized: OptionalCodec(Cursor),\n starting: OptionalCodec(Cursor),\n});\n\nexport type StatusResponse = CodecType<typeof StatusResponse>;\n","import {\n type ChannelCredentials,\n type ChannelOptions,\n type DefaultCallOptions,\n type NormalizedServiceDefinition,\n createChannel,\n createClient as grpcCreateClient,\n} from \"nice-grpc\";\n\nimport * as proto from \"./proto\";\n\nimport assert from \"node:assert\";\nimport type { Codec } from \"./codec\";\nimport type { Cursor } from \"./common\";\nimport type { StreamConfig } from \"./config\";\nimport { StatusRequest, StatusResponse } from \"./status\";\nimport { type StreamDataRequest, StreamDataResponse } from \"./stream\";\n\nexport { ClientError, ServerError, Status, Metadata } from \"nice-grpc\";\n\nconst DEFAULT_TIMEOUT_MS = 45_000;\n\nexport class TimeoutError extends Error {\n constructor(timeout: number) {\n super(`No message received in ${timeout}ms`);\n this.name = \"TimeoutError\";\n }\n}\n\n/** Client call options. */\nexport interface ClientCallOptions {\n signal?: AbortSignal;\n}\n\nexport interface StreamDataOptions extends ClientCallOptions {\n /** Stop at the specified cursor (inclusive). */\n endingCursor?: Cursor;\n /** Timeout between messages, in milliseconds. */\n timeout?: number;\n}\n\n/** DNA client. */\nexport interface Client<TFilter, TBlock> {\n /** Fetch the DNA stream status. */\n status(\n request?: StatusRequest,\n options?: ClientCallOptions,\n ): Promise<StatusResponse>;\n\n /** Start streaming data from the DNA server. */\n streamData(\n request: StreamDataRequest<TFilter>,\n options?: StreamDataOptions,\n ): AsyncIterable<StreamDataResponse<TBlock>>;\n}\n\nexport type CreateClientOptions = {\n defaultCallOptions?: DefaultCallOptions<\n NormalizedServiceDefinition<proto.stream.DnaStreamDefinition>\n >;\n credentials?: ChannelCredentials;\n channelOptions?: ChannelOptions;\n};\n\n/** Create a client connecting to the DNA grpc service. */\nexport function createClient<TFilter, TBlock>(\n config: StreamConfig<TFilter, TBlock>,\n streamUrl: string,\n options: CreateClientOptions = {},\n) {\n const channel = createChannel(\n streamUrl,\n options?.credentials,\n options?.channelOptions,\n );\n\n const client: proto.stream.DnaStreamClient = grpcCreateClient(\n proto.stream.DnaStreamDefinition,\n channel,\n options?.defaultCallOptions,\n );\n\n return new GrpcClient(config, client);\n}\n\nexport class GrpcClient<TFilter, TBlock> implements Client<TFilter, TBlock> {\n private encodeRequest;\n\n constructor(\n private config: StreamConfig<TFilter, TBlock>,\n private client: proto.stream.DnaStreamClient,\n ) {\n this.encodeRequest = config.Request.encode;\n }\n\n async status(request?: StatusRequest, options?: ClientCallOptions) {\n const response = await this.client.status(\n StatusRequest.encode(request ?? {}),\n options,\n );\n return StatusResponse.decode(response);\n }\n\n streamData(request: StreamDataRequest<TFilter>, options?: StreamDataOptions) {\n const it = this.client.streamData(this.encodeRequest(request), options);\n return new StreamDataIterable(it, this.config.Block, options);\n }\n}\n\nexport class StreamDataIterable<TBlock> {\n constructor(\n private it: AsyncIterable<proto.stream.StreamDataResponse>,\n private schema: Codec<TBlock, Uint8Array>,\n private options?: StreamDataOptions,\n ) {}\n\n [Symbol.asyncIterator](): AsyncIterator<StreamDataResponse<TBlock>> {\n const inner = this.it[Symbol.asyncIterator]();\n const schema = StreamDataResponse(this.schema);\n const decoder = schema.decode;\n const { endingCursor, timeout = DEFAULT_TIMEOUT_MS } = this.options ?? {};\n let shouldStop = false;\n\n let clock: string | number | NodeJS.Timeout | undefined;\n\n return {\n async next() {\n if (shouldStop) {\n return { done: true, value: undefined };\n }\n\n // biome-ignore lint/suspicious/noExplicitAny: any is ok\n const t: Promise<{ done: boolean; value: any }> = new Promise(\n (_, reject) => {\n clock = setTimeout(() => {\n reject(new TimeoutError(timeout));\n }, timeout);\n },\n );\n\n try {\n const { done, value } = await Promise.race([inner.next(), t]);\n\n clearTimeout(clock);\n\n if (done || value.message === undefined) {\n return { done: true, value: undefined };\n }\n\n const decodedMessage = decoder(value.message);\n\n if (endingCursor) {\n assert(value.message.$case === \"data\");\n assert(decodedMessage._tag === \"data\");\n\n const { orderKey, uniqueKey } = endingCursor;\n const endCursor = decodedMessage.data.endCursor;\n\n // Check if the orderKey matches\n if (orderKey === endCursor?.orderKey) {\n // If a uniqueKey is specified, it must also match\n if (!uniqueKey || uniqueKey === endCursor.uniqueKey) {\n shouldStop = true;\n return { done: false, value: decodedMessage };\n }\n }\n }\n\n return {\n done: false,\n value: decodedMessage,\n };\n } finally {\n clearTimeout(clock);\n }\n },\n };\n }\n}\n","/** Track data rate using high precision timers. */\nexport class RateGauge {\n private interval: number;\n private prev?: bigint;\n private rateMs?: number;\n private var: number;\n\n constructor(intervalSeconds: number) {\n // Convert seconds to milliseconds.\n this.interval = intervalSeconds * 1_000;\n this.var = 0;\n }\n\n public record(items: number) {\n // Compute the exponential moving average of the rate.\n const prev = this.prev;\n const now = process.hrtime.bigint();\n this.prev = now;\n\n if (!prev) {\n return;\n }\n\n const deltaMs = Number(now - prev) / 1_000_000;\n // rate in items/ms.\n const rateMs = items / deltaMs;\n\n if (this.rateMs === undefined) {\n this.rateMs = rateMs;\n this.var = 0;\n return;\n }\n\n const alpha = 1 - Math.exp(-deltaMs / this.interval);\n this.rateMs = alpha * rateMs + (1 - alpha) * this.rateMs;\n\n const diff = rateMs - this.rateMs;\n const incr = alpha * diff;\n this.var = (1 - alpha) * (this.var + incr * diff);\n }\n\n /** Returns the average rate per second. */\n public average() {\n if (this.rateMs === undefined) {\n return undefined;\n }\n return this.rateMs * 1_000;\n }\n\n /** Returns the variance. */\n public variance() {\n return this.var;\n }\n}\n"],"names":["grpcCreateClient","proto.stream.DnaStreamDefinition","__publicField"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protocol.53f81a1e.cjs","sources":["../../src/proto/google/protobuf/duration.ts","../../src/proto/stream.ts","../../src/proto/testing.ts","../../src/common.ts","../../src/stream.ts","../../src/config.ts"],"sourcesContent":["// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n// protoc-gen-ts_proto v1.176.0\n// protoc unknown\n// source: google/protobuf/duration.proto\n\n/* eslint-disable */\nimport Long from \"long\";\nimport _m0 from \"protobufjs/minimal.js\";\n\nexport const protobufPackage = \"google.protobuf\";\n\n/**\n * A Duration represents a signed, fixed-length span of time represented\n * as a count of seconds and fractions of seconds at nanosecond\n * resolution. It is independent of any calendar and concepts like \"day\"\n * or \"month\". It is related to Timestamp in that the difference between\n * two Timestamp values is a Duration and it can be added or subtracted\n * from a Timestamp. Range is approximately +-10,000 years.\n *\n * # Examples\n *\n * Example 1: Compute Duration from two Timestamps in pseudo code.\n *\n * Timestamp start = ...;\n * Timestamp end = ...;\n * Duration duration = ...;\n *\n * duration.seconds = end.seconds - start.seconds;\n * duration.nanos = end.nanos - start.nanos;\n *\n * if (duration.seconds < 0 && duration.nanos > 0) {\n * duration.seconds += 1;\n * duration.nanos -= 1000000000;\n * } else if (duration.seconds > 0 && duration.nanos < 0) {\n * duration.seconds -= 1;\n * duration.nanos += 1000000000;\n * }\n *\n * Example 2: Compute Timestamp from Timestamp + Duration in pseudo code.\n *\n * Timestamp start = ...;\n * Duration duration = ...;\n * Timestamp end = ...;\n *\n * end.seconds = start.seconds + duration.seconds;\n * end.nanos = start.nanos + duration.nanos;\n *\n * if (end.nanos < 0) {\n * end.seconds -= 1;\n * end.nanos += 1000000000;\n * } else if (end.nanos >= 1000000000) {\n * end.seconds += 1;\n * end.nanos -= 1000000000;\n * }\n *\n * Example 3: Compute Duration from datetime.timedelta in Python.\n *\n * td = datetime.timedelta(days=3, minutes=10)\n * duration = Duration()\n * duration.FromTimedelta(td)\n *\n * # JSON Mapping\n *\n * In JSON format, the Duration type is encoded as a string rather than an\n * object, where the string ends in the suffix \"s\" (indicating seconds) and\n * is preceded by the number of seconds, with nanoseconds expressed as\n * fractional seconds. For example, 3 seconds with 0 nanoseconds should be\n * encoded in JSON format as \"3s\", while 3 seconds and 1 nanosecond should\n * be expressed in JSON format as \"3.000000001s\", and 3 seconds and 1\n * microsecond should be expressed in JSON format as \"3.000001s\".\n */\nexport interface Duration {\n /**\n * Signed seconds of the span of time. Must be from -315,576,000,000\n * to +315,576,000,000 inclusive. Note: these bounds are computed from:\n * 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years\n */\n readonly seconds?:\n | bigint\n | undefined;\n /**\n * Signed fractions of a second at nanosecond resolution of the span\n * of time. Durations less than one second are represented with a 0\n * `seconds` field and a positive or negative `nanos` field. For durations\n * of one second or more, a non-zero value for the `nanos` field must be\n * of the same sign as the `seconds` field. Must be from -999,999,999\n * to +999,999,999 inclusive.\n */\n readonly nanos?: number | undefined;\n}\n\nfunction createBaseDuration(): Duration {\n return { seconds: BigInt(\"0\"), nanos: 0 };\n}\n\nexport const Duration = {\n encode(message: Duration, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {\n if (message.seconds !== undefined && message.seconds !== BigInt(\"0\")) {\n if (BigInt.asIntN(64, message.seconds) !== message.seconds) {\n throw new globalThis.Error(\"value provided for field message.seconds of type int64 too large\");\n }\n writer.uint32(8).int64(message.seconds.toString());\n }\n if (message.nanos !== undefined && message.nanos !== 0) {\n writer.uint32(16).int32(message.nanos);\n }\n return writer;\n },\n\n decode(input: _m0.Reader | Uint8Array, length?: number): Duration {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseDuration() as any;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 8) {\n break;\n }\n\n message.seconds = longToBigint(reader.int64() as Long);\n continue;\n case 2:\n if (tag !== 16) {\n break;\n }\n\n message.nanos = reader.int32();\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): Duration {\n return {\n seconds: isSet(object.seconds) ? BigInt(object.seconds) : BigInt(\"0\"),\n nanos: isSet(object.nanos) ? globalThis.Number(object.nanos) : 0,\n };\n },\n\n toJSON(message: Duration): unknown {\n const obj: any = {};\n if (message.seconds !== undefined && message.seconds !== BigInt(\"0\")) {\n obj.seconds = message.seconds.toString();\n }\n if (message.nanos !== undefined && message.nanos !== 0) {\n obj.nanos = Math.round(message.nanos);\n }\n return obj;\n },\n\n create(base?: DeepPartial<Duration>): Duration {\n return Duration.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<Duration>): Duration {\n const message = createBaseDuration() as any;\n message.seconds = object.seconds ?? BigInt(\"0\");\n message.nanos = object.nanos ?? 0;\n return message;\n },\n};\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | bigint | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n : T extends { readonly $case: string }\n ? { [K in keyof Omit<T, \"$case\">]?: DeepPartial<T[K]> } & { readonly $case: T[\"$case\"] }\n : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n : Partial<T>;\n\nfunction longToBigint(long: Long) {\n return BigInt(long.toString());\n}\n\nif (_m0.util.Long !== Long) {\n _m0.util.Long = Long as any;\n _m0.configure();\n}\n\nfunction isSet(value: any): boolean {\n return value !== null && value !== undefined;\n}\n","// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n// protoc-gen-ts_proto v1.176.0\n// protoc unknown\n// source: stream.proto\n\n/* eslint-disable */\nimport Long from \"long\";\nimport { type CallContext, type CallOptions } from \"nice-grpc-common\";\nimport _m0 from \"protobufjs/minimal.js\";\nimport { Duration } from \"./google/protobuf/duration.js\";\n\nexport const protobufPackage = \"dna.v2.stream\";\n\n/** Apibara DNA server V2 */\n\n/** Data finality. */\nexport enum DataFinality {\n UNKNOWN = 0,\n /** PENDING - Data was received, but is not part of the canonical chain yet. */\n PENDING = 1,\n /** ACCEPTED - Data is now part of the canonical chain, but could still be invalidated. */\n ACCEPTED = 2,\n /** FINALIZED - Data is finalized and cannot be invalidated. */\n FINALIZED = 3,\n UNRECOGNIZED = -1,\n}\n\nexport function dataFinalityFromJSON(object: any): DataFinality {\n switch (object) {\n case 0:\n case \"DATA_FINALITY_UNKNOWN\":\n return DataFinality.UNKNOWN;\n case 1:\n case \"DATA_FINALITY_PENDING\":\n return DataFinality.PENDING;\n case 2:\n case \"DATA_FINALITY_ACCEPTED\":\n return DataFinality.ACCEPTED;\n case 3:\n case \"DATA_FINALITY_FINALIZED\":\n return DataFinality.FINALIZED;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return DataFinality.UNRECOGNIZED;\n }\n}\n\nexport function dataFinalityToJSON(object: DataFinality): string {\n switch (object) {\n case DataFinality.UNKNOWN:\n return \"DATA_FINALITY_UNKNOWN\";\n case DataFinality.PENDING:\n return \"DATA_FINALITY_PENDING\";\n case DataFinality.ACCEPTED:\n return \"DATA_FINALITY_ACCEPTED\";\n case DataFinality.FINALIZED:\n return \"DATA_FINALITY_FINALIZED\";\n case DataFinality.UNRECOGNIZED:\n default:\n return \"UNRECOGNIZED\";\n }\n}\n\n/** Data production mode. */\nexport enum DataProduction {\n UNKNOWN = 0,\n /** BACKFILL - Data is for a backfilled block. */\n BACKFILL = 1,\n /** LIVE - Data is for a live block. */\n LIVE = 2,\n UNRECOGNIZED = -1,\n}\n\nexport function dataProductionFromJSON(object: any): DataProduction {\n switch (object) {\n case 0:\n case \"DATA_PRODUCTION_UNKNOWN\":\n return DataProduction.UNKNOWN;\n case 1:\n case \"DATA_PRODUCTION_BACKFILL\":\n return DataProduction.BACKFILL;\n case 2:\n case \"DATA_PRODUCTION_LIVE\":\n return DataProduction.LIVE;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return DataProduction.UNRECOGNIZED;\n }\n}\n\nexport function dataProductionToJSON(object: DataProduction): string {\n switch (object) {\n case DataProduction.UNKNOWN:\n return \"DATA_PRODUCTION_UNKNOWN\";\n case DataProduction.BACKFILL:\n return \"DATA_PRODUCTION_BACKFILL\";\n case DataProduction.LIVE:\n return \"DATA_PRODUCTION_LIVE\";\n case DataProduction.UNRECOGNIZED:\n default:\n return \"UNRECOGNIZED\";\n }\n}\n\n/** A cursor over the stream content. */\nexport interface Cursor {\n /**\n * Key used for ordering messages in the stream.\n *\n * This is usually the block or slot number.\n */\n readonly orderKey?:\n | bigint\n | undefined;\n /**\n * Key used to discriminate branches in the stream.\n *\n * This is usually the hash of the block.\n */\n readonly uniqueKey?: Uint8Array | undefined;\n}\n\n/** Request for the `Status` method. */\nexport interface StatusRequest {\n}\n\n/** Response for the `Status` method. */\nexport interface StatusResponse {\n /** The current head of the chain. */\n readonly currentHead?:\n | Cursor\n | undefined;\n /** The last cursor that was ingested by the node. */\n readonly lastIngested?:\n | Cursor\n | undefined;\n /** The finalized block. */\n readonly finalized?:\n | Cursor\n | undefined;\n /** The first block available. */\n readonly starting?: Cursor | undefined;\n}\n\n/** Request data to be streamed. */\nexport interface StreamDataRequest {\n /**\n * Cursor to start streaming from.\n *\n * If not specified, starts from the genesis block.\n * Use the data's message `end_cursor` field to resume streaming.\n */\n readonly startingCursor?:\n | Cursor\n | undefined;\n /**\n * Return data with the specified finality.\n *\n * If not specified, defaults to `DATA_FINALITY_ACCEPTED`.\n */\n readonly finality?:\n | DataFinality\n | undefined;\n /** Filters used to generate data. */\n readonly filter?:\n | readonly Uint8Array[]\n | undefined;\n /**\n * Heartbeat interval.\n *\n * Value must be between 10 and 60 seconds.\n * If not specified, defaults to 30 seconds.\n */\n readonly heartbeatInterval?: Duration | undefined;\n}\n\n/** Contains a piece of streamed data. */\nexport interface StreamDataResponse {\n readonly message?:\n | { readonly $case: \"data\"; readonly data: Data }\n | { readonly $case: \"invalidate\"; readonly invalidate: Invalidate }\n | { readonly $case: \"finalize\"; readonly finalize: Finalize }\n | { readonly $case: \"heartbeat\"; readonly heartbeat: Heartbeat }\n | { readonly $case: \"systemMessage\"; readonly systemMessage: SystemMessage }\n | undefined;\n}\n\n/** Invalidate data after the given cursor. */\nexport interface Invalidate {\n /**\n * The cursor of the new chain's head.\n *\n * All data after this cursor should be considered invalid.\n */\n readonly cursor?:\n | Cursor\n | undefined;\n /** List of blocks that were removed from the chain. */\n readonly removed?: readonly Cursor[] | undefined;\n}\n\n/** Move the finalized block forward. */\nexport interface Finalize {\n /**\n * The cursor of the new finalized block.\n *\n * All data before this cursor cannot be invalidated.\n */\n readonly cursor?: Cursor | undefined;\n}\n\n/**\n * A single block of data.\n *\n * If the request specified multiple filters, the `data` field will contain the\n * data for each filter in the same order as the filters were specified in the\n * request.\n * If no data is available for a filter, the corresponding data field will be\n * empty.\n */\nexport interface Data {\n /** Cursor that generated this block of data. */\n readonly cursor?:\n | Cursor\n | undefined;\n /** Block cursor. Use this cursor to resume the stream. */\n readonly endCursor?:\n | Cursor\n | undefined;\n /** The finality status of the block. */\n readonly finality?:\n | DataFinality\n | undefined;\n /**\n * The block data.\n *\n * This message contains chain-specific data serialized using protobuf.\n */\n readonly data?:\n | readonly Uint8Array[]\n | undefined;\n /** The production mode of the block. */\n readonly production?: DataProduction | undefined;\n}\n\n/** Sent to clients to check if stream is still connected. */\nexport interface Heartbeat {\n}\n\n/** Message from the server to the client. */\nexport interface SystemMessage {\n readonly output?: { readonly $case: \"stdout\"; readonly stdout: string } | {\n readonly $case: \"stderr\";\n readonly stderr: string;\n } | undefined;\n}\n\nfunction createBaseCursor(): Cursor {\n return { orderKey: BigInt(\"0\"), uniqueKey: new Uint8Array(0) };\n}\n\nexport const Cursor = {\n encode(message: Cursor, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {\n if (message.orderKey !== undefined && message.orderKey !== BigInt(\"0\")) {\n if (BigInt.asUintN(64, message.orderKey) !== message.orderKey) {\n throw new globalThis.Error(\"value provided for field message.orderKey of type uint64 too large\");\n }\n writer.uint32(8).uint64(message.orderKey.toString());\n }\n if (message.uniqueKey !== undefined && message.uniqueKey.length !== 0) {\n writer.uint32(18).bytes(message.uniqueKey);\n }\n return writer;\n },\n\n decode(input: _m0.Reader | Uint8Array, length?: number): Cursor {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseCursor() as any;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 8) {\n break;\n }\n\n message.orderKey = longToBigint(reader.uint64() as Long);\n continue;\n case 2:\n if (tag !== 18) {\n break;\n }\n\n message.uniqueKey = reader.bytes();\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): Cursor {\n return {\n orderKey: isSet(object.orderKey) ? BigInt(object.orderKey) : BigInt(\"0\"),\n uniqueKey: isSet(object.uniqueKey) ? bytesFromBase64(object.uniqueKey) : new Uint8Array(0),\n };\n },\n\n toJSON(message: Cursor): unknown {\n const obj: any = {};\n if (message.orderKey !== undefined && message.orderKey !== BigInt(\"0\")) {\n obj.orderKey = message.orderKey.toString();\n }\n if (message.uniqueKey !== undefined && message.uniqueKey.length !== 0) {\n obj.uniqueKey = base64FromBytes(message.uniqueKey);\n }\n return obj;\n },\n\n create(base?: DeepPartial<Cursor>): Cursor {\n return Cursor.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<Cursor>): Cursor {\n const message = createBaseCursor() as any;\n message.orderKey = object.orderKey ?? BigInt(\"0\");\n message.uniqueKey = object.uniqueKey ?? new Uint8Array(0);\n return message;\n },\n};\n\nfunction createBaseStatusRequest(): StatusRequest {\n return {};\n}\n\nexport const StatusRequest = {\n encode(_: StatusRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {\n return writer;\n },\n\n decode(input: _m0.Reader | Uint8Array, length?: number): StatusRequest {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseStatusRequest() as any;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n\n fromJSON(_: any): StatusRequest {\n return {};\n },\n\n toJSON(_: StatusRequest): unknown {\n const obj: any = {};\n return obj;\n },\n\n create(base?: DeepPartial<StatusRequest>): StatusRequest {\n return StatusRequest.fromPartial(base ?? {});\n },\n fromPartial(_: DeepPartial<StatusRequest>): StatusRequest {\n const message = createBaseStatusRequest() as any;\n return message;\n },\n};\n\nfunction createBaseStatusResponse(): StatusResponse {\n return { currentHead: undefined, lastIngested: undefined, finalized: undefined, starting: undefined };\n}\n\nexport const StatusResponse = {\n encode(message: StatusResponse, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {\n if (message.currentHead !== undefined) {\n Cursor.encode(message.currentHead, writer.uint32(10).fork()).ldelim();\n }\n if (message.lastIngested !== undefined) {\n Cursor.encode(message.lastIngested, writer.uint32(18).fork()).ldelim();\n }\n if (message.finalized !== undefined) {\n Cursor.encode(message.finalized, writer.uint32(26).fork()).ldelim();\n }\n if (message.starting !== undefined) {\n Cursor.encode(message.starting, writer.uint32(34).fork()).ldelim();\n }\n return writer;\n },\n\n decode(input: _m0.Reader | Uint8Array, length?: number): StatusResponse {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseStatusResponse() as any;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n\n message.currentHead = Cursor.decode(reader, reader.uint32());\n continue;\n case 2:\n if (tag !== 18) {\n break;\n }\n\n message.lastIngested = Cursor.decode(reader, reader.uint32());\n continue;\n case 3:\n if (tag !== 26) {\n break;\n }\n\n message.finalized = Cursor.decode(reader, reader.uint32());\n continue;\n case 4:\n if (tag !== 34) {\n break;\n }\n\n message.starting = Cursor.decode(reader, reader.uint32());\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): StatusResponse {\n return {\n currentHead: isSet(object.currentHead) ? Cursor.fromJSON(object.currentHead) : undefined,\n lastIngested: isSet(object.lastIngested) ? Cursor.fromJSON(object.lastIngested) : undefined,\n finalized: isSet(object.finalized) ? Cursor.fromJSON(object.finalized) : undefined,\n starting: isSet(object.starting) ? Cursor.fromJSON(object.starting) : undefined,\n };\n },\n\n toJSON(message: StatusResponse): unknown {\n const obj: any = {};\n if (message.currentHead !== undefined) {\n obj.currentHead = Cursor.toJSON(message.currentHead);\n }\n if (message.lastIngested !== undefined) {\n obj.lastIngested = Cursor.toJSON(message.lastIngested);\n }\n if (message.finalized !== undefined) {\n obj.finalized = Cursor.toJSON(message.finalized);\n }\n if (message.starting !== undefined) {\n obj.starting = Cursor.toJSON(message.starting);\n }\n return obj;\n },\n\n create(base?: DeepPartial<StatusResponse>): StatusResponse {\n return StatusResponse.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<StatusResponse>): StatusResponse {\n const message = createBaseStatusResponse() as any;\n message.currentHead = (object.currentHead !== undefined && object.currentHead !== null)\n ? Cursor.fromPartial(object.currentHead)\n : undefined;\n message.lastIngested = (object.lastIngested !== undefined && object.lastIngested !== null)\n ? Cursor.fromPartial(object.lastIngested)\n : undefined;\n message.finalized = (object.finalized !== undefined && object.finalized !== null)\n ? Cursor.fromPartial(object.finalized)\n : undefined;\n message.starting = (object.starting !== undefined && object.starting !== null)\n ? Cursor.fromPartial(object.starting)\n : undefined;\n return message;\n },\n};\n\nfunction createBaseStreamDataRequest(): StreamDataRequest {\n return { startingCursor: undefined, finality: undefined, filter: [], heartbeatInterval: undefined };\n}\n\nexport const StreamDataRequest = {\n encode(message: StreamDataRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {\n if (message.startingCursor !== undefined) {\n Cursor.encode(message.startingCursor, writer.uint32(10).fork()).ldelim();\n }\n if (message.finality !== undefined) {\n writer.uint32(16).int32(message.finality);\n }\n if (message.filter !== undefined && message.filter.length !== 0) {\n for (const v of message.filter) {\n writer.uint32(26).bytes(v!);\n }\n }\n if (message.heartbeatInterval !== undefined) {\n Duration.encode(message.heartbeatInterval, writer.uint32(34).fork()).ldelim();\n }\n return writer;\n },\n\n decode(input: _m0.Reader | Uint8Array, length?: number): StreamDataRequest {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseStreamDataRequest() as any;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n\n message.startingCursor = Cursor.decode(reader, reader.uint32());\n continue;\n case 2:\n if (tag !== 16) {\n break;\n }\n\n message.finality = reader.int32() as any;\n continue;\n case 3:\n if (tag !== 26) {\n break;\n }\n\n message.filter!.push(reader.bytes());\n continue;\n case 4:\n if (tag !== 34) {\n break;\n }\n\n message.heartbeatInterval = Duration.decode(reader, reader.uint32());\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): StreamDataRequest {\n return {\n startingCursor: isSet(object.startingCursor) ? Cursor.fromJSON(object.startingCursor) : undefined,\n finality: isSet(object.finality) ? dataFinalityFromJSON(object.finality) : undefined,\n filter: globalThis.Array.isArray(object?.filter) ? object.filter.map((e: any) => bytesFromBase64(e)) : [],\n heartbeatInterval: isSet(object.heartbeatInterval) ? Duration.fromJSON(object.heartbeatInterval) : undefined,\n };\n },\n\n toJSON(message: StreamDataRequest): unknown {\n const obj: any = {};\n if (message.startingCursor !== undefined) {\n obj.startingCursor = Cursor.toJSON(message.startingCursor);\n }\n if (message.finality !== undefined) {\n obj.finality = dataFinalityToJSON(message.finality);\n }\n if (message.filter?.length) {\n obj.filter = message.filter.map((e) => base64FromBytes(e));\n }\n if (message.heartbeatInterval !== undefined) {\n obj.heartbeatInterval = Duration.toJSON(message.heartbeatInterval);\n }\n return obj;\n },\n\n create(base?: DeepPartial<StreamDataRequest>): StreamDataRequest {\n return StreamDataRequest.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<StreamDataRequest>): StreamDataRequest {\n const message = createBaseStreamDataRequest() as any;\n message.startingCursor = (object.startingCursor !== undefined && object.startingCursor !== null)\n ? Cursor.fromPartial(object.startingCursor)\n : undefined;\n message.finality = object.finality ?? undefined;\n message.filter = object.filter?.map((e) => e) || [];\n message.heartbeatInterval = (object.heartbeatInterval !== undefined && object.heartbeatInterval !== null)\n ? Duration.fromPartial(object.heartbeatInterval)\n : undefined;\n return message;\n },\n};\n\nfunction createBaseStreamDataResponse(): StreamDataResponse {\n return { message: undefined };\n}\n\nexport const StreamDataResponse = {\n encode(message: StreamDataResponse, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {\n switch (message.message?.$case) {\n case \"data\":\n Data.encode(message.message.data, writer.uint32(10).fork()).ldelim();\n break;\n case \"invalidate\":\n Invalidate.encode(message.message.invalidate, writer.uint32(18).fork()).ldelim();\n break;\n case \"finalize\":\n Finalize.encode(message.message.finalize, writer.uint32(26).fork()).ldelim();\n break;\n case \"heartbeat\":\n Heartbeat.encode(message.message.heartbeat, writer.uint32(34).fork()).ldelim();\n break;\n case \"systemMessage\":\n SystemMessage.encode(message.message.systemMessage, writer.uint32(42).fork()).ldelim();\n break;\n }\n return writer;\n },\n\n decode(input: _m0.Reader | Uint8Array, length?: number): StreamDataResponse {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseStreamDataResponse() as any;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n\n message.message = { $case: \"data\", data: Data.decode(reader, reader.uint32()) };\n continue;\n case 2:\n if (tag !== 18) {\n break;\n }\n\n message.message = { $case: \"invalidate\", invalidate: Invalidate.decode(reader, reader.uint32()) };\n continue;\n case 3:\n if (tag !== 26) {\n break;\n }\n\n message.message = { $case: \"finalize\", finalize: Finalize.decode(reader, reader.uint32()) };\n continue;\n case 4:\n if (tag !== 34) {\n break;\n }\n\n message.message = { $case: \"heartbeat\", heartbeat: Heartbeat.decode(reader, reader.uint32()) };\n continue;\n case 5:\n if (tag !== 42) {\n break;\n }\n\n message.message = { $case: \"systemMessage\", systemMessage: SystemMessage.decode(reader, reader.uint32()) };\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): StreamDataResponse {\n return {\n message: isSet(object.data)\n ? { $case: \"data\", data: Data.fromJSON(object.data) }\n : isSet(object.invalidate)\n ? { $case: \"invalidate\", invalidate: Invalidate.fromJSON(object.invalidate) }\n : isSet(object.finalize)\n ? { $case: \"finalize\", finalize: Finalize.fromJSON(object.finalize) }\n : isSet(object.heartbeat)\n ? { $case: \"heartbeat\", heartbeat: Heartbeat.fromJSON(object.heartbeat) }\n : isSet(object.systemMessage)\n ? { $case: \"systemMessage\", systemMessage: SystemMessage.fromJSON(object.systemMessage) }\n : undefined,\n };\n },\n\n toJSON(message: StreamDataResponse): unknown {\n const obj: any = {};\n if (message.message?.$case === \"data\") {\n obj.data = Data.toJSON(message.message.data);\n }\n if (message.message?.$case === \"invalidate\") {\n obj.invalidate = Invalidate.toJSON(message.message.invalidate);\n }\n if (message.message?.$case === \"finalize\") {\n obj.finalize = Finalize.toJSON(message.message.finalize);\n }\n if (message.message?.$case === \"heartbeat\") {\n obj.heartbeat = Heartbeat.toJSON(message.message.heartbeat);\n }\n if (message.message?.$case === \"systemMessage\") {\n obj.systemMessage = SystemMessage.toJSON(message.message.systemMessage);\n }\n return obj;\n },\n\n create(base?: DeepPartial<StreamDataResponse>): StreamDataResponse {\n return StreamDataResponse.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<StreamDataResponse>): StreamDataResponse {\n const message = createBaseStreamDataResponse() as any;\n if (object.message?.$case === \"data\" && object.message?.data !== undefined && object.message?.data !== null) {\n message.message = { $case: \"data\", data: Data.fromPartial(object.message.data) };\n }\n if (\n object.message?.$case === \"invalidate\" &&\n object.message?.invalidate !== undefined &&\n object.message?.invalidate !== null\n ) {\n message.message = { $case: \"invalidate\", invalidate: Invalidate.fromPartial(object.message.invalidate) };\n }\n if (\n object.message?.$case === \"finalize\" &&\n object.message?.finalize !== undefined &&\n object.message?.finalize !== null\n ) {\n message.message = { $case: \"finalize\", finalize: Finalize.fromPartial(object.message.finalize) };\n }\n if (\n object.message?.$case === \"heartbeat\" &&\n object.message?.heartbeat !== undefined &&\n object.message?.heartbeat !== null\n ) {\n message.message = { $case: \"heartbeat\", heartbeat: Heartbeat.fromPartial(object.message.heartbeat) };\n }\n if (\n object.message?.$case === \"systemMessage\" &&\n object.message?.systemMessage !== undefined &&\n object.message?.systemMessage !== null\n ) {\n message.message = {\n $case: \"systemMessage\",\n systemMessage: SystemMessage.fromPartial(object.message.systemMessage),\n };\n }\n return message;\n },\n};\n\nfunction createBaseInvalidate(): Invalidate {\n return { cursor: undefined, removed: [] };\n}\n\nexport const Invalidate = {\n encode(message: Invalidate, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {\n if (message.cursor !== undefined) {\n Cursor.encode(message.cursor, writer.uint32(10).fork()).ldelim();\n }\n if (message.removed !== undefined && message.removed.length !== 0) {\n for (const v of message.removed) {\n Cursor.encode(v!, writer.uint32(18).fork()).ldelim();\n }\n }\n return writer;\n },\n\n decode(input: _m0.Reader | Uint8Array, length?: number): Invalidate {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseInvalidate() as any;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n\n message.cursor = Cursor.decode(reader, reader.uint32());\n continue;\n case 2:\n if (tag !== 18) {\n break;\n }\n\n message.removed!.push(Cursor.decode(reader, reader.uint32()));\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): Invalidate {\n return {\n cursor: isSet(object.cursor) ? Cursor.fromJSON(object.cursor) : undefined,\n removed: globalThis.Array.isArray(object?.removed) ? object.removed.map((e: any) => Cursor.fromJSON(e)) : [],\n };\n },\n\n toJSON(message: Invalidate): unknown {\n const obj: any = {};\n if (message.cursor !== undefined) {\n obj.cursor = Cursor.toJSON(message.cursor);\n }\n if (message.removed?.length) {\n obj.removed = message.removed.map((e) => Cursor.toJSON(e));\n }\n return obj;\n },\n\n create(base?: DeepPartial<Invalidate>): Invalidate {\n return Invalidate.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<Invalidate>): Invalidate {\n const message = createBaseInvalidate() as any;\n message.cursor = (object.cursor !== undefined && object.cursor !== null)\n ? Cursor.fromPartial(object.cursor)\n : undefined;\n message.removed = object.removed?.map((e) => Cursor.fromPartial(e)) || [];\n return message;\n },\n};\n\nfunction createBaseFinalize(): Finalize {\n return { cursor: undefined };\n}\n\nexport const Finalize = {\n encode(message: Finalize, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {\n if (message.cursor !== undefined) {\n Cursor.encode(message.cursor, writer.uint32(10).fork()).ldelim();\n }\n return writer;\n },\n\n decode(input: _m0.Reader | Uint8Array, length?: number): Finalize {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseFinalize() as any;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n\n message.cursor = Cursor.decode(reader, reader.uint32());\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): Finalize {\n return { cursor: isSet(object.cursor) ? Cursor.fromJSON(object.cursor) : undefined };\n },\n\n toJSON(message: Finalize): unknown {\n const obj: any = {};\n if (message.cursor !== undefined) {\n obj.cursor = Cursor.toJSON(message.cursor);\n }\n return obj;\n },\n\n create(base?: DeepPartial<Finalize>): Finalize {\n return Finalize.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<Finalize>): Finalize {\n const message = createBaseFinalize() as any;\n message.cursor = (object.cursor !== undefined && object.cursor !== null)\n ? Cursor.fromPartial(object.cursor)\n : undefined;\n return message;\n },\n};\n\nfunction createBaseData(): Data {\n return { cursor: undefined, endCursor: undefined, finality: 0, data: [], production: 0 };\n}\n\nexport const Data = {\n encode(message: Data, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {\n if (message.cursor !== undefined) {\n Cursor.encode(message.cursor, writer.uint32(10).fork()).ldelim();\n }\n if (message.endCursor !== undefined) {\n Cursor.encode(message.endCursor, writer.uint32(18).fork()).ldelim();\n }\n if (message.finality !== undefined && message.finality !== 0) {\n writer.uint32(24).int32(message.finality);\n }\n if (message.data !== undefined && message.data.length !== 0) {\n for (const v of message.data) {\n writer.uint32(34).bytes(v!);\n }\n }\n if (message.production !== undefined && message.production !== 0) {\n writer.uint32(40).int32(message.production);\n }\n return writer;\n },\n\n decode(input: _m0.Reader | Uint8Array, length?: number): Data {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseData() as any;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n\n message.cursor = Cursor.decode(reader, reader.uint32());\n continue;\n case 2:\n if (tag !== 18) {\n break;\n }\n\n message.endCursor = Cursor.decode(reader, reader.uint32());\n continue;\n case 3:\n if (tag !== 24) {\n break;\n }\n\n message.finality = reader.int32() as any;\n continue;\n case 4:\n if (tag !== 34) {\n break;\n }\n\n message.data!.push(reader.bytes());\n continue;\n case 5:\n if (tag !== 40) {\n break;\n }\n\n message.production = reader.int32() as any;\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): Data {\n return {\n cursor: isSet(object.cursor) ? Cursor.fromJSON(object.cursor) : undefined,\n endCursor: isSet(object.endCursor) ? Cursor.fromJSON(object.endCursor) : undefined,\n finality: isSet(object.finality) ? dataFinalityFromJSON(object.finality) : 0,\n data: globalThis.Array.isArray(object?.data) ? object.data.map((e: any) => bytesFromBase64(e)) : [],\n production: isSet(object.production) ? dataProductionFromJSON(object.production) : 0,\n };\n },\n\n toJSON(message: Data): unknown {\n const obj: any = {};\n if (message.cursor !== undefined) {\n obj.cursor = Cursor.toJSON(message.cursor);\n }\n if (message.endCursor !== undefined) {\n obj.endCursor = Cursor.toJSON(message.endCursor);\n }\n if (message.finality !== undefined && message.finality !== 0) {\n obj.finality = dataFinalityToJSON(message.finality);\n }\n if (message.data?.length) {\n obj.data = message.data.map((e) => base64FromBytes(e));\n }\n if (message.production !== undefined && message.production !== 0) {\n obj.production = dataProductionToJSON(message.production);\n }\n return obj;\n },\n\n create(base?: DeepPartial<Data>): Data {\n return Data.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<Data>): Data {\n const message = createBaseData() as any;\n message.cursor = (object.cursor !== undefined && object.cursor !== null)\n ? Cursor.fromPartial(object.cursor)\n : undefined;\n message.endCursor = (object.endCursor !== undefined && object.endCursor !== null)\n ? Cursor.fromPartial(object.endCursor)\n : undefined;\n message.finality = object.finality ?? 0;\n message.data = object.data?.map((e) => e) || [];\n message.production = object.production ?? 0;\n return message;\n },\n};\n\nfunction createBaseHeartbeat(): Heartbeat {\n return {};\n}\n\nexport const Heartbeat = {\n encode(_: Heartbeat, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {\n return writer;\n },\n\n decode(input: _m0.Reader | Uint8Array, length?: number): Heartbeat {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseHeartbeat() as any;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n\n fromJSON(_: any): Heartbeat {\n return {};\n },\n\n toJSON(_: Heartbeat): unknown {\n const obj: any = {};\n return obj;\n },\n\n create(base?: DeepPartial<Heartbeat>): Heartbeat {\n return Heartbeat.fromPartial(base ?? {});\n },\n fromPartial(_: DeepPartial<Heartbeat>): Heartbeat {\n const message = createBaseHeartbeat() as any;\n return message;\n },\n};\n\nfunction createBaseSystemMessage(): SystemMessage {\n return { output: undefined };\n}\n\nexport const SystemMessage = {\n encode(message: SystemMessage, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {\n switch (message.output?.$case) {\n case \"stdout\":\n writer.uint32(10).string(message.output.stdout);\n break;\n case \"stderr\":\n writer.uint32(18).string(message.output.stderr);\n break;\n }\n return writer;\n },\n\n decode(input: _m0.Reader | Uint8Array, length?: number): SystemMessage {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseSystemMessage() as any;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n\n message.output = { $case: \"stdout\", stdout: reader.string() };\n continue;\n case 2:\n if (tag !== 18) {\n break;\n }\n\n message.output = { $case: \"stderr\", stderr: reader.string() };\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): SystemMessage {\n return {\n output: isSet(object.stdout)\n ? { $case: \"stdout\", stdout: globalThis.String(object.stdout) }\n : isSet(object.stderr)\n ? { $case: \"stderr\", stderr: globalThis.String(object.stderr) }\n : undefined,\n };\n },\n\n toJSON(message: SystemMessage): unknown {\n const obj: any = {};\n if (message.output?.$case === \"stdout\") {\n obj.stdout = message.output.stdout;\n }\n if (message.output?.$case === \"stderr\") {\n obj.stderr = message.output.stderr;\n }\n return obj;\n },\n\n create(base?: DeepPartial<SystemMessage>): SystemMessage {\n return SystemMessage.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<SystemMessage>): SystemMessage {\n const message = createBaseSystemMessage() as any;\n if (object.output?.$case === \"stdout\" && object.output?.stdout !== undefined && object.output?.stdout !== null) {\n message.output = { $case: \"stdout\", stdout: object.output.stdout };\n }\n if (object.output?.$case === \"stderr\" && object.output?.stderr !== undefined && object.output?.stderr !== null) {\n message.output = { $case: \"stderr\", stderr: object.output.stderr };\n }\n return message;\n },\n};\n\nexport type DnaStreamDefinition = typeof DnaStreamDefinition;\nexport const DnaStreamDefinition = {\n name: \"DnaStream\",\n fullName: \"dna.v2.stream.DnaStream\",\n methods: {\n /** Stream data from the server. */\n streamData: {\n name: \"StreamData\",\n requestType: StreamDataRequest,\n requestStream: false,\n responseType: StreamDataResponse,\n responseStream: true,\n options: {},\n },\n /** Get DNA server status. */\n status: {\n name: \"Status\",\n requestType: StatusRequest,\n requestStream: false,\n responseType: StatusResponse,\n responseStream: false,\n options: {},\n },\n },\n} as const;\n\nexport interface DnaStreamServiceImplementation<CallContextExt = {}> {\n /** Stream data from the server. */\n streamData(\n request: StreamDataRequest,\n context: CallContext & CallContextExt,\n ): ServerStreamingMethodResult<DeepPartial<StreamDataResponse>>;\n /** Get DNA server status. */\n status(request: StatusRequest, context: CallContext & CallContextExt): Promise<DeepPartial<StatusResponse>>;\n}\n\nexport interface DnaStreamClient<CallOptionsExt = {}> {\n /** Stream data from the server. */\n streamData(\n request: DeepPartial<StreamDataRequest>,\n options?: CallOptions & CallOptionsExt,\n ): AsyncIterable<StreamDataResponse>;\n /** Get DNA server status. */\n status(request: DeepPartial<StatusRequest>, options?: CallOptions & CallOptionsExt): Promise<StatusResponse>;\n}\n\nfunction bytesFromBase64(b64: string): Uint8Array {\n if ((globalThis as any).Buffer) {\n return Uint8Array.from(globalThis.Buffer.from(b64, \"base64\"));\n } else {\n const bin = globalThis.atob(b64);\n const arr = new Uint8Array(bin.length);\n for (let i = 0; i < bin.length; ++i) {\n arr[i] = bin.charCodeAt(i);\n }\n return arr;\n }\n}\n\nfunction base64FromBytes(arr: Uint8Array): string {\n if ((globalThis as any).Buffer) {\n return globalThis.Buffer.from(arr).toString(\"base64\");\n } else {\n const bin: string[] = [];\n arr.forEach((byte) => {\n bin.push(globalThis.String.fromCharCode(byte));\n });\n return globalThis.btoa(bin.join(\"\"));\n }\n}\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | bigint | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n : T extends { readonly $case: string }\n ? { [K in keyof Omit<T, \"$case\">]?: DeepPartial<T[K]> } & { readonly $case: T[\"$case\"] }\n : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n : Partial<T>;\n\nfunction longToBigint(long: Long) {\n return BigInt(long.toString());\n}\n\nif (_m0.util.Long !== Long) {\n _m0.util.Long = Long as any;\n _m0.configure();\n}\n\nfunction isSet(value: any): boolean {\n return value !== null && value !== undefined;\n}\n\nexport type ServerStreamingMethodResult<Response> = { [Symbol.asyncIterator](): AsyncIterator<Response, void> };\n","// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n// protoc-gen-ts_proto v1.176.0\n// protoc unknown\n// source: testing.proto\n\n/* eslint-disable */\nimport _m0 from \"protobufjs/minimal.js\";\n\nexport const protobufPackage = \"dna.v2.testing\";\n\nexport interface MockFilter {\n readonly filter?: string | undefined;\n}\n\nexport interface MockBlock {\n readonly data?: string | undefined;\n}\n\nfunction createBaseMockFilter(): MockFilter {\n return { filter: undefined };\n}\n\nexport const MockFilter = {\n encode(message: MockFilter, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {\n if (message.filter !== undefined) {\n writer.uint32(10).string(message.filter);\n }\n return writer;\n },\n\n decode(input: _m0.Reader | Uint8Array, length?: number): MockFilter {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMockFilter() as any;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n\n message.filter = reader.string();\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): MockFilter {\n return { filter: isSet(object.filter) ? globalThis.String(object.filter) : undefined };\n },\n\n toJSON(message: MockFilter): unknown {\n const obj: any = {};\n if (message.filter !== undefined) {\n obj.filter = message.filter;\n }\n return obj;\n },\n\n create(base?: DeepPartial<MockFilter>): MockFilter {\n return MockFilter.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<MockFilter>): MockFilter {\n const message = createBaseMockFilter() as any;\n message.filter = object.filter ?? undefined;\n return message;\n },\n};\n\nfunction createBaseMockBlock(): MockBlock {\n return { data: undefined };\n}\n\nexport const MockBlock = {\n encode(message: MockBlock, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {\n if (message.data !== undefined) {\n writer.uint32(10).string(message.data);\n }\n return writer;\n },\n\n decode(input: _m0.Reader | Uint8Array, length?: number): MockBlock {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMockBlock() as any;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n\n message.data = reader.string();\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): MockBlock {\n return { data: isSet(object.data) ? globalThis.String(object.data) : undefined };\n },\n\n toJSON(message: MockBlock): unknown {\n const obj: any = {};\n if (message.data !== undefined) {\n obj.data = message.data;\n }\n return obj;\n },\n\n create(base?: DeepPartial<MockBlock>): MockBlock {\n return MockBlock.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<MockBlock>): MockBlock {\n const message = createBaseMockBlock() as any;\n message.data = object.data ?? undefined;\n return message;\n },\n};\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | bigint | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n : T extends { readonly $case: string }\n ? { [K in keyof Omit<T, \"$case\">]?: DeepPartial<T[K]> } & { readonly $case: T[\"$case\"] }\n : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n : Partial<T>;\n\nfunction isSet(value: any): boolean {\n return value !== null && value !== undefined;\n}\n","import { hexToBytes, toHex } from \"viem\";\n\nimport type { Codec, CodecProto, CodecType } from \"./codec\";\nimport * as proto from \"./proto\";\n\n/** Bytes encoded as a 0x-prefixed hex string. */\nexport type Bytes = `0x${string}`;\n\nexport const BytesFromUint8Array: Codec<\n `0x${string}` | undefined,\n Uint8Array | undefined\n> = {\n decode(value) {\n if (!value || value?.length === 0) {\n return undefined;\n }\n return toHex(value);\n },\n encode(value) {\n if (value === undefined) {\n return new Uint8Array(0);\n }\n return hexToBytes(value);\n },\n};\n\ntype _CursorApp = {\n orderKey: bigint;\n uniqueKey?: Bytes | undefined;\n};\n\ntype _CursorProto = proto.stream.Cursor;\n\n/** Represent a position in the stream. */\nexport const Cursor: Codec<_CursorApp, _CursorProto> = {\n decode(value) {\n const { orderKey, uniqueKey } = value;\n return {\n orderKey: orderKey ?? 0n,\n uniqueKey: BytesFromUint8Array.decode(uniqueKey),\n };\n },\n encode(value) {\n const { orderKey, uniqueKey } = value;\n return {\n orderKey,\n uniqueKey: BytesFromUint8Array.encode(uniqueKey),\n };\n },\n};\n/** The Cursor protobuf representation. */\nexport type CursorProto = CodecProto<typeof Cursor>;\nexport type Cursor = CodecType<typeof Cursor>;\nexport const createCursor = (props: Cursor) => props;\n\nexport const CursorFromBytes: Codec<Cursor, Uint8Array> = {\n encode(value) {\n const { orderKey, uniqueKey } = value;\n return proto.stream.Cursor.encode({\n orderKey,\n uniqueKey: BytesFromUint8Array.encode(uniqueKey),\n }).finish();\n },\n decode(value) {\n const { orderKey, uniqueKey } = proto.stream.Cursor.decode(value);\n return {\n orderKey: orderKey ?? 0n,\n uniqueKey: BytesFromUint8Array.decode(uniqueKey),\n };\n },\n};\n\nexport function isCursor(value: unknown): value is Cursor {\n if (typeof value !== \"object\" || value === null) {\n return false;\n }\n\n const { orderKey, uniqueKey } = value as Cursor;\n\n return (\n typeof orderKey === \"bigint\" &&\n (uniqueKey === null ||\n uniqueKey === undefined ||\n (typeof uniqueKey === \"string\" && uniqueKey.startsWith(\"0x\")))\n );\n}\n\n/** Normalize a cursor.\n *\n * The challenge is that the `Cursor` validator expects `uniqueKey` to be either a `0x${string}`\n * or not present at all. Setting the field to `undefined` will result in a validation error.\n *\n * @param cursor The cursor to normalize\n */\nexport function normalizeCursor(cursor: {\n orderKey: bigint;\n uniqueKey: string | null;\n}): Cursor {\n if (cursor.uniqueKey !== null && cursor.uniqueKey.length > 0) {\n const uniqueKey = cursor.uniqueKey as `0x${string}`;\n return {\n orderKey: BigInt(cursor.orderKey),\n uniqueKey,\n };\n }\n\n return {\n orderKey: BigInt(cursor.orderKey),\n };\n}\n","import {\n ArrayCodec,\n BigIntCodec,\n type Codec,\n type CodecType,\n MessageCodec,\n MutableArrayCodec,\n NumberCodec,\n OneOfCodec,\n OptionalCodec,\n StringCodec,\n UndefinedCodec,\n} from \"./codec\";\nimport { Cursor } from \"./common\";\nimport * as proto from \"./proto\";\n\n/** Data finality. */\nexport const DataFinality: Codec<\n \"finalized\" | \"accepted\" | \"pending\" | \"unknown\",\n proto.stream.DataFinality\n> = {\n encode(x) {\n const enumMap = {\n finalized: proto.stream.DataFinality.FINALIZED,\n accepted: proto.stream.DataFinality.ACCEPTED,\n pending: proto.stream.DataFinality.PENDING,\n unknown: proto.stream.DataFinality.UNKNOWN,\n };\n\n return enumMap[x] ?? proto.stream.DataFinality.UNKNOWN;\n },\n decode(p) {\n const enumMap = {\n [proto.stream.DataFinality.FINALIZED]: \"finalized\",\n [proto.stream.DataFinality.ACCEPTED]: \"accepted\",\n [proto.stream.DataFinality.PENDING]: \"pending\",\n [proto.stream.DataFinality.UNKNOWN]: \"unknown\",\n [proto.stream.DataFinality.UNRECOGNIZED]: \"unknown\",\n } as const;\n\n return enumMap[p] ?? \"unknown\";\n },\n};\n\nexport type DataFinality = CodecType<typeof DataFinality>;\n\n/** Data production mode. */\nexport const DataProduction: Codec<\n \"backfill\" | \"live\" | \"unknown\",\n proto.stream.DataProduction\n> = {\n encode(x) {\n switch (x) {\n case \"backfill\":\n return proto.stream.DataProduction.BACKFILL;\n case \"live\":\n return proto.stream.DataProduction.LIVE;\n case \"unknown\":\n return proto.stream.DataProduction.UNKNOWN;\n default:\n return proto.stream.DataProduction.UNRECOGNIZED;\n }\n },\n decode(p) {\n const enumMap = {\n [proto.stream.DataProduction.BACKFILL]: \"backfill\",\n [proto.stream.DataProduction.LIVE]: \"live\",\n [proto.stream.DataProduction.UNKNOWN]: \"unknown\",\n [proto.stream.DataProduction.UNRECOGNIZED]: \"unknown\",\n } as const;\n\n return enumMap[p] ?? \"unknown\";\n },\n};\n\nexport type DataProduction = CodecType<typeof DataProduction>;\n\nexport const DurationCodec = MessageCodec({\n seconds: BigIntCodec,\n nanos: NumberCodec,\n});\n\nexport type Duration = CodecType<typeof DurationCodec>;\n\n/** Create a `StreamDataRequest` with the given filter schema. */\nexport const StreamDataRequest = <TA>(filter: Codec<TA, Uint8Array>) =>\n MessageCodec({\n finality: OptionalCodec(DataFinality),\n startingCursor: OptionalCodec(Cursor),\n filter: MutableArrayCodec(filter),\n heartbeatInterval: OptionalCodec(DurationCodec),\n });\n\nexport type StreamDataRequest<TA> = CodecType<\n ReturnType<typeof StreamDataRequest<TA>>\n>;\n\nexport const Invalidate = MessageCodec({\n cursor: OptionalCodec(Cursor),\n});\n\nexport type Invalidate = CodecType<typeof Invalidate>;\n\nexport const Finalize = MessageCodec({\n cursor: OptionalCodec(Cursor),\n});\n\nexport type Finalize = CodecType<typeof Finalize>;\n\n// TODO: Double check this; This is a hack to make the heartbeat variant undefined\nexport const Heartbeat = UndefinedCodec;\n\nexport type Heartbeat = CodecType<typeof Heartbeat>;\n\nexport const StdOut = StringCodec;\n\nexport type StdOut = CodecType<typeof StdOut>;\n\nexport const StdErr = StringCodec;\n\nexport type StdErr = CodecType<typeof StdErr>;\n\nexport const SystemMessage = MessageCodec({\n output: OneOfCodec({\n stdout: StdOut,\n stderr: StdErr,\n }),\n});\n\nexport type SystemMessage = CodecType<typeof SystemMessage>;\n\nconst _DataOrNull = <TA>(\n schema: Codec<TA, Uint8Array>,\n): Codec<TA | null, Uint8Array> => ({\n encode(x) {\n if (x === null) {\n return new Uint8Array();\n }\n return schema.encode(x);\n },\n decode(p) {\n if (p.length === 0) {\n return null;\n }\n return schema.decode(p);\n },\n});\n\nexport const Data = <TA>(schema: Codec<TA | null, Uint8Array>) =>\n MessageCodec({\n cursor: OptionalCodec(Cursor),\n endCursor: Cursor,\n finality: DataFinality,\n production: DataProduction,\n data: ArrayCodec(_DataOrNull(schema)),\n });\n\nexport type Data<TA> = CodecType<ReturnType<typeof Data<TA>>>;\n\nexport const StreamDataResponse = <TA>(schema: Codec<TA | null, Uint8Array>) =>\n OneOfCodec({\n data: Data(schema),\n invalidate: Invalidate,\n finalize: Finalize,\n heartbeat: Heartbeat,\n systemMessage: SystemMessage,\n });\n\nexport const ResponseWithoutData = OneOfCodec({\n invalidate: Invalidate,\n finalize: Finalize,\n heartbeat: Heartbeat,\n systemMessage: SystemMessage,\n});\n\nexport type ResponseWithoutData = CodecType<typeof ResponseWithoutData>;\n\nexport type StreamDataResponse<TA> = CodecType<\n ReturnType<typeof StreamDataResponse<TA>>\n>;\n","import type { Codec } from \"./codec\";\nimport { StreamDataRequest, StreamDataResponse } from \"./stream\";\n\n/** Configure a DNA stream. */\nexport class StreamConfig<TFilter, TBlock> {\n private request;\n private response;\n\n constructor(\n private filter: Codec<TFilter, Uint8Array>,\n private block: Codec<TBlock | null, Uint8Array>,\n public mergeFilter: (a: TFilter, b: TFilter) => TFilter,\n public name: string,\n ) {\n this.request = StreamDataRequest(this.filter);\n this.response = StreamDataResponse(this.block);\n }\n\n /** Filter schema. */\n get Filter() {\n return this.filter;\n }\n\n /** Block schema. */\n get Block() {\n return this.block;\n }\n\n /** Stream data request schema. */\n get Request() {\n return this.request;\n }\n\n /** Stream data response schema. */\n get Response() {\n return this.response;\n }\n}\n"],"names":["_m0","longToBigint","isSet","Long","protobufPackage","DataFinality","DataProduction","Cursor","StreamDataRequest","StreamDataResponse","Data","Invalidate","Finalize","Heartbeat","SystemMessage","toHex","hexToBytes","proto.stream.Cursor","proto.stream.DataFinality","proto.stream.DataProduction","MessageCodec","BigIntCodec","NumberCodec","OptionalCodec","MutableArrayCodec","UndefinedCodec","StringCodec","OneOfCodec","ArrayCodec"],"mappings":"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"}
|
|
@@ -1310,3 +1310,4 @@ class StreamConfig {
|
|
|
1310
1310
|
}
|
|
1311
1311
|
|
|
1312
1312
|
export { BytesFromUint8Array as B, Cursor as C, DnaStreamDefinition as D, Finalize as F, Heartbeat as H, Invalidate as I, MockFilter as M, ResponseWithoutData as R, StreamDataResponse as S, CursorFromBytes as a, DataFinality as b, createCursor as c, DataProduction as d, DurationCodec as e, StreamDataRequest as f, StdOut as g, StdErr as h, isCursor as i, SystemMessage as j, Data as k, StreamConfig as l, MockBlock as m, normalizeCursor as n, stream as s, testing as t };
|
|
1313
|
+
//# sourceMappingURL=protocol.68fdd897.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protocol.68fdd897.mjs","sources":["../../src/proto/google/protobuf/duration.ts","../../src/proto/stream.ts","../../src/proto/testing.ts","../../src/common.ts","../../src/stream.ts","../../src/config.ts"],"sourcesContent":["// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n// protoc-gen-ts_proto v1.176.0\n// protoc unknown\n// source: google/protobuf/duration.proto\n\n/* eslint-disable */\nimport Long from \"long\";\nimport _m0 from \"protobufjs/minimal.js\";\n\nexport const protobufPackage = \"google.protobuf\";\n\n/**\n * A Duration represents a signed, fixed-length span of time represented\n * as a count of seconds and fractions of seconds at nanosecond\n * resolution. It is independent of any calendar and concepts like \"day\"\n * or \"month\". It is related to Timestamp in that the difference between\n * two Timestamp values is a Duration and it can be added or subtracted\n * from a Timestamp. Range is approximately +-10,000 years.\n *\n * # Examples\n *\n * Example 1: Compute Duration from two Timestamps in pseudo code.\n *\n * Timestamp start = ...;\n * Timestamp end = ...;\n * Duration duration = ...;\n *\n * duration.seconds = end.seconds - start.seconds;\n * duration.nanos = end.nanos - start.nanos;\n *\n * if (duration.seconds < 0 && duration.nanos > 0) {\n * duration.seconds += 1;\n * duration.nanos -= 1000000000;\n * } else if (duration.seconds > 0 && duration.nanos < 0) {\n * duration.seconds -= 1;\n * duration.nanos += 1000000000;\n * }\n *\n * Example 2: Compute Timestamp from Timestamp + Duration in pseudo code.\n *\n * Timestamp start = ...;\n * Duration duration = ...;\n * Timestamp end = ...;\n *\n * end.seconds = start.seconds + duration.seconds;\n * end.nanos = start.nanos + duration.nanos;\n *\n * if (end.nanos < 0) {\n * end.seconds -= 1;\n * end.nanos += 1000000000;\n * } else if (end.nanos >= 1000000000) {\n * end.seconds += 1;\n * end.nanos -= 1000000000;\n * }\n *\n * Example 3: Compute Duration from datetime.timedelta in Python.\n *\n * td = datetime.timedelta(days=3, minutes=10)\n * duration = Duration()\n * duration.FromTimedelta(td)\n *\n * # JSON Mapping\n *\n * In JSON format, the Duration type is encoded as a string rather than an\n * object, where the string ends in the suffix \"s\" (indicating seconds) and\n * is preceded by the number of seconds, with nanoseconds expressed as\n * fractional seconds. For example, 3 seconds with 0 nanoseconds should be\n * encoded in JSON format as \"3s\", while 3 seconds and 1 nanosecond should\n * be expressed in JSON format as \"3.000000001s\", and 3 seconds and 1\n * microsecond should be expressed in JSON format as \"3.000001s\".\n */\nexport interface Duration {\n /**\n * Signed seconds of the span of time. Must be from -315,576,000,000\n * to +315,576,000,000 inclusive. Note: these bounds are computed from:\n * 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years\n */\n readonly seconds?:\n | bigint\n | undefined;\n /**\n * Signed fractions of a second at nanosecond resolution of the span\n * of time. Durations less than one second are represented with a 0\n * `seconds` field and a positive or negative `nanos` field. For durations\n * of one second or more, a non-zero value for the `nanos` field must be\n * of the same sign as the `seconds` field. Must be from -999,999,999\n * to +999,999,999 inclusive.\n */\n readonly nanos?: number | undefined;\n}\n\nfunction createBaseDuration(): Duration {\n return { seconds: BigInt(\"0\"), nanos: 0 };\n}\n\nexport const Duration = {\n encode(message: Duration, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {\n if (message.seconds !== undefined && message.seconds !== BigInt(\"0\")) {\n if (BigInt.asIntN(64, message.seconds) !== message.seconds) {\n throw new globalThis.Error(\"value provided for field message.seconds of type int64 too large\");\n }\n writer.uint32(8).int64(message.seconds.toString());\n }\n if (message.nanos !== undefined && message.nanos !== 0) {\n writer.uint32(16).int32(message.nanos);\n }\n return writer;\n },\n\n decode(input: _m0.Reader | Uint8Array, length?: number): Duration {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseDuration() as any;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 8) {\n break;\n }\n\n message.seconds = longToBigint(reader.int64() as Long);\n continue;\n case 2:\n if (tag !== 16) {\n break;\n }\n\n message.nanos = reader.int32();\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): Duration {\n return {\n seconds: isSet(object.seconds) ? BigInt(object.seconds) : BigInt(\"0\"),\n nanos: isSet(object.nanos) ? globalThis.Number(object.nanos) : 0,\n };\n },\n\n toJSON(message: Duration): unknown {\n const obj: any = {};\n if (message.seconds !== undefined && message.seconds !== BigInt(\"0\")) {\n obj.seconds = message.seconds.toString();\n }\n if (message.nanos !== undefined && message.nanos !== 0) {\n obj.nanos = Math.round(message.nanos);\n }\n return obj;\n },\n\n create(base?: DeepPartial<Duration>): Duration {\n return Duration.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<Duration>): Duration {\n const message = createBaseDuration() as any;\n message.seconds = object.seconds ?? BigInt(\"0\");\n message.nanos = object.nanos ?? 0;\n return message;\n },\n};\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | bigint | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n : T extends { readonly $case: string }\n ? { [K in keyof Omit<T, \"$case\">]?: DeepPartial<T[K]> } & { readonly $case: T[\"$case\"] }\n : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n : Partial<T>;\n\nfunction longToBigint(long: Long) {\n return BigInt(long.toString());\n}\n\nif (_m0.util.Long !== Long) {\n _m0.util.Long = Long as any;\n _m0.configure();\n}\n\nfunction isSet(value: any): boolean {\n return value !== null && value !== undefined;\n}\n","// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n// protoc-gen-ts_proto v1.176.0\n// protoc unknown\n// source: stream.proto\n\n/* eslint-disable */\nimport Long from \"long\";\nimport { type CallContext, type CallOptions } from \"nice-grpc-common\";\nimport _m0 from \"protobufjs/minimal.js\";\nimport { Duration } from \"./google/protobuf/duration.js\";\n\nexport const protobufPackage = \"dna.v2.stream\";\n\n/** Apibara DNA server V2 */\n\n/** Data finality. */\nexport enum DataFinality {\n UNKNOWN = 0,\n /** PENDING - Data was received, but is not part of the canonical chain yet. */\n PENDING = 1,\n /** ACCEPTED - Data is now part of the canonical chain, but could still be invalidated. */\n ACCEPTED = 2,\n /** FINALIZED - Data is finalized and cannot be invalidated. */\n FINALIZED = 3,\n UNRECOGNIZED = -1,\n}\n\nexport function dataFinalityFromJSON(object: any): DataFinality {\n switch (object) {\n case 0:\n case \"DATA_FINALITY_UNKNOWN\":\n return DataFinality.UNKNOWN;\n case 1:\n case \"DATA_FINALITY_PENDING\":\n return DataFinality.PENDING;\n case 2:\n case \"DATA_FINALITY_ACCEPTED\":\n return DataFinality.ACCEPTED;\n case 3:\n case \"DATA_FINALITY_FINALIZED\":\n return DataFinality.FINALIZED;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return DataFinality.UNRECOGNIZED;\n }\n}\n\nexport function dataFinalityToJSON(object: DataFinality): string {\n switch (object) {\n case DataFinality.UNKNOWN:\n return \"DATA_FINALITY_UNKNOWN\";\n case DataFinality.PENDING:\n return \"DATA_FINALITY_PENDING\";\n case DataFinality.ACCEPTED:\n return \"DATA_FINALITY_ACCEPTED\";\n case DataFinality.FINALIZED:\n return \"DATA_FINALITY_FINALIZED\";\n case DataFinality.UNRECOGNIZED:\n default:\n return \"UNRECOGNIZED\";\n }\n}\n\n/** Data production mode. */\nexport enum DataProduction {\n UNKNOWN = 0,\n /** BACKFILL - Data is for a backfilled block. */\n BACKFILL = 1,\n /** LIVE - Data is for a live block. */\n LIVE = 2,\n UNRECOGNIZED = -1,\n}\n\nexport function dataProductionFromJSON(object: any): DataProduction {\n switch (object) {\n case 0:\n case \"DATA_PRODUCTION_UNKNOWN\":\n return DataProduction.UNKNOWN;\n case 1:\n case \"DATA_PRODUCTION_BACKFILL\":\n return DataProduction.BACKFILL;\n case 2:\n case \"DATA_PRODUCTION_LIVE\":\n return DataProduction.LIVE;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return DataProduction.UNRECOGNIZED;\n }\n}\n\nexport function dataProductionToJSON(object: DataProduction): string {\n switch (object) {\n case DataProduction.UNKNOWN:\n return \"DATA_PRODUCTION_UNKNOWN\";\n case DataProduction.BACKFILL:\n return \"DATA_PRODUCTION_BACKFILL\";\n case DataProduction.LIVE:\n return \"DATA_PRODUCTION_LIVE\";\n case DataProduction.UNRECOGNIZED:\n default:\n return \"UNRECOGNIZED\";\n }\n}\n\n/** A cursor over the stream content. */\nexport interface Cursor {\n /**\n * Key used for ordering messages in the stream.\n *\n * This is usually the block or slot number.\n */\n readonly orderKey?:\n | bigint\n | undefined;\n /**\n * Key used to discriminate branches in the stream.\n *\n * This is usually the hash of the block.\n */\n readonly uniqueKey?: Uint8Array | undefined;\n}\n\n/** Request for the `Status` method. */\nexport interface StatusRequest {\n}\n\n/** Response for the `Status` method. */\nexport interface StatusResponse {\n /** The current head of the chain. */\n readonly currentHead?:\n | Cursor\n | undefined;\n /** The last cursor that was ingested by the node. */\n readonly lastIngested?:\n | Cursor\n | undefined;\n /** The finalized block. */\n readonly finalized?:\n | Cursor\n | undefined;\n /** The first block available. */\n readonly starting?: Cursor | undefined;\n}\n\n/** Request data to be streamed. */\nexport interface StreamDataRequest {\n /**\n * Cursor to start streaming from.\n *\n * If not specified, starts from the genesis block.\n * Use the data's message `end_cursor` field to resume streaming.\n */\n readonly startingCursor?:\n | Cursor\n | undefined;\n /**\n * Return data with the specified finality.\n *\n * If not specified, defaults to `DATA_FINALITY_ACCEPTED`.\n */\n readonly finality?:\n | DataFinality\n | undefined;\n /** Filters used to generate data. */\n readonly filter?:\n | readonly Uint8Array[]\n | undefined;\n /**\n * Heartbeat interval.\n *\n * Value must be between 10 and 60 seconds.\n * If not specified, defaults to 30 seconds.\n */\n readonly heartbeatInterval?: Duration | undefined;\n}\n\n/** Contains a piece of streamed data. */\nexport interface StreamDataResponse {\n readonly message?:\n | { readonly $case: \"data\"; readonly data: Data }\n | { readonly $case: \"invalidate\"; readonly invalidate: Invalidate }\n | { readonly $case: \"finalize\"; readonly finalize: Finalize }\n | { readonly $case: \"heartbeat\"; readonly heartbeat: Heartbeat }\n | { readonly $case: \"systemMessage\"; readonly systemMessage: SystemMessage }\n | undefined;\n}\n\n/** Invalidate data after the given cursor. */\nexport interface Invalidate {\n /**\n * The cursor of the new chain's head.\n *\n * All data after this cursor should be considered invalid.\n */\n readonly cursor?:\n | Cursor\n | undefined;\n /** List of blocks that were removed from the chain. */\n readonly removed?: readonly Cursor[] | undefined;\n}\n\n/** Move the finalized block forward. */\nexport interface Finalize {\n /**\n * The cursor of the new finalized block.\n *\n * All data before this cursor cannot be invalidated.\n */\n readonly cursor?: Cursor | undefined;\n}\n\n/**\n * A single block of data.\n *\n * If the request specified multiple filters, the `data` field will contain the\n * data for each filter in the same order as the filters were specified in the\n * request.\n * If no data is available for a filter, the corresponding data field will be\n * empty.\n */\nexport interface Data {\n /** Cursor that generated this block of data. */\n readonly cursor?:\n | Cursor\n | undefined;\n /** Block cursor. Use this cursor to resume the stream. */\n readonly endCursor?:\n | Cursor\n | undefined;\n /** The finality status of the block. */\n readonly finality?:\n | DataFinality\n | undefined;\n /**\n * The block data.\n *\n * This message contains chain-specific data serialized using protobuf.\n */\n readonly data?:\n | readonly Uint8Array[]\n | undefined;\n /** The production mode of the block. */\n readonly production?: DataProduction | undefined;\n}\n\n/** Sent to clients to check if stream is still connected. */\nexport interface Heartbeat {\n}\n\n/** Message from the server to the client. */\nexport interface SystemMessage {\n readonly output?: { readonly $case: \"stdout\"; readonly stdout: string } | {\n readonly $case: \"stderr\";\n readonly stderr: string;\n } | undefined;\n}\n\nfunction createBaseCursor(): Cursor {\n return { orderKey: BigInt(\"0\"), uniqueKey: new Uint8Array(0) };\n}\n\nexport const Cursor = {\n encode(message: Cursor, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {\n if (message.orderKey !== undefined && message.orderKey !== BigInt(\"0\")) {\n if (BigInt.asUintN(64, message.orderKey) !== message.orderKey) {\n throw new globalThis.Error(\"value provided for field message.orderKey of type uint64 too large\");\n }\n writer.uint32(8).uint64(message.orderKey.toString());\n }\n if (message.uniqueKey !== undefined && message.uniqueKey.length !== 0) {\n writer.uint32(18).bytes(message.uniqueKey);\n }\n return writer;\n },\n\n decode(input: _m0.Reader | Uint8Array, length?: number): Cursor {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseCursor() as any;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 8) {\n break;\n }\n\n message.orderKey = longToBigint(reader.uint64() as Long);\n continue;\n case 2:\n if (tag !== 18) {\n break;\n }\n\n message.uniqueKey = reader.bytes();\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): Cursor {\n return {\n orderKey: isSet(object.orderKey) ? BigInt(object.orderKey) : BigInt(\"0\"),\n uniqueKey: isSet(object.uniqueKey) ? bytesFromBase64(object.uniqueKey) : new Uint8Array(0),\n };\n },\n\n toJSON(message: Cursor): unknown {\n const obj: any = {};\n if (message.orderKey !== undefined && message.orderKey !== BigInt(\"0\")) {\n obj.orderKey = message.orderKey.toString();\n }\n if (message.uniqueKey !== undefined && message.uniqueKey.length !== 0) {\n obj.uniqueKey = base64FromBytes(message.uniqueKey);\n }\n return obj;\n },\n\n create(base?: DeepPartial<Cursor>): Cursor {\n return Cursor.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<Cursor>): Cursor {\n const message = createBaseCursor() as any;\n message.orderKey = object.orderKey ?? BigInt(\"0\");\n message.uniqueKey = object.uniqueKey ?? new Uint8Array(0);\n return message;\n },\n};\n\nfunction createBaseStatusRequest(): StatusRequest {\n return {};\n}\n\nexport const StatusRequest = {\n encode(_: StatusRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {\n return writer;\n },\n\n decode(input: _m0.Reader | Uint8Array, length?: number): StatusRequest {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseStatusRequest() as any;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n\n fromJSON(_: any): StatusRequest {\n return {};\n },\n\n toJSON(_: StatusRequest): unknown {\n const obj: any = {};\n return obj;\n },\n\n create(base?: DeepPartial<StatusRequest>): StatusRequest {\n return StatusRequest.fromPartial(base ?? {});\n },\n fromPartial(_: DeepPartial<StatusRequest>): StatusRequest {\n const message = createBaseStatusRequest() as any;\n return message;\n },\n};\n\nfunction createBaseStatusResponse(): StatusResponse {\n return { currentHead: undefined, lastIngested: undefined, finalized: undefined, starting: undefined };\n}\n\nexport const StatusResponse = {\n encode(message: StatusResponse, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {\n if (message.currentHead !== undefined) {\n Cursor.encode(message.currentHead, writer.uint32(10).fork()).ldelim();\n }\n if (message.lastIngested !== undefined) {\n Cursor.encode(message.lastIngested, writer.uint32(18).fork()).ldelim();\n }\n if (message.finalized !== undefined) {\n Cursor.encode(message.finalized, writer.uint32(26).fork()).ldelim();\n }\n if (message.starting !== undefined) {\n Cursor.encode(message.starting, writer.uint32(34).fork()).ldelim();\n }\n return writer;\n },\n\n decode(input: _m0.Reader | Uint8Array, length?: number): StatusResponse {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseStatusResponse() as any;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n\n message.currentHead = Cursor.decode(reader, reader.uint32());\n continue;\n case 2:\n if (tag !== 18) {\n break;\n }\n\n message.lastIngested = Cursor.decode(reader, reader.uint32());\n continue;\n case 3:\n if (tag !== 26) {\n break;\n }\n\n message.finalized = Cursor.decode(reader, reader.uint32());\n continue;\n case 4:\n if (tag !== 34) {\n break;\n }\n\n message.starting = Cursor.decode(reader, reader.uint32());\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): StatusResponse {\n return {\n currentHead: isSet(object.currentHead) ? Cursor.fromJSON(object.currentHead) : undefined,\n lastIngested: isSet(object.lastIngested) ? Cursor.fromJSON(object.lastIngested) : undefined,\n finalized: isSet(object.finalized) ? Cursor.fromJSON(object.finalized) : undefined,\n starting: isSet(object.starting) ? Cursor.fromJSON(object.starting) : undefined,\n };\n },\n\n toJSON(message: StatusResponse): unknown {\n const obj: any = {};\n if (message.currentHead !== undefined) {\n obj.currentHead = Cursor.toJSON(message.currentHead);\n }\n if (message.lastIngested !== undefined) {\n obj.lastIngested = Cursor.toJSON(message.lastIngested);\n }\n if (message.finalized !== undefined) {\n obj.finalized = Cursor.toJSON(message.finalized);\n }\n if (message.starting !== undefined) {\n obj.starting = Cursor.toJSON(message.starting);\n }\n return obj;\n },\n\n create(base?: DeepPartial<StatusResponse>): StatusResponse {\n return StatusResponse.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<StatusResponse>): StatusResponse {\n const message = createBaseStatusResponse() as any;\n message.currentHead = (object.currentHead !== undefined && object.currentHead !== null)\n ? Cursor.fromPartial(object.currentHead)\n : undefined;\n message.lastIngested = (object.lastIngested !== undefined && object.lastIngested !== null)\n ? Cursor.fromPartial(object.lastIngested)\n : undefined;\n message.finalized = (object.finalized !== undefined && object.finalized !== null)\n ? Cursor.fromPartial(object.finalized)\n : undefined;\n message.starting = (object.starting !== undefined && object.starting !== null)\n ? Cursor.fromPartial(object.starting)\n : undefined;\n return message;\n },\n};\n\nfunction createBaseStreamDataRequest(): StreamDataRequest {\n return { startingCursor: undefined, finality: undefined, filter: [], heartbeatInterval: undefined };\n}\n\nexport const StreamDataRequest = {\n encode(message: StreamDataRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {\n if (message.startingCursor !== undefined) {\n Cursor.encode(message.startingCursor, writer.uint32(10).fork()).ldelim();\n }\n if (message.finality !== undefined) {\n writer.uint32(16).int32(message.finality);\n }\n if (message.filter !== undefined && message.filter.length !== 0) {\n for (const v of message.filter) {\n writer.uint32(26).bytes(v!);\n }\n }\n if (message.heartbeatInterval !== undefined) {\n Duration.encode(message.heartbeatInterval, writer.uint32(34).fork()).ldelim();\n }\n return writer;\n },\n\n decode(input: _m0.Reader | Uint8Array, length?: number): StreamDataRequest {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseStreamDataRequest() as any;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n\n message.startingCursor = Cursor.decode(reader, reader.uint32());\n continue;\n case 2:\n if (tag !== 16) {\n break;\n }\n\n message.finality = reader.int32() as any;\n continue;\n case 3:\n if (tag !== 26) {\n break;\n }\n\n message.filter!.push(reader.bytes());\n continue;\n case 4:\n if (tag !== 34) {\n break;\n }\n\n message.heartbeatInterval = Duration.decode(reader, reader.uint32());\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): StreamDataRequest {\n return {\n startingCursor: isSet(object.startingCursor) ? Cursor.fromJSON(object.startingCursor) : undefined,\n finality: isSet(object.finality) ? dataFinalityFromJSON(object.finality) : undefined,\n filter: globalThis.Array.isArray(object?.filter) ? object.filter.map((e: any) => bytesFromBase64(e)) : [],\n heartbeatInterval: isSet(object.heartbeatInterval) ? Duration.fromJSON(object.heartbeatInterval) : undefined,\n };\n },\n\n toJSON(message: StreamDataRequest): unknown {\n const obj: any = {};\n if (message.startingCursor !== undefined) {\n obj.startingCursor = Cursor.toJSON(message.startingCursor);\n }\n if (message.finality !== undefined) {\n obj.finality = dataFinalityToJSON(message.finality);\n }\n if (message.filter?.length) {\n obj.filter = message.filter.map((e) => base64FromBytes(e));\n }\n if (message.heartbeatInterval !== undefined) {\n obj.heartbeatInterval = Duration.toJSON(message.heartbeatInterval);\n }\n return obj;\n },\n\n create(base?: DeepPartial<StreamDataRequest>): StreamDataRequest {\n return StreamDataRequest.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<StreamDataRequest>): StreamDataRequest {\n const message = createBaseStreamDataRequest() as any;\n message.startingCursor = (object.startingCursor !== undefined && object.startingCursor !== null)\n ? Cursor.fromPartial(object.startingCursor)\n : undefined;\n message.finality = object.finality ?? undefined;\n message.filter = object.filter?.map((e) => e) || [];\n message.heartbeatInterval = (object.heartbeatInterval !== undefined && object.heartbeatInterval !== null)\n ? Duration.fromPartial(object.heartbeatInterval)\n : undefined;\n return message;\n },\n};\n\nfunction createBaseStreamDataResponse(): StreamDataResponse {\n return { message: undefined };\n}\n\nexport const StreamDataResponse = {\n encode(message: StreamDataResponse, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {\n switch (message.message?.$case) {\n case \"data\":\n Data.encode(message.message.data, writer.uint32(10).fork()).ldelim();\n break;\n case \"invalidate\":\n Invalidate.encode(message.message.invalidate, writer.uint32(18).fork()).ldelim();\n break;\n case \"finalize\":\n Finalize.encode(message.message.finalize, writer.uint32(26).fork()).ldelim();\n break;\n case \"heartbeat\":\n Heartbeat.encode(message.message.heartbeat, writer.uint32(34).fork()).ldelim();\n break;\n case \"systemMessage\":\n SystemMessage.encode(message.message.systemMessage, writer.uint32(42).fork()).ldelim();\n break;\n }\n return writer;\n },\n\n decode(input: _m0.Reader | Uint8Array, length?: number): StreamDataResponse {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseStreamDataResponse() as any;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n\n message.message = { $case: \"data\", data: Data.decode(reader, reader.uint32()) };\n continue;\n case 2:\n if (tag !== 18) {\n break;\n }\n\n message.message = { $case: \"invalidate\", invalidate: Invalidate.decode(reader, reader.uint32()) };\n continue;\n case 3:\n if (tag !== 26) {\n break;\n }\n\n message.message = { $case: \"finalize\", finalize: Finalize.decode(reader, reader.uint32()) };\n continue;\n case 4:\n if (tag !== 34) {\n break;\n }\n\n message.message = { $case: \"heartbeat\", heartbeat: Heartbeat.decode(reader, reader.uint32()) };\n continue;\n case 5:\n if (tag !== 42) {\n break;\n }\n\n message.message = { $case: \"systemMessage\", systemMessage: SystemMessage.decode(reader, reader.uint32()) };\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): StreamDataResponse {\n return {\n message: isSet(object.data)\n ? { $case: \"data\", data: Data.fromJSON(object.data) }\n : isSet(object.invalidate)\n ? { $case: \"invalidate\", invalidate: Invalidate.fromJSON(object.invalidate) }\n : isSet(object.finalize)\n ? { $case: \"finalize\", finalize: Finalize.fromJSON(object.finalize) }\n : isSet(object.heartbeat)\n ? { $case: \"heartbeat\", heartbeat: Heartbeat.fromJSON(object.heartbeat) }\n : isSet(object.systemMessage)\n ? { $case: \"systemMessage\", systemMessage: SystemMessage.fromJSON(object.systemMessage) }\n : undefined,\n };\n },\n\n toJSON(message: StreamDataResponse): unknown {\n const obj: any = {};\n if (message.message?.$case === \"data\") {\n obj.data = Data.toJSON(message.message.data);\n }\n if (message.message?.$case === \"invalidate\") {\n obj.invalidate = Invalidate.toJSON(message.message.invalidate);\n }\n if (message.message?.$case === \"finalize\") {\n obj.finalize = Finalize.toJSON(message.message.finalize);\n }\n if (message.message?.$case === \"heartbeat\") {\n obj.heartbeat = Heartbeat.toJSON(message.message.heartbeat);\n }\n if (message.message?.$case === \"systemMessage\") {\n obj.systemMessage = SystemMessage.toJSON(message.message.systemMessage);\n }\n return obj;\n },\n\n create(base?: DeepPartial<StreamDataResponse>): StreamDataResponse {\n return StreamDataResponse.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<StreamDataResponse>): StreamDataResponse {\n const message = createBaseStreamDataResponse() as any;\n if (object.message?.$case === \"data\" && object.message?.data !== undefined && object.message?.data !== null) {\n message.message = { $case: \"data\", data: Data.fromPartial(object.message.data) };\n }\n if (\n object.message?.$case === \"invalidate\" &&\n object.message?.invalidate !== undefined &&\n object.message?.invalidate !== null\n ) {\n message.message = { $case: \"invalidate\", invalidate: Invalidate.fromPartial(object.message.invalidate) };\n }\n if (\n object.message?.$case === \"finalize\" &&\n object.message?.finalize !== undefined &&\n object.message?.finalize !== null\n ) {\n message.message = { $case: \"finalize\", finalize: Finalize.fromPartial(object.message.finalize) };\n }\n if (\n object.message?.$case === \"heartbeat\" &&\n object.message?.heartbeat !== undefined &&\n object.message?.heartbeat !== null\n ) {\n message.message = { $case: \"heartbeat\", heartbeat: Heartbeat.fromPartial(object.message.heartbeat) };\n }\n if (\n object.message?.$case === \"systemMessage\" &&\n object.message?.systemMessage !== undefined &&\n object.message?.systemMessage !== null\n ) {\n message.message = {\n $case: \"systemMessage\",\n systemMessage: SystemMessage.fromPartial(object.message.systemMessage),\n };\n }\n return message;\n },\n};\n\nfunction createBaseInvalidate(): Invalidate {\n return { cursor: undefined, removed: [] };\n}\n\nexport const Invalidate = {\n encode(message: Invalidate, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {\n if (message.cursor !== undefined) {\n Cursor.encode(message.cursor, writer.uint32(10).fork()).ldelim();\n }\n if (message.removed !== undefined && message.removed.length !== 0) {\n for (const v of message.removed) {\n Cursor.encode(v!, writer.uint32(18).fork()).ldelim();\n }\n }\n return writer;\n },\n\n decode(input: _m0.Reader | Uint8Array, length?: number): Invalidate {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseInvalidate() as any;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n\n message.cursor = Cursor.decode(reader, reader.uint32());\n continue;\n case 2:\n if (tag !== 18) {\n break;\n }\n\n message.removed!.push(Cursor.decode(reader, reader.uint32()));\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): Invalidate {\n return {\n cursor: isSet(object.cursor) ? Cursor.fromJSON(object.cursor) : undefined,\n removed: globalThis.Array.isArray(object?.removed) ? object.removed.map((e: any) => Cursor.fromJSON(e)) : [],\n };\n },\n\n toJSON(message: Invalidate): unknown {\n const obj: any = {};\n if (message.cursor !== undefined) {\n obj.cursor = Cursor.toJSON(message.cursor);\n }\n if (message.removed?.length) {\n obj.removed = message.removed.map((e) => Cursor.toJSON(e));\n }\n return obj;\n },\n\n create(base?: DeepPartial<Invalidate>): Invalidate {\n return Invalidate.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<Invalidate>): Invalidate {\n const message = createBaseInvalidate() as any;\n message.cursor = (object.cursor !== undefined && object.cursor !== null)\n ? Cursor.fromPartial(object.cursor)\n : undefined;\n message.removed = object.removed?.map((e) => Cursor.fromPartial(e)) || [];\n return message;\n },\n};\n\nfunction createBaseFinalize(): Finalize {\n return { cursor: undefined };\n}\n\nexport const Finalize = {\n encode(message: Finalize, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {\n if (message.cursor !== undefined) {\n Cursor.encode(message.cursor, writer.uint32(10).fork()).ldelim();\n }\n return writer;\n },\n\n decode(input: _m0.Reader | Uint8Array, length?: number): Finalize {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseFinalize() as any;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n\n message.cursor = Cursor.decode(reader, reader.uint32());\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): Finalize {\n return { cursor: isSet(object.cursor) ? Cursor.fromJSON(object.cursor) : undefined };\n },\n\n toJSON(message: Finalize): unknown {\n const obj: any = {};\n if (message.cursor !== undefined) {\n obj.cursor = Cursor.toJSON(message.cursor);\n }\n return obj;\n },\n\n create(base?: DeepPartial<Finalize>): Finalize {\n return Finalize.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<Finalize>): Finalize {\n const message = createBaseFinalize() as any;\n message.cursor = (object.cursor !== undefined && object.cursor !== null)\n ? Cursor.fromPartial(object.cursor)\n : undefined;\n return message;\n },\n};\n\nfunction createBaseData(): Data {\n return { cursor: undefined, endCursor: undefined, finality: 0, data: [], production: 0 };\n}\n\nexport const Data = {\n encode(message: Data, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {\n if (message.cursor !== undefined) {\n Cursor.encode(message.cursor, writer.uint32(10).fork()).ldelim();\n }\n if (message.endCursor !== undefined) {\n Cursor.encode(message.endCursor, writer.uint32(18).fork()).ldelim();\n }\n if (message.finality !== undefined && message.finality !== 0) {\n writer.uint32(24).int32(message.finality);\n }\n if (message.data !== undefined && message.data.length !== 0) {\n for (const v of message.data) {\n writer.uint32(34).bytes(v!);\n }\n }\n if (message.production !== undefined && message.production !== 0) {\n writer.uint32(40).int32(message.production);\n }\n return writer;\n },\n\n decode(input: _m0.Reader | Uint8Array, length?: number): Data {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseData() as any;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n\n message.cursor = Cursor.decode(reader, reader.uint32());\n continue;\n case 2:\n if (tag !== 18) {\n break;\n }\n\n message.endCursor = Cursor.decode(reader, reader.uint32());\n continue;\n case 3:\n if (tag !== 24) {\n break;\n }\n\n message.finality = reader.int32() as any;\n continue;\n case 4:\n if (tag !== 34) {\n break;\n }\n\n message.data!.push(reader.bytes());\n continue;\n case 5:\n if (tag !== 40) {\n break;\n }\n\n message.production = reader.int32() as any;\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): Data {\n return {\n cursor: isSet(object.cursor) ? Cursor.fromJSON(object.cursor) : undefined,\n endCursor: isSet(object.endCursor) ? Cursor.fromJSON(object.endCursor) : undefined,\n finality: isSet(object.finality) ? dataFinalityFromJSON(object.finality) : 0,\n data: globalThis.Array.isArray(object?.data) ? object.data.map((e: any) => bytesFromBase64(e)) : [],\n production: isSet(object.production) ? dataProductionFromJSON(object.production) : 0,\n };\n },\n\n toJSON(message: Data): unknown {\n const obj: any = {};\n if (message.cursor !== undefined) {\n obj.cursor = Cursor.toJSON(message.cursor);\n }\n if (message.endCursor !== undefined) {\n obj.endCursor = Cursor.toJSON(message.endCursor);\n }\n if (message.finality !== undefined && message.finality !== 0) {\n obj.finality = dataFinalityToJSON(message.finality);\n }\n if (message.data?.length) {\n obj.data = message.data.map((e) => base64FromBytes(e));\n }\n if (message.production !== undefined && message.production !== 0) {\n obj.production = dataProductionToJSON(message.production);\n }\n return obj;\n },\n\n create(base?: DeepPartial<Data>): Data {\n return Data.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<Data>): Data {\n const message = createBaseData() as any;\n message.cursor = (object.cursor !== undefined && object.cursor !== null)\n ? Cursor.fromPartial(object.cursor)\n : undefined;\n message.endCursor = (object.endCursor !== undefined && object.endCursor !== null)\n ? Cursor.fromPartial(object.endCursor)\n : undefined;\n message.finality = object.finality ?? 0;\n message.data = object.data?.map((e) => e) || [];\n message.production = object.production ?? 0;\n return message;\n },\n};\n\nfunction createBaseHeartbeat(): Heartbeat {\n return {};\n}\n\nexport const Heartbeat = {\n encode(_: Heartbeat, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {\n return writer;\n },\n\n decode(input: _m0.Reader | Uint8Array, length?: number): Heartbeat {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseHeartbeat() as any;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n\n fromJSON(_: any): Heartbeat {\n return {};\n },\n\n toJSON(_: Heartbeat): unknown {\n const obj: any = {};\n return obj;\n },\n\n create(base?: DeepPartial<Heartbeat>): Heartbeat {\n return Heartbeat.fromPartial(base ?? {});\n },\n fromPartial(_: DeepPartial<Heartbeat>): Heartbeat {\n const message = createBaseHeartbeat() as any;\n return message;\n },\n};\n\nfunction createBaseSystemMessage(): SystemMessage {\n return { output: undefined };\n}\n\nexport const SystemMessage = {\n encode(message: SystemMessage, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {\n switch (message.output?.$case) {\n case \"stdout\":\n writer.uint32(10).string(message.output.stdout);\n break;\n case \"stderr\":\n writer.uint32(18).string(message.output.stderr);\n break;\n }\n return writer;\n },\n\n decode(input: _m0.Reader | Uint8Array, length?: number): SystemMessage {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseSystemMessage() as any;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n\n message.output = { $case: \"stdout\", stdout: reader.string() };\n continue;\n case 2:\n if (tag !== 18) {\n break;\n }\n\n message.output = { $case: \"stderr\", stderr: reader.string() };\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): SystemMessage {\n return {\n output: isSet(object.stdout)\n ? { $case: \"stdout\", stdout: globalThis.String(object.stdout) }\n : isSet(object.stderr)\n ? { $case: \"stderr\", stderr: globalThis.String(object.stderr) }\n : undefined,\n };\n },\n\n toJSON(message: SystemMessage): unknown {\n const obj: any = {};\n if (message.output?.$case === \"stdout\") {\n obj.stdout = message.output.stdout;\n }\n if (message.output?.$case === \"stderr\") {\n obj.stderr = message.output.stderr;\n }\n return obj;\n },\n\n create(base?: DeepPartial<SystemMessage>): SystemMessage {\n return SystemMessage.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<SystemMessage>): SystemMessage {\n const message = createBaseSystemMessage() as any;\n if (object.output?.$case === \"stdout\" && object.output?.stdout !== undefined && object.output?.stdout !== null) {\n message.output = { $case: \"stdout\", stdout: object.output.stdout };\n }\n if (object.output?.$case === \"stderr\" && object.output?.stderr !== undefined && object.output?.stderr !== null) {\n message.output = { $case: \"stderr\", stderr: object.output.stderr };\n }\n return message;\n },\n};\n\nexport type DnaStreamDefinition = typeof DnaStreamDefinition;\nexport const DnaStreamDefinition = {\n name: \"DnaStream\",\n fullName: \"dna.v2.stream.DnaStream\",\n methods: {\n /** Stream data from the server. */\n streamData: {\n name: \"StreamData\",\n requestType: StreamDataRequest,\n requestStream: false,\n responseType: StreamDataResponse,\n responseStream: true,\n options: {},\n },\n /** Get DNA server status. */\n status: {\n name: \"Status\",\n requestType: StatusRequest,\n requestStream: false,\n responseType: StatusResponse,\n responseStream: false,\n options: {},\n },\n },\n} as const;\n\nexport interface DnaStreamServiceImplementation<CallContextExt = {}> {\n /** Stream data from the server. */\n streamData(\n request: StreamDataRequest,\n context: CallContext & CallContextExt,\n ): ServerStreamingMethodResult<DeepPartial<StreamDataResponse>>;\n /** Get DNA server status. */\n status(request: StatusRequest, context: CallContext & CallContextExt): Promise<DeepPartial<StatusResponse>>;\n}\n\nexport interface DnaStreamClient<CallOptionsExt = {}> {\n /** Stream data from the server. */\n streamData(\n request: DeepPartial<StreamDataRequest>,\n options?: CallOptions & CallOptionsExt,\n ): AsyncIterable<StreamDataResponse>;\n /** Get DNA server status. */\n status(request: DeepPartial<StatusRequest>, options?: CallOptions & CallOptionsExt): Promise<StatusResponse>;\n}\n\nfunction bytesFromBase64(b64: string): Uint8Array {\n if ((globalThis as any).Buffer) {\n return Uint8Array.from(globalThis.Buffer.from(b64, \"base64\"));\n } else {\n const bin = globalThis.atob(b64);\n const arr = new Uint8Array(bin.length);\n for (let i = 0; i < bin.length; ++i) {\n arr[i] = bin.charCodeAt(i);\n }\n return arr;\n }\n}\n\nfunction base64FromBytes(arr: Uint8Array): string {\n if ((globalThis as any).Buffer) {\n return globalThis.Buffer.from(arr).toString(\"base64\");\n } else {\n const bin: string[] = [];\n arr.forEach((byte) => {\n bin.push(globalThis.String.fromCharCode(byte));\n });\n return globalThis.btoa(bin.join(\"\"));\n }\n}\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | bigint | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n : T extends { readonly $case: string }\n ? { [K in keyof Omit<T, \"$case\">]?: DeepPartial<T[K]> } & { readonly $case: T[\"$case\"] }\n : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n : Partial<T>;\n\nfunction longToBigint(long: Long) {\n return BigInt(long.toString());\n}\n\nif (_m0.util.Long !== Long) {\n _m0.util.Long = Long as any;\n _m0.configure();\n}\n\nfunction isSet(value: any): boolean {\n return value !== null && value !== undefined;\n}\n\nexport type ServerStreamingMethodResult<Response> = { [Symbol.asyncIterator](): AsyncIterator<Response, void> };\n","// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n// protoc-gen-ts_proto v1.176.0\n// protoc unknown\n// source: testing.proto\n\n/* eslint-disable */\nimport _m0 from \"protobufjs/minimal.js\";\n\nexport const protobufPackage = \"dna.v2.testing\";\n\nexport interface MockFilter {\n readonly filter?: string | undefined;\n}\n\nexport interface MockBlock {\n readonly data?: string | undefined;\n}\n\nfunction createBaseMockFilter(): MockFilter {\n return { filter: undefined };\n}\n\nexport const MockFilter = {\n encode(message: MockFilter, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {\n if (message.filter !== undefined) {\n writer.uint32(10).string(message.filter);\n }\n return writer;\n },\n\n decode(input: _m0.Reader | Uint8Array, length?: number): MockFilter {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMockFilter() as any;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n\n message.filter = reader.string();\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): MockFilter {\n return { filter: isSet(object.filter) ? globalThis.String(object.filter) : undefined };\n },\n\n toJSON(message: MockFilter): unknown {\n const obj: any = {};\n if (message.filter !== undefined) {\n obj.filter = message.filter;\n }\n return obj;\n },\n\n create(base?: DeepPartial<MockFilter>): MockFilter {\n return MockFilter.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<MockFilter>): MockFilter {\n const message = createBaseMockFilter() as any;\n message.filter = object.filter ?? undefined;\n return message;\n },\n};\n\nfunction createBaseMockBlock(): MockBlock {\n return { data: undefined };\n}\n\nexport const MockBlock = {\n encode(message: MockBlock, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {\n if (message.data !== undefined) {\n writer.uint32(10).string(message.data);\n }\n return writer;\n },\n\n decode(input: _m0.Reader | Uint8Array, length?: number): MockBlock {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMockBlock() as any;\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n\n message.data = reader.string();\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): MockBlock {\n return { data: isSet(object.data) ? globalThis.String(object.data) : undefined };\n },\n\n toJSON(message: MockBlock): unknown {\n const obj: any = {};\n if (message.data !== undefined) {\n obj.data = message.data;\n }\n return obj;\n },\n\n create(base?: DeepPartial<MockBlock>): MockBlock {\n return MockBlock.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<MockBlock>): MockBlock {\n const message = createBaseMockBlock() as any;\n message.data = object.data ?? undefined;\n return message;\n },\n};\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | bigint | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n : T extends { readonly $case: string }\n ? { [K in keyof Omit<T, \"$case\">]?: DeepPartial<T[K]> } & { readonly $case: T[\"$case\"] }\n : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n : Partial<T>;\n\nfunction isSet(value: any): boolean {\n return value !== null && value !== undefined;\n}\n","import { hexToBytes, toHex } from \"viem\";\n\nimport type { Codec, CodecProto, CodecType } from \"./codec\";\nimport * as proto from \"./proto\";\n\n/** Bytes encoded as a 0x-prefixed hex string. */\nexport type Bytes = `0x${string}`;\n\nexport const BytesFromUint8Array: Codec<\n `0x${string}` | undefined,\n Uint8Array | undefined\n> = {\n decode(value) {\n if (!value || value?.length === 0) {\n return undefined;\n }\n return toHex(value);\n },\n encode(value) {\n if (value === undefined) {\n return new Uint8Array(0);\n }\n return hexToBytes(value);\n },\n};\n\ntype _CursorApp = {\n orderKey: bigint;\n uniqueKey?: Bytes | undefined;\n};\n\ntype _CursorProto = proto.stream.Cursor;\n\n/** Represent a position in the stream. */\nexport const Cursor: Codec<_CursorApp, _CursorProto> = {\n decode(value) {\n const { orderKey, uniqueKey } = value;\n return {\n orderKey: orderKey ?? 0n,\n uniqueKey: BytesFromUint8Array.decode(uniqueKey),\n };\n },\n encode(value) {\n const { orderKey, uniqueKey } = value;\n return {\n orderKey,\n uniqueKey: BytesFromUint8Array.encode(uniqueKey),\n };\n },\n};\n/** The Cursor protobuf representation. */\nexport type CursorProto = CodecProto<typeof Cursor>;\nexport type Cursor = CodecType<typeof Cursor>;\nexport const createCursor = (props: Cursor) => props;\n\nexport const CursorFromBytes: Codec<Cursor, Uint8Array> = {\n encode(value) {\n const { orderKey, uniqueKey } = value;\n return proto.stream.Cursor.encode({\n orderKey,\n uniqueKey: BytesFromUint8Array.encode(uniqueKey),\n }).finish();\n },\n decode(value) {\n const { orderKey, uniqueKey } = proto.stream.Cursor.decode(value);\n return {\n orderKey: orderKey ?? 0n,\n uniqueKey: BytesFromUint8Array.decode(uniqueKey),\n };\n },\n};\n\nexport function isCursor(value: unknown): value is Cursor {\n if (typeof value !== \"object\" || value === null) {\n return false;\n }\n\n const { orderKey, uniqueKey } = value as Cursor;\n\n return (\n typeof orderKey === \"bigint\" &&\n (uniqueKey === null ||\n uniqueKey === undefined ||\n (typeof uniqueKey === \"string\" && uniqueKey.startsWith(\"0x\")))\n );\n}\n\n/** Normalize a cursor.\n *\n * The challenge is that the `Cursor` validator expects `uniqueKey` to be either a `0x${string}`\n * or not present at all. Setting the field to `undefined` will result in a validation error.\n *\n * @param cursor The cursor to normalize\n */\nexport function normalizeCursor(cursor: {\n orderKey: bigint;\n uniqueKey: string | null;\n}): Cursor {\n if (cursor.uniqueKey !== null && cursor.uniqueKey.length > 0) {\n const uniqueKey = cursor.uniqueKey as `0x${string}`;\n return {\n orderKey: BigInt(cursor.orderKey),\n uniqueKey,\n };\n }\n\n return {\n orderKey: BigInt(cursor.orderKey),\n };\n}\n","import {\n ArrayCodec,\n BigIntCodec,\n type Codec,\n type CodecType,\n MessageCodec,\n MutableArrayCodec,\n NumberCodec,\n OneOfCodec,\n OptionalCodec,\n StringCodec,\n UndefinedCodec,\n} from \"./codec\";\nimport { Cursor } from \"./common\";\nimport * as proto from \"./proto\";\n\n/** Data finality. */\nexport const DataFinality: Codec<\n \"finalized\" | \"accepted\" | \"pending\" | \"unknown\",\n proto.stream.DataFinality\n> = {\n encode(x) {\n const enumMap = {\n finalized: proto.stream.DataFinality.FINALIZED,\n accepted: proto.stream.DataFinality.ACCEPTED,\n pending: proto.stream.DataFinality.PENDING,\n unknown: proto.stream.DataFinality.UNKNOWN,\n };\n\n return enumMap[x] ?? proto.stream.DataFinality.UNKNOWN;\n },\n decode(p) {\n const enumMap = {\n [proto.stream.DataFinality.FINALIZED]: \"finalized\",\n [proto.stream.DataFinality.ACCEPTED]: \"accepted\",\n [proto.stream.DataFinality.PENDING]: \"pending\",\n [proto.stream.DataFinality.UNKNOWN]: \"unknown\",\n [proto.stream.DataFinality.UNRECOGNIZED]: \"unknown\",\n } as const;\n\n return enumMap[p] ?? \"unknown\";\n },\n};\n\nexport type DataFinality = CodecType<typeof DataFinality>;\n\n/** Data production mode. */\nexport const DataProduction: Codec<\n \"backfill\" | \"live\" | \"unknown\",\n proto.stream.DataProduction\n> = {\n encode(x) {\n switch (x) {\n case \"backfill\":\n return proto.stream.DataProduction.BACKFILL;\n case \"live\":\n return proto.stream.DataProduction.LIVE;\n case \"unknown\":\n return proto.stream.DataProduction.UNKNOWN;\n default:\n return proto.stream.DataProduction.UNRECOGNIZED;\n }\n },\n decode(p) {\n const enumMap = {\n [proto.stream.DataProduction.BACKFILL]: \"backfill\",\n [proto.stream.DataProduction.LIVE]: \"live\",\n [proto.stream.DataProduction.UNKNOWN]: \"unknown\",\n [proto.stream.DataProduction.UNRECOGNIZED]: \"unknown\",\n } as const;\n\n return enumMap[p] ?? \"unknown\";\n },\n};\n\nexport type DataProduction = CodecType<typeof DataProduction>;\n\nexport const DurationCodec = MessageCodec({\n seconds: BigIntCodec,\n nanos: NumberCodec,\n});\n\nexport type Duration = CodecType<typeof DurationCodec>;\n\n/** Create a `StreamDataRequest` with the given filter schema. */\nexport const StreamDataRequest = <TA>(filter: Codec<TA, Uint8Array>) =>\n MessageCodec({\n finality: OptionalCodec(DataFinality),\n startingCursor: OptionalCodec(Cursor),\n filter: MutableArrayCodec(filter),\n heartbeatInterval: OptionalCodec(DurationCodec),\n });\n\nexport type StreamDataRequest<TA> = CodecType<\n ReturnType<typeof StreamDataRequest<TA>>\n>;\n\nexport const Invalidate = MessageCodec({\n cursor: OptionalCodec(Cursor),\n});\n\nexport type Invalidate = CodecType<typeof Invalidate>;\n\nexport const Finalize = MessageCodec({\n cursor: OptionalCodec(Cursor),\n});\n\nexport type Finalize = CodecType<typeof Finalize>;\n\n// TODO: Double check this; This is a hack to make the heartbeat variant undefined\nexport const Heartbeat = UndefinedCodec;\n\nexport type Heartbeat = CodecType<typeof Heartbeat>;\n\nexport const StdOut = StringCodec;\n\nexport type StdOut = CodecType<typeof StdOut>;\n\nexport const StdErr = StringCodec;\n\nexport type StdErr = CodecType<typeof StdErr>;\n\nexport const SystemMessage = MessageCodec({\n output: OneOfCodec({\n stdout: StdOut,\n stderr: StdErr,\n }),\n});\n\nexport type SystemMessage = CodecType<typeof SystemMessage>;\n\nconst _DataOrNull = <TA>(\n schema: Codec<TA, Uint8Array>,\n): Codec<TA | null, Uint8Array> => ({\n encode(x) {\n if (x === null) {\n return new Uint8Array();\n }\n return schema.encode(x);\n },\n decode(p) {\n if (p.length === 0) {\n return null;\n }\n return schema.decode(p);\n },\n});\n\nexport const Data = <TA>(schema: Codec<TA | null, Uint8Array>) =>\n MessageCodec({\n cursor: OptionalCodec(Cursor),\n endCursor: Cursor,\n finality: DataFinality,\n production: DataProduction,\n data: ArrayCodec(_DataOrNull(schema)),\n });\n\nexport type Data<TA> = CodecType<ReturnType<typeof Data<TA>>>;\n\nexport const StreamDataResponse = <TA>(schema: Codec<TA | null, Uint8Array>) =>\n OneOfCodec({\n data: Data(schema),\n invalidate: Invalidate,\n finalize: Finalize,\n heartbeat: Heartbeat,\n systemMessage: SystemMessage,\n });\n\nexport const ResponseWithoutData = OneOfCodec({\n invalidate: Invalidate,\n finalize: Finalize,\n heartbeat: Heartbeat,\n systemMessage: SystemMessage,\n});\n\nexport type ResponseWithoutData = CodecType<typeof ResponseWithoutData>;\n\nexport type StreamDataResponse<TA> = CodecType<\n ReturnType<typeof StreamDataResponse<TA>>\n>;\n","import type { Codec } from \"./codec\";\nimport { StreamDataRequest, StreamDataResponse } from \"./stream\";\n\n/** Configure a DNA stream. */\nexport class StreamConfig<TFilter, TBlock> {\n private request;\n private response;\n\n constructor(\n private filter: Codec<TFilter, Uint8Array>,\n private block: Codec<TBlock | null, Uint8Array>,\n public mergeFilter: (a: TFilter, b: TFilter) => TFilter,\n public name: string,\n ) {\n this.request = StreamDataRequest(this.filter);\n this.response = StreamDataResponse(this.block);\n }\n\n /** Filter schema. */\n get Filter() {\n return this.filter;\n }\n\n /** Block schema. */\n get Block() {\n return this.block;\n }\n\n /** Stream data request schema. */\n get Request() {\n return this.request;\n }\n\n /** Stream data response schema. */\n get Response() {\n return this.response;\n }\n}\n"],"names":["longToBigint","isSet","protobufPackage","DataFinality","DataProduction","Cursor","StreamDataRequest","StreamDataResponse","Data","Invalidate","Finalize","Heartbeat","SystemMessage","proto.stream.Cursor","proto.stream.DataFinality","proto.stream.DataProduction"],"mappings":"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"}
|
package/dist/testing/index.cjs
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../src/testing/client.ts","../../src/testing/mock.ts"],"sourcesContent":["import type { Client, ClientCallOptions, StreamDataOptions } from \"../client\";\nimport type { StatusRequest, StatusResponse } from \"../status\";\nimport type { StreamDataRequest, StreamDataResponse } from \"../stream\";\n\nexport class MockClient<TFilter, TBlock> implements Client<TFilter, TBlock> {\n constructor(\n private messageFactory: (\n request: StreamDataRequest<TFilter>,\n options?: StreamDataOptions,\n ) => (StreamDataResponse<TBlock> | Error)[],\n ) {}\n\n async status(\n request?: StatusRequest,\n options?: ClientCallOptions,\n ): Promise<StatusResponse> {\n throw new Error(\"Client.status is not implemented for VcrClient\");\n }\n\n streamData(request: StreamDataRequest<TFilter>, options?: StreamDataOptions) {\n const messages = this.messageFactory(request, options);\n\n return new StreamDataIterable(messages);\n }\n}\n\nexport class StreamDataIterable<TBlock> {\n constructor(private messages: (StreamDataResponse<TBlock> | Error)[]) {}\n\n [Symbol.asyncIterator](): AsyncIterator<StreamDataResponse<TBlock>> {\n let index = 0;\n const messages = this.messages;\n\n return {\n async next() {\n if (index >= messages.length) {\n return { done: true, value: undefined };\n }\n\n const message = messages[index++];\n if (message instanceof Error) {\n throw message;\n }\n\n return { done: false, value: message };\n },\n };\n }\n}\n","import {\n type Codec,\n type CodecType,\n MessageCodec,\n OptionalCodec,\n StringCodec,\n} from \"../codec\";\nimport { StreamConfig } from \"../config\";\nimport * as proto from \"../proto\";\nimport { StreamDataResponse } from \"../stream\";\n\nexport const MockFilter = MessageCodec({\n filter: OptionalCodec(StringCodec),\n});\n\nexport type MockFilter = CodecType<typeof MockFilter>;\n\nexport const MockFilterFromBytes: Codec<MockFilter, Uint8Array> = {\n decode(value) {\n return proto.testing.MockFilter.decode(value);\n },\n encode(value) {\n return proto.testing.MockFilter.encode(value).finish();\n },\n};\n\nconst MockBlock = MessageCodec({\n data: OptionalCodec(StringCodec),\n});\n\nexport type MockBlock = CodecType<typeof MockBlock>;\n\nexport const MockBlockFromBytes: Codec<MockBlock | null, Uint8Array> = {\n decode(value) {\n if (value.length === 0) {\n return null;\n }\n return proto.testing.MockBlock.decode(value);\n },\n encode(value) {\n if (value === null) {\n return new Uint8Array();\n }\n return proto.testing.MockBlock.encode(value).finish();\n },\n};\n\n/** For testing, simply concatenate the values of `.filter` */\nfunction mergeMockFilter(a: MockFilter, b: MockFilter): MockFilter {\n let filter = \"\";\n if (a.filter) {\n filter += a.filter;\n }\n if (b.filter) {\n filter += b.filter;\n }\n return { filter };\n}\n\nexport const MockStream = new StreamConfig(\n MockFilterFromBytes,\n MockBlockFromBytes,\n mergeMockFilter,\n \"mock\",\n);\n\nexport const MockStreamResponse = StreamDataResponse(MockBlockFromBytes);\n\nexport type MockStreamResponse = CodecType<typeof MockStreamResponse>;\n"],"names":["MessageCodec","OptionalCodec","StringCodec","proto.testing.MockFilter","proto.testing.MockBlock","StreamConfig","StreamDataResponse"],"mappings":"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"}
|
package/dist/testing/index.mjs
CHANGED
|
@@ -82,3 +82,4 @@ const MockStream = new StreamConfig(
|
|
|
82
82
|
const MockStreamResponse = StreamDataResponse(MockBlockFromBytes);
|
|
83
83
|
|
|
84
84
|
export { MockBlockFromBytes, MockClient, MockFilter, MockFilterFromBytes, MockStream, MockStreamResponse, StreamDataIterable };
|
|
85
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../src/testing/client.ts","../../src/testing/mock.ts"],"sourcesContent":["import type { Client, ClientCallOptions, StreamDataOptions } from \"../client\";\nimport type { StatusRequest, StatusResponse } from \"../status\";\nimport type { StreamDataRequest, StreamDataResponse } from \"../stream\";\n\nexport class MockClient<TFilter, TBlock> implements Client<TFilter, TBlock> {\n constructor(\n private messageFactory: (\n request: StreamDataRequest<TFilter>,\n options?: StreamDataOptions,\n ) => (StreamDataResponse<TBlock> | Error)[],\n ) {}\n\n async status(\n request?: StatusRequest,\n options?: ClientCallOptions,\n ): Promise<StatusResponse> {\n throw new Error(\"Client.status is not implemented for VcrClient\");\n }\n\n streamData(request: StreamDataRequest<TFilter>, options?: StreamDataOptions) {\n const messages = this.messageFactory(request, options);\n\n return new StreamDataIterable(messages);\n }\n}\n\nexport class StreamDataIterable<TBlock> {\n constructor(private messages: (StreamDataResponse<TBlock> | Error)[]) {}\n\n [Symbol.asyncIterator](): AsyncIterator<StreamDataResponse<TBlock>> {\n let index = 0;\n const messages = this.messages;\n\n return {\n async next() {\n if (index >= messages.length) {\n return { done: true, value: undefined };\n }\n\n const message = messages[index++];\n if (message instanceof Error) {\n throw message;\n }\n\n return { done: false, value: message };\n },\n };\n }\n}\n","import {\n type Codec,\n type CodecType,\n MessageCodec,\n OptionalCodec,\n StringCodec,\n} from \"../codec\";\nimport { StreamConfig } from \"../config\";\nimport * as proto from \"../proto\";\nimport { StreamDataResponse } from \"../stream\";\n\nexport const MockFilter = MessageCodec({\n filter: OptionalCodec(StringCodec),\n});\n\nexport type MockFilter = CodecType<typeof MockFilter>;\n\nexport const MockFilterFromBytes: Codec<MockFilter, Uint8Array> = {\n decode(value) {\n return proto.testing.MockFilter.decode(value);\n },\n encode(value) {\n return proto.testing.MockFilter.encode(value).finish();\n },\n};\n\nconst MockBlock = MessageCodec({\n data: OptionalCodec(StringCodec),\n});\n\nexport type MockBlock = CodecType<typeof MockBlock>;\n\nexport const MockBlockFromBytes: Codec<MockBlock | null, Uint8Array> = {\n decode(value) {\n if (value.length === 0) {\n return null;\n }\n return proto.testing.MockBlock.decode(value);\n },\n encode(value) {\n if (value === null) {\n return new Uint8Array();\n }\n return proto.testing.MockBlock.encode(value).finish();\n },\n};\n\n/** For testing, simply concatenate the values of `.filter` */\nfunction mergeMockFilter(a: MockFilter, b: MockFilter): MockFilter {\n let filter = \"\";\n if (a.filter) {\n filter += a.filter;\n }\n if (b.filter) {\n filter += b.filter;\n }\n return { filter };\n}\n\nexport const MockStream = new StreamConfig(\n MockFilterFromBytes,\n MockBlockFromBytes,\n mergeMockFilter,\n \"mock\",\n);\n\nexport const MockStreamResponse = StreamDataResponse(MockBlockFromBytes);\n\nexport type MockStreamResponse = CodecType<typeof MockStreamResponse>;\n"],"names":["proto.testing.MockFilter","proto.testing.MockBlock"],"mappings":";;;;;;AAIO,MAAM,UAA+D,CAAA;AAAA,EAC1E,YACU,cAIR,EAAA;AAJQ,IAAA,IAAA,CAAA,cAAA,GAAA,cAAA,CAAA;AAAA,GAIP;AAAA,EAEH,MAAM,MACJ,CAAA,OAAA,EACA,OACyB,EAAA;AACzB,IAAM,MAAA,IAAI,MAAM,gDAAgD,CAAA,CAAA;AAAA,GAClE;AAAA,EAEA,UAAA,CAAW,SAAqC,OAA6B,EAAA;AAC3E,IAAA,MAAM,QAAW,GAAA,IAAA,CAAK,cAAe,CAAA,OAAA,EAAS,OAAO,CAAA,CAAA;AAErD,IAAO,OAAA,IAAI,mBAAmB,QAAQ,CAAA,CAAA;AAAA,GACxC;AACF,CAAA;AAEO,MAAM,kBAA2B,CAAA;AAAA,EACtC,YAAoB,QAAkD,EAAA;AAAlD,IAAA,IAAA,CAAA,QAAA,GAAA,QAAA,CAAA;AAAA,GAAmD;AAAA,EAEvE,CAAC,MAAO,CAAA,aAAa,CAA+C,GAAA;AAClE,IAAA,IAAI,KAAQ,GAAA,CAAA,CAAA;AACZ,IAAA,MAAM,WAAW,IAAK,CAAA,QAAA,CAAA;AAEtB,IAAO,OAAA;AAAA,MACL,MAAM,IAAO,GAAA;AACX,QAAI,IAAA,KAAA,IAAS,SAAS,MAAQ,EAAA;AAC5B,UAAA,OAAO,EAAE,IAAA,EAAM,IAAM,EAAA,KAAA,EAAO,KAAU,CAAA,EAAA,CAAA;AAAA,SACxC;AAEA,QAAM,MAAA,OAAA,GAAU,SAAS,KAAO,EAAA,CAAA,CAAA;AAChC,QAAA,IAAI,mBAAmB,KAAO,EAAA;AAC5B,UAAM,MAAA,OAAA,CAAA;AAAA,SACR;AAEA,QAAA,OAAO,EAAE,IAAA,EAAM,KAAO,EAAA,KAAA,EAAO,OAAQ,EAAA,CAAA;AAAA,OACvC;AAAA,KACF,CAAA;AAAA,GACF;AACF;;ACrCO,MAAM,aAAa,YAAa,CAAA;AAAA,EACrC,MAAA,EAAQ,cAAc,WAAW,CAAA;AACnC,CAAC,EAAA;AAIM,MAAM,mBAAqD,GAAA;AAAA,EAChE,OAAO,KAAO,EAAA;AACZ,IAAA,OAAOA,YAAyB,CAAA,MAAA,CAAO,KAAK,CAAA,CAAA;AAAA,GAC9C;AAAA,EACA,OAAO,KAAO,EAAA;AACZ,IAAA,OAAOA,YAAc,CAAW,MAAO,CAAA,KAAK,EAAE,MAAO,EAAA,CAAA;AAAA,GACvD;AACF,EAAA;AAQO,MAAM,kBAA0D,GAAA;AAAA,EACrE,OAAO,KAAO,EAAA;AACZ,IAAI,IAAA,KAAA,CAAM,WAAW,CAAG,EAAA;AACtB,MAAO,OAAA,IAAA,CAAA;AAAA,KACT;AACA,IAAA,OAAOC,SAAwB,CAAA,MAAA,CAAO,KAAK,CAAA,CAAA;AAAA,GAC7C;AAAA,EACA,OAAO,KAAO,EAAA;AACZ,IAAA,IAAI,UAAU,IAAM,EAAA;AAClB,MAAA,OAAO,IAAI,UAAW,EAAA,CAAA;AAAA,KACxB;AACA,IAAA,OAAOA,SAAc,CAAU,MAAO,CAAA,KAAK,EAAE,MAAO,EAAA,CAAA;AAAA,GACtD;AACF,EAAA;AAGA,SAAS,eAAA,CAAgB,GAAe,CAA2B,EAAA;AACjE,EAAA,IAAI,MAAS,GAAA,EAAA,CAAA;AACb,EAAA,IAAI,EAAE,MAAQ,EAAA;AACZ,IAAA,MAAA,IAAU,CAAE,CAAA,MAAA,CAAA;AAAA,GACd;AACA,EAAA,IAAI,EAAE,MAAQ,EAAA;AACZ,IAAA,MAAA,IAAU,CAAE,CAAA,MAAA,CAAA;AAAA,GACd;AACA,EAAA,OAAO,EAAE,MAAO,EAAA,CAAA;AAClB,CAAA;AAEO,MAAM,aAAa,IAAI,YAAA;AAAA,EAC5B,mBAAA;AAAA,EACA,kBAAA;AAAA,EACA,eAAA;AAAA,EACA,MAAA;AACF,EAAA;AAEa,MAAA,kBAAA,GAAqB,mBAAmB,kBAAkB;;;;"}
|