@robosystems/client 0.2.25 → 0.2.27

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.
Files changed (93) hide show
  1. package/README.md +7 -6
  2. package/bin/{create-feature → create-feature.sh} +11 -1
  3. package/client/client.gen.js +118 -34
  4. package/client/client.gen.ts +125 -38
  5. package/client/index.d.ts +2 -1
  6. package/client/index.js +3 -1
  7. package/client/index.ts +1 -1
  8. package/client/types.gen.d.ts +11 -16
  9. package/client/types.gen.js +0 -1
  10. package/client/types.gen.ts +44 -64
  11. package/client/utils.gen.d.ts +8 -20
  12. package/client/utils.gen.js +44 -112
  13. package/client/utils.gen.ts +57 -181
  14. package/client.gen.d.ts +3 -3
  15. package/client.gen.js +1 -3
  16. package/client.gen.ts +4 -6
  17. package/core/auth.gen.ts +1 -2
  18. package/core/bodySerializer.gen.d.ts +12 -4
  19. package/core/bodySerializer.gen.js +1 -1
  20. package/core/bodySerializer.gen.ts +17 -25
  21. package/core/params.gen.d.ts +10 -0
  22. package/core/params.gen.js +17 -5
  23. package/core/params.gen.ts +37 -21
  24. package/core/pathSerializer.gen.js +3 -11
  25. package/core/pathSerializer.gen.ts +4 -14
  26. package/core/queryKeySerializer.gen.d.ts +18 -0
  27. package/core/queryKeySerializer.gen.js +98 -0
  28. package/core/queryKeySerializer.gen.ts +117 -0
  29. package/core/serverSentEvents.gen.d.ts +71 -0
  30. package/core/serverSentEvents.gen.js +137 -0
  31. package/core/serverSentEvents.gen.ts +243 -0
  32. package/core/types.gen.d.ts +12 -12
  33. package/core/types.gen.js +0 -1
  34. package/core/types.gen.ts +21 -38
  35. package/core/utils.gen.d.ts +19 -0
  36. package/core/utils.gen.js +93 -0
  37. package/core/utils.gen.ts +140 -0
  38. package/extensions/QueryClient.js +23 -2
  39. package/extensions/QueryClient.test.ts +2 -1
  40. package/extensions/QueryClient.ts +27 -2
  41. package/index.ts +3 -2
  42. package/package.json +9 -7
  43. package/sdk/client/client.gen.js +118 -34
  44. package/sdk/client/client.gen.ts +125 -38
  45. package/sdk/client/index.d.ts +2 -1
  46. package/sdk/client/index.js +3 -1
  47. package/sdk/client/index.ts +1 -1
  48. package/sdk/client/types.gen.d.ts +11 -16
  49. package/sdk/client/types.gen.js +0 -1
  50. package/sdk/client/types.gen.ts +44 -64
  51. package/sdk/client/utils.gen.d.ts +8 -20
  52. package/sdk/client/utils.gen.js +44 -112
  53. package/sdk/client/utils.gen.ts +57 -181
  54. package/sdk/client.gen.d.ts +3 -3
  55. package/sdk/client.gen.js +1 -3
  56. package/sdk/client.gen.ts +4 -6
  57. package/sdk/core/auth.gen.ts +1 -2
  58. package/sdk/core/bodySerializer.gen.d.ts +12 -4
  59. package/sdk/core/bodySerializer.gen.js +1 -1
  60. package/sdk/core/bodySerializer.gen.ts +17 -25
  61. package/sdk/core/params.gen.d.ts +10 -0
  62. package/sdk/core/params.gen.js +17 -5
  63. package/sdk/core/params.gen.ts +37 -21
  64. package/sdk/core/pathSerializer.gen.js +3 -11
  65. package/sdk/core/pathSerializer.gen.ts +4 -14
  66. package/sdk/core/queryKeySerializer.gen.d.ts +18 -0
  67. package/sdk/core/queryKeySerializer.gen.js +98 -0
  68. package/sdk/core/queryKeySerializer.gen.ts +117 -0
  69. package/sdk/core/serverSentEvents.gen.d.ts +71 -0
  70. package/sdk/core/serverSentEvents.gen.js +137 -0
  71. package/sdk/core/serverSentEvents.gen.ts +243 -0
  72. package/sdk/core/types.gen.d.ts +12 -12
  73. package/sdk/core/types.gen.js +0 -1
  74. package/sdk/core/types.gen.ts +21 -38
  75. package/sdk/core/utils.gen.d.ts +19 -0
  76. package/sdk/core/utils.gen.js +93 -0
  77. package/sdk/core/utils.gen.ts +140 -0
  78. package/sdk/index.d.ts +2 -2
  79. package/sdk/index.js +114 -17
  80. package/sdk/index.ts +3 -2
  81. package/sdk/sdk.gen.d.ts +112 -3
  82. package/sdk/sdk.gen.js +778 -1736
  83. package/sdk/sdk.gen.ts +782 -1740
  84. package/sdk/types.gen.d.ts +851 -5
  85. package/sdk/types.gen.ts +852 -6
  86. package/sdk-extensions/QueryClient.js +23 -2
  87. package/sdk-extensions/QueryClient.test.ts +2 -1
  88. package/sdk-extensions/QueryClient.ts +27 -2
  89. package/sdk.gen.d.ts +112 -3
  90. package/sdk.gen.js +778 -1736
  91. package/sdk.gen.ts +782 -1740
  92. package/types.gen.d.ts +851 -5
  93. 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
- console.error('Failed to parse NDJSON line:', error);
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
- console.error('Failed to parse final NDJSON line:', error);
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
- console.error('Failed to parse NDJSON line:', error)
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
- console.error('Failed to parse final NDJSON line:', error)
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,