@globus/sdk 6.0.0-rc.1 → 6.0.0-rc.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -15
- package/dist/cjs/core/authorization/index.js +142 -18
- package/dist/cjs/core/authorization/index.js.map +3 -3
- package/dist/cjs/index.js +450 -144
- package/dist/cjs/index.js.map +4 -4
- package/dist/cjs/services/globus-connect-server/client.js +2 -2
- package/dist/cjs/services/globus-connect-server/client.js.map +3 -3
- package/dist/esm/core/authorization/AuthorizationManager.d.ts +14 -8
- package/dist/esm/core/authorization/AuthorizationManager.d.ts.map +1 -1
- package/dist/esm/core/authorization/AuthorizationManager.js +13 -5
- package/dist/esm/core/authorization/AuthorizationManager.js.map +1 -1
- package/dist/esm/core/authorization/RedirectTransport.d.ts +3 -9
- package/dist/esm/core/authorization/RedirectTransport.d.ts.map +1 -1
- package/dist/esm/core/authorization/RedirectTransport.js +6 -17
- package/dist/esm/core/authorization/RedirectTransport.js.map +1 -1
- package/dist/esm/core/authorization/TokenManager.js +1 -1
- package/dist/esm/core/authorization/TokenManager.js.map +1 -1
- package/dist/esm/core/authorization/pkce.d.ts +15 -0
- package/dist/esm/core/authorization/pkce.d.ts.map +1 -1
- package/dist/esm/core/authorization/pkce.js +18 -0
- package/dist/esm/core/authorization/pkce.js.map +1 -1
- package/dist/esm/core/global.d.ts +1 -1
- package/dist/esm/core/global.d.ts.map +1 -1
- package/dist/esm/core/global.js +3 -3
- package/dist/esm/core/global.js.map +1 -1
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/open-api/types/compute.d.ts +3759 -0
- package/dist/esm/open-api/types/compute.d.ts.map +1 -0
- package/dist/esm/open-api/types/compute.js +2 -0
- package/dist/esm/open-api/types/compute.js.map +1 -0
- package/dist/esm/open-api/types/flows.d.ts +2540 -0
- package/dist/esm/open-api/types/flows.d.ts.map +1 -0
- package/dist/esm/open-api/types/flows.js +6 -0
- package/dist/esm/open-api/types/flows.js.map +1 -0
- package/dist/esm/open-api/types/gcs/v5.4.d.ts +12052 -0
- package/dist/esm/open-api/types/gcs/v5.4.d.ts.map +1 -0
- package/dist/esm/open-api/types/gcs/v5.4.js +2 -0
- package/dist/esm/open-api/types/gcs/v5.4.js.map +1 -0
- package/dist/esm/open-api/types/groups.d.ts +2382 -0
- package/dist/esm/open-api/types/groups.d.ts.map +1 -0
- package/dist/esm/open-api/types/groups.js +2 -0
- package/dist/esm/open-api/types/groups.js.map +1 -0
- package/dist/esm/open-api/types/search.d.ts +2215 -0
- package/dist/esm/open-api/types/search.d.ts.map +1 -0
- package/dist/esm/open-api/types/search.js +2 -0
- package/dist/esm/open-api/types/search.js.map +1 -0
- package/dist/esm/open-api/types/timer.d.ts +942 -0
- package/dist/esm/open-api/types/timer.d.ts.map +1 -0
- package/dist/esm/open-api/types/timer.js +2 -0
- package/dist/esm/open-api/types/timer.js.map +1 -0
- package/dist/esm/open-api/types/timers.d.ts +942 -0
- package/dist/esm/open-api/types/timers.d.ts.map +1 -0
- package/dist/esm/open-api/types/timers.js +2 -0
- package/dist/esm/open-api/types/timers.js.map +1 -0
- package/dist/esm/package.json +1 -1
- package/dist/esm/services/auth/config.d.ts +1 -1
- package/dist/esm/services/auth/config.js +2 -2
- package/dist/esm/services/auth/config.js.map +1 -1
- package/dist/esm/services/auth/index.d.ts +1 -0
- package/dist/esm/services/auth/index.d.ts.map +1 -1
- package/dist/esm/services/auth/index.js.map +1 -1
- package/dist/esm/services/compute/service/endpoints.d.ts +29 -0
- package/dist/esm/services/compute/service/endpoints.d.ts.map +1 -1
- package/dist/esm/services/compute/service/endpoints.js +31 -0
- package/dist/esm/services/compute/service/endpoints.js.map +1 -1
- package/dist/esm/services/flows/index.d.ts +1 -0
- package/dist/esm/services/flows/index.d.ts.map +1 -1
- package/dist/esm/services/flows/index.js.map +1 -1
- package/dist/esm/services/flows/service/flows.d.ts +12 -77
- package/dist/esm/services/flows/service/flows.d.ts.map +1 -1
- package/dist/esm/services/flows/service/flows.js.map +1 -1
- package/dist/esm/services/flows/service/runs.d.ts +13 -0
- package/dist/esm/services/flows/service/runs.d.ts.map +1 -1
- package/dist/esm/services/flows/service/runs.js +11 -0
- package/dist/esm/services/flows/service/runs.js.map +1 -1
- package/dist/esm/services/search/index.d.ts +1 -0
- package/dist/esm/services/search/index.d.ts.map +1 -1
- package/dist/esm/services/search/index.js.map +1 -1
- package/dist/esm/services/shared.d.ts +1 -0
- package/dist/esm/services/shared.d.ts.map +1 -1
- package/dist/esm/services/shared.js.map +1 -1
- package/dist/esm/services/timers/config.d.ts +4 -0
- package/dist/esm/services/timers/config.d.ts.map +1 -0
- package/dist/esm/services/timers/config.js +10 -0
- package/dist/esm/services/timers/config.js.map +1 -0
- package/dist/esm/services/timers/index.d.ts +16 -0
- package/dist/esm/services/timers/index.d.ts.map +1 -0
- package/dist/esm/services/timers/index.js +15 -0
- package/dist/esm/services/timers/index.js.map +1 -0
- package/dist/esm/services/timers/service/jobs/index.d.ts +62 -0
- package/dist/esm/services/timers/service/jobs/index.d.ts.map +1 -0
- package/dist/esm/services/timers/service/jobs/index.js +70 -0
- package/dist/esm/services/timers/service/jobs/index.js.map +1 -0
- package/dist/esm/services/timers/service/timer.d.ts +31 -0
- package/dist/esm/services/timers/service/timer.d.ts.map +1 -0
- package/dist/esm/services/timers/service/timer.js +12 -0
- package/dist/esm/services/timers/service/timer.js.map +1 -0
- package/dist/esm/services/transfer/index.d.ts +2 -0
- package/dist/esm/services/transfer/index.d.ts.map +1 -1
- package/dist/esm/services/transfer/index.js +1 -0
- package/dist/esm/services/transfer/index.js.map +1 -1
- package/dist/esm/services/transfer/service/access.d.ts +7 -7
- package/dist/esm/services/transfer/service/access.d.ts.map +1 -1
- package/dist/esm/services/transfer/service/access.js +5 -5
- package/dist/esm/services/transfer/service/endpoint-manager/endpoint.d.ts +8 -14
- package/dist/esm/services/transfer/service/endpoint-manager/endpoint.d.ts.map +1 -1
- package/dist/esm/services/transfer/service/endpoint-manager/endpoint.js.map +1 -1
- package/dist/esm/services/transfer/service/endpoint-manager/task.d.ts +14 -14
- package/dist/esm/services/transfer/service/endpoint-manager/task.d.ts.map +1 -1
- package/dist/esm/services/transfer/service/endpoint-manager/task.js.map +1 -1
- package/dist/esm/services/transfer/service/endpoint-search.d.ts +4 -5
- package/dist/esm/services/transfer/service/endpoint-search.d.ts.map +1 -1
- package/dist/esm/services/transfer/service/endpoint-search.js.map +1 -1
- package/dist/esm/services/transfer/service/endpoint.d.ts +257 -9
- package/dist/esm/services/transfer/service/endpoint.d.ts.map +1 -1
- package/dist/esm/services/transfer/service/endpoint.js.map +1 -1
- package/dist/esm/services/transfer/service/file-operations.d.ts +22 -6
- package/dist/esm/services/transfer/service/file-operations.d.ts.map +1 -1
- package/dist/esm/services/transfer/service/file-operations.js.map +1 -1
- package/dist/esm/services/transfer/service/roles.d.ts +75 -0
- package/dist/esm/services/transfer/service/roles.d.ts.map +1 -0
- package/dist/esm/services/transfer/service/roles.js +49 -0
- package/dist/esm/services/transfer/service/roles.js.map +1 -0
- package/dist/esm/services/transfer/service/task-submission.d.ts +84 -3
- package/dist/esm/services/transfer/service/task-submission.d.ts.map +1 -1
- package/dist/esm/services/transfer/service/task-submission.js.map +1 -1
- package/dist/esm/services/transfer/service/task.d.ts +13 -13
- package/dist/esm/services/transfer/service/task.d.ts.map +1 -1
- package/dist/esm/services/transfer/service/task.js.map +1 -1
- package/dist/esm/services/transfer/types.d.ts +70 -347
- package/dist/esm/services/transfer/types.d.ts.map +1 -1
- package/dist/umd/globus.production.js +2 -2
- package/dist/umd/globus.production.js.map +4 -4
- package/package.json +8 -8
package/README.md
CHANGED
|
@@ -9,37 +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
|
-
|
|
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
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
|
-
|
|
|
40
|
-
| Node.js
|
|
41
|
-
| Node.js
|
|
42
|
-
| Node.js 24 | [](https://github.com/globus/globus-sdk-javascript/actions/workflows/ci.yml) |
|
|
30
|
+
| Version | |
|
|
31
|
+
| ---------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
32
|
+
| Node.js 20 | [](https://github.com/globus/globus-sdk-javascript/actions/workflows/ci.yml) |
|
|
33
|
+
| Node.js 22 | [](https://github.com/globus/globus-sdk-javascript/actions/workflows/ci.yml) |
|
|
34
|
+
| Node.js 24 | [](https://github.com/globus/globus-sdk-javascript/actions/workflows/ci.yml) |
|
|
43
35
|
|
|
44
36
|
### Browser Support
|
|
45
37
|
|
|
@@ -68,8 +68,8 @@ var HOSTS2 = {
|
|
|
68
68
|
preview: "preview.flows.automate.globus.org"
|
|
69
69
|
};
|
|
70
70
|
|
|
71
|
-
// src/services/
|
|
72
|
-
var ID3 = "
|
|
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
|
-
|
|
657
|
-
|
|
658
|
-
|
|
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
|
-
|
|
677
|
-
|
|
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 =
|
|
707
|
-
const verifier =
|
|
708
|
-
|
|
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.
|
|
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
|
-
|
|
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.
|