@globus/sdk 3.0.0-alpha.8 → 3.0.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 (212) hide show
  1. package/cjs/index.d.ts +1 -0
  2. package/cjs/index.d.ts.map +1 -1
  3. package/cjs/index.js +2 -1
  4. package/cjs/index.js.map +1 -1
  5. package/cjs/lib/core/authorization/AuthorizationManager.d.ts +66 -12
  6. package/cjs/lib/core/authorization/AuthorizationManager.d.ts.map +1 -1
  7. package/cjs/lib/core/authorization/AuthorizationManager.js +133 -30
  8. package/cjs/lib/core/authorization/AuthorizationManager.js.map +1 -1
  9. package/cjs/lib/core/authorization/Event.d.ts +6 -1
  10. package/cjs/lib/core/authorization/Event.d.ts.map +1 -1
  11. package/cjs/lib/core/authorization/Event.js +3 -0
  12. package/cjs/lib/core/authorization/Event.js.map +1 -1
  13. package/cjs/lib/core/authorization/RedirectTransport.d.ts +12 -1
  14. package/cjs/lib/core/authorization/RedirectTransport.d.ts.map +1 -1
  15. package/cjs/lib/core/authorization/RedirectTransport.js +23 -5
  16. package/cjs/lib/core/authorization/RedirectTransport.js.map +1 -1
  17. package/cjs/lib/core/authorization/TokenLookup.d.ts +6 -1
  18. package/cjs/lib/core/authorization/TokenLookup.d.ts.map +1 -1
  19. package/cjs/lib/core/authorization/TokenLookup.js +40 -5
  20. package/cjs/lib/core/authorization/TokenLookup.js.map +1 -1
  21. package/cjs/lib/core/authorization/tokens.d.ts +1 -0
  22. package/cjs/lib/core/authorization/tokens.d.ts.map +1 -1
  23. package/cjs/lib/core/authorization/tokens.js +3 -1
  24. package/cjs/lib/core/authorization/tokens.js.map +1 -1
  25. package/cjs/lib/core/errors.d.ts.map +1 -1
  26. package/cjs/lib/core/errors.js +8 -2
  27. package/cjs/lib/core/errors.js.map +1 -1
  28. package/cjs/lib/core/global.d.ts +8 -6
  29. package/cjs/lib/core/global.d.ts.map +1 -1
  30. package/cjs/lib/core/global.js +3 -0
  31. package/cjs/lib/core/global.js.map +1 -1
  32. package/cjs/lib/core/logger.d.ts +2 -2
  33. package/cjs/lib/core/logger.d.ts.map +1 -1
  34. package/cjs/lib/core/logger.js +3 -3
  35. package/cjs/lib/core/logger.js.map +1 -1
  36. package/cjs/lib/core/storage/local-storage.js +1 -1
  37. package/cjs/lib/core/storage/local-storage.js.map +1 -1
  38. package/cjs/lib/core/storage/memory.d.ts +1 -1
  39. package/cjs/lib/core/storage/memory.d.ts.map +1 -1
  40. package/cjs/lib/core/storage/memory.js +2 -2
  41. package/cjs/lib/core/storage/memory.js.map +1 -1
  42. package/cjs/lib/services/auth/config.d.ts +5 -1
  43. package/cjs/lib/services/auth/config.d.ts.map +1 -1
  44. package/cjs/lib/services/auth/config.js +8 -0
  45. package/cjs/lib/services/auth/config.js.map +1 -1
  46. package/cjs/lib/services/auth/index.d.ts +3 -16
  47. package/cjs/lib/services/auth/index.d.ts.map +1 -1
  48. package/cjs/lib/services/auth/index.js +13 -2
  49. package/cjs/lib/services/auth/index.js.map +1 -1
  50. package/cjs/lib/services/auth/service/oauth2/index.d.ts +3 -0
  51. package/cjs/lib/services/auth/service/oauth2/index.d.ts.map +1 -1
  52. package/cjs/lib/services/auth/service/oauth2/index.js +11 -1
  53. package/cjs/lib/services/auth/service/oauth2/index.js.map +1 -1
  54. package/cjs/lib/services/auth/service/oauth2/token.d.ts +19 -1
  55. package/cjs/lib/services/auth/service/oauth2/token.d.ts.map +1 -1
  56. package/cjs/lib/services/auth/service/oauth2/token.js +16 -1
  57. package/cjs/lib/services/auth/service/oauth2/token.js.map +1 -1
  58. package/cjs/lib/services/auth/types.d.ts +40 -12
  59. package/cjs/lib/services/auth/types.d.ts.map +1 -1
  60. package/cjs/lib/services/compute/config.d.ts +7 -0
  61. package/cjs/lib/services/compute/config.d.ts.map +1 -0
  62. package/cjs/lib/services/compute/config.js +16 -0
  63. package/cjs/lib/services/compute/config.js.map +1 -0
  64. package/cjs/lib/services/compute/index.d.ts +14 -0
  65. package/cjs/lib/services/compute/index.d.ts.map +1 -0
  66. package/cjs/lib/services/compute/index.js +18 -0
  67. package/cjs/lib/services/compute/index.js.map +1 -0
  68. package/cjs/lib/services/compute/service/endpoints.d.ts +24 -0
  69. package/cjs/lib/services/compute/service/endpoints.d.ts.map +1 -0
  70. package/cjs/lib/services/compute/service/endpoints.js +29 -0
  71. package/cjs/lib/services/compute/service/endpoints.js.map +1 -0
  72. package/cjs/lib/services/flows/config.d.ts +1 -1
  73. package/cjs/lib/services/flows/config.d.ts.map +1 -1
  74. package/cjs/lib/services/flows/config.js.map +1 -1
  75. package/cjs/lib/services/globus-connect-server/client.d.ts +443 -88
  76. package/cjs/lib/services/globus-connect-server/client.d.ts.map +1 -1
  77. package/cjs/lib/services/groups/config.d.ts +1 -1
  78. package/cjs/lib/services/groups/config.d.ts.map +1 -1
  79. package/cjs/lib/services/groups/config.js.map +1 -1
  80. package/cjs/lib/services/search/config.d.ts +1 -1
  81. package/cjs/lib/services/search/config.d.ts.map +1 -1
  82. package/cjs/lib/services/search/config.js.map +1 -1
  83. package/cjs/lib/services/timer/config.d.ts +1 -1
  84. package/cjs/lib/services/timer/config.d.ts.map +1 -1
  85. package/cjs/lib/services/timer/config.js.map +1 -1
  86. package/cjs/lib/services/transfer/config.d.ts +1 -1
  87. package/cjs/lib/services/transfer/config.d.ts.map +1 -1
  88. package/cjs/lib/services/transfer/config.js.map +1 -1
  89. package/cjs/lib/services/transfer/index.d.ts +1 -0
  90. package/cjs/lib/services/transfer/index.d.ts.map +1 -1
  91. package/cjs/lib/services/transfer/index.js +2 -1
  92. package/cjs/lib/services/transfer/index.js.map +1 -1
  93. package/cjs/lib/services/transfer/service/collection-bookmarks.d.ts +64 -0
  94. package/cjs/lib/services/transfer/service/collection-bookmarks.d.ts.map +1 -0
  95. package/cjs/lib/services/transfer/service/collection-bookmarks.js +59 -0
  96. package/cjs/lib/services/transfer/service/collection-bookmarks.js.map +1 -0
  97. package/cjs/lib/services/transfer/service/endpoint.d.ts +127 -13
  98. package/cjs/lib/services/transfer/service/endpoint.d.ts.map +1 -1
  99. package/cjs/lib/services/transfer/service/endpoint.js +40 -1
  100. package/cjs/lib/services/transfer/service/endpoint.js.map +1 -1
  101. package/cjs/lib/services/transfer/service/task.d.ts +1 -1
  102. package/cjs/lib/services/transfer/types.d.ts +215 -0
  103. package/cjs/lib/services/transfer/types.d.ts.map +1 -1
  104. package/cjs/lib/services/types.d.ts +4 -0
  105. package/cjs/lib/services/types.d.ts.map +1 -1
  106. package/esm/index.d.ts +1 -0
  107. package/esm/index.d.ts.map +1 -1
  108. package/esm/index.js +1 -0
  109. package/esm/index.js.map +1 -1
  110. package/esm/lib/core/authorization/AuthorizationManager.d.ts +66 -12
  111. package/esm/lib/core/authorization/AuthorizationManager.d.ts.map +1 -1
  112. package/esm/lib/core/authorization/AuthorizationManager.js +134 -31
  113. package/esm/lib/core/authorization/AuthorizationManager.js.map +1 -1
  114. package/esm/lib/core/authorization/Event.d.ts +6 -1
  115. package/esm/lib/core/authorization/Event.d.ts.map +1 -1
  116. package/esm/lib/core/authorization/Event.js +3 -0
  117. package/esm/lib/core/authorization/Event.js.map +1 -1
  118. package/esm/lib/core/authorization/RedirectTransport.d.ts +12 -1
  119. package/esm/lib/core/authorization/RedirectTransport.d.ts.map +1 -1
  120. package/esm/lib/core/authorization/RedirectTransport.js +23 -5
  121. package/esm/lib/core/authorization/RedirectTransport.js.map +1 -1
  122. package/esm/lib/core/authorization/TokenLookup.d.ts +6 -1
  123. package/esm/lib/core/authorization/TokenLookup.d.ts.map +1 -1
  124. package/esm/lib/core/authorization/TokenLookup.js +41 -6
  125. package/esm/lib/core/authorization/TokenLookup.js.map +1 -1
  126. package/esm/lib/core/authorization/tokens.d.ts +1 -0
  127. package/esm/lib/core/authorization/tokens.d.ts.map +1 -1
  128. package/esm/lib/core/authorization/tokens.js +3 -1
  129. package/esm/lib/core/authorization/tokens.js.map +1 -1
  130. package/esm/lib/core/errors.d.ts.map +1 -1
  131. package/esm/lib/core/errors.js +8 -2
  132. package/esm/lib/core/errors.js.map +1 -1
  133. package/esm/lib/core/global.d.ts +8 -6
  134. package/esm/lib/core/global.d.ts.map +1 -1
  135. package/esm/lib/core/global.js +3 -0
  136. package/esm/lib/core/global.js.map +1 -1
  137. package/esm/lib/core/logger.d.ts +2 -2
  138. package/esm/lib/core/logger.d.ts.map +1 -1
  139. package/esm/lib/core/logger.js +3 -3
  140. package/esm/lib/core/logger.js.map +1 -1
  141. package/esm/lib/core/storage/local-storage.js +1 -1
  142. package/esm/lib/core/storage/local-storage.js.map +1 -1
  143. package/esm/lib/core/storage/memory.d.ts +1 -1
  144. package/esm/lib/core/storage/memory.d.ts.map +1 -1
  145. package/esm/lib/core/storage/memory.js +2 -2
  146. package/esm/lib/core/storage/memory.js.map +1 -1
  147. package/esm/lib/services/auth/config.d.ts +5 -1
  148. package/esm/lib/services/auth/config.d.ts.map +1 -1
  149. package/esm/lib/services/auth/config.js +8 -0
  150. package/esm/lib/services/auth/config.js.map +1 -1
  151. package/esm/lib/services/auth/index.d.ts +3 -16
  152. package/esm/lib/services/auth/index.d.ts.map +1 -1
  153. package/esm/lib/services/auth/index.js +10 -1
  154. package/esm/lib/services/auth/index.js.map +1 -1
  155. package/esm/lib/services/auth/service/oauth2/index.d.ts +3 -0
  156. package/esm/lib/services/auth/service/oauth2/index.d.ts.map +1 -1
  157. package/esm/lib/services/auth/service/oauth2/index.js +10 -0
  158. package/esm/lib/services/auth/service/oauth2/index.js.map +1 -1
  159. package/esm/lib/services/auth/service/oauth2/token.d.ts +19 -1
  160. package/esm/lib/services/auth/service/oauth2/token.d.ts.map +1 -1
  161. package/esm/lib/services/auth/service/oauth2/token.js +15 -0
  162. package/esm/lib/services/auth/service/oauth2/token.js.map +1 -1
  163. package/esm/lib/services/auth/types.d.ts +40 -12
  164. package/esm/lib/services/auth/types.d.ts.map +1 -1
  165. package/esm/lib/services/compute/config.d.ts +7 -0
  166. package/esm/lib/services/compute/config.d.ts.map +1 -0
  167. package/esm/lib/services/compute/config.js +13 -0
  168. package/esm/lib/services/compute/config.js.map +1 -0
  169. package/esm/lib/services/compute/index.d.ts +14 -0
  170. package/esm/lib/services/compute/index.d.ts.map +1 -0
  171. package/esm/lib/services/compute/index.js +14 -0
  172. package/esm/lib/services/compute/index.js.map +1 -0
  173. package/esm/lib/services/compute/service/endpoints.d.ts +24 -0
  174. package/esm/lib/services/compute/service/endpoints.d.ts.map +1 -0
  175. package/esm/lib/services/compute/service/endpoints.js +26 -0
  176. package/esm/lib/services/compute/service/endpoints.js.map +1 -0
  177. package/esm/lib/services/flows/config.d.ts +1 -1
  178. package/esm/lib/services/flows/config.d.ts.map +1 -1
  179. package/esm/lib/services/flows/config.js.map +1 -1
  180. package/esm/lib/services/globus-connect-server/client.d.ts +443 -88
  181. package/esm/lib/services/globus-connect-server/client.d.ts.map +1 -1
  182. package/esm/lib/services/groups/config.d.ts +1 -1
  183. package/esm/lib/services/groups/config.d.ts.map +1 -1
  184. package/esm/lib/services/groups/config.js.map +1 -1
  185. package/esm/lib/services/search/config.d.ts +1 -1
  186. package/esm/lib/services/search/config.d.ts.map +1 -1
  187. package/esm/lib/services/search/config.js.map +1 -1
  188. package/esm/lib/services/timer/config.d.ts +1 -1
  189. package/esm/lib/services/timer/config.d.ts.map +1 -1
  190. package/esm/lib/services/timer/config.js.map +1 -1
  191. package/esm/lib/services/transfer/config.d.ts +1 -1
  192. package/esm/lib/services/transfer/config.d.ts.map +1 -1
  193. package/esm/lib/services/transfer/config.js.map +1 -1
  194. package/esm/lib/services/transfer/index.d.ts +1 -0
  195. package/esm/lib/services/transfer/index.d.ts.map +1 -1
  196. package/esm/lib/services/transfer/index.js +1 -0
  197. package/esm/lib/services/transfer/index.js.map +1 -1
  198. package/esm/lib/services/transfer/service/collection-bookmarks.d.ts +64 -0
  199. package/esm/lib/services/transfer/service/collection-bookmarks.d.ts.map +1 -0
  200. package/esm/lib/services/transfer/service/collection-bookmarks.js +56 -0
  201. package/esm/lib/services/transfer/service/collection-bookmarks.js.map +1 -0
  202. package/esm/lib/services/transfer/service/endpoint.d.ts +127 -13
  203. package/esm/lib/services/transfer/service/endpoint.d.ts.map +1 -1
  204. package/esm/lib/services/transfer/service/endpoint.js +39 -0
  205. package/esm/lib/services/transfer/service/endpoint.js.map +1 -1
  206. package/esm/lib/services/transfer/service/task.d.ts +1 -1
  207. package/esm/lib/services/transfer/types.d.ts +215 -0
  208. package/esm/lib/services/transfer/types.d.ts.map +1 -1
  209. package/esm/lib/services/types.d.ts +4 -0
  210. package/esm/lib/services/types.d.ts.map +1 -1
  211. package/package.json +4 -3
  212. package/umd/globus.production.js +1 -1
