@globus/sdk 5.8.0 → 6.0.0-rc.10

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 (201) hide show
  1. package/README.md +8 -15
  2. package/dist/cjs/core/authorization/index.js +142 -18
  3. package/dist/cjs/core/authorization/index.js.map +3 -3
  4. package/dist/cjs/index.js +450 -148
  5. package/dist/cjs/index.js.map +4 -4
  6. package/dist/cjs/services/globus-connect-server/client.js +2 -2
  7. package/dist/cjs/services/globus-connect-server/client.js.map +3 -3
  8. package/dist/esm/apps/web.d.ts +1 -1
  9. package/dist/esm/apps/web.d.ts.map +1 -1
  10. package/dist/esm/core/authorization/AuthorizationManager.d.ts +14 -8
  11. package/dist/esm/core/authorization/AuthorizationManager.d.ts.map +1 -1
  12. package/dist/esm/core/authorization/AuthorizationManager.js +13 -5
  13. package/dist/esm/core/authorization/AuthorizationManager.js.map +1 -1
  14. package/dist/esm/core/authorization/PopupTransport.d.ts +25 -0
  15. package/dist/esm/core/authorization/PopupTransport.d.ts.map +1 -0
  16. package/dist/esm/core/authorization/PopupTransport.js +161 -0
  17. package/dist/esm/core/authorization/PopupTransport.js.map +1 -0
  18. package/dist/esm/core/authorization/RedirectTransport.d.ts +4 -10
  19. package/dist/esm/core/authorization/RedirectTransport.d.ts.map +1 -1
  20. package/dist/esm/core/authorization/RedirectTransport.js +6 -17
  21. package/dist/esm/core/authorization/RedirectTransport.js.map +1 -1
  22. package/dist/esm/core/authorization/TokenManager.js +1 -1
  23. package/dist/esm/core/authorization/TokenManager.js.map +1 -1
  24. package/dist/esm/core/authorization/pkce.d.ts +15 -0
  25. package/dist/esm/core/authorization/pkce.d.ts.map +1 -1
  26. package/dist/esm/core/authorization/pkce.js +18 -0
  27. package/dist/esm/core/authorization/pkce.js.map +1 -1
  28. package/dist/esm/core/global.d.ts +1 -1
  29. package/dist/esm/core/global.d.ts.map +1 -1
  30. package/dist/esm/core/global.js +3 -3
  31. package/dist/esm/core/global.js.map +1 -1
  32. package/dist/esm/index.d.ts +1 -1
  33. package/dist/esm/index.d.ts.map +1 -1
  34. package/dist/esm/index.js +1 -5
  35. package/dist/esm/index.js.map +1 -1
  36. package/dist/esm/open-api/types/compute.d.ts +3759 -0
  37. package/dist/esm/open-api/types/compute.d.ts.map +1 -0
  38. package/dist/esm/open-api/types/compute.js +2 -0
  39. package/dist/esm/open-api/types/compute.js.map +1 -0
  40. package/dist/esm/open-api/types/flows.d.ts +2540 -0
  41. package/dist/esm/open-api/types/flows.d.ts.map +1 -0
  42. package/dist/esm/open-api/types/flows.js +6 -0
  43. package/dist/esm/open-api/types/flows.js.map +1 -0
  44. package/dist/esm/open-api/types/gcs/v5.4.d.ts +12052 -0
  45. package/dist/esm/open-api/types/gcs/v5.4.d.ts.map +1 -0
  46. package/dist/esm/open-api/types/gcs/v5.4.js +2 -0
  47. package/dist/esm/open-api/types/gcs/v5.4.js.map +1 -0
  48. package/dist/esm/open-api/types/groups.d.ts +2382 -0
  49. package/dist/esm/open-api/types/groups.d.ts.map +1 -0
  50. package/dist/esm/open-api/types/groups.js +2 -0
  51. package/dist/esm/open-api/types/groups.js.map +1 -0
  52. package/dist/esm/open-api/types/search.d.ts +2215 -0
  53. package/dist/esm/open-api/types/search.d.ts.map +1 -0
  54. package/dist/esm/open-api/types/search.js +2 -0
  55. package/dist/esm/open-api/types/search.js.map +1 -0
  56. package/dist/esm/open-api/types/timer.d.ts +942 -0
  57. package/dist/esm/open-api/types/timer.d.ts.map +1 -0
  58. package/dist/esm/open-api/types/timer.js +2 -0
  59. package/dist/esm/open-api/types/timer.js.map +1 -0
  60. package/dist/esm/open-api/types/timers.d.ts +942 -0
  61. package/dist/esm/open-api/types/timers.d.ts.map +1 -0
  62. package/dist/esm/open-api/types/timers.js +2 -0
  63. package/dist/esm/open-api/types/timers.js.map +1 -0
  64. package/dist/esm/package.json +1 -1
  65. package/dist/esm/services/auth/config.d.ts +1 -1
  66. package/dist/esm/services/auth/config.js +2 -2
  67. package/dist/esm/services/auth/config.js.map +1 -1
  68. package/dist/esm/services/auth/index.d.ts +1 -0
  69. package/dist/esm/services/auth/index.d.ts.map +1 -1
  70. package/dist/esm/services/auth/index.js.map +1 -1
  71. package/dist/esm/services/auth/utils.d.ts +1 -1
  72. package/dist/esm/services/auth/utils.d.ts.map +1 -1
  73. package/dist/esm/services/compute/index.d.ts +1 -0
  74. package/dist/esm/services/compute/index.d.ts.map +1 -1
  75. package/dist/esm/services/compute/index.js.map +1 -1
  76. package/dist/esm/services/compute/service/endpoints.d.ts +34 -5
  77. package/dist/esm/services/compute/service/endpoints.d.ts.map +1 -1
  78. package/dist/esm/services/compute/service/endpoints.js +31 -0
  79. package/dist/esm/services/compute/service/endpoints.js.map +1 -1
  80. package/dist/esm/services/flows/index.d.ts +1 -0
  81. package/dist/esm/services/flows/index.d.ts.map +1 -1
  82. package/dist/esm/services/flows/index.js.map +1 -1
  83. package/dist/esm/services/flows/service/flows.d.ts +12 -77
  84. package/dist/esm/services/flows/service/flows.d.ts.map +1 -1
  85. package/dist/esm/services/flows/service/flows.js.map +1 -1
  86. package/dist/esm/services/flows/service/runs.d.ts +13 -0
  87. package/dist/esm/services/flows/service/runs.d.ts.map +1 -1
  88. package/dist/esm/services/flows/service/runs.js +11 -0
  89. package/dist/esm/services/flows/service/runs.js.map +1 -1
  90. package/dist/esm/services/globus-connect-server/client.d.ts +646 -261
  91. package/dist/esm/services/globus-connect-server/client.d.ts.map +1 -1
  92. package/dist/esm/services/globus-connect-server/index.d.ts +1 -0
  93. package/dist/esm/services/globus-connect-server/index.d.ts.map +1 -1
  94. package/dist/esm/services/globus-connect-server/index.js.map +1 -1
  95. package/dist/esm/services/globus-connect-server/service/collections.d.ts +40 -40
  96. package/dist/esm/services/globus-connect-server/service/collections.d.ts.map +1 -1
  97. package/dist/esm/services/globus-connect-server/service/collections.js.map +1 -1
  98. package/dist/esm/services/globus-connect-server/service/endpoint.d.ts +35 -35
  99. package/dist/esm/services/globus-connect-server/service/endpoint.d.ts.map +1 -1
  100. package/dist/esm/services/globus-connect-server/service/endpoint.js.map +1 -1
  101. package/dist/esm/services/globus-connect-server/service/nodes.d.ts +30 -30
  102. package/dist/esm/services/globus-connect-server/service/nodes.d.ts.map +1 -1
  103. package/dist/esm/services/globus-connect-server/service/nodes.js.map +1 -1
  104. package/dist/esm/services/globus-connect-server/service/roles.d.ts +20 -20
  105. package/dist/esm/services/globus-connect-server/service/roles.d.ts.map +1 -1
  106. package/dist/esm/services/globus-connect-server/service/roles.js.map +1 -1
  107. package/dist/esm/services/globus-connect-server/service/storage-gateways.d.ts +31 -31
  108. package/dist/esm/services/globus-connect-server/service/storage-gateways.d.ts.map +1 -1
  109. package/dist/esm/services/globus-connect-server/service/storage-gateways.js.map +1 -1
  110. package/dist/esm/services/globus-connect-server/service/user-credentials.d.ts +30 -30
  111. package/dist/esm/services/globus-connect-server/service/user-credentials.d.ts.map +1 -1
  112. package/dist/esm/services/globus-connect-server/service/user-credentials.js.map +1 -1
  113. package/dist/esm/services/globus-connect-server/service/versioning.d.ts +6 -6
  114. package/dist/esm/services/globus-connect-server/service/versioning.d.ts.map +1 -1
  115. package/dist/esm/services/globus-connect-server/service/versioning.js.map +1 -1
  116. package/dist/esm/services/groups/index.d.ts +1 -0
  117. package/dist/esm/services/groups/index.d.ts.map +1 -1
  118. package/dist/esm/services/groups/index.js.map +1 -1
  119. package/dist/esm/services/groups/service/groups.d.ts +5 -5
  120. package/dist/esm/services/groups/service/groups.d.ts.map +1 -1
  121. package/dist/esm/services/groups/service/groups.js.map +1 -1
  122. package/dist/esm/services/groups/service/membership.d.ts +3 -3
  123. package/dist/esm/services/groups/service/membership.d.ts.map +1 -1
  124. package/dist/esm/services/groups/service/membership.js.map +1 -1
  125. package/dist/esm/services/groups/service/policies.d.ts +2 -2
  126. package/dist/esm/services/groups/service/policies.d.ts.map +1 -1
  127. package/dist/esm/services/groups/service/policies.js.map +1 -1
  128. package/dist/esm/services/search/index.d.ts +2 -0
  129. package/dist/esm/services/search/index.d.ts.map +1 -1
  130. package/dist/esm/services/search/index.js.map +1 -1
  131. package/dist/esm/services/shared.d.ts +1 -0
  132. package/dist/esm/services/shared.d.ts.map +1 -1
  133. package/dist/esm/services/shared.js.map +1 -1
  134. package/dist/esm/services/timer/index.d.ts +1 -0
  135. package/dist/esm/services/timer/index.d.ts.map +1 -1
  136. package/dist/esm/services/timer/index.js.map +1 -1
  137. package/dist/esm/services/timer/service/timer.d.ts +28 -2
  138. package/dist/esm/services/timer/service/timer.d.ts.map +1 -1
  139. package/dist/esm/services/timer/service/timer.js.map +1 -1
  140. package/dist/esm/services/timers/config.d.ts +4 -0
  141. package/dist/esm/services/timers/config.d.ts.map +1 -0
  142. package/dist/esm/services/timers/config.js +10 -0
  143. package/dist/esm/services/timers/config.js.map +1 -0
  144. package/dist/esm/services/timers/index.d.ts +16 -0
  145. package/dist/esm/services/timers/index.d.ts.map +1 -0
  146. package/dist/esm/services/timers/index.js +15 -0
  147. package/dist/esm/services/timers/index.js.map +1 -0
  148. package/dist/esm/services/timers/service/jobs/index.d.ts +62 -0
  149. package/dist/esm/services/timers/service/jobs/index.d.ts.map +1 -0
  150. package/dist/esm/services/timers/service/jobs/index.js +70 -0
  151. package/dist/esm/services/timers/service/jobs/index.js.map +1 -0
  152. package/dist/esm/services/timers/service/timer.d.ts +31 -0
  153. package/dist/esm/services/timers/service/timer.d.ts.map +1 -0
  154. package/dist/esm/services/timers/service/timer.js +12 -0
  155. package/dist/esm/services/timers/service/timer.js.map +1 -0
  156. package/dist/esm/services/transfer/index.d.ts +2 -0
  157. package/dist/esm/services/transfer/index.d.ts.map +1 -1
  158. package/dist/esm/services/transfer/index.js +1 -0
  159. package/dist/esm/services/transfer/index.js.map +1 -1
  160. package/dist/esm/services/transfer/service/access.d.ts +35 -12
  161. package/dist/esm/services/transfer/service/access.d.ts.map +1 -1
  162. package/dist/esm/services/transfer/service/access.js +5 -5
  163. package/dist/esm/services/transfer/service/access.js.map +1 -1
  164. package/dist/esm/services/transfer/service/collection-bookmarks.d.ts +20 -6
  165. package/dist/esm/services/transfer/service/collection-bookmarks.d.ts.map +1 -1
  166. package/dist/esm/services/transfer/service/collection-bookmarks.js.map +1 -1
  167. package/dist/esm/services/transfer/service/endpoint-manager/endpoint.d.ts +11 -9
  168. package/dist/esm/services/transfer/service/endpoint-manager/endpoint.d.ts.map +1 -1
  169. package/dist/esm/services/transfer/service/endpoint-manager/endpoint.js.map +1 -1
  170. package/dist/esm/services/transfer/service/endpoint-manager/pause-rule.d.ts +28 -6
  171. package/dist/esm/services/transfer/service/endpoint-manager/pause-rule.d.ts.map +1 -1
  172. package/dist/esm/services/transfer/service/endpoint-manager/pause-rule.js.map +1 -1
  173. package/dist/esm/services/transfer/service/endpoint-manager/task.d.ts +100 -22
  174. package/dist/esm/services/transfer/service/endpoint-manager/task.d.ts.map +1 -1
  175. package/dist/esm/services/transfer/service/endpoint-manager/task.js +1 -1
  176. package/dist/esm/services/transfer/service/endpoint-manager/task.js.map +1 -1
  177. package/dist/esm/services/transfer/service/endpoint-search.d.ts +19 -12
  178. package/dist/esm/services/transfer/service/endpoint-search.d.ts.map +1 -1
  179. package/dist/esm/services/transfer/service/endpoint-search.js +2 -11
  180. package/dist/esm/services/transfer/service/endpoint-search.js.map +1 -1
  181. package/dist/esm/services/transfer/service/endpoint.d.ts +257 -9
  182. package/dist/esm/services/transfer/service/endpoint.d.ts.map +1 -1
  183. package/dist/esm/services/transfer/service/endpoint.js.map +1 -1
  184. package/dist/esm/services/transfer/service/file-operations.d.ts +22 -6
  185. package/dist/esm/services/transfer/service/file-operations.d.ts.map +1 -1
  186. package/dist/esm/services/transfer/service/file-operations.js.map +1 -1
  187. package/dist/esm/services/transfer/service/roles.d.ts +75 -0
  188. package/dist/esm/services/transfer/service/roles.d.ts.map +1 -0
  189. package/dist/esm/services/transfer/service/roles.js +49 -0
  190. package/dist/esm/services/transfer/service/roles.js.map +1 -0
  191. package/dist/esm/services/transfer/service/task-submission.d.ts +84 -3
  192. package/dist/esm/services/transfer/service/task-submission.d.ts.map +1 -1
  193. package/dist/esm/services/transfer/service/task-submission.js.map +1 -1
  194. package/dist/esm/services/transfer/service/task.d.ts +162 -16
  195. package/dist/esm/services/transfer/service/task.d.ts.map +1 -1
  196. package/dist/esm/services/transfer/service/task.js.map +1 -1
  197. package/dist/esm/services/transfer/types.d.ts +79 -343
  198. package/dist/esm/services/transfer/types.d.ts.map +1 -1
  199. package/dist/umd/globus.production.js +2 -2
  200. package/dist/umd/globus.production.js.map +4 -4
  201. package/package.json +10 -17
