@robosystems/client 0.2.24 → 0.2.26
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/README.md +7 -6
- package/bin/{create-feature → create-feature.sh} +11 -1
- package/client/client.gen.js +118 -34
- package/client/client.gen.ts +125 -38
- package/client/index.d.ts +2 -1
- package/client/index.js +3 -1
- package/client/index.ts +1 -1
- package/client/types.gen.d.ts +11 -16
- package/client/types.gen.js +0 -1
- package/client/types.gen.ts +44 -64
- package/client/utils.gen.d.ts +8 -20
- package/client/utils.gen.js +44 -112
- package/client/utils.gen.ts +57 -181
- package/client.gen.d.ts +3 -3
- package/client.gen.js +1 -3
- package/client.gen.ts +4 -6
- package/core/auth.gen.ts +1 -2
- package/core/bodySerializer.gen.d.ts +12 -4
- package/core/bodySerializer.gen.js +1 -1
- package/core/bodySerializer.gen.ts +17 -25
- package/core/params.gen.d.ts +10 -0
- package/core/params.gen.js +17 -5
- package/core/params.gen.ts +37 -21
- package/core/pathSerializer.gen.js +3 -11
- package/core/pathSerializer.gen.ts +4 -14
- package/core/queryKeySerializer.gen.d.ts +18 -0
- package/core/queryKeySerializer.gen.js +98 -0
- package/core/queryKeySerializer.gen.ts +117 -0
- package/core/serverSentEvents.gen.d.ts +71 -0
- package/core/serverSentEvents.gen.js +137 -0
- package/core/serverSentEvents.gen.ts +243 -0
- package/core/types.gen.d.ts +12 -12
- package/core/types.gen.js +0 -1
- package/core/types.gen.ts +21 -38
- package/core/utils.gen.d.ts +19 -0
- package/core/utils.gen.js +93 -0
- package/core/utils.gen.ts +140 -0
- package/extensions/GraphClient.d.ts +21 -1
- package/extensions/GraphClient.js +100 -32
- package/extensions/GraphClient.test.ts +176 -6
- package/extensions/GraphClient.ts +124 -34
- package/extensions/QueryClient.js +23 -2
- package/extensions/QueryClient.test.ts +2 -1
- package/extensions/QueryClient.ts +27 -2
- package/index.ts +3 -2
- package/package.json +11 -9
- package/sdk/client/client.gen.js +118 -34
- package/sdk/client/client.gen.ts +125 -38
- package/sdk/client/index.d.ts +2 -1
- package/sdk/client/index.js +3 -1
- package/sdk/client/index.ts +1 -1
- package/sdk/client/types.gen.d.ts +11 -16
- package/sdk/client/types.gen.js +0 -1
- package/sdk/client/types.gen.ts +44 -64
- package/sdk/client/utils.gen.d.ts +8 -20
- package/sdk/client/utils.gen.js +44 -112
- package/sdk/client/utils.gen.ts +57 -181
- package/sdk/client.gen.d.ts +3 -3
- package/sdk/client.gen.js +1 -3
- package/sdk/client.gen.ts +4 -6
- package/sdk/core/auth.gen.ts +1 -2
- package/sdk/core/bodySerializer.gen.d.ts +12 -4
- package/sdk/core/bodySerializer.gen.js +1 -1
- package/sdk/core/bodySerializer.gen.ts +17 -25
- package/sdk/core/params.gen.d.ts +10 -0
- package/sdk/core/params.gen.js +17 -5
- package/sdk/core/params.gen.ts +37 -21
- package/sdk/core/pathSerializer.gen.js +3 -11
- package/sdk/core/pathSerializer.gen.ts +4 -14
- package/sdk/core/queryKeySerializer.gen.d.ts +18 -0
- package/sdk/core/queryKeySerializer.gen.js +98 -0
- package/sdk/core/queryKeySerializer.gen.ts +117 -0
- package/sdk/core/serverSentEvents.gen.d.ts +71 -0
- package/sdk/core/serverSentEvents.gen.js +137 -0
- package/sdk/core/serverSentEvents.gen.ts +243 -0
- package/sdk/core/types.gen.d.ts +12 -12
- package/sdk/core/types.gen.js +0 -1
- package/sdk/core/types.gen.ts +21 -38
- package/sdk/core/utils.gen.d.ts +19 -0
- package/sdk/core/utils.gen.js +93 -0
- package/sdk/core/utils.gen.ts +140 -0
- package/sdk/index.d.ts +2 -2
- package/sdk/index.js +114 -17
- package/sdk/index.ts +3 -2
- package/sdk/sdk.gen.d.ts +112 -3
- package/sdk/sdk.gen.js +778 -1736
- package/sdk/sdk.gen.ts +782 -1740
- package/sdk/types.gen.d.ts +851 -5
- package/sdk/types.gen.ts +852 -6
- package/sdk-extensions/GraphClient.d.ts +21 -1
- package/sdk-extensions/GraphClient.js +100 -32
- package/sdk-extensions/GraphClient.test.ts +176 -6
- package/sdk-extensions/GraphClient.ts +124 -34
- package/sdk-extensions/QueryClient.js +23 -2
- package/sdk-extensions/QueryClient.test.ts +2 -1
- package/sdk-extensions/QueryClient.ts +27 -2
- package/sdk.gen.d.ts +112 -3
- package/sdk.gen.js +778 -1736
- package/sdk.gen.ts +782 -1740
- package/types.gen.d.ts +851 -5
- package/types.gen.ts +852 -6
|
@@ -28,6 +28,11 @@ class QueryClient {
|
|
|
28
28
|
...(options.mode === 'stream' ? { parseAs: 'stream' } : {}),
|
|
29
29
|
};
|
|
30
30
|
const response = await (0, sdk_gen_1.executeCypherQuery)(data);
|
|
31
|
+
// Check for errors in the response (network errors, etc.)
|
|
32
|
+
if ('error' in response && response.error) {
|
|
33
|
+
const error = response.error;
|
|
34
|
+
throw error instanceof Error ? error : new Error(String(error));
|
|
35
|
+
}
|
|
31
36
|
// Check if this is a raw stream response (when parseAs: 'stream')
|
|
32
37
|
if (options.mode === 'stream' && response.response) {
|
|
33
38
|
const contentType = response.response.headers.get('content-type') || '';
|
|
@@ -81,6 +86,8 @@ class QueryClient {
|
|
|
81
86
|
let columns = null;
|
|
82
87
|
let totalRows = 0;
|
|
83
88
|
let executionTimeMs = 0;
|
|
89
|
+
const parseErrors = [];
|
|
90
|
+
let lineNumber = 0;
|
|
84
91
|
// Use streaming reader to avoid "body already read" error
|
|
85
92
|
const reader = response.body?.getReader();
|
|
86
93
|
if (!reader) {
|
|
@@ -97,6 +104,7 @@ class QueryClient {
|
|
|
97
104
|
const lines = buffer.split('\n');
|
|
98
105
|
buffer = lines.pop() || '';
|
|
99
106
|
for (const line of lines) {
|
|
107
|
+
lineNumber++;
|
|
100
108
|
if (!line.trim())
|
|
101
109
|
continue;
|
|
102
110
|
try {
|
|
@@ -120,12 +128,16 @@ class QueryClient {
|
|
|
120
128
|
}
|
|
121
129
|
}
|
|
122
130
|
catch (error) {
|
|
123
|
-
|
|
131
|
+
parseErrors.push({
|
|
132
|
+
line: lineNumber,
|
|
133
|
+
error: error instanceof Error ? error.message : String(error),
|
|
134
|
+
});
|
|
124
135
|
}
|
|
125
136
|
}
|
|
126
137
|
}
|
|
127
138
|
// Parse any remaining buffer
|
|
128
139
|
if (buffer.trim()) {
|
|
140
|
+
lineNumber++;
|
|
129
141
|
try {
|
|
130
142
|
const chunk = JSON.parse(buffer);
|
|
131
143
|
if (columns === null && chunk.columns) {
|
|
@@ -144,13 +156,22 @@ class QueryClient {
|
|
|
144
156
|
}
|
|
145
157
|
}
|
|
146
158
|
catch (error) {
|
|
147
|
-
|
|
159
|
+
parseErrors.push({
|
|
160
|
+
line: lineNumber,
|
|
161
|
+
error: error instanceof Error ? error.message : String(error),
|
|
162
|
+
});
|
|
148
163
|
}
|
|
149
164
|
}
|
|
150
165
|
}
|
|
151
166
|
catch (error) {
|
|
152
167
|
throw new Error(`NDJSON stream reading error: ${error}`);
|
|
153
168
|
}
|
|
169
|
+
// Report parse errors if any occurred
|
|
170
|
+
if (parseErrors.length > 0) {
|
|
171
|
+
const errorDetails = parseErrors.slice(0, 3).map((e) => `line ${e.line}: ${e.error}`);
|
|
172
|
+
const moreErrors = parseErrors.length > 3 ? ` (and ${parseErrors.length - 3} more)` : '';
|
|
173
|
+
throw new Error(`NDJSON parsing failed for ${parseErrors.length} line(s): ${errorDetails.join('; ')}${moreErrors}`);
|
|
174
|
+
}
|
|
154
175
|
// Return aggregated result
|
|
155
176
|
return {
|
|
156
177
|
data: allData,
|
|
@@ -25,9 +25,10 @@ describe('QueryClient', () => {
|
|
|
25
25
|
headers: { 'X-API-Key': 'test-key' },
|
|
26
26
|
})
|
|
27
27
|
|
|
28
|
-
// Mock global fetch
|
|
28
|
+
// Mock global fetch (also set globalThis for SDK client compatibility)
|
|
29
29
|
mockFetch = vi.fn()
|
|
30
30
|
global.fetch = mockFetch
|
|
31
|
+
globalThis.fetch = mockFetch
|
|
31
32
|
|
|
32
33
|
// Reset all mocks
|
|
33
34
|
vi.clearAllMocks()
|
|
@@ -81,6 +81,12 @@ export class QueryClient {
|
|
|
81
81
|
|
|
82
82
|
const response = await executeCypherQuery(data)
|
|
83
83
|
|
|
84
|
+
// Check for errors in the response (network errors, etc.)
|
|
85
|
+
if ('error' in response && response.error) {
|
|
86
|
+
const error = response.error as Error
|
|
87
|
+
throw error instanceof Error ? error : new Error(String(error))
|
|
88
|
+
}
|
|
89
|
+
|
|
84
90
|
// Check if this is a raw stream response (when parseAs: 'stream')
|
|
85
91
|
if (options.mode === 'stream' && response.response) {
|
|
86
92
|
const contentType = response.response.headers.get('content-type') || ''
|
|
@@ -142,6 +148,8 @@ export class QueryClient {
|
|
|
142
148
|
let columns: string[] | null = null
|
|
143
149
|
let totalRows = 0
|
|
144
150
|
let executionTimeMs = 0
|
|
151
|
+
const parseErrors: { line: number; error: string }[] = []
|
|
152
|
+
let lineNumber = 0
|
|
145
153
|
|
|
146
154
|
// Use streaming reader to avoid "body already read" error
|
|
147
155
|
const reader = response.body?.getReader()
|
|
@@ -162,6 +170,7 @@ export class QueryClient {
|
|
|
162
170
|
buffer = lines.pop() || ''
|
|
163
171
|
|
|
164
172
|
for (const line of lines) {
|
|
173
|
+
lineNumber++
|
|
165
174
|
if (!line.trim()) continue
|
|
166
175
|
|
|
167
176
|
try {
|
|
@@ -186,13 +195,17 @@ export class QueryClient {
|
|
|
186
195
|
executionTimeMs = Math.max(executionTimeMs, chunk.execution_time_ms)
|
|
187
196
|
}
|
|
188
197
|
} catch (error) {
|
|
189
|
-
|
|
198
|
+
parseErrors.push({
|
|
199
|
+
line: lineNumber,
|
|
200
|
+
error: error instanceof Error ? error.message : String(error),
|
|
201
|
+
})
|
|
190
202
|
}
|
|
191
203
|
}
|
|
192
204
|
}
|
|
193
205
|
|
|
194
206
|
// Parse any remaining buffer
|
|
195
207
|
if (buffer.trim()) {
|
|
208
|
+
lineNumber++
|
|
196
209
|
try {
|
|
197
210
|
const chunk = JSON.parse(buffer)
|
|
198
211
|
if (columns === null && chunk.columns) {
|
|
@@ -209,13 +222,25 @@ export class QueryClient {
|
|
|
209
222
|
executionTimeMs = Math.max(executionTimeMs, chunk.execution_time_ms)
|
|
210
223
|
}
|
|
211
224
|
} catch (error) {
|
|
212
|
-
|
|
225
|
+
parseErrors.push({
|
|
226
|
+
line: lineNumber,
|
|
227
|
+
error: error instanceof Error ? error.message : String(error),
|
|
228
|
+
})
|
|
213
229
|
}
|
|
214
230
|
}
|
|
215
231
|
} catch (error) {
|
|
216
232
|
throw new Error(`NDJSON stream reading error: ${error}`)
|
|
217
233
|
}
|
|
218
234
|
|
|
235
|
+
// Report parse errors if any occurred
|
|
236
|
+
if (parseErrors.length > 0) {
|
|
237
|
+
const errorDetails = parseErrors.slice(0, 3).map((e) => `line ${e.line}: ${e.error}`)
|
|
238
|
+
const moreErrors = parseErrors.length > 3 ? ` (and ${parseErrors.length - 3} more)` : ''
|
|
239
|
+
throw new Error(
|
|
240
|
+
`NDJSON parsing failed for ${parseErrors.length} line(s): ${errorDetails.join('; ')}${moreErrors}`
|
|
241
|
+
)
|
|
242
|
+
}
|
|
243
|
+
|
|
219
244
|
// Return aggregated result
|
|
220
245
|
return {
|
|
221
246
|
data: allData,
|