package/cjs/index.d.ts CHANGED
@@ -60,4 +60,5 @@ export * as groups from './lib/services/groups/index.js';
60
60
  export * as flows from './lib/services/flows/index.js';
61
61
  export * as gcs from './lib/services/globus-connect-server/index.js';
62
62
  export * as timer from './lib/services/timer/index.js';
63
+ export * as compute from './lib/services/compute/index.js';
63
64
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDG;AAOH,OAAO,KAAK,MAAM,MAAM,sBAAsB,CAAC;AAE/C,OAAO,KAAK,aAAa,MAAM,mCAAmC,CAAC;AACnE,OAAO,KAAK,IAAI,MAAM,8BAA8B,CAAC;AACrD,OAAO,KAAK,QAAQ,MAAM,kCAAkC,CAAC;AAC7D,OAAO,KAAK,MAAM,MAAM,gCAAgC,CAAC;AACzD,OAAO,KAAK,MAAM,MAAM,gCAAgC,CAAC;AACzD,OAAO,KAAK,KAAK,MAAM,+BAA+B,CAAC;AACvD,OAAO,KAAK,GAAG,MAAM,+CAA+C,CAAC;AACrE,OAAO,KAAK,KAAK,MAAM,+BAA+B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDG;AAOH,OAAO,KAAK,MAAM,MAAM,sBAAsB,CAAC;AAE/C,OAAO,KAAK,aAAa,MAAM,mCAAmC,CAAC;AACnE,OAAO,KAAK,IAAI,MAAM,8BAA8B,CAAC;AACrD,OAAO,KAAK,QAAQ,MAAM,kCAAkC,CAAC;AAC7D,OAAO,KAAK,MAAM,MAAM,gCAAgC,CAAC;AACzD,OAAO,KAAK,MAAM,MAAM,gCAAgC,CAAC;AACzD,OAAO,KAAK,KAAK,MAAM,+BAA+B,CAAC;AACvD,OAAO,KAAK,GAAG,MAAM,+CAA+C,CAAC;AACrE,OAAO,KAAK,KAAK,MAAM,+BAA+B,CAAC;AACvD,OAAO,KAAK,OAAO,MAAM,iCAAiC,CAAC"}
package/cjs/index.js CHANGED
@@ -53,7 +53,7 @@
53
53
  * const result = await (await flows.flows.get("452bbea3-5e3b-45a5-af08-50179839a4e8")).json();
