spiceflow 1.4.0 → 1.4.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.
@@ -1 +1 @@
1
- {"version":3,"file":"types.test.js","sourceRoot":"","sources":["../src/types.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.test.js","sourceRoot":"","sources":["../src/types.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "spiceflow",
3
- "version": "1.4.0",
3
+ "version": "1.4.1",
4
4
  "description": "Simple API framework with RPC and type safety",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -185,6 +185,10 @@ const createProxy = (
185
185
  ): any =>
186
186
  new Proxy(() => {}, {
187
187
  get(_, param: string): any {
188
+ // handle case where createClient returns a promise and await calls .then on it
189
+ if ((!paths.length && param === 'then') || param === 'catch') {
190
+ return _[param]
191
+ }
188
192
  return createProxy(
189
193
  domain,
190
194
  config,
@@ -237,7 +241,7 @@ const createProxy = (
237
241
  }
238
242
  }
239
243
 
240
- return (async () => {
244
+ return Promise.resolve().then(async () => {
241
245
  let fetchInit = {
242
246
  method: method?.toUpperCase(),
243
247
  body,
@@ -365,6 +369,7 @@ const createProxy = (
365
369
  }
366
370
 
367
371
  const url = domain + path + q
372
+ // console.log({ url, fetchInit })
368
373
  const response = await (instance?.handle(
369
374
  new Request(url, fetchInit),
370
375
  ) ?? fetcher!(url, fetchInit))
@@ -423,7 +428,11 @@ const createProxy = (
423
428
  }
424
429
 
425
430
  if (response.status >= 300 || response.status < 200) {
426
- error = new SpiceflowFetchError(response.status, data)
431
+ error = new SpiceflowFetchError(
432
+ response.status,
433
+ data || 'Unknown error',
434
+ )
435
+ console.trace({ error, data })
427
436
  data = null
428
437
  }
429
438
 
@@ -434,7 +443,7 @@ const createProxy = (
434
443
  status: response.status,
435
444
  headers: response.headers,
436
445
  }
437
- })()
446
+ })
438
447
  }
439
448
 
440
449
  if (typeof body === 'object')
@@ -210,9 +210,7 @@ describe('client', () => {
210
210
  expect(data).toMatchInlineSnapshot(
211
211
  `"this string will not be parsed as json"`,
212
212
  )
213
- expect(error).toMatchInlineSnapshot(
214
- `null`,
215
- )
213
+ expect(error).toMatchInlineSnapshot(`null`)
216
214
  })
217
215
 
218
216
  it('stream ', async () => {
@@ -271,3 +269,11 @@ describe('client', () => {
271
269
  // expect(value).toEqual('Kirifuji Nagisa')
272
270
  // })
273
271
  })
272
+
273
+ describe('client as promise', () => {
274
+ it('should work with async client', async () => {
275
+ const asyncClient = Promise.resolve(client)
276
+ const { data } = await (await asyncClient).mirror.post({ test: 'value' })
277
+ expect(data).toEqual({ test: 'value' })
278
+ }, 200)
279
+ })
@@ -358,7 +358,7 @@ test('each middleware and route is called exactly once if an error is thrown', a
358
358
  const res = await app.handle(new Request('http://localhost/test'))
359
359
 
360
360
  expect(res.status).toBe(500)
361
- expect(await res.text()).toBe('Route response')
361
+ expect(await res.text()).toMatchInlineSnapshot(`"{"message":"Route response"}"`)
362
362
  expect(callOrder).toEqual(['middleware1', 'middleware2', 'middleware3', 'route'])
363
363
 
364
364
  // Check that each middleware and route is called exactly once