@seamapi/http 0.1.0 → 0.2.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.
Files changed (122) hide show
  1. package/dist/connect.cjs +752 -366
  2. package/dist/connect.cjs.map +1 -1
  3. package/dist/connect.d.cts +186 -142
  4. package/lib/params-serializer.d.ts +5 -0
  5. package/lib/params-serializer.js +42 -0
  6. package/lib/params-serializer.js.map +1 -0
  7. package/lib/seam/connect/auth.d.ts +3 -2
  8. package/lib/seam/connect/auth.js +55 -4
  9. package/lib/seam/connect/auth.js.map +1 -1
  10. package/lib/seam/connect/client.d.ts +10 -22
  11. package/lib/seam/connect/client.js +17 -77
  12. package/lib/seam/connect/client.js.map +1 -1
  13. package/lib/seam/connect/index.d.ts +2 -1
  14. package/lib/seam/connect/index.js +2 -1
  15. package/lib/seam/connect/index.js.map +1 -1
  16. package/lib/seam/connect/{client-options.d.ts → options.d.ts} +7 -7
  17. package/lib/seam/connect/{client-options.js → options.js} +5 -10
  18. package/lib/seam/connect/options.js.map +1 -0
  19. package/lib/seam/connect/parse-options.d.ts +6 -2
  20. package/lib/seam/connect/parse-options.js +34 -16
  21. package/lib/seam/connect/parse-options.js.map +1 -1
  22. package/lib/seam/connect/routes/access-codes-unmanaged.d.ts +10 -9
  23. package/lib/seam/connect/routes/access-codes-unmanaged.js +26 -14
  24. package/lib/seam/connect/routes/access-codes-unmanaged.js.map +1 -1
  25. package/lib/seam/connect/routes/access-codes.d.ts +15 -14
  26. package/lib/seam/connect/routes/access-codes.js +29 -17
  27. package/lib/seam/connect/routes/access-codes.js.map +1 -1
  28. package/lib/seam/connect/routes/acs-access-groups.d.ts +13 -12
  29. package/lib/seam/connect/routes/acs-access-groups.js +26 -14
  30. package/lib/seam/connect/routes/acs-access-groups.js.map +1 -1
  31. package/lib/seam/connect/routes/acs-credentials.d.ts +9 -8
  32. package/lib/seam/connect/routes/acs-credentials.js +26 -14
  33. package/lib/seam/connect/routes/acs-credentials.js.map +1 -1
  34. package/lib/seam/connect/routes/acs-systems.d.ts +9 -8
  35. package/lib/seam/connect/routes/acs-systems.js +29 -17
  36. package/lib/seam/connect/routes/acs-systems.js.map +1 -1
  37. package/lib/seam/connect/routes/acs-users.d.ts +18 -11
  38. package/lib/seam/connect/routes/acs-users.js +40 -14
  39. package/lib/seam/connect/routes/acs-users.js.map +1 -1
  40. package/lib/seam/connect/routes/acs.d.ts +5 -4
  41. package/lib/seam/connect/routes/acs.js +26 -14
  42. package/lib/seam/connect/routes/acs.js.map +1 -1
  43. package/lib/seam/connect/routes/action-attempts.d.ts +7 -6
  44. package/lib/seam/connect/routes/action-attempts.js +26 -14
  45. package/lib/seam/connect/routes/action-attempts.js.map +1 -1
  46. package/lib/seam/connect/routes/client-sessions.d.ts +13 -9
  47. package/lib/seam/connect/routes/client-sessions.js +33 -14
  48. package/lib/seam/connect/routes/client-sessions.js.map +1 -1
  49. package/lib/seam/connect/routes/connect-webviews.d.ts +11 -10
  50. package/lib/seam/connect/routes/connect-webviews.js +29 -17
  51. package/lib/seam/connect/routes/connect-webviews.js.map +1 -1
  52. package/lib/seam/connect/routes/connected-accounts.d.ts +8 -7
  53. package/lib/seam/connect/routes/connected-accounts.js +26 -14
  54. package/lib/seam/connect/routes/connected-accounts.js.map +1 -1
  55. package/lib/seam/connect/routes/devices-unmanaged.d.ts +8 -7
  56. package/lib/seam/connect/routes/devices-unmanaged.js +26 -14
  57. package/lib/seam/connect/routes/devices-unmanaged.js.map +1 -1
  58. package/lib/seam/connect/routes/devices.d.ts +10 -9
  59. package/lib/seam/connect/routes/devices.js +26 -14
  60. package/lib/seam/connect/routes/devices.js.map +1 -1
  61. package/lib/seam/connect/routes/events.d.ts +7 -6
  62. package/lib/seam/connect/routes/events.js +26 -14
  63. package/lib/seam/connect/routes/events.js.map +1 -1
  64. package/lib/seam/connect/routes/locks.d.ts +9 -8
  65. package/lib/seam/connect/routes/locks.js +26 -14
  66. package/lib/seam/connect/routes/locks.js.map +1 -1
  67. package/lib/seam/connect/routes/noise-sensors-noise-thresholds.d.ts +10 -9
  68. package/lib/seam/connect/routes/noise-sensors-noise-thresholds.js +26 -14
  69. package/lib/seam/connect/routes/noise-sensors-noise-thresholds.js.map +1 -1
  70. package/lib/seam/connect/routes/noise-sensors.d.ts +5 -4
  71. package/lib/seam/connect/routes/noise-sensors.js +26 -14
  72. package/lib/seam/connect/routes/noise-sensors.js.map +1 -1
  73. package/lib/seam/connect/routes/thermostats-climate-setting-schedules.d.ts +10 -9
  74. package/lib/seam/connect/routes/thermostats-climate-setting-schedules.js +26 -14
  75. package/lib/seam/connect/routes/thermostats-climate-setting-schedules.js.map +1 -1
  76. package/lib/seam/connect/routes/thermostats.d.ts +13 -12
  77. package/lib/seam/connect/routes/thermostats.js +26 -14
  78. package/lib/seam/connect/routes/thermostats.js.map +1 -1
  79. package/lib/seam/connect/routes/webhooks.d.ts +9 -8
  80. package/lib/seam/connect/routes/webhooks.js +26 -14
  81. package/lib/seam/connect/routes/webhooks.js.map +1 -1
  82. package/lib/seam/connect/routes/workspaces.d.ts +8 -7
  83. package/lib/seam/connect/routes/workspaces.js +26 -14
  84. package/lib/seam/connect/routes/workspaces.js.map +1 -1
  85. package/lib/seam/connect/seam-http.d.ts +24 -0
  86. package/lib/seam/connect/seam-http.js +82 -0
  87. package/lib/seam/connect/seam-http.js.map +1 -0
  88. package/package.json +7 -4
  89. package/src/lib/params-serializer.ts +55 -0
  90. package/src/lib/seam/connect/auth.ts +94 -6
  91. package/src/lib/seam/connect/client.ts +22 -127
  92. package/src/lib/seam/connect/env.d.ts +11 -0
  93. package/src/lib/seam/connect/index.ts +2 -1
  94. package/src/lib/seam/connect/{client-options.ts → options.ts} +13 -19
  95. package/src/lib/seam/connect/parse-options.ts +50 -23
  96. package/src/lib/seam/connect/routes/access-codes-unmanaged.ts +44 -31
  97. package/src/lib/seam/connect/routes/access-codes.ts +48 -48
  98. package/src/lib/seam/connect/routes/acs-access-groups.ts +49 -40
  99. package/src/lib/seam/connect/routes/acs-credentials.ts +40 -28
  100. package/src/lib/seam/connect/routes/acs-systems.ts +40 -30
  101. package/src/lib/seam/connect/routes/acs-users.ts +70 -36
  102. package/src/lib/seam/connect/routes/acs.ts +33 -17
  103. package/src/lib/seam/connect/routes/action-attempts.ts +36 -22
  104. package/src/lib/seam/connect/routes/client-sessions.ts +58 -30
  105. package/src/lib/seam/connect/routes/connect-webviews.ts +45 -34
  106. package/src/lib/seam/connect/routes/connected-accounts.ts +40 -25
  107. package/src/lib/seam/connect/routes/devices-unmanaged.ts +39 -25
  108. package/src/lib/seam/connect/routes/devices.ts +39 -31
  109. package/src/lib/seam/connect/routes/events.ts +36 -22
  110. package/src/lib/seam/connect/routes/locks.ts +38 -28
  111. package/src/lib/seam/connect/routes/noise-sensors-noise-thresholds.ts +47 -31
  112. package/src/lib/seam/connect/routes/noise-sensors.ts +33 -17
  113. package/src/lib/seam/connect/routes/thermostats-climate-setting-schedules.ts +47 -31
  114. package/src/lib/seam/connect/routes/thermostats.ts +42 -40
  115. package/src/lib/seam/connect/routes/webhooks.ts +38 -28
  116. package/src/lib/seam/connect/routes/workspaces.ts +38 -25
  117. package/src/lib/seam/connect/seam-http.ts +141 -0
  118. package/lib/seam/connect/axios.d.ts +0 -3
  119. package/lib/seam/connect/axios.js +0 -19
  120. package/lib/seam/connect/axios.js.map +0 -1
  121. package/lib/seam/connect/client-options.js.map +0 -1
  122. package/src/lib/seam/connect/axios.ts +0 -25