54
54
  */
55
55
  Object.defineProperty(exports, "__esModule", { value: true });
56
- exports.timer = exports.gcs = exports.flows = exports.groups = exports.search = exports.transfer = exports.auth = exports.authorization = exports.logger = void 0;
56
+ exports.compute = exports.timer = exports.gcs = exports.flows = exports.groups = exports.search = exports.transfer = exports.auth = exports.authorization = exports.logger = void 0;
57
57
  const tslib_1 = require("tslib");
58
58
  /// <reference types="@globus/types" />
59
59
  /// <reference types="@globus/types/auth" />
@@ -68,4 +68,5 @@ exports.groups = tslib_1.__importStar(require("./lib/services/groups/index.js"))
68
68
  exports.flows = tslib_1.__importStar(require("./lib/services/flows/index.js"));
69
69
  exports.gcs = tslib_1.__importStar(require("./lib/services/globus-connect-server/index.js"));
70
70
  exports.timer = tslib_1.__importStar(require("./lib/services/timer/index.js"));
71
+ exports.compute = tslib_1.__importStar(require("./lib/services/compute/index.js"));
71
72
  //# sourceMappingURL=index.js.map
package/cjs/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDG;;;;AAEH,uCAAuC;AACvC,4CAA4C;AAC5C,gDAAgD;AAChD,8CAA8C;AAE9C,uEAA+C;AAE/C,2FAAmE;AACnE,6EAAqD;AACrD,qFAA6D;AAC7D,iFAAyD;AACzD,iFAAyD;AACzD,+EAAuD;AACvD,6FAAqE;AACrE,+EAAuD"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDG;;;;AAEH,uCAAuC;AACvC,4CAA4C;AAC5C,gDAAgD;AAChD,8CAA8C;AAE9C,uEAA+C;AAE/C,2FAAmE;AACnE,6EAAqD;AACrD,qFAA6D;AAC7D,iFAAyD;AACzD,iFAAyD;AACzD,+EAAuD;AACvD,6FAAqE;AACrE,+EAAuD;AACvD,mFAA2D"}
@@ -1,12 +1,23 @@
1
1
  import type IConfig from 'js-pkce/dist/IConfig';
2
- import { Token, TokenResponse } from '../../services/auth/index.js';
3
2
  import { Event } from './Event.js';
3
+ import { GetTokenOptions } from './RedirectTransport.js';
4
4
  import { TokenLookup } from './TokenLookup.js';
5
5
  import { AuthorizationRequirementsError, ConsentRequiredError } from '../errors.js';
6
+ import type { JwtUserInfo, Token, TokenResponse, TokenWithRefresh } from '../../services/auth/types.js';
6
7
  export type AuthorizationManagerConfiguration = {
7
- client_id: IConfig['client_id'];
8
- requested_scopes: IConfig['requested_scopes'];
9
- redirect_uri: IConfig['redirect_uri'];
8
+ client: IConfig['client_id'];
9
+ scopes: IConfig['requested_scopes'];
10
+ redirect: IConfig['redirect_uri'];
11
+ /**
12
+ * @private
13
+ * @default DEFAULT_CONFIGURATION.useRefreshTokens
14
+ */
15
+ useRefreshTokens?: boolean;
16
+ /**
17
+ * @private
18
+ * @default DEFAULT_CONFIGURATION.defaultScopes
19
+ */
20
+ defaultScopes?: string | false;
10
21
  };
11
22
  /**
12
23
  * @experimental
@@ -15,7 +26,7 @@ export declare class AuthorizationManager {
15
26
  #private;
16
27
  configuration: AuthorizationManagerConfiguration;
17
28
  /**
18
- * The `AuthorizationManager` is consdiered `authenticated` if it has a valid Globus Auth token.
29
+ * The `AuthorizationManager` is considered `authenticated` if it has a valid Globus Auth token.
19
30
  * It does not necessarily mean that it has a valid token for a specific resource server.
20
31
  */
21
32
  get authenticated(): boolean;
