UNPKG

@deno/kv

Version:

A Deno KV client library optimized for Node.js.

68 lines (67 loc) 2.7 kB
// @ts-nocheck import { name2num, num2name, } from "./SnapshotReadStatus.js"; import { encodeJson as encodeJson_1, decodeJson as decodeJson_1, encodeBinary as encodeBinary_1, decodeBinary as decodeBinary_1, } from "./WatchKeyOutput.js"; import { tsValueToJsonValueFns, jsonValueToTsValueFns, } from "../../../../../runtime/json/scalar.js"; import { WireType, } from "../../../../../runtime/wire/index.js"; import { default as serialize, } from "../../../../../runtime/wire/serialize.js"; import { default as Long, } from "../../../../../runtime/Long.js"; import { default as deserialize, } from "../../../../../runtime/wire/deserialize.js"; export function getDefaultValue() { return { status: "SR_UNSPECIFIED", keys: [], }; } export function createValue(partialValue) { return { ...getDefaultValue(), ...partialValue, }; } export function encodeJson(value) { const result = {}; if (value.status !== undefined) result.status = tsValueToJsonValueFns.enum(value.status); result.keys = value.keys.map(value => encodeJson_1(value)); return result; } export function decodeJson(value) { const result = getDefaultValue(); if (value.status !== undefined) result.status = jsonValueToTsValueFns.enum(value.status); result.keys = value.keys?.map((value) => decodeJson_1(value)) ?? []; return result; } export function encodeBinary(value) { const result = []; if (value.status !== undefined) { const tsValue = value.status; result.push([1, { type: WireType.Varint, value: new Long(name2num[tsValue]) }]); } for (const tsValue of value.keys) { result.push([2, { type: WireType.LengthDelimited, value: encodeBinary_1(tsValue) }]); } return serialize(result); } export function decodeBinary(binary) { const result = getDefaultValue(); const wireMessage = deserialize(binary); const wireFields = new Map(wireMessage); field: { const wireValue = wireFields.get(1); if (wireValue === undefined) break field; const value = wireValue.type === WireType.Varint ? num2name[wireValue.value[0]] : undefined; if (value === undefined) break field; result.status = value; } collection: { const wireValues = wireMessage.filter(([fieldNumber]) => fieldNumber === 2).map(([, wireValue]) => wireValue); const value = wireValues.map((wireValue) => wireValue.type === WireType.LengthDelimited ? decodeBinary_1(wireValue.value) : undefined).filter(x => x !== undefined); if (!value.length) break collection; result.keys = value; } return result; }