@@ -0,0 +1,5 @@
1
+ import type { CustomParamsSerializer } from 'axios';
2
+ export declare const paramsSerializer: CustomParamsSerializer;
3
+ export declare class UnserializableParamError extends Error {
4
+ constructor(name: string, message: string);
5
+ }
@@ -0,0 +1,42 @@
1
+ export const paramsSerializer = (params) => {
2
+ const searchParams = new URLSearchParams();
3
+ for (const [name, value] of Object.entries(params)) {
4
+ if (value == null)
5
+ continue;
6
+ if (Array.isArray(value)) {
7
+ if (value.length === 0)
8
+ searchParams.set(name, '');
9
+ if (value.length === 1 && value[0] === '') {
10
+ throw new UnserializableParamError(name, `is a single element array containing the empty string which is unsupported because it serializes to the empty array`);
11
+ }
12
+ for (const v of value) {
13
+ throwIfUnserializable(name, v);
14
+ searchParams.append(name, v);
15
+ }
16
+ continue;
17
+ }
18
+ throwIfUnserializable(name, value);
19
+ searchParams.set(name, value);
20
+ }
21
+ searchParams.sort();
22
+ return searchParams.toString();
23
+ };
24
+ const throwIfUnserializable = (k, v) => {
25
+ if (v == null) {
26
+ throw new UnserializableParamError(k, `is ${v} or contains ${v}`);
27
+ }
28
+ if (typeof v === 'function') {
29
+ throw new UnserializableParamError(k, 'is a function or contains a function');
30
+ }
31
+ if (typeof v === 'object') {
32
+ throw new UnserializableParamError(k, 'is an object or contains an object');
33
+ }
34
+ };
35
+ export class UnserializableParamError extends Error {
36
+ constructor(name, message) {
37
+ super(`Could not serialize parameter: '${name}' ${message}`);
38
+ this.name = this.constructor.name;
39
+ Error.captureStackTrace(this, this.constructor);
40
+ }
41
+ }
42
+ //# sourceMappingURL=params-serializer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"params-serializer.js","sourceRoot":"","sources":["../src/lib/params-serializer.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,gBAAgB,GAA2B,CAAC,MAAM,EAAE,EAAE;IACjE,MAAM,YAAY,GAAG,IAAI,eAAe,EAAE,CAAA;IAE1C,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;QAClD,IAAI,KAAK,IAAI,IAAI;YAAE,SAAQ;QAE3B,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACxB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;gBAAE,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;YAClD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE;gBACzC,MAAM,IAAI,wBAAwB,CAChC,IAAI,EACJ,qHAAqH,CACtH,CAAA;aACF;YACD,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE;gBACrB,qBAAqB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;gBAC9B,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;aAC7B;YACD,SAAQ;SACT;QAED,qBAAqB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;QAClC,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;KAC9B;IAED,YAAY,CAAC,IAAI,EAAE,CAAA;IACnB,OAAO,YAAY,CAAC,QAAQ,EAAE,CAAA;AAChC,CAAC,CAAA;AAED,MAAM,qBAAqB,GAAG,CAAC,CAAS,EAAE,CAAU,EAAQ,EAAE;IAC5D,IAAI,CAAC,IAAI,IAAI,EAAE;QACb,MAAM,IAAI,wBAAwB,CAAC,CAAC,EAAE,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAA;KAClE;IAED,IAAI,OAAO,CAAC,KAAK,UAAU,EAAE;QAC3B,MAAM,IAAI,wBAAwB,CAChC,CAAC,EACD,sCAAsC,CACvC,CAAA;KACF;IAED,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;QACzB,MAAM,IAAI,wBAAwB,CAAC,CAAC,EAAE,oCAAoC,CAAC,CAAA;KAC5E;AACH,CAAC,CAAA;AAED,MAAM,OAAO,wBAAyB,SAAQ,KAAK;IACjD,YAAY,IAAY,EAAE,OAAe;QACvC,KAAK,CAAC,mCAAmC,IAAI,KAAK,OAAO,EAAE,CAAC,CAAA;QAC5D,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAA;QACjC,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAA;IACjD,CAAC;CACF"}
@@ -1,7 +1,8 @@
1
- import { type SeamHttpOptions } from './client-options.js';
1
+ import type { Options } from './parse-options.js';
2
2
  type Headers = Record<string, string>;
3
- export declare const getAuthHeaders: (options: SeamHttpOptions) => Headers;
3
+ export declare const getAuthHeaders: (options: Options) => Headers;
4
4
  export declare class SeamHttpInvalidTokenError extends Error {
5
5
  constructor(message: string);
6
6
  }
