MCPcopy
hub / github.com/yume-chan/ya-webadb / buffer

Function buffer

libraries/struct/src/buffer.ts:126–332  ·  view source on GitHub ↗
(
    lengthOrField:
        | string
        | number
        | Field<number, string, unknown, number>
        | BufferLengthConverter<string, unknown>,
    converter?: Converter<Uint8Array, unknown>,
)

Source from the content-addressed store, hash-verified

124
125/* #__NO_SIDE_EFFECTS__ */
126export function buffer(
127 lengthOrField:
128 | string
129 | number
130 | Field<number, string, unknown, number>
131 | BufferLengthConverter<string, unknown>,
132 converter?: Converter<Uint8Array, unknown>,
133): Field<unknown, string, Record<string, unknown>, Uint8Array> {
134 // Fixed length
135 if (typeof lengthOrField === "number") {
136 let serialize: ByobFieldSerializer<Uint8Array>;
137 let deserialize: BipedalFieldDeserializer<
138 unknown,
139 Record<string, unknown>
140 >;
141 let init: ((value: unknown) => Uint8Array) | undefined;
142
143 if (lengthOrField === 0) {
144 serialize = () => {};
145
146 if (converter) {
147 // eslint-disable-next-line require-yield
148 deserialize = function* () {
149 return converter.convert(EmptyUint8Array);
150 };
151 } else {
152 // eslint-disable-next-line require-yield
153 deserialize = function* () {
154 return EmptyUint8Array;
155 };
156 }
157 } else {
158 serialize = (value, { buffer, index }) =>
159 copyMaybeDifferentLength(buffer, value, index, lengthOrField);
160
161 if (converter) {
162 deserialize = function* (then, reader) {
163 const array = reader.readExactly(lengthOrField);
164 return converter.convert(yield* then(array));
165 };
166 init = (value) => converter.back(value);
167 } else {
168 // eslint-disable-next-line require-yield
169 deserialize = function* (_then, reader) {
170 const array = reader.readExactly(lengthOrField);
171 return array;
172 };
173 }
174 }
175
176 return field(lengthOrField, "byob", serialize, deserialize, { init });
177 }
178
179 // Declare length field
180 // Some field types are `function`s
181 if (
182 (typeof lengthOrField === "object" ||
183 typeof lengthOrField === "function") &&

Callers 13

uhid.tsFile · 0.90
framebuffer.tsFile · 0.90
pull.tsFile · 0.90
shared.tsFile · 0.90
packet.tsFile · 0.90
index.jsFile · 0.90
string.tsFile · 0.85

Calls 5

copyMaybeDifferentLengthFunction · 0.85
setMethod · 0.80
readExactlyMethod · 0.65
deserializeMethod · 0.65
serializeMethod · 0.65

Tested by

no test coverage detected