notebooklm-kit 0.0.1 → 2.1.1
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/LICENSE +22 -0
- package/README.md +4102 -0
- package/dist/src/auth/auth.d.ts +46 -0
- package/dist/src/auth/auth.d.ts.map +1 -0
- package/dist/src/auth/auth.js +323 -0
- package/dist/src/auth/auth.js.map +1 -0
- package/dist/src/auth/refresh.d.ts +150 -0
- package/dist/src/auth/refresh.d.ts.map +1 -0
- package/dist/src/auth/refresh.js +433 -0
- package/dist/src/auth/refresh.js.map +1 -0
- package/dist/src/client/notebooklm-client.d.ts +372 -0
- package/dist/src/client/notebooklm-client.d.ts.map +1 -0
- package/dist/src/client/notebooklm-client.js +550 -0
- package/dist/src/client/notebooklm-client.js.map +1 -0
- package/dist/src/index.d.ts +50 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +45 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/rpc/rpc-client.d.ts +48 -0
- package/dist/src/rpc/rpc-client.d.ts.map +1 -0
- package/dist/src/rpc/rpc-client.js +94 -0
- package/dist/src/rpc/rpc-client.js.map +1 -0
- package/dist/src/rpc/rpc-methods.d.ts +127 -0
- package/dist/src/rpc/rpc-methods.d.ts.map +1 -0
- package/dist/src/rpc/rpc-methods.js +169 -0
- package/dist/src/rpc/rpc-methods.js.map +1 -0
- package/dist/src/services/artifacts.d.ts +1017 -0
- package/dist/src/services/artifacts.d.ts.map +1 -0
- package/dist/src/services/artifacts.js +5413 -0
- package/dist/src/services/artifacts.js.map +1 -0
- package/dist/src/services/generation.d.ts +147 -0
- package/dist/src/services/generation.d.ts.map +1 -0
- package/dist/src/services/generation.js +479 -0
- package/dist/src/services/generation.js.map +1 -0
- package/dist/src/services/notebook-language.d.ts +109 -0
- package/dist/src/services/notebook-language.d.ts.map +1 -0
- package/dist/src/services/notebook-language.js +204 -0
- package/dist/src/services/notebook-language.js.map +1 -0
- package/dist/src/services/notebooks.d.ts +26 -0
- package/dist/src/services/notebooks.d.ts.map +1 -0
- package/dist/src/services/notebooks.js +539 -0
- package/dist/src/services/notebooks.js.map +1 -0
- package/dist/src/services/notes.d.ts +72 -0
- package/dist/src/services/notes.d.ts.map +1 -0
- package/dist/src/services/notes.js +340 -0
- package/dist/src/services/notes.js.map +1 -0
- package/dist/src/services/sources.d.ts +1085 -0
- package/dist/src/services/sources.d.ts.map +1 -0
- package/dist/src/services/sources.js +2675 -0
- package/dist/src/services/sources.js.map +1 -0
- package/dist/src/types/artifact.d.ts +258 -0
- package/dist/src/types/artifact.d.ts.map +1 -0
- package/dist/src/types/artifact.js +42 -0
- package/dist/src/types/artifact.js.map +1 -0
- package/dist/src/types/common.d.ts +226 -0
- package/dist/src/types/common.d.ts.map +1 -0
- package/dist/src/types/common.js +80 -0
- package/dist/src/types/common.js.map +1 -0
- package/dist/src/types/languages.d.ts +179 -0
- package/dist/src/types/languages.d.ts.map +1 -0
- package/dist/src/types/languages.js +254 -0
- package/dist/src/types/languages.js.map +1 -0
- package/dist/src/types/note.d.ts +41 -0
- package/dist/src/types/note.d.ts.map +1 -0
- package/dist/src/types/note.js +12 -0
- package/dist/src/types/note.js.map +1 -0
- package/dist/src/types/notebook.d.ts +81 -0
- package/dist/src/types/notebook.d.ts.map +1 -0
- package/dist/src/types/notebook.js +5 -0
- package/dist/src/types/notebook.js.map +1 -0
- package/dist/src/types/source.d.ts +241 -0
- package/dist/src/types/source.d.ts.map +1 -0
- package/dist/src/types/source.js +60 -0
- package/dist/src/types/source.js.map +1 -0
- package/dist/src/utils/batch-execute.d.ts +58 -0
- package/dist/src/utils/batch-execute.d.ts.map +1 -0
- package/dist/src/utils/batch-execute.js +398 -0
- package/dist/src/utils/batch-execute.js.map +1 -0
- package/dist/src/utils/chunked-decoder.d.ts +11 -0
- package/dist/src/utils/chunked-decoder.d.ts.map +1 -0
- package/dist/src/utils/chunked-decoder.js +326 -0
- package/dist/src/utils/chunked-decoder.js.map +1 -0
- package/dist/src/utils/chunked-parser.d.ts +61 -0
- package/dist/src/utils/chunked-parser.d.ts.map +1 -0
- package/dist/src/utils/chunked-parser.js +609 -0
- package/dist/src/utils/chunked-parser.js.map +1 -0
- package/dist/src/utils/errors.d.ts +58 -0
- package/dist/src/utils/errors.d.ts.map +1 -0
- package/dist/src/utils/errors.js +357 -0
- package/dist/src/utils/errors.js.map +1 -0
- package/dist/src/utils/quota.d.ts +213 -0
- package/dist/src/utils/quota.d.ts.map +1 -0
- package/dist/src/utils/quota.js +518 -0
- package/dist/src/utils/quota.js.map +1 -0
- package/dist/src/utils/streaming-client.d.ts +129 -0
- package/dist/src/utils/streaming-client.d.ts.map +1 -0
- package/dist/src/utils/streaming-client.js +559 -0
- package/dist/src/utils/streaming-client.js.map +1 -0
- package/package.json +85 -7
- package/index.js +0 -2
|
@@ -0,0 +1,326 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Chunked response decoder for batchexecute format
|
|
3
|
+
* Handles the complex chunked format with size indicators
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Parse chunked response from batchexecute
|
|
7
|
+
* Format: <chunk-length>\n<chunk-data>\n<chunk-length>\n<chunk-data>...
|
|
8
|
+
*/
|
|
9
|
+
export function parseChunkedResponse(raw, debug = false) {
|
|
10
|
+
const log = (_msg) => {
|
|
11
|
+
// Debug logging disabled
|
|
12
|
+
};
|
|
13
|
+
// Remove prefix if present
|
|
14
|
+
let data = raw.trim().replace(/^\)\]\}'/, '');
|
|
15
|
+
const lines = data.split('\n');
|
|
16
|
+
const chunks = [];
|
|
17
|
+
let collecting = false;
|
|
18
|
+
let chunkSize = 0;
|
|
19
|
+
let chunkData = [];
|
|
20
|
+
log(`Processing ${lines.length} lines`);
|
|
21
|
+
for (let i = 0; i < lines.length; i++) {
|
|
22
|
+
const line = lines[i];
|
|
23
|
+
// Skip empty lines when not collecting
|
|
24
|
+
if (!collecting && line.trim() === '') {
|
|
25
|
+
continue;
|
|
26
|
+
}
|
|
27
|
+
// If not collecting, this should be a chunk size
|
|
28
|
+
if (!collecting) {
|
|
29
|
+
const size = parseInt(line.trim(), 10);
|
|
30
|
+
if (isNaN(size)) {
|
|
31
|
+
// Not a number - might be direct JSON
|
|
32
|
+
if (line.trim().startsWith('{') || line.trim().startsWith('[')) {
|
|
33
|
+
chunks.push(line);
|
|
34
|
+
log(`Found direct JSON chunk: ${line.substring(0, 100)}...`);
|
|
35
|
+
}
|
|
36
|
+
continue;
|
|
37
|
+
}
|
|
38
|
+
chunkSize = size;
|
|
39
|
+
collecting = true;
|
|
40
|
+
chunkData = [];
|
|
41
|
+
log(`Expecting chunk of ${chunkSize} bytes`);
|
|
42
|
+
continue;
|
|
43
|
+
}
|
|
44
|
+
// Collecting chunk data
|
|
45
|
+
chunkData.push(line);
|
|
46
|
+
const currentSize = chunkData.join('\n').length;
|
|
47
|
+
// Check if we've collected enough data
|
|
48
|
+
if (currentSize >= chunkSize) {
|
|
49
|
+
const chunk = chunkData.join('\n');
|
|
50
|
+
chunks.push(chunk);
|
|
51
|
+
log(`Collected full chunk (${currentSize} bytes)`);
|
|
52
|
+
collecting = false;
|
|
53
|
+
chunkSize = 0;
|
|
54
|
+
chunkData = [];
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
// Handle partial chunk
|
|
58
|
+
if (collecting && chunkData.length > 0) {
|
|
59
|
+
const chunk = chunkData.join('\n');
|
|
60
|
+
chunks.push(chunk);
|
|
61
|
+
log(`Added partial chunk (${chunk.length} of ${chunkSize} bytes)`);
|
|
62
|
+
}
|
|
63
|
+
// If no chunks but we have data, treat all as one chunk
|
|
64
|
+
if (chunks.length === 0 && lines.length > 0) {
|
|
65
|
+
const allData = lines.join('\n');
|
|
66
|
+
if (allData.trim()) {
|
|
67
|
+
chunks.push(allData);
|
|
68
|
+
log('Treating all lines as single chunk');
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
log(`Found ${chunks.length} chunks`);
|
|
72
|
+
// Process chunks
|
|
73
|
+
return processChunks(chunks, debug);
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Process chunks and extract RPC responses
|
|
77
|
+
*/
|
|
78
|
+
function processChunks(chunks, debug = false) {
|
|
79
|
+
const log = (_msg) => {
|
|
80
|
+
// Debug logging disabled
|
|
81
|
+
};
|
|
82
|
+
if (chunks.length === 0) {
|
|
83
|
+
throw new Error('No chunks found');
|
|
84
|
+
}
|
|
85
|
+
const allResponses = [];
|
|
86
|
+
for (const chunk of chunks) {
|
|
87
|
+
// Check for numeric-only responses (error codes)
|
|
88
|
+
const trimmed = chunk.trim();
|
|
89
|
+
if (/^\d+$/.test(trimmed) && trimmed.length <= 10) {
|
|
90
|
+
const code = parseInt(trimmed, 10);
|
|
91
|
+
// Skip success codes
|
|
92
|
+
if (code !== 0 && code !== 1) {
|
|
93
|
+
log(`Found numeric error code: ${code}`);
|
|
94
|
+
allResponses.push({
|
|
95
|
+
index: 0,
|
|
96
|
+
id: 'numeric',
|
|
97
|
+
data: code,
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
continue;
|
|
101
|
+
}
|
|
102
|
+
// Try to parse as JSON
|
|
103
|
+
try {
|
|
104
|
+
let data;
|
|
105
|
+
// Try parsing as array of arrays
|
|
106
|
+
try {
|
|
107
|
+
data = JSON.parse(chunk);
|
|
108
|
+
}
|
|
109
|
+
catch {
|
|
110
|
+
// Try unescaping and parsing
|
|
111
|
+
const unescaped = chunk.replace(/\\"/g, '"').replace(/\\\\/g, '\\');
|
|
112
|
+
data = JSON.parse(unescaped);
|
|
113
|
+
}
|
|
114
|
+
// Handle different formats
|
|
115
|
+
let responseArrays;
|
|
116
|
+
if (Array.isArray(data)) {
|
|
117
|
+
if (data.length > 0 && Array.isArray(data[0])) {
|
|
118
|
+
responseArrays = data;
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
responseArrays = [data];
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
continue;
|
|
126
|
+
}
|
|
127
|
+
// Extract responses
|
|
128
|
+
const responses = extractResponses(responseArrays);
|
|
129
|
+
allResponses.push(...responses);
|
|
130
|
+
}
|
|
131
|
+
catch (error) {
|
|
132
|
+
// Try manual extraction if JSON parsing fails
|
|
133
|
+
if (chunk.includes('wrb.fr')) {
|
|
134
|
+
log(`JSON parse failed, trying manual extraction`);
|
|
135
|
+
const response = extractWRBResponse(chunk);
|
|
136
|
+
if (response) {
|
|
137
|
+
allResponses.push(response);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
if (allResponses.length === 0) {
|
|
143
|
+
throw new Error('No valid responses found in chunks');
|
|
144
|
+
}
|
|
145
|
+
return allResponses;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Extract RPC responses from parsed data
|
|
149
|
+
*/
|
|
150
|
+
function extractResponses(data) {
|
|
151
|
+
const responses = [];
|
|
152
|
+
for (const rpcData of data) {
|
|
153
|
+
if (rpcData.length < 3) {
|
|
154
|
+
continue;
|
|
155
|
+
}
|
|
156
|
+
// Check for wrb.fr response type
|
|
157
|
+
const rpcType = rpcData[0];
|
|
158
|
+
if (rpcType !== 'wrb.fr') {
|
|
159
|
+
continue;
|
|
160
|
+
}
|
|
161
|
+
const id = rpcData[1];
|
|
162
|
+
if (!id) {
|
|
163
|
+
continue;
|
|
164
|
+
}
|
|
165
|
+
const response = {
|
|
166
|
+
id,
|
|
167
|
+
index: 0,
|
|
168
|
+
data: null,
|
|
169
|
+
};
|
|
170
|
+
// Try position 2 for data
|
|
171
|
+
let responseData = null;
|
|
172
|
+
if (rpcData[2] !== null && rpcData[2] !== undefined) {
|
|
173
|
+
if (typeof rpcData[2] === 'string') {
|
|
174
|
+
response.data = rpcData[2];
|
|
175
|
+
responseData = rpcData[2];
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
responseData = rpcData[2];
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
// If position 2 is null, try position 5
|
|
182
|
+
if (responseData === null && rpcData.length > 5 && rpcData[5] !== null) {
|
|
183
|
+
responseData = rpcData[5];
|
|
184
|
+
}
|
|
185
|
+
// Set data
|
|
186
|
+
if (responseData !== null && response.data === null) {
|
|
187
|
+
response.data = responseData;
|
|
188
|
+
}
|
|
189
|
+
// Parse index from position 6
|
|
190
|
+
if (rpcData.length > 6) {
|
|
191
|
+
if (rpcData[6] === 'generic') {
|
|
192
|
+
response.index = 0;
|
|
193
|
+
}
|
|
194
|
+
else if (typeof rpcData[6] === 'string') {
|
|
195
|
+
response.index = parseInt(rpcData[6], 10) || 0;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
responses.push(response);
|
|
199
|
+
}
|
|
200
|
+
return responses;
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Manually extract wrb.fr response from unparseable chunk
|
|
204
|
+
*/
|
|
205
|
+
function extractWRBResponse(chunk) {
|
|
206
|
+
// Try to parse as JSON first
|
|
207
|
+
try {
|
|
208
|
+
const data = JSON.parse(chunk);
|
|
209
|
+
if (Array.isArray(data)) {
|
|
210
|
+
const responses = extractResponses([data]);
|
|
211
|
+
if (responses.length > 0) {
|
|
212
|
+
return responses[0];
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
catch {
|
|
217
|
+
// Continue with manual extraction
|
|
218
|
+
}
|
|
219
|
+
// Find wrb.fr
|
|
220
|
+
const wrbIndex = chunk.indexOf('wrb.fr');
|
|
221
|
+
if (wrbIndex < 0) {
|
|
222
|
+
return null;
|
|
223
|
+
}
|
|
224
|
+
// Try to extract ID (comes after wrb.fr)
|
|
225
|
+
let idStart = wrbIndex + 6; // length of "wrb.fr"
|
|
226
|
+
while (idStart < chunk.length && (chunk[idStart] === ',' || chunk[idStart] === '"' || chunk[idStart] === ' ')) {
|
|
227
|
+
idStart++;
|
|
228
|
+
}
|
|
229
|
+
let idEnd = idStart;
|
|
230
|
+
while (idEnd < chunk.length && chunk[idEnd] !== '"' && chunk[idEnd] !== ',' && chunk[idEnd] !== ' ') {
|
|
231
|
+
idEnd++;
|
|
232
|
+
}
|
|
233
|
+
if (idStart >= idEnd) {
|
|
234
|
+
return null;
|
|
235
|
+
}
|
|
236
|
+
const id = chunk.substring(idStart, idEnd);
|
|
237
|
+
// Look for JSON data after ID
|
|
238
|
+
const dataStart = chunk.indexOf('{', idEnd);
|
|
239
|
+
if (dataStart >= 0) {
|
|
240
|
+
const dataEnd = findJSONEnd(chunk, dataStart, '{', '}');
|
|
241
|
+
if (dataEnd > dataStart) {
|
|
242
|
+
const jsonData = chunk.substring(dataStart, dataEnd);
|
|
243
|
+
try {
|
|
244
|
+
const parsed = JSON.parse(jsonData);
|
|
245
|
+
return {
|
|
246
|
+
index: 0,
|
|
247
|
+
id,
|
|
248
|
+
data: parsed,
|
|
249
|
+
};
|
|
250
|
+
}
|
|
251
|
+
catch {
|
|
252
|
+
// Return with raw string data
|
|
253
|
+
return {
|
|
254
|
+
index: 0,
|
|
255
|
+
id,
|
|
256
|
+
data: jsonData,
|
|
257
|
+
};
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
// Try array format
|
|
262
|
+
const arrayStart = chunk.indexOf('[', idEnd);
|
|
263
|
+
if (arrayStart >= 0) {
|
|
264
|
+
const arrayEnd = findJSONEnd(chunk, arrayStart, '[', ']');
|
|
265
|
+
if (arrayEnd > arrayStart) {
|
|
266
|
+
const jsonData = chunk.substring(arrayStart, arrayEnd);
|
|
267
|
+
try {
|
|
268
|
+
const parsed = JSON.parse(jsonData);
|
|
269
|
+
return {
|
|
270
|
+
index: 0,
|
|
271
|
+
id,
|
|
272
|
+
data: parsed,
|
|
273
|
+
};
|
|
274
|
+
}
|
|
275
|
+
catch {
|
|
276
|
+
return {
|
|
277
|
+
index: 0,
|
|
278
|
+
id,
|
|
279
|
+
data: jsonData,
|
|
280
|
+
};
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
// No data found
|
|
285
|
+
return {
|
|
286
|
+
index: 0,
|
|
287
|
+
id,
|
|
288
|
+
data: null,
|
|
289
|
+
};
|
|
290
|
+
}
|
|
291
|
+
/**
|
|
292
|
+
* Find the end of a JSON object or array
|
|
293
|
+
*/
|
|
294
|
+
function findJSONEnd(s, start, openChar, closeChar) {
|
|
295
|
+
let count = 0;
|
|
296
|
+
let inQuotes = false;
|
|
297
|
+
let escaped = false;
|
|
298
|
+
for (let i = start; i < s.length; i++) {
|
|
299
|
+
const c = s[i];
|
|
300
|
+
if (escaped) {
|
|
301
|
+
escaped = false;
|
|
302
|
+
continue;
|
|
303
|
+
}
|
|
304
|
+
if (c === '\\' && inQuotes) {
|
|
305
|
+
escaped = true;
|
|
306
|
+
continue;
|
|
307
|
+
}
|
|
308
|
+
if (c === '"') {
|
|
309
|
+
inQuotes = !inQuotes;
|
|
310
|
+
continue;
|
|
311
|
+
}
|
|
312
|
+
if (!inQuotes) {
|
|
313
|
+
if (c === openChar) {
|
|
314
|
+
count++;
|
|
315
|
+
}
|
|
316
|
+
else if (c === closeChar) {
|
|
317
|
+
count--;
|
|
318
|
+
if (count === 0) {
|
|
319
|
+
return i + 1;
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
return s.length;
|
|
325
|
+
}
|
|
326
|
+
//# sourceMappingURL=chunked-decoder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunked-decoder.js","sourceRoot":"","sources":["../../../src/utils/chunked-decoder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Chunked response parser for NotebookLM's special response format
|
|
3
|
+
* Handles the complex chunked format used by NotebookLM API responses
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Chunked response parser
|
|
7
|
+
* Specialized parser for NotebookLM's chunked response format
|
|
8
|
+
*/
|
|
9
|
+
export declare class ChunkedResponseParser {
|
|
10
|
+
private raw;
|
|
11
|
+
private debug;
|
|
12
|
+
private rawChunks;
|
|
13
|
+
private cleanedData;
|
|
14
|
+
constructor(raw: string, debug?: boolean);
|
|
15
|
+
/**
|
|
16
|
+
* Parse list of projects from response
|
|
17
|
+
*/
|
|
18
|
+
parseListProjectsResponse(): any[];
|
|
19
|
+
/**
|
|
20
|
+
* Check if response is an empty list (metadata-only)
|
|
21
|
+
*/
|
|
22
|
+
private checkEmptyResponse;
|
|
23
|
+
/**
|
|
24
|
+
* Check if data structure contains project-like data
|
|
25
|
+
*/
|
|
26
|
+
private containsProjectData;
|
|
27
|
+
/**
|
|
28
|
+
* Extract and clean chunks from raw response
|
|
29
|
+
*/
|
|
30
|
+
private extractChunks;
|
|
31
|
+
/**
|
|
32
|
+
* Parse using standard JSON techniques
|
|
33
|
+
*/
|
|
34
|
+
private parseStandardJSON;
|
|
35
|
+
/**
|
|
36
|
+
* Parse projects array into notebook objects
|
|
37
|
+
*/
|
|
38
|
+
private parseProjectsArray;
|
|
39
|
+
/**
|
|
40
|
+
* Parse as object format
|
|
41
|
+
*/
|
|
42
|
+
private parseAsObject;
|
|
43
|
+
/**
|
|
44
|
+
* Parse using regex patterns
|
|
45
|
+
*/
|
|
46
|
+
private parseWithRegex;
|
|
47
|
+
/**
|
|
48
|
+
* Parse using direct scanning
|
|
49
|
+
* NOTE: This is a fallback method and should use strict filtering to avoid including sources
|
|
50
|
+
*/
|
|
51
|
+
private parseDirectScan;
|
|
52
|
+
private isNumeric;
|
|
53
|
+
private isUUIDLike;
|
|
54
|
+
private escapeRegex;
|
|
55
|
+
private logDebug;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Create a chunked response parser
|
|
59
|
+
*/
|
|
60
|
+
export declare function createChunkedParser(raw: string, debug?: boolean): ChunkedResponseParser;
|
|
61
|
+
//# sourceMappingURL=chunked-parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunked-parser.d.ts","sourceRoot":"","sources":["../../../src/utils/chunked-parser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH;;;GAGG;AACH,qBAAa,qBAAqB;IAK9B,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,KAAK;IALf,OAAO,CAAC,SAAS,CAAgB;IACjC,OAAO,CAAC,WAAW,CAAc;gBAGvB,GAAG,EAAE,MAAM,EACX,KAAK,GAAE,OAAe;IAGhC;;OAEG;IACH,yBAAyB,IAAI,GAAG,EAAE;IA2DlC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAyB1B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAoB3B;;OAEG;IACH,OAAO,CAAC,aAAa;IAkBrB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAkIzB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAkK1B;;OAEG;IACH,OAAO,CAAC,aAAa;IA+BrB;;OAEG;IACH,OAAO,CAAC,cAAc;IAyEtB;;;OAGG;IACH,OAAO,CAAC,eAAe;IA2FvB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,QAAQ;CAKjB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,GAAE,OAAe,GAAG,qBAAqB,CAE9F"}
|