7
+ export declare const warnOnInsecureuserIdentifierKey: (userIdentifierKey: string) => void;
7
8
  export {};
@@ -1,21 +1,30 @@
1
- import { isSeamHttpOptionsWithApiKey, isSeamHttpOptionsWithClientSessionToken, SeamHttpInvalidOptionsError, } from './client-options.js';
1
+ import { isSeamHttpOptionsWithApiKey, isSeamHttpOptionsWithClientSessionToken, SeamHttpInvalidOptionsError, } from './options.js';
2
2
  export const getAuthHeaders = (options) => {
3
+ if ('publishableKey' in options) {
4
+ return getAuthHeadersForPublishableKey(options.publishableKey);
5
+ }
3
6
  if (isSeamHttpOptionsWithApiKey(options)) {
4
7
  return getAuthHeadersForApiKey(options);
5
8
  }
6
9
  if (isSeamHttpOptionsWithClientSessionToken(options)) {
7
10
  return getAuthHeadersForClientSessionToken(options);
8
11
  }
9
- throw new SeamHttpInvalidOptionsError('Must specify an apiKey or clientSessionToken');
12
+ throw new SeamHttpInvalidOptionsError('Must specify an apiKey, clientSessionToken, or publishableKey');
10
13
  };
11
14
  const getAuthHeadersForApiKey = ({ apiKey, }) => {
12
15
  if (isClientSessionToken(apiKey)) {
13
16
  throw new SeamHttpInvalidTokenError('A Client Session Token cannot be used as an apiKey');
14
17
  }
18
+ if (isJwt(apiKey)) {
19
+ throw new SeamHttpInvalidTokenError('A JWT cannot be used as an apiKey');
20
+ }
15
21
  if (isAccessToken(apiKey)) {
16
- throw new SeamHttpInvalidTokenError('An access token cannot be used as an apiKey');
22
+ throw new SeamHttpInvalidTokenError('An Access Token cannot be used as an apiKey');
17
23
  }
18
- if (isJwt(apiKey) || !isSeamToken(apiKey)) {
24
+ if (isPublishableKey(apiKey)) {
25
+ throw new SeamHttpInvalidTokenError('A Publishable Key cannot be used as an apiKey');
26
+ }
27
+ if (!isSeamToken(apiKey)) {
19
28
  throw new SeamHttpInvalidTokenError(`Unknown or invalid apiKey format, expected token to start with ${tokenPrefix}`);
20
29
  }
21
30
  return {
@@ -23,6 +32,15 @@ const getAuthHeadersForApiKey = ({ apiKey, }) => {
23
32
  };
24
33
  };
25
34
  const getAuthHeadersForClientSessionToken = ({ clientSessionToken, }) => {
35
+ if (isJwt(clientSessionToken)) {
36
+ throw new SeamHttpInvalidTokenError('A JWT cannot be used as a clientSessionToken');
37
+ }
38
+ if (isAccessToken(clientSessionToken)) {
39
+ throw new SeamHttpInvalidTokenError('An Access Token cannot be used as a clientSessionToken');
40
+ }
41
+ if (isPublishableKey(clientSessionToken)) {
42
+ throw new SeamHttpInvalidTokenError('A Publishable Key cannot be used as a clientSessionToken');
43
+ }
26
44
  if (!isClientSessionToken(clientSessionToken)) {
27
45
  throw new SeamHttpInvalidTokenError(`Unknown or invalid clientSessionToken format, expected token to start with ${clientSessionTokenPrefix}`);
28
46
  }
@@ -31,6 +49,23 @@ const getAuthHeadersForClientSessionToken = ({ clientSessionToken, }) => {
31
49
  'client-session-token': clientSessionToken,
32
50
  };
33
51
  };
52
+ const getAuthHeadersForPublishableKey = (publishableKey) => {
53
+ if (isJwt(publishableKey)) {
54
+ throw new SeamHttpInvalidTokenError('A JWT cannot be used as a publishableKey');
55
+ }
56
+ if (isAccessToken(publishableKey)) {
57
+ throw new SeamHttpInvalidTokenError('An Access Token cannot be used as a publishableKey');
58
+ }
59
+ if (isClientSessionToken(publishableKey)) {
60
+ throw new SeamHttpInvalidTokenError('A Client Session Token Key cannot be used as a publishableKey');
61
+ }
62
+ if (!isPublishableKey(publishableKey)) {
63
+ throw new SeamHttpInvalidTokenError(`Unknown or invalid publishableKey format, expected token to start with ${publishableKeyTokenPrefix}`);
64
+ }
65
+ return {
66
+ 'seam-publishable-key': publishableKey,
67
+ };
68
+ };
34
69
  export class SeamHttpInvalidTokenError extends Error {
35
70
  constructor(message) {
36
71
  super(`SeamHttp received an invalid token: ${message}`);
@@ -38,10 +73,26 @@ export class SeamHttpInvalidTokenError extends Error {
38
73
  Error.captureStackTrace(this, this.constructor);
39
74
  }
40
75
  }
76
+ export const warnOnInsecureuserIdentifierKey = (userIdentifierKey) => {
77
+ if (isEmail(userIdentifierKey)) {
78
+ // eslint-disable-next-line no-console
79
+ console.warn(...[
80
+ 'Using an email for the userIdentifierKey is insecure and may return an error in the future!',
81
+ 'This is insecure because an email is common knowledge or easily guessed.',
82
+ 'Use something with sufficient entropy known only to the owner of the client session.',
83
+ 'For help choosing a user identifier key see',
84
+ 'https://docs.seam.co/latest/seam-components/overview/get-started-with-client-side-components#3-select-a-user-identifier-key',
85
+ ]);
86
+ }
87
+ };
41
88
  const tokenPrefix = 'seam_';
42
89
  const clientSessionTokenPrefix = 'seam_cst';
90
+ const publishableKeyTokenPrefix = 'seam_pk';
43
91
  const isClientSessionToken = (token) => token.startsWith(clientSessionTokenPrefix);
44
92
  const isAccessToken = (token) => token.startsWith('seam_at');
45
93
  const isJwt = (token) => token.startsWith('ey');
46
94
  const isSeamToken = (token) => token.startsWith(tokenPrefix);
95
+ const isPublishableKey = (token) => token.startsWith(publishableKeyTokenPrefix);
96
+ // SOURCE: https://stackoverflow.com/a/46181
97
+ const isEmail = (value) => /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(value);
47
98
  //# sourceMappingURL=auth.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/lib/seam/connect/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,2BAA2B,EAC3B,uCAAuC,EACvC,2BAA2B,GAI5B,MAAM,qBAAqB,CAAA;AAI5B,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,OAAwB,EAAW,EAAE;IAClE,IAAI,2BAA2B,CAAC,OAAO,CAAC,EAAE;QACxC,OAAO,uBAAuB,CAAC,OAAO,CAAC,CAAA;KACxC;IAED,IAAI,uCAAuC,CAAC,OAAO,CAAC,EAAE;QACpD,OAAO,mCAAmC,CAAC,OAAO,CAAC,CAAA;KACpD;IAED,MAAM,IAAI,2BAA2B,CACnC,8CAA8C,CAC/C,CAAA;AACH,CAAC,CAAA;AAED,MAAM,uBAAuB,GAAG,CAAC,EAC/B,MAAM,GACoB,EAAW,EAAE;IACvC,IAAI,oBAAoB,CAAC,MAAM,CAAC,EAAE;QAChC,MAAM,IAAI,yBAAyB,CACjC,oDAAoD,CACrD,CAAA;KACF;IAED,IAAI,aAAa,CAAC,MAAM,CAAC,EAAE;QACzB,MAAM,IAAI,yBAAyB,CACjC,6CAA6C,CAC9C,CAAA;KACF;IAED,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE;QACzC,MAAM,IAAI,yBAAyB,CACjC,kEAAkE,WAAW,EAAE,CAChF,CAAA;KACF;IAED,OAAO;QACL,aAAa,EAAE,UAAU,MAAM,EAAE;KAClC,CAAA;AACH,CAAC,CAAA;AAED,MAAM,mCAAmC,GAAG,CAAC,EAC3C,kBAAkB,GACoB,EAAW,EAAE;IACnD,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,EAAE;QAC7C,MAAM,IAAI,yBAAyB,CACjC,8EAA8E,wBAAwB,EAAE,CACzG,CAAA;KACF;IAED,OAAO;QACL,aAAa,EAAE,UAAU,kBAAkB,EAAE;QAC7C,sBAAsB,EAAE,kBAAkB;KAC3C,CAAA;AACH,CAAC,CAAA;AAED,MAAM,OAAO,yBAA0B,SAAQ,KAAK;IAClD,YAAY,OAAe;QACzB,KAAK,CAAC,uCAAuC,OAAO,EAAE,CAAC,CAAA;QACvD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAA;QACjC,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAA;IACjD,CAAC;CACF;AAED,MAAM,WAAW,GAAG,OAAO,CAAA;AAE3B,MAAM,wBAAwB,GAAG,UAAU,CAAA;AAE3C,MAAM,oBAAoB,GAAG,CAAC,KAAa,EAAW,EAAE,CACtD,KAAK,CAAC,UAAU,CAAC,wBAAwB,CAAC,CAAA;AAE5C,MAAM,aAAa,GAAG,CAAC,KAAa,EAAW,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAA;AAE7E,MAAM,KAAK,GAAG,CAAC,KAAa,EAAW,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;AAEhE,MAAM,WAAW,GAAG,CAAC,KAAa,EAAW,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,CAAA"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/lib/seam/connect/auth.ts"],"names":[],"mappings":"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"}
@@ -1,23 +1,11 @@
1
- import type { Axios } from 'axios';
2
- import { type SeamHttpOptions, type SeamHttpOptionsWithApiKey, type SeamHttpOptionsWithClient, type SeamHttpOptionsWithClientSessionToken } from './client-options.js';
3
- import { SeamHttpAccessCodes, SeamHttpAcs, SeamHttpActionAttempts, SeamHttpClientSessions, SeamHttpConnectedAccounts, SeamHttpConnectWebviews, SeamHttpDevices, SeamHttpEvents, SeamHttpLocks, SeamHttpNoiseSensors, SeamHttpThermostats, SeamHttpWebhooks, SeamHttpWorkspaces } from './routes/index.js';
4
- export declare class SeamHttp {
5
- client: Axios;
6
- constructor(apiKeyOrOptions: string | SeamHttpOptions);
7
- static fromClient(client: SeamHttpOptionsWithClient['client'], options?: Omit<SeamHttpOptionsWithClient, 'client'>): SeamHttp;
8
- static fromApiKey(apiKey: SeamHttpOptionsWithApiKey['apiKey'], options?: Omit<SeamHttpOptionsWithApiKey, 'apiKey'>): SeamHttp;
9
- static fromClientSessionToken(clientSessionToken: SeamHttpOptionsWithClientSessionToken['clientSessionToken'], options?: Omit<SeamHttpOptionsWithClientSessionToken, 'clientSessionToken'>): SeamHttp;
10
- get accessCodes(): SeamHttpAccessCodes;
11
- get acs(): SeamHttpAcs;
12
- get actionAttempts(): SeamHttpActionAttempts;
13
- get clientSessions(): SeamHttpClientSessions;
14
- get connectedAccounts(): SeamHttpConnectedAccounts;
15
- get connectWebviews(): SeamHttpConnectWebviews;
16
- get devices(): SeamHttpDevices;
17
- get events(): SeamHttpEvents;
18
- get locks(): SeamHttpLocks;
19
- get noiseSensors(): SeamHttpNoiseSensors;
20
- get thermostats(): SeamHttpThermostats;
21
- get webhooks(): SeamHttpWebhooks;
22
- get workspaces(): SeamHttpWorkspaces;
1
+ import { type Axios, type AxiosRequestConfig } from 'axios';
2
+ import { type AxiosRetry } from 'axios-retry';
3
+ export type Client = Axios;
4
+ export interface ClientOptions {
5
+ axiosOptions?: AxiosRequestConfig;
6
+ axiosRetryOptions?: AxiosRetryConfig;
7
+ client?: Client;
23
8
  }
9
+ type AxiosRetryConfig = Parameters<AxiosRetry>[1];
10
+ export declare const createClient: (options: ClientOptions) => Axios;
11
+ export {};
@@ -1,78 +1,18 @@
1
- import { createAxiosClient } from './axios.js';
2
- import { isSeamHttpOptionsWithApiKey, isSeamHttpOptionsWithClient, isSeamHttpOptionsWithClientSessionToken, SeamHttpInvalidOptionsError, } from './client-options.js';
3
- import { parseOptions } from './parse-options.js';
4
- import { SeamHttpAccessCodes, SeamHttpAcs, SeamHttpActionAttempts, SeamHttpClientSessions, SeamHttpConnectedAccounts, SeamHttpConnectWebviews, SeamHttpDevices, SeamHttpEvents, SeamHttpLocks, SeamHttpNoiseSensors, SeamHttpThermostats, SeamHttpWebhooks, SeamHttpWorkspaces, } from './routes/index.js';
5
- export class SeamHttp {
6
- // #legacy: boolean
7
- constructor(apiKeyOrOptions) {
8
- const options = parseOptions(apiKeyOrOptions);
9
- // this.#legacy = options.enableLegacyMethodBehaivor
10
- this.client = createAxiosClient(options);
11
- }
12
- static fromClient(client, options = {}) {
13
- const opts = { ...options, client };
14
- if (!isSeamHttpOptionsWithClient(opts)) {
15
- throw new SeamHttpInvalidOptionsError('Missing client');
16
- }
17
- return new SeamHttp(opts);
18
- }
19
- static fromApiKey(apiKey, options = {}) {
20
- const opts = { ...options, apiKey };
21
- if (!isSeamHttpOptionsWithApiKey(opts)) {
22
- throw new SeamHttpInvalidOptionsError('Missing apiKey');
23
- }
24
- return new SeamHttp(opts);
25
- }
26
- static fromClientSessionToken(clientSessionToken, options = {}) {
27
- const opts = { ...options, clientSessionToken };
28
- if (!isSeamHttpOptionsWithClientSessionToken(opts)) {
29
- throw new SeamHttpInvalidOptionsError('Missing clientSessionToken');
30
- }
31
- return new SeamHttp(opts);
32
- }
33
- get accessCodes() {
34
- return SeamHttpAccessCodes.fromClient(this.client);
35
- }
36
- get acs() {
37
- return SeamHttpAcs.fromClient(this.client);
38
- }
39
- get actionAttempts() {
40
- return SeamHttpActionAttempts.fromClient(this.client);
41
- }
42
- get clientSessions() {
43
- return SeamHttpClientSessions.fromClient(this.client);
44
- }
45
- get connectedAccounts() {
46
- return SeamHttpConnectedAccounts.fromClient(this.client);
47
- }
48
- get connectWebviews() {
49
- return SeamHttpConnectWebviews.fromClient(this.client);
50
- }
51
- get devices() {
52
- return SeamHttpDevices.fromClient(this.client);
53
- }
54
- get events() {
55
- return SeamHttpEvents.fromClient(this.client);
56
- }
57
- get locks() {
58
- return SeamHttpLocks.fromClient(this.client);
59
- }
60
- get noiseSensors() {
61
- return SeamHttpNoiseSensors.fromClient(this.client);
62
- }
63
- get thermostats() {
64
- return SeamHttpThermostats.fromClient(this.client);
65
- }
66
- get webhooks() {
67
- return SeamHttpWebhooks.fromClient(this.client);
68
- }
69
- get workspaces() {
70
- return SeamHttpWorkspaces.fromClient(this.client);
71
- }
72
- }
73
- // TODO
74
- // static fromPublishableKey and deprecate getClientSessionToken
75
- // TODO: Should we keep makeRequest?
76
- // Better to implement error handling and wrapping in an error handler.
77
- // makeRequest
1
+ import axios, {} from 'axios';
2
+ import axiosRetry, { exponentialDelay } from 'axios-retry';
3
+ import { paramsSerializer } from '../../../lib/params-serializer.js';
4
+ export const createClient = (options) => {
5
+ if (options.client != null)
6
+ return options.client;
7
+ const client = axios.create({
8
+ paramsSerializer,
9
+ ...options.axiosOptions,
10
+ });
11
+ axiosRetry(client, {
12
+ retries: 2,
13
+ retryDelay: exponentialDelay,
14
+ ...options.axiosRetryOptions,
15
+ });
16
+ return client;
17
+ };
78
18
  //# sourceMappingURL=client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/lib/seam/connect/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/lib/seam/connect/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAuC,MAAM,OAAO,CAAA;AAClE,OAAO,UAAU,EAAE,EAAmB,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAE3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAY3D,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,OAAsB,EAAS,EAAE;IAC5D,IAAI,OAAO,CAAC,MAAM,IAAI,IAAI;QAAE,OAAO,OAAO,CAAC,MAAM,CAAA;IAEjD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAC1B,gBAAgB;QAChB,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,OAAO,MAAM,CAAA;AACf,CAAC,CAAA"}
@@ -1 +1,2 @@
1
- export * from './client.js';
1
+ export * from './options.js';
2
+ export * from './seam-http.js';
@@ -1,2 +1,3 @@
1
- export * from './client.js';
1
+ export * from './options.js';
2
+ export * from './seam-http.js';
2
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/seam/connect/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/seam/connect/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,gBAAgB,CAAA"}
@@ -1,12 +1,12 @@
1
- import type { Axios, AxiosRequestConfig } from 'axios';
2
- export type SeamHttpOptions = SeamHttpOptionsWithClient | SeamHttpOptionsWithApiKey | SeamHttpOptionsWithClientSessionToken;
3
- interface SeamHttpCommonOptions {
1
+ import type { Client, ClientOptions } from './client.js';
2
+ export type SeamHttpOptions = SeamHttpOptionsFromEnv | SeamHttpOptionsWithClient | SeamHttpOptionsWithApiKey | SeamHttpOptionsWithClientSessionToken;
3
+ interface SeamHttpCommonOptions extends ClientOptions {
4
4
  endpoint?: string;
5
- axiosOptions?: AxiosRequestConfig;
6
- enableLegacyMethodBehaivor?: boolean;
7
5
  }
8
- export interface SeamHttpOptionsWithClient extends Pick<SeamHttpCommonOptions, 'enableLegacyMethodBehaivor'> {
9
- client: Axios;
6
+ export type SeamHttpFromPublishableKeyOptions = SeamHttpCommonOptions;
7
+ export type SeamHttpOptionsFromEnv = SeamHttpCommonOptions;
8
+ export interface SeamHttpOptionsWithClient {
9
+ client: Client;
10
10
  }
11
11
  export declare const isSeamHttpOptionsWithClient: (options: SeamHttpOptions) => options is SeamHttpOptionsWithClient;
12
12
  export interface SeamHttpOptionsWithApiKey extends SeamHttpCommonOptions {
@@ -3,9 +3,9 @@ export const isSeamHttpOptionsWithClient = (options) => {
3
3
  return false;
4
4
  if (options.client == null)
5
5
  return false;
6
- const keys = Object.keys(options).filter((k) => !['client', 'enableLegacyMethodBehaivor'].includes(k));
6
+ const keys = Object.keys(options).filter((k) => k !== 'client');
7
7
  if (keys.length > 0) {
8
- throw new SeamHttpInvalidOptionsError(`The client option cannot be used with any other option except enableLegacyMethodBehaivor, but received: ${keys.join(', ')}`);
8
+ throw new SeamHttpInvalidOptionsError(`The client option cannot be used with any other option, but received: ${keys.join(', ')}`);
9
9
  }
10
10
  return true;
11
11
  };
@@ -15,7 +15,7 @@ export const isSeamHttpOptionsWithApiKey = (options) => {
15
15
  if (options.apiKey == null)
16
16
  return false;
17
17
  if ('clientSessionToken' in options && options.clientSessionToken != null) {
18
- throw new SeamHttpInvalidOptionsError('The clientSessionToken option cannot be used with the apiKey option.');
18
+ throw new SeamHttpInvalidOptionsError('The clientSessionToken option cannot be used with the apiKey option');
19
19
  }
20
20
  return true;
21
21
  };
@@ -25,7 +25,7 @@ export const isSeamHttpOptionsWithClientSessionToken = (options) => {
25
25
  if (options.clientSessionToken == null)
26
26
  return false;
27
27
  if ('apiKey' in options && options.apiKey != null) {
28
- throw new SeamHttpInvalidOptionsError('The clientSessionToken option cannot be used with the apiKey option.');
28
+ throw new SeamHttpInvalidOptionsError('The clientSessionToken option cannot be used with the apiKey option');
29
29
  }
30
30
  return true;
31
31
  };
@@ -36,9 +36,4 @@ export class SeamHttpInvalidOptionsError extends Error {
36
36
  Error.captureStackTrace(this, this.constructor);
37
37
  }
38
38
  }
39
- // TODO: withSessionToken { sessionToken } or withMultiWorkspaceApiKey { apiKey }?
40
- // export interface SeamHttpOptionsWithSessionToken extends SeamHttpCommonOptions {
41
- // workspaceId: string
42
- // apiKey: string
43
- // }
44
- //# sourceMappingURL=client-options.js.map
39
+ //# sourceMappingURL=options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"options.js","sourceRoot":"","sources":["../../../src/lib/seam/connect/options.ts"],"names":[],"mappings":"AAoBA,MAAM,CAAC,MAAM,2BAA2B,GAAG,CACzC,OAAwB,EACc,EAAE;IACxC,IAAI,CAAC,CAAC,QAAQ,IAAI,OAAO,CAAC;QAAE,OAAO,KAAK,CAAA;IACxC,IAAI,OAAO,CAAC,MAAM,IAAI,IAAI;QAAE,OAAO,KAAK,CAAA;IAExC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAA;IAC/D,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;QACnB,MAAM,IAAI,2BAA2B,CACnC,yEAAyE,IAAI,CAAC,IAAI,CAChF,IAAI,CACL,EAAE,CACJ,CAAA;KACF;IAED,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAMD,MAAM,CAAC,MAAM,2BAA2B,GAAG,CACzC,OAAwB,EACc,EAAE;IACxC,IAAI,CAAC,CAAC,QAAQ,IAAI,OAAO,CAAC;QAAE,OAAO,KAAK,CAAA;IACxC,IAAI,OAAO,CAAC,MAAM,IAAI,IAAI;QAAE,OAAO,KAAK,CAAA;IAExC,IAAI,oBAAoB,IAAI,OAAO,IAAI,OAAO,CAAC,kBAAkB,IAAI,IAAI,EAAE;QACzE,MAAM,IAAI,2BAA2B,CACnC,qEAAqE,CACtE,CAAA;KACF;IAED,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAOD,MAAM,CAAC,MAAM,uCAAuC,GAAG,CACrD,OAAwB,EAC0B,EAAE;IACpD,IAAI,CAAC,CAAC,oBAAoB,IAAI,OAAO,CAAC;QAAE,OAAO,KAAK,CAAA;IACpD,IAAI,OAAO,CAAC,kBAAkB,IAAI,IAAI;QAAE,OAAO,KAAK,CAAA;IAEpD,IAAI,QAAQ,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,IAAI,IAAI,EAAE;QACjD,MAAM,IAAI,2BAA2B,CACnC,qEAAqE,CACtE,CAAA;KACF;IAED,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAED,MAAM,OAAO,2BAA4B,SAAQ,KAAK;IACpD,YAAY,OAAe;QACzB,KAAK,CAAC,sCAAsC,OAAO,EAAE,CAAC,CAAA;QACtD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAA;QACjC,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAA;IACjD,CAAC;CACF"}
@@ -1,2 +1,6 @@
1
- import { type SeamHttpOptions } from './client-options.js';
2
- export declare const parseOptions: (apiKeyOrOptions: string | SeamHttpOptions) => Required<SeamHttpOptions>;
1
+ import type { ClientOptions } from './client.js';
2
+ import { type SeamHttpOptions } from './options.js';
3
+ export type Options = SeamHttpOptions & {
4
+ publishableKey?: string;
5
+ };
6
+ export declare const parseOptions: (apiKeyOrOptions: string | Options) => ClientOptions;
@@ -1,27 +1,45 @@
1
- import { isSeamHttpOptionsWithClient, } from './client-options.js';
2
- const enableLegacyMethodBehaivorDefault = true;
1
+ import { getAuthHeaders } from './auth.js';
2
+ import { isSeamHttpOptionsWithClient, isSeamHttpOptionsWithClientSessionToken, } from './options.js';
3
+ const defaultEndpoint = 'https://connect.getseam.com';
3
4
  export const parseOptions = (apiKeyOrOptions) => {
5
+ const options = getNormalizedOptions(apiKeyOrOptions);
6
+ if (isSeamHttpOptionsWithClient(options))
7
+ return options;
8
+ return {
9
+ axiosOptions: {
10
+ baseURL: options.endpoint ?? getEndpointFromEnv() ?? defaultEndpoint,
11
+ withCredentials: isSeamHttpOptionsWithClientSessionToken(options),
12
+ ...options.axiosOptions,
13
+ headers: {
14
+ ...getAuthHeaders(options),
15
+ ...options.axiosOptions?.headers,
16
+ },
17
+ },
18
+ axiosRetryOptions: {
19
+ ...options.axiosRetryOptions,
20
+ },
21
+ };
22
+ };
23
+ const getNormalizedOptions = (apiKeyOrOptions) => {
4
24
  const options = typeof apiKeyOrOptions === 'string'
5
25
  ? { apiKey: apiKeyOrOptions }
6
26
  : apiKeyOrOptions;
7
27
  if (isSeamHttpOptionsWithClient(options))
8
- return {
9
- ...options,
10
- enableLegacyMethodBehaivor: options.enableLegacyMethodBehaivor ?? enableLegacyMethodBehaivorDefault,
11
- };
12
- const endpoint = options.endpoint ??
13
- globalThis.process?.env?.['SEAM_ENDPOINT'] ??
14
- globalThis.process?.env?.['SEAM_API_URL'] ??
15
- 'https://connect.getseam.com';
16
- const apiKey = 'apiKey' in options
17
- ? options.apiKey
18
- : globalThis.process?.env?.['SEAM_API_KEY'];
28
+ return options;
29
+ const apiKey = 'apiKey' in options ? options.apiKey : getApiKeyFromEnv(options);
19
30
  return {
20
31
  ...options,
21
32
  ...(apiKey != null ? { apiKey } : {}),
22
- endpoint,
23
- axiosOptions: options.axiosOptions ?? {},
24
- enableLegacyMethodBehaivor: options.enableLegacyMethodBehaivor ?? enableLegacyMethodBehaivorDefault,
25
33
  };
26
34
  };
35
+ const getApiKeyFromEnv = (options) => {
36
+ if ('clientSessionToken' in options && options.clientSessionToken != null) {
37
+ return null;
38
+ }
39
+ return globalThis.process?.env?.SEAM_API_KEY;
40
+ };
41
+ const getEndpointFromEnv = () => {
42
+ return (globalThis.process?.env?.SEAM_ENDPOINT ??
43
+ globalThis.process?.env?.SEAM_API_URL);
44
+ };
27
45
  //# sourceMappingURL=parse-options.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"parse-options.js","sourceRoot":"","sources":["../../../src/lib/seam/connect/parse-options.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,2BAA2B,GAE5B,MAAM,qBAAqB,CAAA;AAE5B,MAAM,iCAAiC,GAAG,IAAI,CAAA;AAE9C,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,eAAyC,EACd,EAAE;IAC7B,MAAM,OAAO,GACX,OAAO,eAAe,KAAK,QAAQ;QACjC,CAAC,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE;QAC7B,CAAC,CAAC,eAAe,CAAA;IAErB,IAAI,2BAA2B,CAAC,OAAO,CAAC;QACtC,OAAO;YACL,GAAG,OAAO;YACV,0BAA0B,EACxB,OAAO,CAAC,0BAA0B,IAAI,iCAAiC;SAC1E,CAAA;IAEH,MAAM,QAAQ,GACZ,OAAO,CAAC,QAAQ;QAChB,UAAU,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC;QAC1C,UAAU,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC;QACzC,6BAA6B,CAAA;IAE/B,MAAM,MAAM,GACV,QAAQ,IAAI,OAAO;QACjB,CAAC,CAAC,OAAO,CAAC,MAAM;QAChB,CAAC,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,CAAA;IAE/C,OAAO;QACL,GAAG,OAAO;QACV,GAAG,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrC,QAAQ;QACR,YAAY,EAAE,OAAO,CAAC,YAAY,IAAI,EAAE;QACxC,0BAA0B,EACxB,OAAO,CAAC,0BAA0B,IAAI,iCAAiC;KAC1E,CAAA;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"parse-options.js","sourceRoot":"","sources":["../../../src/lib/seam/connect/parse-options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAE1C,OAAO,EACL,2BAA2B,EAC3B,uCAAuC,GAExC,MAAM,cAAc,CAAA;AAErB,MAAM,eAAe,GAAG,6BAA6B,CAAA;AAIrD,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,eAAiC,EAClB,EAAE;IACjB,MAAM,OAAO,GAAG,oBAAoB,CAAC,eAAe,CAAC,CAAA;IAErD,IAAI,2BAA2B,CAAC,OAAO,CAAC;QAAE,OAAO,OAAO,CAAA;IAExD,OAAO;QACL,YAAY,EAAE;YACZ,OAAO,EAAE,OAAO,CAAC,QAAQ,IAAI,kBAAkB,EAAE,IAAI,eAAe;YACpE,eAAe,EAAE,uCAAuC,CAAC,OAAO,CAAC;YACjE,GAAG,OAAO,CAAC,YAAY;YACvB,OAAO,EAAE;gBACP,GAAG,cAAc,CAAC,OAAO,CAAC;gBAC1B,GAAG,OAAO,CAAC,YAAY,EAAE,OAAO;aACjC;SACF;QACD,iBAAiB,EAAE;YACjB,GAAG,OAAO,CAAC,iBAAiB;SAC7B;KACF,CAAA;AACH,CAAC,CAAA;AAED,MAAM,oBAAoB,GAAG,CAC3B,eAAiC,EAChB,EAAE;IACnB,MAAM,OAAO,GACX,OAAO,eAAe,KAAK,QAAQ;QACjC,CAAC,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE;QAC7B,CAAC,CAAC,eAAe,CAAA;IAErB,IAAI,2BAA2B,CAAC,OAAO,CAAC;QAAE,OAAO,OAAO,CAAA;IAExD,MAAM,MAAM,GACV,QAAQ,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA;IAElE,OAAO;QACL,GAAG,OAAO;QACV,GAAG,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACtC,CAAA;AACH,CAAC,CAAA;AAED,MAAM,gBAAgB,GAAG,CACvB,OAAwB,EACG,EAAE;IAC7B,IAAI,oBAAoB,IAAI,OAAO,IAAI,OAAO,CAAC,kBAAkB,IAAI,IAAI,EAAE;QACzE,OAAO,IAAI,CAAA;KACZ;IACD,OAAO,UAAU,CAAC,OAAO,EAAE,GAAG,EAAE,YAAY,CAAA;AAC9C,CAAC,CAAA;AAED,MAAM,kBAAkB,GAAG,GAA8B,EAAE;IACzD,OAAO,CACL,UAAU,CAAC,OAAO,EAAE,GAAG,EAAE,aAAa;QACtC,UAAU,CAAC,OAAO,EAAE,GAAG,EAAE,YAAY,CACtC,CAAA;AACH,CAAC,CAAA"}
@@ -1,26 +1,27 @@
1
1
  import type { RouteRequestBody, RouteResponse } from '@seamapi/types/connect';
2
- import type { Axios } from 'axios';
3
2
  import type { SetNonNullable } from 'type-fest';
4
- import { type SeamHttpOptions, type SeamHttpOptionsWithApiKey, type SeamHttpOptionsWithClient, type SeamHttpOptionsWithClientSessionToken } from '../../../../lib/seam/connect/client-options.js';
3
+ import { type Client } from '../../../../lib/seam/connect/client.js';
4
+ import { type SeamHttpFromPublishableKeyOptions, type SeamHttpOptions, type SeamHttpOptionsWithApiKey, type SeamHttpOptionsWithClient, type SeamHttpOptionsWithClientSessionToken } from '../../../../lib/seam/connect/options.js';
5
5
  export declare class SeamHttpAccessCodesUnmanaged {
6
- client: Axios;
7
- constructor(apiKeyOrOptions: string | SeamHttpOptions);
6
+ client: Client;
7
+ constructor(apiKeyOrOptions?: string | SeamHttpOptions);
8
8
  static fromClient(client: SeamHttpOptionsWithClient['client'], options?: Omit<SeamHttpOptionsWithClient, 'client'>): SeamHttpAccessCodesUnmanaged;
9
9
  static fromApiKey(apiKey: SeamHttpOptionsWithApiKey['apiKey'], options?: Omit<SeamHttpOptionsWithApiKey, 'apiKey'>): SeamHttpAccessCodesUnmanaged;
10
10
  static fromClientSessionToken(clientSessionToken: SeamHttpOptionsWithClientSessionToken['clientSessionToken'], options?: Omit<SeamHttpOptionsWithClientSessionToken, 'clientSessionToken'>): SeamHttpAccessCodesUnmanaged;
11
+ static fromPublishableKey(publishableKey: string, userIdentifierKey: string, options?: SeamHttpFromPublishableKeyOptions): Promise<SeamHttpAccessCodesUnmanaged>;
11
12
  convertToManaged(body: AccessCodesUnmanagedConvertToManagedBody): Promise<void>;
12
13
  delete(body: AccessCodesUnmanagedDeleteBody): Promise<void>;
13
14
  get(body: AccessCodesUnmanagedGetBody): Promise<AccessCodesUnmanagedGetResponse['access_code']>;
14
15
  list(body: AccessCodesUnmanagedListBody): Promise<AccessCodesUnmanagedListResponse['access_codes']>;
15
16
  update(body: AccessCodesUnmanagedUpdateBody): Promise<void>;
16
17
  }
17
- export type AccessCodesUnmanagedConvertToManagedBody = SetNonNullable<Required<RouteRequestBody<'/access_codes/unmanaged/convert_to_managed'>>>;
18
+ export type AccessCodesUnmanagedConvertToManagedBody = RouteRequestBody<'/access_codes/unmanaged/convert_to_managed'>;
18
19
  export type AccessCodesUnmanagedConvertToManagedResponse = SetNonNullable<Required<RouteResponse<'/access_codes/unmanaged/convert_to_managed'>>>;
19
- export type AccessCodesUnmanagedDeleteBody = SetNonNullable<Required<RouteRequestBody<'/access_codes/unmanaged/delete'>>>;
20
+ export type AccessCodesUnmanagedDeleteBody = RouteRequestBody<'/access_codes/unmanaged/delete'>;
20
21
  export type AccessCodesUnmanagedDeleteResponse = SetNonNullable<Required<RouteResponse<'/access_codes/unmanaged/delete'>>>;
21
- export type AccessCodesUnmanagedGetBody = SetNonNullable<Required<RouteRequestBody<'/access_codes/unmanaged/get'>>>;
22
+ export type AccessCodesUnmanagedGetBody = RouteRequestBody<'/access_codes/unmanaged/get'>;
22
23
  export type AccessCodesUnmanagedGetResponse = SetNonNullable<Required<RouteResponse<'/access_codes/unmanaged/get'>>>;
23
- export type AccessCodesUnmanagedListBody = SetNonNullable<Required<RouteRequestBody<'/access_codes/unmanaged/list'>>>;
24
+ export type AccessCodesUnmanagedListBody = RouteRequestBody<'/access_codes/unmanaged/list'>;
24
25
  export type AccessCodesUnmanagedListResponse = SetNonNullable<Required<RouteResponse<'/access_codes/unmanaged/list'>>>;
25
- export type AccessCodesUnmanagedUpdateBody = SetNonNullable<Required<RouteRequestBody<'/access_codes/unmanaged/update'>>>;
26
+ export type AccessCodesUnmanagedUpdateBody = RouteRequestBody<'/access_codes/unmanaged/update'>;
26
27
  export type AccessCodesUnmanagedUpdateResponse = SetNonNullable<Required<RouteResponse<'/access_codes/unmanaged/update'>>>;
@@ -2,34 +2,46 @@
2
2
  * Automatically generated by generate-routes.ts.
3
3
  * Do not edit this file or add other files to this directory.
4
4
  */
5
- import { createAxiosClient } from '../../../../lib/seam/connect/axios.js';
6
- import { isSeamHttpOptionsWithApiKey, isSeamHttpOptionsWithClient, isSeamHttpOptionsWithClientSessionToken, SeamHttpInvalidOptionsError, } from '../../../../lib/seam/connect/client-options.js';
5
+ import { warnOnInsecureuserIdentifierKey } from '../../../../lib/seam/connect/auth.js';
6
+ import { createClient } from '../../../../lib/seam/connect/client.js';
7
+ import { isSeamHttpOptionsWithApiKey, isSeamHttpOptionsWithClient, isSeamHttpOptionsWithClientSessionToken, SeamHttpInvalidOptionsError, } from '../../../../lib/seam/connect/options.js';
7
8
  import { parseOptions } from '../../../../lib/seam/connect/parse-options.js';
9
+ import { SeamHttpClientSessions } from './client-sessions.js';
8
10
  export class SeamHttpAccessCodesUnmanaged {
9
- constructor(apiKeyOrOptions) {
10
- const options = parseOptions(apiKeyOrOptions);
11
- this.client = createAxiosClient(options);
11
+ constructor(apiKeyOrOptions = {}) {
12
+ const clientOptions = parseOptions(apiKeyOrOptions);
13
+ this.client = createClient(clientOptions);
12
14
  }
13
15
  static fromClient(client, options = {}) {
14
- const opts = { ...options, client };
15
- if (!isSeamHttpOptionsWithClient(opts)) {
16
+ const constructorOptions = { ...options, client };
17
+ if (!isSeamHttpOptionsWithClient(constructorOptions)) {
16
18
  throw new SeamHttpInvalidOptionsError('Missing client');
17
19
  }
18
- return new SeamHttpAccessCodesUnmanaged(opts);
20
+ return new SeamHttpAccessCodesUnmanaged(constructorOptions);
19
21
  }
20
22
  static fromApiKey(apiKey, options = {}) {
21
- const opts = { ...options, apiKey };
22
- if (!isSeamHttpOptionsWithApiKey(opts)) {
23
+ const constructorOptions = { ...options, apiKey };
24
+ if (!isSeamHttpOptionsWithApiKey(constructorOptions)) {
23
25
  throw new SeamHttpInvalidOptionsError('Missing apiKey');
24
26
  }
25
- return new SeamHttpAccessCodesUnmanaged(opts);
27
+ return new SeamHttpAccessCodesUnmanaged(constructorOptions);
26
28
  }
27
29
  static fromClientSessionToken(clientSessionToken, options = {}) {
28
- const opts = { ...options, clientSessionToken };
29
- if (!isSeamHttpOptionsWithClientSessionToken(opts)) {
30
+ const constructorOptions = { ...options, clientSessionToken };
31
+ if (!isSeamHttpOptionsWithClientSessionToken(constructorOptions)) {
30
32
  throw new SeamHttpInvalidOptionsError('Missing clientSessionToken');
31
33
  }
32
- return new SeamHttpAccessCodesUnmanaged(opts);
34
+ return new SeamHttpAccessCodesUnmanaged(constructorOptions);
35
+ }
36
+ static async fromPublishableKey(publishableKey, userIdentifierKey, options = {}) {
37
+ warnOnInsecureuserIdentifierKey(userIdentifierKey);
38
+ const clientOptions = parseOptions({ ...options, publishableKey });
39
+ const client = createClient(clientOptions);
40
+ const clientSessions = SeamHttpClientSessions.fromClient(client);
41
+ const { token } = await clientSessions.getOrCreate({
42
+ user_identifier_key: userIdentifierKey,
43
+ });
44
+ return SeamHttpAccessCodesUnmanaged.fromClientSessionToken(token, options);
33
45
  }
34
46
  async convertToManaged(body) {
35
47
  await this.client.request({
@@ -1 +1 @@
1
- {"version":3,"file":"access-codes-unmanaged.js","sourceRoot":"","sources":["../../../../src/lib/seam/connect/routes/access-codes-unmanaged.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"access-codes-unmanaged.js","sourceRoot":"","sources":["../../../../src/lib/seam/connect/routes/access-codes-unmanaged.ts"],"names":[],"mappings":"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"}