UNPKG

@deno/kv

Version:

A Deno KV client library optimized for Node.js.

96 lines (95 loc) 3.8 kB
// @ts-nocheck import { tsValueToJsonValueFns, jsonValueToTsValueFns, } from "../../../../../runtime/json/scalar.js"; import { default as serialize, } from "../../../../../runtime/wire/serialize.js"; import { tsValueToWireValueFns, wireValueToTsValueFns, unpackFns, } from "../../../../../runtime/wire/scalar.js"; import { default as deserialize, } from "../../../../../runtime/wire/deserialize.js"; export function getDefaultValue() { return { payload: new Uint8Array(), deadlineMs: "0", keysIfUndelivered: [], backoffSchedule: [], }; } export function createValue(partialValue) { return { ...getDefaultValue(), ...partialValue, }; } export function encodeJson(value) { const result = {}; if (value.payload !== undefined) result.payload = tsValueToJsonValueFns.bytes(value.payload); if (value.deadlineMs !== undefined) result.deadlineMs = tsValueToJsonValueFns.int64(value.deadlineMs); result.keysIfUndelivered = value.keysIfUndelivered.map(value => tsValueToJsonValueFns.bytes(value)); result.backoffSchedule = value.backoffSchedule.map(value => tsValueToJsonValueFns.uint32(value)); return result; } export function decodeJson(value) { const result = getDefaultValue(); if (value.payload !== undefined) result.payload = jsonValueToTsValueFns.bytes(value.payload); if (value.deadlineMs !== undefined) result.deadlineMs = jsonValueToTsValueFns.int64(value.deadlineMs); result.keysIfUndelivered = value.keysIfUndelivered?.map((value) => jsonValueToTsValueFns.bytes(value)) ?? []; result.backoffSchedule = value.backoffSchedule?.map((value) => jsonValueToTsValueFns.uint32(value)) ?? []; return result; } export function encodeBinary(value) { const result = []; if (value.payload !== undefined) { const tsValue = value.payload; result.push([1, tsValueToWireValueFns.bytes(tsValue)]); } if (value.deadlineMs !== undefined) { const tsValue = value.deadlineMs; result.push([2, tsValueToWireValueFns.int64(tsValue)]); } for (const tsValue of value.keysIfUndelivered) { result.push([3, tsValueToWireValueFns.bytes(tsValue)]); } for (const tsValue of value.backoffSchedule) { result.push([4, tsValueToWireValueFns.uint32(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 = wireValueToTsValueFns.bytes(wireValue); if (value === undefined) break field; result.payload = value; } field: { const wireValue = wireFields.get(2); if (wireValue === undefined) break field; const value = wireValueToTsValueFns.int64(wireValue); if (value === undefined) break field; result.deadlineMs = value; } collection: { const wireValues = wireMessage.filter(([fieldNumber]) => fieldNumber === 3).map(([, wireValue]) => wireValue); const value = wireValues.map((wireValue) => wireValueToTsValueFns.bytes(wireValue)).filter(x => x !== undefined); if (!value.length) break collection; result.keysIfUndelivered = value; } collection: { const wireValues = wireMessage.filter(([fieldNumber]) => fieldNumber === 4).map(([, wireValue]) => wireValue); const value = Array.from(unpackFns.uint32(wireValues)); if (!value.length) break collection; result.backoffSchedule = value; } return result; }