@seamapi/http 2.5.1 → 2.6.0

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 CHANGED
@@ -526,6 +526,53 @@ console.log(`${request.method} ${request.url}`, JSON.stringify(request.body))
526
526
  const devices = await request.execute()
527
527
  ```
528
528
 
529
+ #### Serializing URL search params
530
+
531
+ The Seam API parses URL search params as complex types.
532
+ If you call it with your own HTTP client, use `serializeUrlSearchParams`:
533
+
534
+ ```ts
535
+ import axios from 'axios'
536
+ import { serializeUrlSearchParams } from '@seamapi/http'
537
+
538
+ await axios.get('https://connect.getseam.com/devices/list', {
539
+ params: { device_ids: ['device1', 'device2'] },
540
+ paramsSerializer: serializeUrlSearchParams,
541
+ headers: { Authorization: 'Bearer your-api-key' },
542
+ })
543
+ ```
544
+
545
+ or `updateUrlSearchParams`:
546
+
547
+ ```ts
548
+ import { updateUrlSearchParams } from '@seamapi/http'
549
+
550
+ const searchParams = new URLSearchParams()
551
+ updateUrlSearchParams(searchParams, { device_ids: ['device1', 'device2'] })
552
+
553
+ Array.from(searchParams)
554
+ // => [['device_ids', 'device1'], ['device_ids', 'device2'], ['_strict', 'true']]
555
+
556
+ searchParams.toString()
557
+ // => 'device_ids=device1&device_ids=device2&_strict=true'
558
+ ```
559
+
560
+ The helpers wrap the [reference implementation].
561
+ The serialization defines the name and string value of each search param.
562
+ [`URLSearchParams`][URLSearchParams] holds those pairs and renders the query string:
563
+ The `_strict=true` parameter is added to any non-empty query so the Seam API uses
564
+ strict, schema-aware parsing.
565
+ A query with no serializable params remains empty.
566
+
567
+ A param set to `undefined` is omitted, while a param set to `null` is serialized
568
+ to an empty value, which the Seam API reads as null.
569
+ A param that cannot be represented raises an `UnserializableParamError`.
570
+ The Seam API parses these params with the corresponding [parser].
571
+
572
+ [URLSearchParams]: https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams
573
+ [reference implementation]: https://github.com/seamapi/url-search-params-serializer
574
+ [parser]: https://github.com/seamapi/url-search-params-parser
575
+
529
576
  ## Development and Testing
530
577
 
531
578
  ### Quickstart
package/index.d.ts CHANGED
@@ -1,2 +1 @@
1
1
  export * from './lib/index.js';
2
- export * from '@seamapi/url-search-params-serializer';
package/index.js CHANGED
@@ -1,3 +1,2 @@
1
1
  export * from './lib/index.js';
2
- export * from '@seamapi/url-search-params-serializer';
3
2
  //# sourceMappingURL=index.js.map
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,uCAAuC,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA"}
package/lib/client.js CHANGED
@@ -1,7 +1,7 @@
1
- import { serializeUrlSearchParams } from '@seamapi/url-search-params-serializer';
2
1
  import axios, {} from 'axios';
3
2
  import axiosRetry, { exponentialDelay } from 'axios-retry';
4
3
  import { errorInterceptor } from './error-interceptor.js';
4
+ import { serializeUrlSearchParams } from './url-search-params-serializer.js';
5
5
  export const defaultTimeout = 30_000;
6
6
  export const createClient = (options) => {
7
7
  const client = axios.create({
package/lib/client.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/lib/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAA;AAChF,OAAO,KAAK,EAAE,EAA+C,MAAM,OAAO,CAAA;AAC1E,OAAO,UAAU,EAAE,EAAmB,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAE3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAIzD,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAA;AAUpC,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,OAAsB,EAAiB,EAAE;IACpE,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAC1B,gBAAgB,EAAE,wBAAwB;QAC1C,OAAO,EAAE,OAAO;QAChB,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,cAAc;QAC1C,GAAG,OAAO,CAAC,YAAY;KACxB,CAAC,CAAA;IAEF,UAAU,CAAC,MAAM,EAAE;QACjB,OAAO,EAAE,CAAC;QACV,UAAU,EAAE,gBAAgB;QAC5B,GAAG,OAAO,CAAC,iBAAiB;KAC7B,CAAC,CAAA;IAEF,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAA;IAE7D,OAAO,MAAM,CAAA;AACf,CAAC,CAAA"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/lib/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAA+C,MAAM,OAAO,CAAA;AAC1E,OAAO,UAAU,EAAE,EAAmB,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAE3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AACzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAA;AAI5E,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAA;AAUpC,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,OAAsB,EAAiB,EAAE;IACpE,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAC1B,gBAAgB,EAAE,wBAAwB;QAC1C,OAAO,EAAE,OAAO;QAChB,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,cAAc;QAC1C,GAAG,OAAO,CAAC,YAAY;KACxB,CAAC,CAAA;IAEF,UAAU,CAAC,MAAM,EAAE;QACjB,OAAO,EAAE,CAAC;QACV,UAAU,EAAE,gBAAgB;QAC5B,GAAG,OAAO,CAAC,iBAAiB;KAC7B,CAAC,CAAA;IAEF,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAA;IAE7D,OAAO,MAAM,CAAA;AACf,CAAC,CAAA"}
package/lib/index.d.ts CHANGED
@@ -9,3 +9,4 @@ export * from './seam-http-error.js';
9
9
  export * from './seam-http-request.js';
10
10
  export * from './seam-paginator.js';
11
11
  export { isApiKey, isClientSessionToken, isConsoleSessionToken, isPersonalAccessToken, isPublishableKey, } from './token.js';
12
+ export * from './url-search-params-serializer.js';
package/lib/index.js CHANGED
@@ -9,4 +9,5 @@ export * from './seam-http-error.js';
9
9
  export * from './seam-http-request.js';
10
10
  export * from './seam-paginator.js';
11
11
  export { isApiKey, isClientSessionToken, isConsoleSessionToken, isPersonalAccessToken, isPublishableKey, } from './token.js';
12
+ export * from './url-search-params-serializer.js';
12
13
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAA;AACrD,cAAc,wBAAwB,CAAA;AACtC,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,OAAO,EACL,wBAAwB,EACxB,8BAA8B,EAC9B,+BAA+B,EAC/B,sBAAsB,EACtB,4BAA4B,EAC5B,6BAA6B,GAC9B,MAAM,6BAA6B,CAAA;AACpC,cAAc,sBAAsB,CAAA;AACpC,cAAc,mBAAmB,CAAA;AACjC,cAAc,sBAAsB,CAAA;AACpC,cAAc,wBAAwB,CAAA;AACtC,cAAc,qBAAqB,CAAA;AACnC,OAAO,EACL,QAAQ,EACR,oBAAoB,EACpB,qBAAqB,EACrB,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,YAAY,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAA;AACrD,cAAc,wBAAwB,CAAA;AACtC,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,OAAO,EACL,wBAAwB,EACxB,8BAA8B,EAC9B,+BAA+B,EAC/B,sBAAsB,EACtB,4BAA4B,EAC5B,6BAA6B,GAC9B,MAAM,6BAA6B,CAAA;AACpC,cAAc,sBAAsB,CAAA;AACpC,cAAc,mBAAmB,CAAA;AACjC,cAAc,sBAAsB,CAAA;AACpC,cAAc,wBAAwB,CAAA;AACtC,cAAc,qBAAqB,CAAA;AACnC,OAAO,EACL,QAAQ,EACR,oBAAoB,EACpB,qBAAqB,EACrB,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,YAAY,CAAA;AACnB,cAAc,mCAAmC,CAAA"}
@@ -1,6 +1,6 @@
1
- import { serializeUrlSearchParams } from '@seamapi/url-search-params-serializer';
2
1
  import { assertValidRequestParameters } from './request-parameters.js';
3
2
  import { resolveActionAttempt, } from './resolve-action-attempt.js';
3
+ import { serializeUrlSearchParams } from './url-search-params-serializer.js';
4
4
  export class SeamHttpRequest {
5
5
  [Symbol.toStringTag] = 'SeamHttpRequest';
6
6
  #parent;
@@ -1 +1 @@
1
- {"version":3,"file":"seam-http-request.js","sourceRoot":"","sources":["../src/lib/seam-http-request.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"seam-http-request.js","sourceRoot":"","sources":["../src/lib/seam-http-request.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { type Params, UnserializableParamError } from '@seamapi/url-search-params-serializer';
2
+ export declare const serializeUrlSearchParams: (params: Params) => string;
3
+ export declare const updateUrlSearchParams: (searchParams: URLSearchParams, params: Params) => void;
4
+ export { type Params, UnserializableParamError };
@@ -0,0 +1,17 @@
1
+ import { serializeUrlSearchParams as baseSerializeUrlSearchParams, UnserializableParamError, updateUrlSearchParams as baseUpdateUrlSearchParams, } from '@seamapi/url-search-params-serializer';
2
+ export const serializeUrlSearchParams = (params) => {
3
+ const queryString = baseSerializeUrlSearchParams(params);
4
+ if (queryString === '')
5
+ return '';
6
+ const searchParams = new URLSearchParams(queryString);
7
+ searchParams.set('_strict', 'true');
8
+ return searchParams.toString();
9
+ };
10
+ export const updateUrlSearchParams = (searchParams, params) => {
11
+ baseUpdateUrlSearchParams(searchParams, params);
12
+ if (searchParams.size > 0) {
13
+ searchParams.set('_strict', 'true');
14
+ }
15
+ };
16
+ export { UnserializableParamError };
17
+ //# sourceMappingURL=url-search-params-serializer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"url-search-params-serializer.js","sourceRoot":"","sources":["../src/lib/url-search-params-serializer.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,wBAAwB,IAAI,4BAA4B,EACxD,wBAAwB,EACxB,qBAAqB,IAAI,yBAAyB,GACnD,MAAM,uCAAuC,CAAA;AAE9C,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,MAAc,EAAU,EAAE;IACjE,MAAM,WAAW,GAAG,4BAA4B,CAAC,MAAM,CAAC,CAAA;IACxD,IAAI,WAAW,KAAK,EAAE;QAAE,OAAO,EAAE,CAAA;IAEjC,MAAM,YAAY,GAAG,IAAI,eAAe,CAAC,WAAW,CAAC,CAAA;IACrD,YAAY,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;IACnC,OAAO,YAAY,CAAC,QAAQ,EAAE,CAAA;AAChC,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,YAA6B,EAC7B,MAAc,EACR,EAAE;IACR,yBAAyB,CAAC,YAAY,EAAE,MAAM,CAAC,CAAA;IAE/C,IAAI,YAAY,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QAC1B,YAAY,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;IACrC,CAAC;AACH,CAAC,CAAA;AAED,OAAO,EAAe,wBAAwB,EAAE,CAAA"}
package/lib/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- declare const seamapiJavascriptHttpVersion = "2.5.1";
1
+ declare const seamapiJavascriptHttpVersion = "2.6.0";
2
2
  export default seamapiJavascriptHttpVersion;
package/lib/version.js CHANGED
@@ -1,3 +1,3 @@
1
- const seamapiJavascriptHttpVersion = '2.5.1';
1
+ const seamapiJavascriptHttpVersion = '2.6.0';
2
2
  export default seamapiJavascriptHttpVersion;
3
3
  //# sourceMappingURL=version.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@seamapi/http",
3
- "version": "2.5.1",
3
+ "version": "2.6.0",
4
4
  "description": "JavaScript HTTP client for the Seam API written in TypeScript.",
5
5
  "type": "module",
6
6
  "main": "index.js",
@@ -85,7 +85,7 @@
85
85
  },
86
86
  "devDependencies": {
87
87
  "@seamapi/blueprint": "^1.5.1",
88
- "@seamapi/fake-seam-connect": "^1.77.0",
88
+ "@seamapi/fake-seam-connect": "^2.0.4",
89
89
  "@seamapi/smith": "^1.1.0",
90
90
  "@seamapi/types": "1.1001.0",
91
91
  "@types/jsonwebtoken": "^9.0.6",
package/src/index.ts CHANGED
@@ -1,2 +1 @@
1
1
  export * from './lib/index.js'
2
- export * from '@seamapi/url-search-params-serializer'
package/src/lib/client.ts CHANGED
@@ -1,8 +1,8 @@
1
- import { serializeUrlSearchParams } from '@seamapi/url-search-params-serializer'
2
1
  import axios, { type AxiosInstance, type AxiosRequestConfig } from 'axios'
3
2
  import axiosRetry, { type AxiosRetry, exponentialDelay } from 'axios-retry'
4
3
 
5
4
  import { errorInterceptor } from './error-interceptor.js'
5
+ import { serializeUrlSearchParams } from './url-search-params-serializer.js'
6
6
 
7
7
  export type Client = AxiosInstance
8
8
 
package/src/lib/index.ts CHANGED
@@ -22,3 +22,4 @@ export {
22
22
  isPersonalAccessToken,
23
23
  isPublishableKey,
24
24
  } from './token.js'
25
+ export * from './url-search-params-serializer.js'
@@ -1,4 +1,3 @@
1
- import { serializeUrlSearchParams } from '@seamapi/url-search-params-serializer'
2
1
  import type { Method } from 'axios'
3
2
 
4
3
  import type { Client } from './client.js'
@@ -9,6 +8,7 @@ import {
9
8
  resolveActionAttempt,
10
9
  } from './resolve-action-attempt.js'
11
10
  import type { ActionAttempt } from './resources/action-attempt.js'
11
+ import { serializeUrlSearchParams } from './url-search-params-serializer.js'
12
12
 
13
13
  interface SeamHttpRequestParent {
14
14
  readonly client: Client
@@ -0,0 +1,28 @@
1
+ import {
2
+ type Params,
3
+ serializeUrlSearchParams as baseSerializeUrlSearchParams,
4
+ UnserializableParamError,
5
+ updateUrlSearchParams as baseUpdateUrlSearchParams,
6
+ } from '@seamapi/url-search-params-serializer'
7
+
8
+ export const serializeUrlSearchParams = (params: Params): string => {
9
+ const queryString = baseSerializeUrlSearchParams(params)
10
+ if (queryString === '') return ''
11
+
12
+ const searchParams = new URLSearchParams(queryString)
13
+ searchParams.set('_strict', 'true')
14
+ return searchParams.toString()
15
+ }
16
+
17
+ export const updateUrlSearchParams = (
18
+ searchParams: URLSearchParams,
19
+ params: Params,
20
+ ): void => {
21
+ baseUpdateUrlSearchParams(searchParams, params)
22
+
23
+ if (searchParams.size > 0) {
24
+ searchParams.set('_strict', 'true')
25
+ }
26
+ }
27
+
28
+ export { type Params, UnserializableParamError }
@@ -1,3 +1,3 @@
1
- const seamapiJavascriptHttpVersion = '2.5.1'
1
+ const seamapiJavascriptHttpVersion = '2.6.0'
2
2
 
3
3
  export default seamapiJavascriptHttpVersion