package/README.md CHANGED
@@ -9,36 +9,29 @@ The Globus SDK for JavaScript provides first class TypeScript support and makes
9
9
  - [@globus/sdk API Documentation](https://globus.github.io/globus-sdk-javascript/)
10
10
  - [Examples](https://github.com/globus/globus-sdk-javascript/blob/main/examples/README.md)
11
11
  - [Upgrading](https://github.com/globus/globus-sdk-javascript/blob/main/UPGRADING.md)
12
+ - [Migrating from `v5` to `v6`](https://github.com/globus/globus-sdk-javascript/blob/main/UPGRADING.md#migrating-from-v5-to-v6)
12
13
  - [Migrating from `v4` to `v5`](https://github.com/globus/globus-sdk-javascript/blob/main/UPGRADING.md#migrating-from-v4-to-v5)
13
14
  - [Migrating from `v3` to `v4`](https://github.com/globus/globus-sdk-javascript/blob/main/UPGRADING.md#migrating-from-v3-to-v4)
14
15
 
15
16
  ## Installation
16
17
 
17
- If you are not using Typescript, you can install the SDK with the following command:
18
+ You can install the SDK with the following command:
18
19
 
19
20
  ```sh
20
21
  npm install @globus/sdk
21
22
  ```
22
23
 
23
- ### Typescript
24
-
25
- `@globus/sdk` is written in Typescript and includes type definitions for its internal types, Globus platform types (i.e., API responses) are provided by the `@globus/types` package and must be installed separately.
26
-
27
- ```sh
28
- npm install @globus/sdk @globus/types
29
- ```
30
-
31
24
  ## Supported Platforms
32
25
 
33
26
  ### Node.js
34
27
 
35
- We aim to support all Active LTS [Node.js releases](https://nodejs.org/en/about/previous-releases). We intend to support all Maintenance LTS versions until their official end-of-life.
28
+ We aim to support all Active LTS [Node.js releases](https://nodejs.org/en/about/previous-releases). We intend to support all Maintenance LTS versions until their official end-of-life. Removal of support for a Node.js version will be considered a breaking change and result in a major version bump of the SDK.
36
29
 
37
- | Version | |
38
- | ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
39
- | Node.js 18 | [![lts/hydrogen](https://img.shields.io/github/actions/workflow/status/globus/globus-sdk-javascript/ci.yml?style=flat-square&label=)](https://github.com/globus/globus-sdk-javascript/actions/workflows/ci.yml) |
40
- | Node.js 20 | [![lts/iron](https://img.shields.io/github/actions/workflow/status/globus/globus-sdk-javascript/ci.yml?style=flat-square&label=)](https://github.com/globus/globus-sdk-javascript/actions/workflows/ci.yml) |
41
- | Node.js 22 | [![lts/iron](https://img.shields.io/github/actions/workflow/status/globus/globus-sdk-javascript/ci.yml?style=flat-square&label=)](https://github.com/globus/globus-sdk-javascript/actions/workflows/ci.yml) |
30
+ | Version | |
31
+ | ---------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
32
+ | Node.js 20 | [![lts/iron](https://img.shields.io/github/actions/workflow/status/globus/globus-sdk-javascript/ci.yml?style=flat-square&label=)](https://github.com/globus/globus-sdk-javascript/actions/workflows/ci.yml) |
33
+ | Node.js 22 | [![lts/jod](https://img.shields.io/github/actions/workflow/status/globus/globus-sdk-javascript/ci.yml?style=flat-square&label=)](https://github.com/globus/globus-sdk-javascript/actions/workflows/ci.yml) |
34
+ | Node.js 24 | [![24.x](https://img.shields.io/github/actions/workflow/status/globus/globus-sdk-javascript/ci.yml?style=flat-square&label=)](https://github.com/globus/globus-sdk-javascript/actions/workflows/ci.yml) |
42
35
 
43
36
  ### Browser Support
44
37
 
@@ -68,8 +68,8 @@ var HOSTS2 = {
68
68
  preview: "preview.flows.automate.globus.org"
69
69
  };
70
70
 
71
- // src/services/timer/config.ts
72
- var ID3 = "TIMER";
71
+ // src/services/timers/config.ts
72
+ var ID3 = "TIMERS";
73
73
  var HOSTS3 = {
74
74
  sandbox: "sandbox.timer.automate.globus.org",
75
75
  production: "timer.automate.globus.org",
@@ -647,16 +647,23 @@ async function generateCodeChallenge(verifier) {
647
647
  function generateState() {
648
648
  return Array.from(getCrypto().getRandomValues(new Uint8Array(16))).map((v) => CHARSET[v % CHARSET.length]).join("");
649
649
  }
650
-
651
- // src/core/authorization/RedirectTransport.ts
652
650
  var KEYS = {
653
651
  PKCE_STATE: "pkce_state",
654
652
  PKCE_CODE_VERIFIER: "pkce_code_verifier"
655
653
  };
656
- function resetPKCE() {
657
- sessionStorage.removeItem(KEYS.PKCE_STATE);
658
- sessionStorage.removeItem(KEYS.PKCE_CODE_VERIFIER);
659
- }
654
+ var store = {
655
+ getKey(key) {
656
+ return key === "state" ? KEYS.PKCE_STATE : KEYS.PKCE_CODE_VERIFIER;
657
+ },
658
+ get: (entry) => sessionStorage.getItem(store.getKey(entry)),
659
+ set: (entry, value) => sessionStorage.setItem(store.getKey(entry), value),
660
+ reset: () => {
661
+ sessionStorage.removeItem(KEYS.PKCE_STATE);
662
+ sessionStorage.removeItem(KEYS.PKCE_CODE_VERIFIER);
663
+ }
664
+ };
665
+
666
+ // src/core/authorization/RedirectTransport.ts
660
667
  var RedirectTransport = class _RedirectTransport {
661
668
  #options;
662
669
  constructor(options) {
@@ -673,8 +680,8 @@ var RedirectTransport = class _RedirectTransport {
673
680
  const verifier = generateCodeVerifier();
674
681
  const challenge = await generateCodeChallenge(verifier);
675
682
  const state = this.#options.params?.["state"] ?? generateState();
676
- sessionStorage.setItem(KEYS.PKCE_CODE_VERIFIER, verifier);
677
- sessionStorage.setItem(KEYS.PKCE_STATE, state);
683
+ store.set("code_verifier", verifier);
684
+ store.set("state", state);
678
685
  const params = {
679
686
  response_type: "code",
680
687
  client_id: this.#options.client,
@@ -703,9 +710,9 @@ var RedirectTransport = class _RedirectTransport {
703
710
  }
704
711
  const code = params.get("code");
705
712
  if (!code) return void 0;
706
- const state = sessionStorage.getItem(KEYS.PKCE_STATE);
707
- const verifier = sessionStorage.getItem(KEYS.PKCE_CODE_VERIFIER);
708
- resetPKCE();
713
+ const state = store.get("state");
714
+ const verifier = store.get("code_verifier");
715
+ store.reset();
709
716
  if (params.get("state") !== state) {
710
717
  throw new Error(
711
718
  'Invalid State. The received "state" parameter does not match the expected state.'
@@ -784,7 +791,7 @@ var TokenManager = class {
784
791
  return this.#getTokenForService(SERVICES.SEARCH);
785
792
  }
786
793
  get timer() {
787
- return this.#getTokenForService(SERVICES.TIMER);
794
+ return this.#getTokenForService(SERVICES.TIMERS);
788
795
  }
789
796
  get compute() {
790
797
  return this.#getTokenForService(SERVICES.COMPUTE);
@@ -870,10 +877,119 @@ var MemoryStorage = class {
870
877
  }
871
878
  };
872
879
 
880
+ // src/core/authorization/PopupTransport.ts
881
+ var MESSAGE_SOURCE = "globus-sdk";
882
+ var PopupTransport = class _PopupTransport {
883
+ #options;
884
+ #window = null;
885
+ constructor(options) {
886
+ this.#options = options;
887
+ if (_PopupTransport.supported === false) {
888
+ throw new Error("PopupTransport is not supported in this environment.");
889
+ }
890
+ }
891
+ /**
892
+ * The `PopupTransport` is supported in environments where the `window` object is available.
893
+ */
894
+ static supported = isSupported() && "window" in globalThis && typeof globalThis.window.open === "function";
895
+ /**
896
+ * For the redirect transport, sending the request will redirect the user to the authorization endpoint, initiating the OAuth flow.
897
+ */
898
+ async send() {
899
+ const verifier = generateCodeVerifier();
900
+ const challenge = await generateCodeChallenge(verifier);
901
+ const state = this.#options.params?.["state"] ?? generateState();
902
+ store.set("code_verifier", verifier);
903
+ store.set("state", state);
904
+ const params = {
905
+ response_type: "code",
906
+ client_id: this.#options.client,
907
+ scope: this.#options.scopes || "",
908
+ redirect_uri: this.#options.redirect,
909
+ state,
910
+ code_challenge: challenge,
911
+ code_challenge_method: "S256",
912
+ ...this.#options.params || {}
913
+ };
914
+ const url = new URL(getAuthorizationEndpoint());
915
+ url.search = new URLSearchParams(params).toString();
916
+ const promise = new Promise((resolve) => {
917
+ window.addEventListener(
918
+ "message",
919
+ async (e) => {
920
+ const { data } = e;
921
+ if (e.origin !== window.location.origin || data?.source !== MESSAGE_SOURCE) {
922
+ return;
923
+ }
924
+ this.#window?.close();
925
+ const response = await this.#getToken(data.url);
926
+ resolve(response);
927
+ },
928
+ false
929
+ );
930
+ });
931
+ this.#window = window.open(url.toString(), "_blank", "width=800,height=600");
932
+ if (!this.#window) {
933
+ throw new Error("Unable to open window for PopupTransport.");
934
+ }
935
+ this.#window.focus();
936
+ return promise;
937
+ }
938
+ async #getToken(href) {
939
+ const url = new URL(href);
940
+ const params = new URLSearchParams(url.search);
941
+ if (params.get("error")) {
942
+ throw new Error(
943
+ params.get("error_description") || "An error occurred during the authorization process."
944
+ );
945
+ }
946
+ const code = params.get("code");
947
+ if (!code) return void 0;
948
+ const state = store.get("state");
949
+ const verifier = store.get("code_verifier");
950
+ store.reset();
951
+ if (params.get("state") !== state) {
952
+ throw new Error(
953
+ 'Invalid State. The received "state" parameter does not match the expected state.'
954
+ );
955
+ }
956
+ if (!verifier) {
957
+ throw new Error("Invalid Code Verifier");
958
+ }
959
+ const payload = {
960
+ code,
961
+ client_id: this.#options.client,
962
+ /**
963
+ * Retrieve the code verifier from session storage.
964
+ */
965
+ code_verifier: verifier,
966
+ redirect_uri: this.#options.redirect,
967
+ grant_type: "authorization_code"
968
+ };
969
+ const response = await (await oauth2_exports.token.exchange({
970
+ payload
971
+ })).json();
972
+ return response;
973
+ }
974
+ // eslint-disable-next-line class-methods-use-this
975
+ getToken() {
976
+ if (!window.opener) {
977
+ return;
978
+ }
979
+ window.opener.postMessage(
980
+ {
981
+ source: MESSAGE_SOURCE,
982
+ url: window.location.href
983
+ },
984
+ window.location.origin
985
+ );
986
+ }
987
+ };
988
+
873
989
  // src/core/authorization/AuthorizationManager.ts
874
990
  var TRANSPORTS = {
875
- redirect: RedirectTransport
876
- // popup: PopupTransport,
991
+ redirect: RedirectTransport,
992
+ popup: PopupTransport
877
993
  };
878
994
  var DEFAULT_CONFIGURATION = {
879
995
  useRefreshTokens: false,
@@ -1085,7 +1201,11 @@ var AuthorizationManager = class {
1085
1201
  log("debug", "AuthorizationManager.login");
1086
1202
  this.reset();
1087
1203
  const transport = this.#buildTransport({ params: options?.additionalParams });
1088
- await transport.send();
1204
+ const result = await transport.send();
1205
+ if (isGlobusAuthTokenResponse(result)) {
1206
+ this.addTokenResponse(result);
1207
+ }
1208
+ return result;
1089
1209
  }
1090
1210
  /**
1091
1211
  * Prompt the user to authenticate with Globus Auth.
@@ -1093,7 +1213,11 @@ var AuthorizationManager = class {
1093
1213
  async prompt(options) {
1094
1214
  log("debug", "AuthorizationManager.prompt");
1095
1215
  const transport = this.#buildTransport(options);
1096
- await transport.send();
1216
+ const result = await transport.send();
1217
+ if (isGlobusAuthTokenResponse(result)) {
1218
+ this.addTokenResponse(result);
1219
+ }
1220
+ return result;
1097
1221
  }
1098
1222
  /**
1099
1223
  * This method will attempt to complete the PKCE protocol flow.