@@ -27,6 +38,10 @@ export declare class AuthorizationManager {
27
38
  events: {
28
39
  /**
29
40
  * Emitted when the authenticated state changes.
41
+ * @event AuthorizationManager.events#authenticated
42
+ * @type {object}
43
+ * @property {boolean} isAuthenticated - Whether the `AuthorizationManager` is authenticated.
44
+ * @property {TokenResponse} [token] - The token response if the `AuthorizationManager` is authenticated.
30
45
  */
31
46
  authenticated: Event<"authenticated", {
32
47
  /**
@@ -38,30 +53,64 @@ export declare class AuthorizationManager {
38
53
  }>;
39
54
  /**
40
55
  * Emitted when the user revokes their authentication.
56
+ * @event AuthorizationManager.events#revoke
41
57
  */
42
58
  revoke: Event<"revoke", unknown>;
43
59
  };
44
60
  constructor(configuration: AuthorizationManagerConfiguration);
45
- startSilentRenew(): void;
61
+ /**
62
+ * The user information decoded from the `id_token` (JWT) of the current Globus Auth token.
63
+ * This method can be used instead of `auth.oauth2.userinfo` to get the user information without an additional request.
64
+ *
65
+ * **IMPORTANT**: The `id_token` can only be processed if the `openid` scope is requested during the authorization process.
66
+ *
67
+ * Additionally, the `profile` and `email` scopes are required to get the full user information.
68
+ *
69
+ * @see {@link https://docs.globus.org/api/auth/reference/#oidc_userinfo_endpoint}
70
+ */
71
+ get user(): JwtUserInfo | null;
72
+ /**
73
+ * Start the silent refresh process for the instance.
74
+ * @todo Add interval support for the silent refresh.
75
+ */
76
+ startSilentRefresh(): void;
77
+ /**
78
+ * Use the `refresh_token` attribute of a token to obtain a new access token.
79
+ * @param token The well-formed token with a `refresh_token` attribute.
80
+ */
81
+ refreshToken(token: TokenWithRefresh): Promise<void>;
46
82
  hasGlobusAuthToken(): boolean;
47
83
  getGlobusAuthToken(): any;
48
84
  /**
49
85
  * Reset the authenticated state and clear all tokens from storage.
86
+ * This method **does not** emit the `revoke` event. If you need to emit the `revoke` event, use the `AuthorizationManager.revoke` method.
50
87
  */
51
88
  reset(): void;
52
89
  /**
53
90
  * Initiate the login process by redirecting to the Globus Auth login page.
54
91
  */
55
92
  login(): void;
56
- handleCodeRedirect(): Promise<void>;
93
+ handleCodeRedirect(options?: {
94
+ shouldReplace: GetTokenOptions['shouldReplace'];
95
+ }): Promise<void>;
96
+ /**
97
+ * Handle an error response from a Globus service in the context of this `AuthorizationManager`.
98
+ * This method will introspect the response and attempt to handle any errors that should result
99
+ * in some additional Globus Auth interaction.
100
+ * @param response - The error response from a Globus service.
101
+ * @param execute - Whether to execute the handler immediately or return a function that can be executed later.
102
+ */
103
+ handleErrorResponse(response: Record<string, unknown>, execute?: true): void;
104
+ handleErrorResponse(response: Record<string, unknown>, execute?: false): () => void;
57
105
  /**
58
- * @todo
106
+ * Process a well-formed Authorization Requirements error response from a Globus service
107
+ * and redirect the user to the Globus Auth login page with the necessary parameters.
59
108
  */
60
- handleErrorResponse(response: {
61
- code: unknown;
62
- required_scopes?: unknown;
63
- }, execute?: boolean): void | (() => void);
64
109
  handleAuthorizationRequirementsError(response: AuthorizationRequirementsError): void;
110
+ /**
111
+ * Process a well-formed `ConsentRequired` error response from a Globus service
112
+ * and redirect the user to the Globus Auth login page with the necessary parameters.
113
+ */
65
114
  handleConsentRequiredError(response: ConsentRequiredError): void;
66
115
  /**
67
116
  * Add a Globus Auth token response to storage, if `other_tokens` are present they are also added.
@@ -69,6 +118,11 @@ export declare class AuthorizationManager {
69
118
  * consumers to add tokens to storage if necessary.
70
119
  */
71
120
  addTokenResponse: (token: Token | TokenResponse) => void;
121
+ /**
122
+ * Call `AuthroizationManager.reset`, revoke all of the available tokns, and emit the `revoke` event.
123
+ * @emits AuthorizationManager.events#revoke
124
+ * @see AuthorizationManager.reset
125
+ */
72
126
  revoke(): Promise<void>;
73
127
  }
74
128
  //# sourceMappingURL=AuthorizationManager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AuthorizationManager.d.ts","sourceRoot":"","sources":["../../../../../src/lib/core/authorization/AuthorizationManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAEhD,OAAO,EACL,KAAK,EACL,aAAa,EAId,MAAM,8BAA8B,CAAC;AAKtC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAGL,8BAA8B,EAC9B,oBAAoB,EACrB,MAAM,cAAc,CAAC;AAEtB,MAAM,MAAM,iCAAiC,GAAG;IAC9C,SAAS,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IAChC,gBAAgB,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC9C,YAAY,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;CACvC,CAAC;AAEF;;GAEG;AACH,qBAAa,oBAAoB;;IAG/B,aAAa,EAAE,iCAAiC,CAAC;IAIjD;;;OAGG;IACH,IAAI,aAAa,IAOQ,OAAO,CAL/B;IAED;;OAEG;IACH,IAAI,aAAa,CAAC,KAAK,EAAE,OAAO,EAG/B;IAED,MAAM,EAAE,WAAW,CAAC;IAEpB,MAAM;QACJ;;WAEG;;YAIC;;;eAGG;6BACc,OAAO;;;QAI5B;;WAEG;;MAEH;gBAEU,aAAa,EAAE,iCAAiC;IAsB5D,gBAAgB;IAMhB,kBAAkB;IAIlB,kBAAkB;IA0BlB;;OAEG;IACH,KAAK;IAmBL;;OAEG;IACH,KAAK;IASC,kBAAkB;IAQxB;;OAEG;IACH,mBAAmB,CAAC,QAAQ,EAAE;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,eAAe,CAAC,EAAE,OAAO,CAAA;KAAE,EAAE,OAAO,UAAO;IAiB1F,oCAAoC,CAAC,QAAQ,EAAE,8BAA8B;IAe7E,0BAA0B,CAAC,QAAQ,EAAE,oBAAoB;IAOzD;;;;OAIG;IACH,gBAAgB,UAAW,KAAK,GAAG,aAAa,UAM9C;IAEI,MAAM;CAIb"}
1
+ {"version":3,"file":"AuthorizationManager.d.ts","sourceRoot":"","sources":["../../../../../src/lib/core/authorization/AuthorizationManager.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAahD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,eAAe,EAAqB,MAAM,wBAAwB,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAGL,8BAA8B,EAC9B,oBAAoB,EACrB,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EACV,WAAW,EACX,KAAK,EACL,aAAa,EACb,gBAAgB,EACjB,MAAM,8BAA8B,CAAC;AAEtC,MAAM,MAAM,iCAAiC,GAAG;IAC9C,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IAC7B,MAAM,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACpC,QAAQ,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IAClC;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;CAChC,CAAC;AAOF;;GAEG;AACH,qBAAa,oBAAoB;;IAG/B,aAAa,EAAE,iCAAiC,CAAC;IAIjD;;;OAGG;IACH,IAAI,aAAa,IAOQ,OAAO,CAL/B;IAED;;OAEG;IACH,IAAI,aAAa,CAAC,KAAK,EAAE,OAAO,EAG/B;IAED,MAAM,EAAE,WAAW,CAAC;IAEpB,MAAM;QACJ;;;;;;WAMG;;YAIC;;;eAGG;6BACc,OAAO;;;QAI5B;;;WAGG;;MAEH;gBAEU,aAAa,EAAE,iCAAiC;IA6B5D;;;;;;;;;OASG;IACH,IAAI,IAAI,uBAGP;IAED;;;OAGG;IACH,kBAAkB;IAsBlB;;;OAGG;IACG,YAAY,CAAC,KAAK,EAAE,gBAAgB;IAoB1C,kBAAkB;IAIlB,kBAAkB;IA0BlB;;;OAGG;IACH,KAAK;IAoCL;;OAEG;IACH,KAAK;IAUC,kBAAkB,CACtB,OAAO,GAAE;QACP,aAAa,EAAE,eAAe,CAAC,eAAe,CAAC,CAAC;KACvB;IAe7B;;;;;;OAMG;IACH,mBAAmB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,IAAI,GAAG,IAAI;IAC5E,mBAAmB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,KAAK,GAAG,MAAM,IAAI;IAyBnF;;;OAGG;IACH,oCAAoC,CAAC,QAAQ,EAAE,8BAA8B;IAe7E;;;OAGG;IACH,0BAA0B,CAAC,QAAQ,EAAE,oBAAoB;IAOzD;;;;OAIG;IACH,gBAAgB,UAAW,KAAK,GAAG,aAAa,UAM9C;IAEF;;;;OAIG;IACG,MAAM;CAoBb"}
@@ -1,8 +1,9 @@
1
1
  "use strict";
2
- var _AuthorizationManager_instances, _AuthorizationManager_transport, _AuthorizationManager_authenticated, _AuthorizationManager_checkAuthorizationState, _AuthorizationManager_bootstrapFromStorageState, _AuthorizationManager_emitAuthenticatedState, _AuthorizationManager_buildTransport;
2
+ var _AuthorizationManager_instances, _AuthorizationManager_transport, _AuthorizationManager_authenticated, _AuthorizationManager_silentRefreshTokens, _AuthorizationManager_checkAuthorizationState, _AuthorizationManager_bootstrapFromStorageState, _AuthorizationManager_emitAuthenticatedState, _AuthorizationManager_withOfflineAccess, _AuthorizationManager_buildTransport, _AuthorizationManager_revokeToken;
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.AuthorizationManager = void 0;
5
5
  const tslib_1 = require("tslib");
6
+ const jwt_decode_1 = require("jwt-decode");
6
7
  const index_js_1 = require("../../services/auth/index.js");
7
8
  const index_js_2 = require("../storage/index.js");
8
9
  const logger_js_1 = require("../logger.js");
@@ -10,12 +11,16 @@ const Event_js_1 = require("./Event.js");
10
11
  const RedirectTransport_js_1 = require("./RedirectTransport.js");
11
12
  const TokenLookup_js_1 = require("./TokenLookup.js");
12
13
  const errors_js_1 = require("../errors.js");
14
+ const DEFAULT_CONFIGURATION = {
15
+ useRefreshTokens: false,
16
+ defaultScopes: 'openid profile email',
17
+ };
13
18
  /**
14
19
  * @experimental
15
20
  */
16
21
  class AuthorizationManager {
17
22
  /**
18
- * The `AuthorizationManager` is consdiered `authenticated` if it has a valid Globus Auth token.
23
+ * The `AuthorizationManager` is considered `authenticated` if it has a valid Globus Auth token.
19
24
  * It does not necessarily mean that it has a valid token for a specific resource server.
20
25
  */
21
26
  get authenticated() {
@@ -29,16 +34,22 @@ class AuthorizationManager {
29
34
  tslib_1.__classPrivateFieldGet(this, _AuthorizationManager_instances, "m", _AuthorizationManager_emitAuthenticatedState).call(this);
30
35
  }
31
36
  constructor(configuration) {
37
+ var _a;
32
38
  _AuthorizationManager_instances.add(this);
33
39
  _AuthorizationManager_transport.set(this, void 0);
34
40
  _AuthorizationManager_authenticated.set(this, false);
35
41
  this.events = {
36
42
  /**
37
43
  * Emitted when the authenticated state changes.
44
+ * @event AuthorizationManager.events#authenticated
45
+ * @type {object}
46
+ * @property {boolean} isAuthenticated - Whether the `AuthorizationManager` is authenticated.
47
+ * @property {TokenResponse} [token] - The token response if the `AuthorizationManager` is authenticated.
38
48
  */
39
49
  authenticated: new Event_js_1.Event('authenticated'),
40
50
  /**
41
51
  * Emitted when the user revokes their authentication.
52
+ * @event AuthorizationManager.events#revoke
42
53
  */
43
54
  revoke: new Event_js_1.Event('revoke'),
44
55
  };
@@ -48,9 +59,10 @@ class AuthorizationManager {
48
59
  * consumers to add tokens to storage if necessary.
49
60
  */
50
61
  this.addTokenResponse = (token) => {
51
- (0, index_js_2.getStorage)().set(`${this.configuration.client_id}:${token.resource_server}`, token);
62
+ var _a;
63
+ (0, index_js_2.getStorage)().set(`${this.configuration.client}:${token.resource_server}`, token);
52
64
  if ('other_tokens' in token) {
53
- token.other_tokens.forEach(this.addTokenResponse);
65
+ (_a = token.other_tokens) === null || _a === void 0 ? void 0 : _a.forEach(this.addTokenResponse);
54
66
  }
55
67
  tslib_1.__classPrivateFieldGet(this, _AuthorizationManager_instances, "m", _AuthorizationManager_checkAuthorizationState).call(this);
56
68
  };
@@ -58,33 +70,84 @@ class AuthorizationManager {
58
70
  * @todo Add support for passing in an alternative storage mechanism.
59
71
  */
60
72
  (0, index_js_2.createStorage)('localStorage');
61
- if (!configuration.client_id) {
62
- throw new Error('You must provide a `client_id` for your application.');
73
+ if (!configuration.client) {
74
+ throw new Error('You must provide a `client` for your application.');
63
75
  }
64
- this.configuration = Object.assign(Object.assign({}, configuration), {
65
- /**
66
- * Inject the `openid`, `profile`, `email`, and `offline_access` scopes by default.
67
- */
68
- requested_scopes: `${configuration.requested_scopes} openid profile email offline_access` });
76
+ /**
77
+ * Inject the `openid`, `profile`, `email`, and `offline_access` scopes by default unless
78
+ * explicitly opted out of.
79
+ */
80
+ const scopes = configuration.defaultScopes === false
81
+ ? ''
82
+ : (_a = configuration.defaultScopes) !== null && _a !== void 0 ? _a : DEFAULT_CONFIGURATION.defaultScopes;
83
+ this.configuration = Object.assign(Object.assign({}, configuration), { scopes: `${configuration.scopes}${scopes ? ` ${scopes}` : ''}` });
69
84
  this.tokens = new TokenLookup_js_1.TokenLookup({
70
85
  manager: this,
71
86
  });
72
- this.startSilentRenew();
73
- }
74
- startSilentRenew() {
75
- (0, logger_js_1.log)('debug', 'AuthorizationManager.startSilentRenew');
76
87
  tslib_1.__classPrivateFieldGet(this, _AuthorizationManager_instances, "m", _AuthorizationManager_bootstrapFromStorageState).call(this);
77
- // @todo Iterate through all tokens and refresh them.
88
+ this.startSilentRefresh();
89
+ }
90
+ /**
91
+ * The user information decoded from the `id_token` (JWT) of the current Globus Auth token.
92
+ * This method can be used instead of `auth.oauth2.userinfo` to get the user information without an additional request.
93
+ *
94
+ * **IMPORTANT**: The `id_token` can only be processed if the `openid` scope is requested during the authorization process.
95
+ *
96
+ * Additionally, the `profile` and `email` scopes are required to get the full user information.
97
+ *
98
+ * @see {@link https://docs.globus.org/api/auth/reference/#oidc_userinfo_endpoint}
99
+ */
100
+ get user() {
101
+ const token = this.getGlobusAuthToken();
102
+ return token && token.id_token ? (0, jwt_decode_1.jwtDecode)(token.id_token) : null;
103
+ }
104
+ /**
105
+ * Start the silent refresh process for the instance.
106
+ * @todo Add interval support for the silent refresh.
107
+ */
108
+ startSilentRefresh() {
109
+ (0, logger_js_1.log)('debug', `AuthorizationManager.startSilentRefresh | useRefreshTokens=${this.configuration.useRefreshTokens}`);
110
+ /**
111
+ * Silent refresh is only supported when using refresh tokens.
112
+ */
113
+ if (this.configuration.useRefreshTokens) {
114
+ tslib_1.__classPrivateFieldGet(this, _AuthorizationManager_instances, "m", _AuthorizationManager_silentRefreshTokens).call(this);
115
+ }
116
+ }
117
+ /**
118
+ * Use the `refresh_token` attribute of a token to obtain a new access token.
119
+ * @param token The well-formed token with a `refresh_token` attribute.
120
+ */
121
+ refreshToken(token) {
122
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
123
+ (0, logger_js_1.log)('debug', `AuthorizationManager.refreshToken | resource_server=${token.resource_server}`);
124
+ try {
125
+ const response = yield (yield index_js_1.oauth2.token.refresh({
126
+ payload: {
127
+ client_id: this.configuration.client,
128
+ refresh_token: token.refresh_token,
129
+ grant_type: 'refresh_token',
130
+ },
131
+ })).json();
132
+ if ((0, index_js_1.isGlobusAuthTokenResponse)(response)) {
133
+ this.addTokenResponse(response);
134
+ }
135
+ }
136
+ catch (error) {
137
+ (0, logger_js_1.log)('error', `AuthorizationManager.refreshToken | resource_server=${token.resource_server}`);
138
+ }
139
+ });
78
140
  }
79
141
  hasGlobusAuthToken() {
80
142
  return this.getGlobusAuthToken() !== null;
81
143
  }
82
144
  getGlobusAuthToken() {
83
- const entry = (0, index_js_2.getStorage)().get(`${this.configuration.client_id}:auth.globus.org`);
145
+ const entry = (0, index_js_2.getStorage)().get(`${this.configuration.client}:auth.globus.org`);
84
146
  return entry ? JSON.parse(entry) : null;
85
147
  }
86
148
  /**
87
149
  * Reset the authenticated state and clear all tokens from storage.
150
+ * This method **does not** emit the `revoke` event. If you need to emit the `revoke` event, use the `AuthorizationManager.revoke` method.
88
151
  */
89
152
  reset() {
90
153
  /**
@@ -97,6 +160,7 @@ class AuthorizationManager {
97
160
  * Initiate the login process by redirecting to the Globus Auth login page.
98
161
  */
99
162
  login() {
163
+ (0, logger_js_1.log)('debug', 'AuthorizationManager.login');
100
164
  this.reset();
101
165
  /**
102
166
  * In the future, it's possible that we may want to support different types of transports.
@@ -105,30 +169,38 @@ class AuthorizationManager {
105
169
  transport.send();
106
170
  }
107
171
  handleCodeRedirect() {
108
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
109
- const response = yield tslib_1.__classPrivateFieldGet(this, _AuthorizationManager_instances, "m", _AuthorizationManager_buildTransport).call(this).getToken();
172
+ return tslib_1.__awaiter(this, arguments, void 0, function* (options = { shouldReplace: true }) {
173
+ (0, logger_js_1.log)('debug', 'AuthorizationManager.handleCodeRedirect');
174
+ const response = yield tslib_1.__classPrivateFieldGet(this, _AuthorizationManager_instances, "m", _AuthorizationManager_buildTransport).call(this).getToken({
175
+ shouldReplace: options === null || options === void 0 ? void 0 : options.shouldReplace,
176
+ });
110
177
  if ((0, index_js_1.isGlobusAuthTokenResponse)(response)) {
178
+ (0, logger_js_1.log)('debug', `AuthorizationManager.handleCodeRedirect | response=${JSON.stringify(response)}`);
111
179
  this.addTokenResponse(response);
112
- this.authenticated = true;
113
180
  }
114
181
  });
115
182
  }
116
- /**
117
- * @todo
118
- */
119
183
  handleErrorResponse(response, execute = true) {
184
+ (0, logger_js_1.log)('debug', `AuthorizationManager.handleErrorResponse | response=${JSON.stringify(response)} execute=${execute}`);
120
185
  let handler = () => { };
121
186
  if ((0, errors_js_1.isAuthorizationRequirementsError)(response)) {
187
+ (0, logger_js_1.log)('debug', 'AuthorizationManager.handleErrorResponse | error=AuthorizationRequirementsError');
122
188
  handler = () => this.handleAuthorizationRequirementsError(response);
123
189
  }
124
190
  if ((0, errors_js_1.isConsentRequiredError)(response)) {
191
+ (0, logger_js_1.log)('debug', 'AuthorizationManager.handleErrorResponse | error=ConsentRequiredError');
125
192
  handler = () => this.handleConsentRequiredError(response);
126
193
  }
127
- if (response.code === 'AuthenticationFailed') {
128
- this.revoke();
194
+ if ('code' in response && response['code'] === 'AuthenticationFailed') {
195
+ (0, logger_js_1.log)('debug', 'AuthorizationManager.handleErrorResponse | error=AuthenticationFailed');
196
+ handler = () => this.revoke();
129
197
  }
130
- return execute ? handler() : handler;
198
+ return execute === true ? handler() : handler;
131
199
  }
200
+ /**
201
+ * Process a well-formed Authorization Requirements error response from a Globus service
202
+ * and redirect the user to the Globus Auth login page with the necessary parameters.
203
+ */
132
204
  handleAuthorizationRequirementsError(response) {
133
205
  tslib_1.__classPrivateFieldSet(this, _AuthorizationManager_transport, tslib_1.__classPrivateFieldGet(this, _AuthorizationManager_instances, "m", _AuthorizationManager_buildTransport).call(this, {
134
206
  params: {
@@ -141,21 +213,40 @@ class AuthorizationManager {
141
213
  }), "f");
142
214
  tslib_1.__classPrivateFieldGet(this, _AuthorizationManager_transport, "f").send();
143
215
  }
216
+ /**
217
+ * Process a well-formed `ConsentRequired` error response from a Globus service
218
+ * and redirect the user to the Globus Auth login page with the necessary parameters.
219
+ */
144
220
  handleConsentRequiredError(response) {
145
221
  tslib_1.__classPrivateFieldSet(this, _AuthorizationManager_transport, tslib_1.__classPrivateFieldGet(this, _AuthorizationManager_instances, "m", _AuthorizationManager_buildTransport).call(this, {
146
- requested_scopes: response.required_scopes.join(' '),
222
+ requested_scopes: tslib_1.__classPrivateFieldGet(this, _AuthorizationManager_instances, "m", _AuthorizationManager_withOfflineAccess).call(this, response.required_scopes.join(' ')),
147
223
  }), "f");
148
224
  tslib_1.__classPrivateFieldGet(this, _AuthorizationManager_transport, "f").send();
149
225
  }
226
+ /**
227
+ * Call `AuthroizationManager.reset`, revoke all of the available tokns, and emit the `revoke` event.
228
+ * @emits AuthorizationManager.events#revoke
229
+ * @see AuthorizationManager.reset
230
+ */
150
231
  revoke() {
151
232
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
233
+ (0, logger_js_1.log)('debug', 'AuthorizationManager.revoke');
234
+ const revocation = Promise.all(this.tokens.getAll().map(tslib_1.__classPrivateFieldGet(this, _AuthorizationManager_instances, "m", _AuthorizationManager_revokeToken).bind(this)));
152
235
  this.reset();
236
+ yield revocation;
153
237
  yield this.events.revoke.dispatch();
154
238
  });
155
239
  }
156
240
  }
157
241
  exports.AuthorizationManager = AuthorizationManager;
158
- _AuthorizationManager_transport = new WeakMap(), _AuthorizationManager_authenticated = new WeakMap(), _AuthorizationManager_instances = new WeakSet(), _AuthorizationManager_checkAuthorizationState = function _AuthorizationManager_checkAuthorizationState() {
242
+ _AuthorizationManager_transport = new WeakMap(), _AuthorizationManager_authenticated = new WeakMap(), _AuthorizationManager_instances = new WeakSet(), _AuthorizationManager_silentRefreshTokens = function _AuthorizationManager_silentRefreshTokens() {
243
+ (0, logger_js_1.log)('debug', 'AuthorizationManager.#silentRefreshTokens');
244
+ this.tokens.getAll().forEach((token) => {
245
+ if ((0, index_js_1.isRefreshToken)(token)) {
246
+ this.refreshToken(token);
247
+ }
248
+ });
249
+ }, _AuthorizationManager_checkAuthorizationState = function _AuthorizationManager_checkAuthorizationState() {
159
250
  (0, logger_js_1.log)('debug', 'AuthorizationManager.#checkAuthorizationState');
160
251
  if (this.hasGlobusAuthToken()) {
161
252
  this.authenticated = true;
@@ -166,8 +257,8 @@ _AuthorizationManager_transport = new WeakMap(), _AuthorizationManager_authentic
166
257
  tslib_1.__classPrivateFieldGet(this, _AuthorizationManager_instances, "m", _AuthorizationManager_checkAuthorizationState).call(this);
167
258
  });
168
259
  }, _AuthorizationManager_emitAuthenticatedState = function _AuthorizationManager_emitAuthenticatedState() {
169
- var _a;
170
260
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
261
+ var _a;
171
262
  const isAuthenticated = this.authenticated;
172
263
  const token = (_a = this.getGlobusAuthToken()) !== null && _a !== void 0 ? _a : undefined;
173
264
  yield this.events.authenticated.dispatch({
@@ -175,7 +266,19 @@ _AuthorizationManager_transport = new WeakMap(), _AuthorizationManager_authentic
175
266
  token,
176
267
  });
177
268
  });
269
+ }, _AuthorizationManager_withOfflineAccess = function _AuthorizationManager_withOfflineAccess(scopes) {
270
+ return `${scopes}${this.configuration.useRefreshTokens ? ' offline_access' : ''}`;
178
271
  }, _AuthorizationManager_buildTransport = function _AuthorizationManager_buildTransport(overrides) {
179
- return new RedirectTransport_js_1.RedirectTransport(Object.assign({ client_id: this.configuration.client_id, authorization_endpoint: (0, index_js_1.getAuthorizationEndpoint)(), token_endpoint: (0, index_js_1.getTokenEndpoint)(), redirect_uri: this.configuration.redirect_uri, requested_scopes: this.configuration.requested_scopes }, overrides));
272
+ var _a;
273
+ const scopes = tslib_1.__classPrivateFieldGet(this, _AuthorizationManager_instances, "m", _AuthorizationManager_withOfflineAccess).call(this, (_a = overrides === null || overrides === void 0 ? void 0 : overrides.requested_scopes) !== null && _a !== void 0 ? _a : this.configuration.scopes);
274
+ return new RedirectTransport_js_1.RedirectTransport(Object.assign({ client_id: this.configuration.client, authorization_endpoint: (0, index_js_1.getAuthorizationEndpoint)(), token_endpoint: (0, index_js_1.getTokenEndpoint)(), redirect_uri: this.configuration.redirect, requested_scopes: scopes }, overrides));
275
+ }, _AuthorizationManager_revokeToken = function _AuthorizationManager_revokeToken(token) {
276
+ (0, logger_js_1.log)('debug', `AuthorizationManager.revokeToken | resource_server=${token.resource_server}`);
277
+ return index_js_1.oauth2.token.revoke({
278
+ payload: {
279
+ client_id: this.configuration.client,
280
+ token: token.access_token,
281
+ },
282
+ });
180
283
  };
181
284
  //# sourceMappingURL=AuthorizationManager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AuthorizationManager.js","sourceRoot":"","sources":["../../../../../src/lib/core/authorization/AuthorizationManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AuthorizationManager.js","sourceRoot":"","sources":["../../../../../src/lib/core/authorization/AuthorizationManager.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,15 @@
1
- type ListenerCallback<P> = (payload: P | undefined) => Promise<void> | void;
1
+ /**
2
+ * @todo It would be nice to not `| any` here, but ideally callers do not need to
3
+ * fully type the payload to attach listeners.
4
+ */
5
+ type ListenerCallback<P> = (payload?: P | any) => Promise<void> | void;
2
6
  export declare class Event<EventName extends string, Payload extends unknown> {
3
7
  #private;
4
8
  readonly name: EventName;
5
9
  constructor(name: EventName);
6
10
  addListener(callback: ListenerCallback<Payload>): () => void;
7
11
  removeListener(callback: ListenerCallback<Payload>): void;
12
+ clearListeners(): void;
8
13
  dispatch(payload?: Payload): Promise<void>;
9
14
  }
10
15
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"Event.d.ts","sourceRoot":"","sources":["../../../../../src/lib/core/authorization/Event.ts"],"names":[],"mappings":"AAAA,KAAK,gBAAgB,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAE5E,qBAAa,KAAK,CAAC,SAAS,SAAS,MAAM,EAAE,OAAO,SAAS,OAAO;;IAGtD,QAAQ,CAAC,IAAI,EAAE,SAAS;gBAAf,IAAI,EAAE,SAAS;IAEpC,WAAW,CAAC,QAAQ,EAAE,gBAAgB,CAAC,OAAO,CAAC;IAK/C,cAAc,CAAC,QAAQ,EAAE,gBAAgB,CAAC,OAAO,CAAC;IAI5C,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO;CAGjC"}
1
+ {"version":3,"file":"Event.d.ts","sourceRoot":"","sources":["../../../../../src/lib/core/authorization/Event.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,KAAK,gBAAgB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAEvE,qBAAa,KAAK,CAAC,SAAS,SAAS,MAAM,EAAE,OAAO,SAAS,OAAO;;IAGtD,QAAQ,CAAC,IAAI,EAAE,SAAS;gBAAf,IAAI,EAAE,SAAS;IAEpC,WAAW,CAAC,QAAQ,EAAE,gBAAgB,CAAC,OAAO,CAAC;IAK/C,cAAc,CAAC,QAAQ,EAAE,gBAAgB,CAAC,OAAO,CAAC;IAIlD,cAAc;IAIR,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO;CAGjC"}
@@ -15,6 +15,9 @@ class Event {
15
15
  removeListener(callback) {
16
16
  tslib_1.__classPrivateFieldSet(this, _Event_callbacks, tslib_1.__classPrivateFieldGet(this, _Event_callbacks, "f").filter((cb) => cb !== callback), "f");
17
17
  }
18
+ clearListeners() {
19
+ tslib_1.__classPrivateFieldSet(this, _Event_callbacks, [], "f");
20
+ }
18
21
  dispatch(payload) {
19
22
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
20
23
  yield Promise.all(tslib_1.__classPrivateFieldGet(this, _Event_callbacks, "f").map((callback) => callback(payload)));
@@ -1 +1 @@
1
- {"version":3,"file":"Event.js","sourceRoot":"","sources":["../../../../../src/lib/core/authorization/Event.ts"],"names":[],"mappings":";;;;;AAEA,MAAa,KAAK;IAGhB,YAAqB,IAAe;QAAf,SAAI,GAAJ,IAAI,CAAW;QAFpC,2BAA0C,EAAE,EAAC;IAEN,CAAC;IAExC,WAAW,CAAC,QAAmC;QAC7C,+BAAA,IAAI,wBAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC/B,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC7C,CAAC;IAED,cAAc,CAAC,QAAmC;QAChD,+BAAA,IAAI,oBAAc,+BAAA,IAAI,wBAAW,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,QAAQ,CAAC,MAAA,CAAC;IACpE,CAAC;IAEK,QAAQ,CAAC,OAAiB;;YAC9B,MAAM,OAAO,CAAC,GAAG,CAAC,+BAAA,IAAI,wBAAW,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC1E,CAAC;KAAA;CACF;AAjBD,sBAiBC"}
1
+ {"version":3,"file":"Event.js","sourceRoot":"","sources":["../../../../../src/lib/core/authorization/Event.ts"],"names":[],"mappings":";;;;;AAMA,MAAa,KAAK;IAGhB,YAAqB,IAAe;QAAf,SAAI,GAAJ,IAAI,CAAW;QAFpC,2BAA0C,EAAE,EAAC;IAEN,CAAC;IAExC,WAAW,CAAC,QAAmC;QAC7C,+BAAA,IAAI,wBAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC/B,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC7C,CAAC;IAED,cAAc,CAAC,QAAmC;QAChD,+BAAA,IAAI,oBAAc,+BAAA,IAAI,wBAAW,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,QAAQ,CAAC,MAAA,CAAC;IACpE,CAAC;IAED,cAAc;QACZ,+BAAA,IAAI,oBAAc,EAAE,MAAA,CAAC;IACvB,CAAC;IAEK,QAAQ,CAAC,OAAiB;;YAC9B,MAAM,OAAO,CAAC,GAAG,CAAC,+BAAA,IAAI,wBAAW,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC1E,CAAC;KAAA;CACF;AArBD,sBAqBC"}
@@ -1,5 +1,12 @@
1
1
  import type IConfig from 'js-pkce/dist/IConfig';
2
2
  import type IObject from 'js-pkce/dist/IObject';
3
+ export type GetTokenOptions = {
4
+ /**
5
+ * Whether or not the URL should be replaced after processing the token.
6
+ * @default true
7
+ */
8
+ shouldReplace?: boolean;
9
+ };
3
10
  export declare class RedirectTransport {
4
11
  #private;
5
12
  constructor(options: IConfig & {
@@ -9,6 +16,10 @@ export declare class RedirectTransport {
9
16
  params?: IObject;
10
17
  });
11
18
  send(): void;
12
- getToken(): Promise<import("js-pkce/dist/ITokenResponse").default | undefined>;
19
+ /**
20
+ * Parse the current URL for the authorization code (`?code=...`) and exchange it for an access token when available.
21
+ * - When the URL is processed and exchanged for an access token, the page is redirected to the current URL without the `?code=...&state=...` parameters.
22
+ */
23
+ getToken(options?: GetTokenOptions): Promise<import("js-pkce/dist/ITokenResponse").default | undefined>;
13
24
  }
14
25
  //# sourceMappingURL=RedirectTransport.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"RedirectTransport.d.ts","sourceRoot":"","sources":["../../../../../src/lib/core/authorization/RedirectTransport.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAChD,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAEhD,qBAAa,iBAAiB;;gBAM1B,OAAO,EAAE,OAAO,GAAG;QACjB;;WAEG;QACH,MAAM,CAAC,EAAE,OAAO,CAAC;KAClB;IAWH,IAAI;IAIE,QAAQ;CAiBf"}
1
+ {"version":3,"file":"RedirectTransport.d.ts","sourceRoot":"","sources":["../../../../../src/lib/core/authorization/RedirectTransport.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAChD,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAEhD,MAAM,MAAM,eAAe,GAAG;IAC5B;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,qBAAa,iBAAiB;;gBAM1B,OAAO,EAAE,OAAO,GAAG;QACjB;;WAEG;QACH,MAAM,CAAC,EAAE,OAAO,CAAC;KAClB;IAWH,IAAI;IAIJ;;;OAGG;IACG,QAAQ,CAAC,OAAO,GAAE,eAAyC;CA+BlE"}
@@ -15,23 +15,41 @@ class RedirectTransport {
15
15
  send() {
16
16
  window.location.replace(tslib_1.__classPrivateFieldGet(this, _RedirectTransport_pkce, "f").authorizeUrl(tslib_1.__classPrivateFieldGet(this, _RedirectTransport_params, "f")));
17
17
  }
18
+ /**
19
+ * Parse the current URL for the authorization code (`?code=...`) and exchange it for an access token when available.
20
+ * - When the URL is processed and exchanged for an access token, the page is redirected to the current URL without the `?code=...&state=...` parameters.
21
+ */
18
22
  getToken() {
19
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
23
+ return tslib_1.__awaiter(this, arguments, void 0, function* (options = { shouldReplace: true }) {
20
24
  const url = new URL(window.location.href);
21
25
  const params = new URLSearchParams(url.search);
26
+ /**
27
+ * If we don't have a `code` parameter, we can't exchange it for an access token.
28
+ */
22
29
  if (!params.get('code'))
23
30
  return undefined;
24
31
  const response = yield tslib_1.__classPrivateFieldGet(this, _RedirectTransport_pkce, "f").exchangeForAccessToken(url.toString());
25
- params.delete('code');
26
- params.delete('state');
27
- url.search = params.toString();
28
32
  /**
29
33
  * Resets js-pkce state
30
34
  * @see https://github.com/bpedroza/js-pkce/blob/master/src/PKCE.ts
31
35
  */
32
36
  sessionStorage.removeItem('pkce_state');
33
37
  sessionStorage.removeItem('pkce_code_verifier');
34
- window.location.replace(url);
38
+ if (options.shouldReplace) {
39
+ /**
40
+ * Remove the `code` and `state` parameters from the URL.
41
+ */
42
+ params.delete('code');
43
+ params.delete('state');
44
+ /**
45
+ * Update the URL with the new query string.
46
+ */
47
+ url.search = params.toString();
48
+ /**
49
+ * Redirect the page to the new URL (without the `code` and `state` parameters)/
50
+ */
51
+ window.location.replace(url);
52
+ }
35
53
  return response;
36
54
  });
37
55
  }
@@ -1 +1 @@
1
- {"version":3,"file":"RedirectTransport.js","sourceRoot":"","sources":["../../../../../src/lib/core/authorization/RedirectTransport.ts"],"names":[],"mappings":";;;;;AAAA,8DAA2B;AAI3B,MAAa,iBAAiB;IAK5B,YACE,OAKC;QAVH,0CAAY;QAEZ,oCAAmB,EAAE,EAAC;QAUpB,MAAM,EAAE,MAAM,KAAgB,OAAO,EAAlB,MAAM,kBAAK,OAAO,EAA/B,UAAqB,CAAU,CAAC;QACtC,+BAAA,IAAI,2BAAS,IAAI,iBAAI,mBAChB,MAAM,EACT,MAAA,CAAC;QACH,+BAAA,IAAI,+CACC,MAAM,OACV,CAAC;IACJ,CAAC;IAED,IAAI;QACF,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,+BAAA,IAAI,+BAAM,CAAC,YAAY,CAAC,+BAAA,IAAI,iCAAQ,CAAC,CAAC,CAAC;IACjE,CAAC;IAEK,QAAQ;;YACZ,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC1C,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC/C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;gBAAE,OAAO,SAAS,CAAC;YAC1C,MAAM,QAAQ,GAAG,MAAM,+BAAA,IAAI,+BAAM,CAAC,sBAAsB,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;YACzE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACtB,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACvB,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;YAC/B;;;eAGG;YACH,cAAc,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;YACxC,cAAc,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC;YAChD,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC7B,OAAO,QAAQ,CAAC;QAClB,CAAC;KAAA;CACF;AA3CD,8CA2CC"}
1
+ {"version":3,"file":"RedirectTransport.js","sourceRoot":"","sources":["../../../../../src/lib/core/authorization/RedirectTransport.ts"],"names":[],"mappings":";;;;;AAAA,8DAA2B;AAY3B,MAAa,iBAAiB;IAK5B,YACE,OAKC;QAVH,0CAAY;QAEZ,oCAAmB,EAAE,EAAC;QAUpB,MAAM,EAAE,MAAM,KAAgB,OAAO,EAAlB,MAAM,kBAAK,OAAO,EAA/B,UAAqB,CAAU,CAAC;QACtC,+BAAA,IAAI,2BAAS,IAAI,iBAAI,mBAChB,MAAM,EACT,MAAA,CAAC;QACH,+BAAA,IAAI,+CACC,MAAM,OACV,CAAC;IACJ,CAAC;IAED,IAAI;QACF,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,+BAAA,IAAI,+BAAM,CAAC,YAAY,CAAC,+BAAA,IAAI,iCAAQ,CAAC,CAAC,CAAC;IACjE,CAAC;IAED;;;OAGG;IACG,QAAQ;qEAAC,UAA2B,EAAE,aAAa,EAAE,IAAI,EAAE;YAC/D,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC1C,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC/C;;eAEG;YACH,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;gBAAE,OAAO,SAAS,CAAC;YAC1C,MAAM,QAAQ,GAAG,MAAM,+BAAA,IAAI,+BAAM,CAAC,sBAAsB,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;YACzE;;;eAGG;YACH,cAAc,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;YACxC,cAAc,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC;YAChD,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;gBAC1B;;mBAEG;gBACH,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBACtB,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBACvB;;mBAEG;gBACH,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;gBAC/B;;mBAEG;gBACH,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC/B,CAAC;YACD,OAAO,QAAQ,CAAC;QAClB,CAAC;KAAA;CACF;AA7DD,8CA6DC"}