MCPcopy Index your code
hub / github.com/devcontainers/cli / read

Function read

src/spec-common/shellServer.ts:127–171  ·  view source on GitHub ↗
(stream: NodeJS.ReadableStream, numberOfResults: number[], log: (str: string, i: number, j: number) => void)

Source from the content-addressed store, hash-verified

125}
126
127function read(stream: NodeJS.ReadableStream, numberOfResults: number[], log: (str: string, i: number, j: number) => void) {
128 const promises = numberOfResults.map(() => {
129 let cbs: { resolve: (value: string[]) => void; reject: () => void };
130 const promise = new Promise<string[]>((resolve, reject) => cbs = { resolve, reject });
131 return { promise, ...cbs! };
132 });
133 const decoder = new StringDecoder('utf8');
134 const strings: string[] = [];
135
136 let j = 0;
137 let results: string[] = [];
138 function data(chunk: Buffer) {
139 const str = decoder.write(chunk);
140 consume(str);
141 }
142 function consume(str: string) {
143 // console.log(`consume ${numberOfResults}: '${str}'`);
144 const i = str.indexOf(EOT);
145 if (i !== -1) {
146 const s = str.substr(0, i);
147 strings.push(s);
148 log(s, j, results.length);
149 // console.log(`result ${numberOfResults}: '${strings.join('')}'`);
150 results.push(strings.join(''));
151 strings.length = 0;
152 if (results.length === numberOfResults[j]) {
153 promises[j].resolve(results);
154 j++;
155 results = [];
156 if (j === numberOfResults.length) {
157 stream.off('data', data);
158 }
159 }
160 if (i + 1 < str.length) {
161 consume(str.substr(i + 1));
162 }
163 } else {
164 strings.push(str);
165 log(str, j, results.length);
166 }
167 }
168 stream.on('data', data);
169
170 return promises.map(p => p.promise);
171}
172
173function monitorProcess(p: Exec) {
174 let processExited: (err: any) => void;

Callers 1

_execFunction · 0.85

Calls 1

onMethod · 0.80

Tested by

no test coverage detected