@globus/sdk 6.0.1 → 6.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/core/authorization/index.js +1 -1
- package/dist/cjs/core/authorization/index.js.map +1 -1
- package/dist/cjs/core/info/index.js +1 -1
- package/dist/cjs/core/info/index.js.map +1 -1
- package/dist/cjs/index.js +332 -143
- package/dist/cjs/index.js.map +4 -4
- package/dist/cjs/services/globus-connect-server/client.js +1 -1
- package/dist/cjs/services/globus-connect-server/client.js.map +1 -1
- package/dist/esm/core/info/version.d.ts +1 -1
- package/dist/esm/core/info/version.js +1 -1
- package/dist/esm/open-api/types/compute.d.ts +370 -90
- package/dist/esm/open-api/types/compute.d.ts.map +1 -1
- package/dist/esm/open-api/types/flows.d.ts +210 -262
- package/dist/esm/open-api/types/flows.d.ts.map +1 -1
- package/dist/esm/open-api/types/gcs/v5.4.d.ts +2536 -2276
- package/dist/esm/open-api/types/gcs/v5.4.d.ts.map +1 -1
- package/dist/esm/open-api/types/search.d.ts +104 -64
- package/dist/esm/open-api/types/search.d.ts.map +1 -1
- package/dist/esm/open-api/types/timers.d.ts +17 -7
- package/dist/esm/open-api/types/timers.d.ts.map +1 -1
- package/dist/esm/open-api/types/transfer.d.ts +796 -0
- package/dist/esm/open-api/types/transfer.d.ts.map +1 -0
- package/dist/esm/open-api/types/transfer.js +2 -0
- package/dist/esm/open-api/types/transfer.js.map +1 -0
- package/dist/esm/package.json +1 -1
- package/dist/esm/services/compute/index.d.ts +1 -1
- package/dist/esm/services/compute/index.js +1 -1
- package/dist/esm/services/globus-connect-server/client.d.ts +4 -4
- package/dist/esm/services/globus-connect-server/client.d.ts.map +1 -1
- package/dist/esm/services/groups/service/groups.d.ts +38 -0
- package/dist/esm/services/groups/service/groups.d.ts.map +1 -1
- package/dist/esm/services/groups/service/groups.js +53 -5
- package/dist/esm/services/groups/service/groups.js.map +1 -1
- package/dist/esm/services/groups/service/membership.d.ts +1 -0
- package/dist/esm/services/groups/service/membership.d.ts.map +1 -1
- package/dist/esm/services/groups/service/membership.js +3 -4
- package/dist/esm/services/groups/service/membership.js.map +1 -1
- package/dist/esm/services/groups/service/policies.d.ts +12 -0
- package/dist/esm/services/groups/service/policies.d.ts.map +1 -1
- package/dist/esm/services/groups/service/policies.js +17 -3
- package/dist/esm/services/groups/service/policies.js.map +1 -1
- package/dist/esm/services/search/service/query.d.ts +15 -22
- package/dist/esm/services/search/service/query.d.ts.map +1 -1
- package/dist/esm/services/search/service/query.js.map +1 -1
- 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 +2 -0
- package/dist/esm/services/transfer/index.js.map +1 -1
- package/dist/esm/services/transfer/service/endpoint-search.d.ts +5 -3
- 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/stream-access-point.d.ts +23 -0
- package/dist/esm/services/transfer/service/stream-access-point.d.ts.map +1 -0
- package/dist/esm/services/transfer/service/stream-access-point.js +26 -0
- package/dist/esm/services/transfer/service/stream-access-point.js.map +1 -0
- package/dist/esm/services/transfer/service/tunnel.d.ts +75 -0
- package/dist/esm/services/transfer/service/tunnel.d.ts.map +1 -0
- package/dist/esm/services/transfer/service/tunnel.js +80 -0
- package/dist/esm/services/transfer/service/tunnel.js.map +1 -0
- package/dist/umd/globus.production.js +2 -2
- package/dist/umd/globus.production.js.map +4 -4
- package/package.json +2 -2
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../node_modules/cross-fetch/dist/browser-ponyfill.js", "../../src/index.ts", "../../src/core/info/index.ts", "../../src/core/info/private.ts", "../../src/core/info/version.ts", "../../src/core/logger.ts", "../../src/core/authorization/index.ts", "../../node_modules/jwt-decode/build/esm/index.js", "../../src/services/auth/index.ts", "../../src/services/auth/config.ts", "../../src/services/transfer/config.ts", "../../src/services/flows/config.ts", "../../src/services/timers/config.ts", "../../src/services/groups/config.ts", "../../src/services/search/config.ts", "../../src/services/compute/config.ts", "../../src/core/errors.ts", "../../src/core/global.ts", "../../src/core/url.ts", "../../src/services/auth/service/identities/index.ts", "../../src/services/shared.ts", "../../src/services/auth/service/identities/consents.ts", "../../src/services/auth/service/oauth2/index.ts", "../../src/services/auth/service/oauth2/token.ts", "../../src/services/auth/utils.ts", "../../src/core/authorization/Event.ts", "../../src/core/authorization/pkce.ts", "../../src/core/authorization/RedirectTransport.ts", "../../src/core/authorization/TokenManager.ts", "../../src/core/storage/memory.ts", "../../src/core/authorization/PopupTransport.ts", "../../src/core/authorization/AuthorizationManager.ts", "../../src/services/transfer/index.ts", "../../src/services/transfer/service/endpoint-search.ts", "../../src/services/transfer/service/file-operations.ts", "../../src/services/transfer/shared.ts", "../../src/services/transfer/service/task-submission.ts", "../../src/services/transfer/service/endpoint.ts", "../../src/services/transfer/service/task.ts", "../../src/services/transfer/service/access.ts", "../../src/services/transfer/service/roles.ts", "../../src/services/transfer/service/collection-bookmarks.ts", "../../src/services/transfer/service/endpoint-manager/index.ts", "../../src/services/transfer/service/endpoint-manager/endpoint.ts", "../../src/services/transfer/service/endpoint-manager/pause-rule.ts", "../../src/services/transfer/service/endpoint-manager/task.ts", "../../src/services/transfer/utils.ts", "../../src/services/search/index.ts", "../../src/services/search/service/query.ts", "../../src/services/search/service/subject.ts", "../../src/services/search/service/entry.ts", "../../src/services/search/service/search-index.ts", "../../src/services/search/service/roles.ts", "../../src/services/groups/index.ts", "../../src/services/groups/service/groups.ts", "../../src/services/groups/service/policies.ts", "../../src/services/groups/service/membership.ts", "../../src/services/flows/index.ts", "../../src/services/flows/service/flows.ts", "../../src/services/flows/service/runs.ts", "../../src/services/globus-connect-server/index.ts", "../../src/services/globus-connect-server/service/collections.ts", "../../src/services/globus-connect-server/service/endpoint.ts", "../../src/services/globus-connect-server/service/https.ts", "../../src/services/globus-connect-server/service/nodes.ts", "../../src/services/globus-connect-server/service/roles.ts", "../../src/services/globus-connect-server/service/storage-gateways.ts", "../../src/services/globus-connect-server/service/user-credentials.ts", "../../src/services/globus-connect-server/service/versioning.ts", "../../src/services/globus-connect-server/utils.ts", "../../src/services/timers/index.ts", "../../src/services/timers/service/timer.ts", "../../src/services/timers/service/jobs/index.ts", "../../src/services/compute/index.ts", "../../src/services/compute/service/endpoints.ts", "../../src/apps/web.ts"],
|
|
4
|
-
"sourcesContent": ["// Save global object in a variable\nvar __global__ =\n(typeof globalThis !== 'undefined' && globalThis) ||\n(typeof self !== 'undefined' && self) ||\n(typeof global !== 'undefined' && global);\n// Create an object that extends from __global__ without the fetch function\nvar __globalThis__ = (function () {\nfunction F() {\nthis.fetch = false;\nthis.DOMException = __global__.DOMException\n}\nF.prototype = __global__; // Needed for feature detection on whatwg-fetch's code\nreturn new F();\n})();\n// Wraps whatwg-fetch with a function scope to hijack the global object\n// \"globalThis\" that's going to be patched\n(function(globalThis) {\n\nvar irrelevant = (function (exports) {\n\n /* eslint-disable no-prototype-builtins */\n var g =\n (typeof globalThis !== 'undefined' && globalThis) ||\n (typeof self !== 'undefined' && self) ||\n // eslint-disable-next-line no-undef\n (typeof global !== 'undefined' && global) ||\n {};\n\n var support = {\n searchParams: 'URLSearchParams' in g,\n iterable: 'Symbol' in g && 'iterator' in Symbol,\n blob:\n 'FileReader' in g &&\n 'Blob' in g &&\n (function() {\n try {\n new Blob();\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in g,\n arrayBuffer: 'ArrayBuffer' in g\n };\n\n function isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ];\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n };\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~!]/i.test(name) || name === '') {\n throw new TypeError('Invalid character in header field name: \"' + name + '\"')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift();\n return {done: value === undefined, value: value}\n }\n };\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n };\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {};\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n if (header.length != 2) {\n throw new TypeError('Headers constructor: expected name/value pair to be length 2, found' + header.length)\n }\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name]);\n }, this);\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue + ', ' + value : value;\n };\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)];\n };\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null\n };\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n };\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value);\n };\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n };\n\n Headers.prototype.keys = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push(name);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.values = function() {\n var items = [];\n this.forEach(function(value) {\n items.push(value);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.entries = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push([name, value]);\n });\n return iteratorFor(items)\n };\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n }\n\n function consumed(body) {\n if (body._noBody) return\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true;\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result);\n };\n reader.onerror = function() {\n reject(reader.error);\n };\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsArrayBuffer(blob);\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n var match = /charset=([A-Za-z0-9_-]+)/.exec(blob.type);\n var encoding = match ? match[1] : 'utf-8';\n reader.readAsText(blob, encoding);\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf);\n var chars = new Array(view.length);\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i]);\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength);\n view.set(new Uint8Array(buf));\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false;\n\n this._initBody = function(body) {\n /*\n fetch-mock wraps the Response object in an ES6 Proxy to\n provide useful test harness features such as flush. However, on\n ES5 browsers without fetch or Proxy support pollyfills must be used;\n the proxy-pollyfill is unable to proxy an attribute unless it exists\n on the object before the Proxy is created. This change ensures\n Response.bodyUsed exists on the instance, while maintaining the\n semantic of setting Request.bodyUsed in the constructor before\n _initBody is called.\n */\n // eslint-disable-next-line no-self-assign\n this.bodyUsed = this.bodyUsed;\n this._bodyInit = body;\n if (!body) {\n this._noBody = true;\n this._bodyText = '';\n } else if (typeof body === 'string') {\n this._bodyText = body;\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body;\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body;\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString();\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer);\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer]);\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body);\n } else {\n this._bodyText = body = Object.prototype.toString.call(body);\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8');\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type);\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n }\n };\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n };\n }\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n var isConsumed = consumed(this);\n if (isConsumed) {\n return isConsumed\n } else if (ArrayBuffer.isView(this._bodyArrayBuffer)) {\n return Promise.resolve(\n this._bodyArrayBuffer.buffer.slice(\n this._bodyArrayBuffer.byteOffset,\n this._bodyArrayBuffer.byteOffset + this._bodyArrayBuffer.byteLength\n )\n )\n } else {\n return Promise.resolve(this._bodyArrayBuffer)\n }\n } else if (support.blob) {\n return this.blob().then(readBlobAsArrayBuffer)\n } else {\n throw new Error('could not read as ArrayBuffer')\n }\n };\n\n this.text = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n };\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n };\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n };\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['CONNECT', 'DELETE', 'GET', 'HEAD', 'OPTIONS', 'PATCH', 'POST', 'PUT', 'TRACE'];\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase();\n return methods.indexOf(upcased) > -1 ? upcased : method\n }\n\n function Request(input, options) {\n if (!(this instanceof Request)) {\n throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.')\n }\n\n options = options || {};\n var body = options.body;\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url;\n this.credentials = input.credentials;\n if (!options.headers) {\n this.headers = new Headers(input.headers);\n }\n this.method = input.method;\n this.mode = input.mode;\n this.signal = input.signal;\n if (!body && input._bodyInit != null) {\n body = input._bodyInit;\n input.bodyUsed = true;\n }\n } else {\n this.url = String(input);\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin';\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers);\n }\n this.method = normalizeMethod(options.method || this.method || 'GET');\n this.mode = options.mode || this.mode || null;\n this.signal = options.signal || this.signal || (function () {\n if ('AbortController' in g) {\n var ctrl = new AbortController();\n return ctrl.signal;\n }\n }());\n this.referrer = null;\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body);\n\n if (this.method === 'GET' || this.method === 'HEAD') {\n if (options.cache === 'no-store' || options.cache === 'no-cache') {\n // Search for a '_' parameter in the query string\n var reParamSearch = /([?&])_=[^&]*/;\n if (reParamSearch.test(this.url)) {\n // If it already exists then set the value with the current time\n this.url = this.url.replace(reParamSearch, '$1_=' + new Date().getTime());\n } else {\n // Otherwise add a new '_' parameter to the end with the current time\n var reQueryString = /\\?/;\n this.url += (reQueryString.test(this.url) ? '&' : '?') + '_=' + new Date().getTime();\n }\n }\n }\n }\n\n Request.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n };\n\n function decode(body) {\n var form = new FormData();\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=');\n var name = split.shift().replace(/\\+/g, ' ');\n var value = split.join('=').replace(/\\+/g, ' ');\n form.append(decodeURIComponent(name), decodeURIComponent(value));\n }\n });\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers();\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n // Avoiding split via regex to work around a common IE11 bug with the core-js 3.6.0 regex polyfill\n // https://github.com/github/fetch/issues/748\n // https://github.com/zloirock/core-js/issues/751\n preProcessedHeaders\n .split('\\r')\n .map(function(header) {\n return header.indexOf('\\n') === 0 ? header.substr(1, header.length) : header\n })\n .forEach(function(line) {\n var parts = line.split(':');\n var key = parts.shift().trim();\n if (key) {\n var value = parts.join(':').trim();\n try {\n headers.append(key, value);\n } catch (error) {\n console.warn('Response ' + error.message);\n }\n }\n });\n return headers\n }\n\n Body.call(Request.prototype);\n\n function Response(bodyInit, options) {\n if (!(this instanceof Response)) {\n throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.')\n }\n if (!options) {\n options = {};\n }\n\n this.type = 'default';\n this.status = options.status === undefined ? 200 : options.status;\n if (this.status < 200 || this.status > 599) {\n throw new RangeError(\"Failed to construct 'Response': The status provided (0) is outside the range [200, 599].\")\n }\n this.ok = this.status >= 200 && this.status < 300;\n this.statusText = options.statusText === undefined ? '' : '' + options.statusText;\n this.headers = new Headers(options.headers);\n this.url = options.url || '';\n this._initBody(bodyInit);\n }\n\n Body.call(Response.prototype);\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n };\n\n Response.error = function() {\n var response = new Response(null, {status: 200, statusText: ''});\n response.ok = false;\n response.status = 0;\n response.type = 'error';\n return response\n };\n\n var redirectStatuses = [301, 302, 303, 307, 308];\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n };\n\n exports.DOMException = g.DOMException;\n try {\n new exports.DOMException();\n } catch (err) {\n exports.DOMException = function(message, name) {\n this.message = message;\n this.name = name;\n var error = Error(message);\n this.stack = error.stack;\n };\n exports.DOMException.prototype = Object.create(Error.prototype);\n exports.DOMException.prototype.constructor = exports.DOMException;\n }\n\n function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init);\n\n if (request.signal && request.signal.aborted) {\n return reject(new exports.DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest();\n\n function abortXhr() {\n xhr.abort();\n }\n\n xhr.onload = function() {\n var options = {\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n };\n // This check if specifically for when a user fetches a file locally from the file system\n // Only if the status is out of a normal range\n if (request.url.indexOf('file://') === 0 && (xhr.status < 200 || xhr.status > 599)) {\n options.status = 200;\n } else {\n options.status = xhr.status;\n }\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n var body = 'response' in xhr ? xhr.response : xhr.responseText;\n setTimeout(function() {\n resolve(new Response(body, options));\n }, 0);\n };\n\n xhr.onerror = function() {\n setTimeout(function() {\n reject(new TypeError('Network request failed'));\n }, 0);\n };\n\n xhr.ontimeout = function() {\n setTimeout(function() {\n reject(new TypeError('Network request timed out'));\n }, 0);\n };\n\n xhr.onabort = function() {\n setTimeout(function() {\n reject(new exports.DOMException('Aborted', 'AbortError'));\n }, 0);\n };\n\n function fixUrl(url) {\n try {\n return url === '' && g.location.href ? g.location.href : url\n } catch (e) {\n return url\n }\n }\n\n xhr.open(request.method, fixUrl(request.url), true);\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true;\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false;\n }\n\n if ('responseType' in xhr) {\n if (support.blob) {\n xhr.responseType = 'blob';\n } else if (\n support.arrayBuffer\n ) {\n xhr.responseType = 'arraybuffer';\n }\n }\n\n if (init && typeof init.headers === 'object' && !(init.headers instanceof Headers || (g.Headers && init.headers instanceof g.Headers))) {\n var names = [];\n Object.getOwnPropertyNames(init.headers).forEach(function(name) {\n names.push(normalizeName(name));\n xhr.setRequestHeader(name, normalizeValue(init.headers[name]));\n });\n request.headers.forEach(function(value, name) {\n if (names.indexOf(name) === -1) {\n xhr.setRequestHeader(name, value);\n }\n });\n } else {\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value);\n });\n }\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr);\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr);\n }\n };\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n })\n }\n\n fetch.polyfill = true;\n\n if (!g.fetch) {\n g.fetch = fetch;\n g.Headers = Headers;\n g.Request = Request;\n g.Response = Response;\n }\n\n exports.Headers = Headers;\n exports.Request = Request;\n exports.Response = Response;\n exports.fetch = fetch;\n\n return exports;\n\n})({});\n})(__globalThis__);\n// This is a ponyfill, so...\n__globalThis__.fetch.ponyfill = true;\ndelete __globalThis__.fetch.polyfill;\n// Choose between native implementation (__global__) or custom implementation (__globalThis__)\nvar ctx = __global__.fetch ? __global__ : __globalThis__;\nexports = ctx.fetch // To enable: import fetch from 'cross-fetch'\nexports.default = ctx.fetch // For TypeScript consumers without esModuleInterop.\nexports.fetch = ctx.fetch // To enable: import {fetch} from 'cross-fetch'\nexports.Headers = ctx.Headers\nexports.Request = ctx.Request\nexports.Response = ctx.Response\nmodule.exports = exports\n", "/**\n * @module @globus/sdk\n * @description `@globus/sdk` provides modules for interacting with the various APIs that make up the Globus platform.\n *\n * ### Key Concepts\n * - All service methods return a `Promise` that resolves to a [Fetch API Response object](https://developer.mozilla.org/en-US/docs/Web/API/Response).\n * - Under the hood, we are returning the result of a composed [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/fetch).\n * - All service methods accept a `ServiceMethodOptions` object to pass query parameters, a payload, and headers.\n * - All service methods support a tail argument to pass options to the SDK, including the composed `fetch` call.\n *\n * #### Service Method Names\n *\n * Basic CRUD operations provided by services are exposed as the following:\n *\n * | Service Method Name | HTTP Method | Description | Example |\n * | --------------------| ----------- | ---------------------------- | ------- |\n * | `get` | `GET` | Fetch a single resource. | `transfer.endpoint.get()` |\n * | `getAll` | `GET` | Fetch a list of resources. | `flows.flows.getAll()` |\n * | `create` | `POST` | Create a new resource. | `gcs.roles.create()` |\n * | `update` | `PUT` | Update an existing resource. | `gcs.endpoint.update()` |\n * | `patch` | `PATCH` | Update an existing resource. | `gcs.endpoint.patch()` |\n * | `remove` | `DELETE` | Delete an existing resource. | `gcs.collections.remove()`|\n *\n * Methods that do not map to obvious CRUD operations are named according to the resource. i.e., `groups.groups.getMyGroups()`, `transfer.endpointSearch()`, `search.query.post()`\n *\n * @example Using the SDK to search for endpoints via Transfer API.\n * ```ts\n * import { transfer } from \"@globus/sdk\";\n *\n * const result = await (\n * await globus.transfer.endpointSearch(\n * {\n * query: { filter_fulltext: \"Globus Tutorial\" }\n * headers: {\n * Authorization: \"Bearer MY_ACCESS_TOKEN\",\n * },\n * },\n * {\n * fetch: {\n * // Provide parameters to the underlying `fetch` call.\n * // https://developer.mozilla.org/en-US/docs/Web/API/fetch#parameters\n * options: {\n * priority: \"high\"\n * },\n * },\n * }\n * )\n * ).json();\n * ```\n *\n * @example Using the SDK to fetch a single flow from the Flows API.\n * ```ts\n * import { flows } from \"@globus/sdk\";\n *\n * const result = await (await flows.flows.get(\"452bbea3-5e3b-45a5-af08-50179839a4e8\")).json();\n *```\n *\n * ### Authorization\n *\n * While all methods support passing of `headers` and direct modification of the underlying `fetch` call, the SDK provides an {@link Authorization.AuthorizationManager | `AuthorizationManager`} that can be used to manage access tokens and handle the authorization process.\n *\n * @example Using the AuthorizationManager with a service method.\n * ```ts\n * import { transfer, authorization } from \"@globus/sdk\";\n * const manager = authorization.create({ ... });\n * const result = await (\n * await globus.transfer.endpointSearch(\n * {\n * query: { filter_fulltext: \"Globus Tutorial\" },\n * manager\n * }\n * )\n * ).json();\n *```\n */\n\n/**\n * Core\n */\nexport * as info from './core/info/index.js';\nexport * as logger from './core/logger.js';\nexport * as authorization from './core/authorization/index.js';\nexport * as errors from './core/errors.js';\n\n/**\n * Services\n */\nexport * as auth from './services/auth/index.js';\nexport * as transfer from './services/transfer/index.js';\nexport * as search from './services/search/index.js';\nexport * as groups from './services/groups/index.js';\nexport * as flows from './services/flows/index.js';\nexport * as gcs from './services/globus-connect-server/index.js';\nexport * as timers from './services/timers/index.js';\nexport * as compute from './services/compute/index.js';\n\nexport { serviceRequest as request } from './services/shared.js';\n\n/**\n * Applications\n */\nexport * as webapp from './apps/web.js';\n", "/**\n * @module Information\n * @description This module is mostly intended for internal use, but can be helpful\n * identifying information about the SDK package you are using at runtime.\n */\nimport { toString, isEnabled, CLIENT_INFO_HEADER } from './private.js';\nimport { VERSION as _VERSION } from './version.js';\n\nexport type Version = string;\n\n/**\n * The version of the `@globus/sdk` package that is in use.\n */\nexport const VERSION: Version = _VERSION;\n\nexport type Info = {\n product: string;\n version: Version;\n};\n\n/**\n * The client information identifier for this package.\n */\nexport const CLIENT_INFO: Info = {\n product: 'javascript-sdk',\n version: VERSION,\n};\n\nlet INFOS: Info[] = [CLIENT_INFO];\n\n/**\n * Add a client information identifier to the existing SDK information.\n */\nexport function addClientInfo(info: Info) {\n INFOS = INFOS.concat(info);\n}\n/**\n * Get the current client information as a string.\n */\nexport function getClientInfo(): string {\n return toString(INFOS);\n}\n\nexport function getClientInfoRequestHeaders(): Record<string, string> {\n if (!isEnabled()) {\n return {};\n }\n return {\n [CLIENT_INFO_HEADER]: getClientInfo(),\n };\n}\n", "import type { Info } from './index.js';\n\n/**\n * @private\n */\nexport const CLIENT_INFO_HEADER = `X-Globus-Client-Info`;\n\nlet ENABLED = true;\n/**\n * Disable the client information header from being included in requests (enabled by default).\n * @private\n */\nexport function disable() {\n ENABLED = false;\n}\n\n/**\n * Enables the client information header to be included in requests.\n * @private\n */\nexport function enable() {\n ENABLED = true;\n}\n\n/**\n * Whether or not the client information header should be sent with requests.\n * @private\n */\nexport function isEnabled() {\n return ENABLED;\n}\n\nconst INFOS_SEPERATOR = ';';\nconst INFO_ITEM_SEPARATOR = ',';\n\n/**\n * Exported for test purposes only.\n * @private\n */\nexport function toString(info: Info | Info[]) {\n const infos = Array.isArray(info) ? info : [info];\n return infos\n .map((i) =>\n Object.entries(i)\n .map(([key, value]) => `${key}=${value}`)\n .join(INFO_ITEM_SEPARATOR),\n )\n .join(INFOS_SEPERATOR);\n}\n", "// x-release-please-start-version\nexport const VERSION = '6.0.1';\n// x-release-please-end\n", "const LOG_LEVELS = ['debug', 'info', 'warn', 'error'] as const;\n\ntype LogLevel = (typeof LOG_LEVELS)[number];\n\ntype LogHandler = (...args: unknown[]) => void;\n\ntype Logger = {\n log: LogHandler;\n error?: LogHandler;\n warn?: LogHandler;\n info?: LogHandler;\n debug?: LogHandler;\n};\n/**\n * No logger is set by default.\n */\nlet logger: Logger | undefined;\n/**\n * By default, the logger is set to `error`.\n */\nlet level: number = LOG_LEVELS.indexOf('error');\n/**\n * Set the global logger for the SDK.\n * @param logMechanism The logger to use.\n * @example `log.setLogger(console)`\n */\nexport function setLogger(logMechanism: Logger) {\n logger = logMechanism;\n}\n/**\n * Set the global log level for the logger.\n * @param severity The severity to set the logger to.\n * @example `log.setLogLevel('info')`\n */\nexport function setLogLevel(severity: LogLevel) {\n level = LOG_LEVELS.indexOf(severity);\n}\n/**\n * Log a message to the logger.\n * @param severity The severity of the log entry.\n * @param args The message to log.\n * @private\n */\nexport function log(severity: LogLevel, ...args: unknown[]) {\n if (!logger) return;\n /**\n * If the severity of the entry is less than the logger's configured severity, do not log.\n */\n if (LOG_LEVELS.indexOf(severity) < level) {\n return;\n }\n /**\n * If the logger does not have a handler for the specified severity, use the default `log` handler.\n */\n const handler = logger[severity] ?? logger.log;\n handler(...args);\n}\n", "/**\n * @module Authorization\n * @description Provides modules for interacting with Globus-related authorization contexts in your application.\n * @example\n * import { authorization } from \"globus/sdk\";\n * const manager = authorization.create(...);\n */\nimport {\n AuthorizationManager,\n type AuthorizationManagerConfiguration,\n} from './AuthorizationManager.js';\n\n/**\n * Create an instance of the {@link AuthorizationManager}.\n */\nexport function create(configuration: AuthorizationManagerConfiguration) {\n return new AuthorizationManager(configuration);\n}\n\nexport { AuthorizationManager, AuthorizationManagerConfiguration };\n", "export class InvalidTokenError extends Error {\n}\nInvalidTokenError.prototype.name = \"InvalidTokenError\";\nfunction b64DecodeUnicode(str) {\n return decodeURIComponent(atob(str).replace(/(.)/g, (m, p) => {\n let code = p.charCodeAt(0).toString(16).toUpperCase();\n if (code.length < 2) {\n code = \"0\" + code;\n }\n return \"%\" + code;\n }));\n}\nfunction base64UrlDecode(str) {\n let output = str.replace(/-/g, \"+\").replace(/_/g, \"/\");\n switch (output.length % 4) {\n case 0:\n break;\n case 2:\n output += \"==\";\n break;\n case 3:\n output += \"=\";\n break;\n default:\n throw new Error(\"base64 string is not of the correct length\");\n }\n try {\n return b64DecodeUnicode(output);\n }\n catch (err) {\n return atob(output);\n }\n}\nexport function jwtDecode(token, options) {\n if (typeof token !== \"string\") {\n throw new InvalidTokenError(\"Invalid token specified: must be a string\");\n }\n options || (options = {});\n const pos = options.header === true ? 0 : 1;\n const part = token.split(\".\")[pos];\n if (typeof part !== \"string\") {\n throw new InvalidTokenError(`Invalid token specified: missing part #${pos + 1}`);\n }\n let decoded;\n try {\n decoded = base64UrlDecode(part);\n }\n catch (e) {\n throw new InvalidTokenError(`Invalid token specified: invalid base64 for part #${pos + 1} (${e.message})`);\n }\n try {\n return JSON.parse(decoded);\n }\n catch (e) {\n throw new InvalidTokenError(`Invalid token specified: invalid json for part #${pos + 1} (${e.message})`);\n }\n}\n", "/**\n * @description A wrapper around the Globus Auth service.\n * @group Service\n * @see [Globus Auth API Documentation](https://docs.globus.org/api/auth/)\n * @module\n */\nimport { build } from '../../core/url.js';\n\nimport * as AUTH from './config.js';\n\nimport type { Token, TokenWithRefresh, TokenResponse } from './types.js';\n\n/**\n * @private\n * @internal\n */\nexport const CONFIG = AUTH;\n\nexport type * from './types.js';\n\n/**\n * Query parameters that can be passed to the authorization endpoint.\n * @see https://docs.globus.org/api/auth/reference/#authorization_code_grant_preferred\n * @see https://docs.globus.org/api/auth/sessions/#client-initiated-authns\n */\nexport type AuthorizationQueryParameters = {\n prompt?: string;\n session_message?: string;\n session_required_identities?: string;\n session_required_single_domain?: string;\n session_required_mfa?: 'true' | 'false';\n session_required_policies?: string;\n};\n\nexport function getAuthorizationEndpoint() {\n return build(AUTH.ID, '/v2/oauth2/authorize');\n}\n\nexport function getTokenEndpoint() {\n return build(AUTH.ID, '/v2/oauth2/token');\n}\n\nexport * as identities from './service/identities/index.js';\nexport * as oauth2 from './service/oauth2/index.js';\n\nexport function isToken(check: unknown): check is Token {\n return typeof check === 'object' && check !== null && 'access_token' in check;\n}\n\nexport function isRefreshToken(check: unknown): check is TokenWithRefresh {\n return isToken(check) && check !== null && 'refresh_token' in check;\n}\n\nexport function isGlobusAuthTokenResponse(check: unknown): check is TokenResponse {\n /**\n * @todo This could be made more robust by checking whether the `resource_server` is a well-known value.\n */\n return isToken(check) && check !== null && 'resource_server' in check;\n}\n\nexport * as utils from './utils.js';\n", "import { ID as TRANSFER } from '../transfer/config.js';\nimport { ID as FLOWS } from '../flows/config.js';\nimport { ID as TIMERS } from '../timers/config.js';\nimport { ID as GROUPS } from '../groups/config.js';\nimport { ID as SEARCH } from '../search/config.js';\nimport { ID as COMPUTE } from '../compute/config.js';\n\nimport type { Environment } from '../../core/global.js';\n\nexport const ID = 'AUTH' as const;\nexport const HOSTS: Partial<Record<Environment, string>> = {\n integration: 'auth.integration.globuscs.info',\n sandbox: 'auth.sandbox.globuscs.info',\n production: 'auth.globus.org',\n test: 'auth.test.globuscs.info',\n staging: 'auth.staging.globuscs.info',\n preview: 'auth.preview.globus.org',\n};\n\nexport const SCOPES = {\n VIEW_IDENTITIES: 'urn:globus:auth:scope:auth.globus.org:view_identities',\n};\n\nexport const RESOURCE_SERVERS = {\n [ID]: 'auth.globus.org',\n [TRANSFER]: 'transfer.api.globus.org',\n [FLOWS]: 'flows.globus.org',\n [GROUPS]: 'groups.api.globus.org',\n [SEARCH]: 'search.api.globus.org',\n [TIMERS]: '524230d7-ea86-4a52-8312-86065a9e0417',\n [COMPUTE]: 'funcx_service',\n};\n", "import type { Environment } from '../../core/global.js';\n\nexport const ID = 'TRANSFER' as const;\n\nexport const SCOPES = {\n ALL: 'urn:globus:auth:scope:transfer.api.globus.org:all',\n};\n\nexport const HOSTS: Partial<Record<Environment, string>> = {\n sandbox: 'transfer.api.sandbox.globuscs.info',\n production: 'transfer.api.globusonline.org',\n staging: 'transfer.api.staging.globuscs.info',\n integration: 'transfer.api.integration.globuscs.info',\n test: 'transfer.api.test.globuscs.info',\n preview: 'transfer.api.preview.globus.org',\n};\n", "import type { Environment } from '../../core/global.js';\n\nexport const ID = 'FLOWS' as const;\nexport const HOSTS: Partial<Record<Environment, string>> = {\n sandbox: 'sandbox.flows.automate.globus.org',\n production: 'flows.globus.org',\n staging: 'staging.flows.automate.globus.org',\n integration: 'integration.flows.automate.globus.org',\n test: 'test.flows.automate.globus.org',\n preview: 'preview.flows.automate.globus.org',\n};\n\n/**\n * @see https://docs.globus.org/api/flows/overview/#scopes\n */\nexport const SCOPES = {\n MANAGE_FLOWS: 'https://auth.globus.org/scopes/eec9b274-0c81-4334-bdc2-54e90e689b9a/manage_flows',\n VIEW_FLOWS: 'https://auth.globus.org/scopes/eec9b274-0c81-4334-bdc2-54e90e689b9a/view_flows',\n RUN: 'https://auth.globus.org/scopes/eec9b274-0c81-4334-bdc2-54e90e689b9a/run',\n RUN_STATUS: 'https://auth.globus.org/scopes/eec9b274-0c81-4334-bdc2-54e90e689b9a/run_status',\n RUN_MANAGE: 'https://auth.globus.org/scopes/eec9b274-0c81-4334-bdc2-54e90e689b9a/run_manage',\n};\n", "import type { Environment } from '../../core/global.js';\n\nexport const ID = 'TIMERS' as const;\nexport const HOSTS: Partial<Record<Environment, string>> = {\n sandbox: 'sandbox.timer.automate.globus.org',\n production: 'timer.automate.globus.org',\n staging: 'staging.timer.automate.globus.org',\n integration: 'integration.timer.automate.globus.org',\n test: 'test.timer.automate.globus.org',\n preview: 'preview.timer.automate.globus.org',\n};\n", "import type { Environment } from '../../core/global.js';\n\nexport const ID = 'GROUPS' as const;\nexport const HOSTS: Partial<Record<Environment, string>> = {\n sandbox: 'groups.api.sandbox.globuscs.info',\n production: 'groups.api.globus.org',\n staging: 'groups.api.staging.globuscs.info',\n integration: 'groups.api.integration.globuscs.info',\n test: 'groups.api.test.globuscs.info',\n preview: 'groups.api.preview.globuscs.info',\n};\n\n/**\n * @see https://docs.globus.org/api/groups/#scopes\n */\nexport const SCOPES = {\n ALL: 'urn:globus:auth:scope:groups.api.globus.org:all',\n VIEW_MY: 'urn:globus:auth:scope:groups.api.globus.org:view_my_groups_and_membership',\n};\n", "import type { Environment } from '../../core/global.js';\n\nexport const ID = 'SEARCH' as const;\nexport const HOSTS: Partial<Record<Environment, string>> = {\n sandbox: 'search.api.sandbox.globuscs.info',\n production: 'search.api.globus.org',\n staging: 'search.api.staging.globuscs.info',\n integration: 'search.api.integration.globuscs.info',\n test: 'search.api.test.globuscs.info',\n preview: 'search.api.preview.globus.org',\n};\n\n/**\n * @see https://docs.globus.org/api/search/api_usage/#scopes\n */\nexport const SCOPES = {\n ALL: 'urn:globus:auth:scope:search.api.globus.org:all',\n INGEST: 'urn:globus:auth:scope:search.api.globus.org:ingest',\n SEARCH: 'urn:globus:auth:scope:search.api.globus.org:search',\n};\n", "import type { Environment } from '../../core/global.js';\n\nexport const ID = 'COMPUTE' as const;\nexport const HOSTS: Partial<Record<Environment, string>> = {\n sandbox: 'compute.api.sandbox.globuscs.info',\n production: 'compute.api.globus.org',\n staging: 'compute.api.staging.globuscs.info',\n integration: 'compute.api.integration.globuscs.info',\n test: 'compute.api.test.globuscs.info',\n preview: 'compute.api.preview.globus.org',\n};\n\nexport const SCOPES = {\n ALL: 'https://auth.globus.org/scopes/facd7ccc-c5f4-42aa-916b-a0e270e2c2a9/all',\n};\n", "/**\n * @module Errors\n * @example\n * import { errors } from \"globus/sdk\";\n * if (errors.isConsentRequiredError(...)) { ... }\n */\nimport type { AuthorizationQueryParameters } from '../services/auth/index.js';\nimport type { AuthorizationRequestParameters } from './authorization/pkce.js';\n\nexport class EnvironmentConfigurationError extends Error {\n override name = 'EnvironmentConfigurationError';\n\n constructor(variable: string, value: unknown) {\n super();\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n this.message = `Invalid configuration value provided for ${variable} (${value}).`;\n }\n}\n\nexport type WellFormedError = {\n code: string;\n message: string;\n};\n\n/**\n * Test an unknown argument to determine if it can be further parsed as a potentnial known error.\n */\nexport function isErrorWellFormed(test: unknown): test is WellFormedError {\n return typeof test === 'object' && test !== null && 'code' in test && 'message' in test;\n}\n\n/**\n * An error that indicates that the user must provide consent for additional scopes.\n * - This error typically encountered when interacting with Globus Transfer or Globus Connect Server.\n * - Many instances of `code: \"ConsentRequire\"` in the Globus platform are being migrated to `AuthorizationRequirementsError`.\n */\nexport type ConsentRequiredError = {\n code: 'ConsentRequired';\n required_scopes: string[];\n [key: string]: unknown;\n};\n\n/**\n * Whether or not the provide object is recognized as a `ConsentRequiredError`.\n * @see {@link ConsentRequiredError}\n */\nexport function isConsentRequiredError(test: unknown): test is ConsentRequiredError {\n return (\n isErrorWellFormed(test) &&\n test.code === 'ConsentRequired' &&\n 'required_scopes' in test &&\n Array.isArray(test.required_scopes)\n );\n}\n\n/**\n * An error that includes an `authorization_parameters` property, a.k.a \"G.A.R.E\".\n *\n * A well-known error shape is provided by services when additional authorization requirements must be met by the session.\n * This object can be converted to parameters accepted by Globus Auth using `sdk.errors.toAuthorizationQueryParams()`.\n */\nexport type AuthorizationRequirementsError = {\n authorization_parameters: {\n session_message?: string;\n session_required_identities?: string[];\n session_required_mfa?: boolean;\n session_required_single_domain?: string[];\n session_required_policies?: string[];\n prompt?: string;\n required_scopes?: string[];\n };\n /**\n * @todo At the moment, most Globus services do not guarentee a `code` property for this error type.\n * Once it becomes more common, this type (and the `isAuthorizationRequirementsError` function) should be updated.\n * @see https://globus-sdk-python.readthedocs.io/en/stable/experimental/auth_requirements_errors.html\n */\n // code: string;\n [key: string]: unknown;\n};\n/**\n * Keys that should not be included in the query string object (not recognized by Globus Auth),\n * but are found on the `AuthorizationRequirementsError` object.\n */\nconst NO_OP_KEYS: (keyof AuthorizationRequirementsError)[] = ['required_scopes'];\n/**\n * Convert an `AuthorizationRequirementsError` to a query string object accepted by Globus Auth.\n */\nexport function toAuthorizationQueryParams(\n error: AuthorizationRequirementsError,\n): AuthorizationQueryParameters & Partial<AuthorizationRequestParameters> {\n /**\n * Map properties from the `AuthorizationRequirementsError` to accepted query parameters.\n */\n const mapped = {\n /**\n * `required_scopes` isn't a query parameter accepted by Globus Auth, but\n * in most cases the `required_scopes` represented in the error are intended\n * to be included in the `scopes` (OAuth) parameter.\n * @see https://docs.globus.org/api/auth/sessions/#client-initiated-authns\n */\n scope: error.authorization_parameters.required_scopes?.join(' '),\n /**\n * We still include the entire `authorization_parameters` object in addition to the mapped values for parsing.\n */\n ...error.authorization_parameters,\n };\n\n return Object.entries(mapped).reduce((acc, [key, v]) => {\n /**\n * Remove keys that are not recognized by Globus Auth and empty values.\n */\n if (NO_OP_KEYS.includes(key) || v === undefined || v === null) {\n return acc;\n }\n /**\n * All other values are converted to strings.\n */\n let value = v;\n if (Array.isArray(value)) {\n value = value.join(',');\n } else if (typeof v === 'boolean') {\n value = value ? 'true' : 'false';\n }\n return { ...acc, [key]: value };\n }, {});\n}\n\n/**\n * Check if an object is an `AuthorizationRequirementsError`.\n * @see {@link AuthorizationRequirementsError}\n */\nexport function isAuthorizationRequirementsError(\n test: unknown,\n): test is AuthorizationRequirementsError {\n return (\n typeof test === 'object' &&\n test !== null &&\n 'authorization_parameters' in test &&\n typeof test.authorization_parameters === 'object' &&\n test.authorization_parameters !== null\n );\n}\n", "import * as AUTH from '../services/auth/config.js';\nimport * as TRANSFER from '../services/transfer/config.js';\nimport * as FLOWS from '../services/flows/config.js';\nimport * as GROUPS from '../services/groups/config.js';\nimport * as SEARCH from '../services/search/config.js';\nimport * as TIMERS from '../services/timers/config.js';\nimport * as COMPUTE from '../services/compute/config.js';\n\nimport { EnvironmentConfigurationError } from './errors.js';\nimport { SDKOptions } from '../services/types.js';\nimport { log } from './logger.js';\n\nfunction getRuntime() {\n return typeof window !== 'undefined' ? window : process;\n}\n\nfunction isBrowser(runtime: Window | NodeJS.Process): runtime is Window {\n return typeof window === typeof runtime;\n}\n\nfunction env<T>(key: string, fallback: T): T {\n const runtime = getRuntime();\n let envConfiguration;\n if (isBrowser(runtime)) {\n envConfiguration = runtime;\n } else {\n envConfiguration = runtime.env;\n }\n if (key in envConfiguration) {\n return (envConfiguration as Record<typeof key, T>)[key];\n }\n return fallback;\n}\n\n/**\n * Handlers for: GLOBUS_SDK_ENVIRONMENT\n */\nexport const ENVIRONMENTS = {\n PRODUCTION: 'production',\n PREVIEW: 'preview',\n STAGING: 'staging',\n SANDBOX: 'sandbox',\n INTEGRATION: 'integration',\n TEST: 'test',\n} as const;\n\nexport type Environment = (typeof ENVIRONMENTS)[keyof typeof ENVIRONMENTS];\n\nexport const SERVICES = {\n [AUTH.ID]: AUTH.ID,\n [TRANSFER.ID]: TRANSFER.ID,\n [FLOWS.ID]: FLOWS.ID,\n [GROUPS.ID]: GROUPS.ID,\n [SEARCH.ID]: SEARCH.ID,\n [TIMERS.ID]: TIMERS.ID,\n [COMPUTE.ID]: COMPUTE.ID,\n};\n\nexport type Service = keyof typeof SERVICES;\n\nexport const SERVICE_HOSTS: Record<Service, Partial<Record<Environment, string>>> = {\n [AUTH.ID]: AUTH.HOSTS,\n [TRANSFER.ID]: TRANSFER.HOSTS,\n [FLOWS.ID]: FLOWS.HOSTS,\n [GROUPS.ID]: GROUPS.HOSTS,\n [SEARCH.ID]: SEARCH.HOSTS,\n [TIMERS.ID]: TIMERS.HOSTS,\n [COMPUTE.ID]: COMPUTE.HOSTS,\n};\n\n/**\n * Get the computed SDK options based on the runtime.\n * This should be used any time we're referencing the SDK options in\n * methods to ensure we're including any global overrides.\n */\nexport function getSDKOptions(options?: SDKOptions) {\n let globalOptions = env<string | SDKOptions>('GLOBUS_SDK_OPTIONS', {});\n if (typeof globalOptions === 'string') {\n globalOptions = JSON.parse(globalOptions) as SDKOptions;\n }\n return {\n ...globalOptions,\n ...options,\n fetch: {\n ...globalOptions?.fetch,\n ...options?.fetch,\n options: {\n ...globalOptions?.fetch?.options,\n ...options?.fetch?.options,\n headers: {\n ...globalOptions?.fetch?.options?.headers,\n ...options?.fetch?.options?.headers,\n },\n },\n },\n };\n}\n\nexport function getEnvironment(): Environment {\n const globalOptions = getSDKOptions();\n const environment = env<Environment>(\n 'GLOBUS_SDK_ENVIRONMENT',\n globalOptions?.environment ?? ENVIRONMENTS.PRODUCTION,\n );\n if (globalOptions?.environment && environment !== globalOptions.environment) {\n log(\n 'debug',\n 'GLOBUS_SDK_ENVIRONMENT and GLOBUS_SDK_OPTIONS.environment are set to different values. GLOBUS_SDK_ENVIRONMENT will take precedence',\n );\n }\n if (!environment || !Object.values(ENVIRONMENTS).includes(environment)) {\n throw new EnvironmentConfigurationError('GLOBUS_SDK_ENVIRONMENT', environment);\n }\n return environment;\n}\n\n/**\n * Handlers for: GLOBUS_SDK_VERIFY_SSL\n * Since disabling SSL is at least not-recommended, we consider\n * this value to always be true, but provide a warning when it set\n * to one of the falsey values for informational purposes.\n *\n * Taking direction from `globus-sdk-python` for possible false values\n * @see https://github.com/globus/globus-sdk-python/blob/18eced9c12e2ec41745d1be183148845198b999c/src/globus_sdk/config/env_vars.py#L20\n */\nexport function getVerifySSL(): boolean {\n const verifySSLTemp = env<string>('GLOBUS_SDK_VERIFY_SSL', 'true').toLowerCase();\n if (['n', 'no', 'f', 'false', 'off', '0'].includes(verifySSLTemp)) {\n log(\n 'warn',\n 'Setting GLOBUS_SDK_VERIFY_SSL to false is disallowed in the Globus JavaScript SDK. It will always true in this context',\n );\n }\n return true;\n}\n\n/**\n * Handlers for: GLOBUS_SDK_HTTP_TIMEOUT\n */\nexport function getHttpTimeout() {\n const timeout = Number(env<string | number>('GLOBUS_SDK_HTTP_TIMEOUT', 60));\n if (timeout === -1) {\n return null;\n }\n return timeout;\n}\n\nexport function getServiceHost(service: Service, environment: Environment = getEnvironment()) {\n return SERVICE_HOSTS[service][environment];\n}\n\nexport function getServiceBaseUrl(service: Service, environment: Environment = getEnvironment()) {\n const host = getServiceHost(service, environment);\n return env(`GLOBUS_SDK_SERVICE_URL_${service}`, host ? `https://${host}` : undefined);\n}\n", "import { getServiceBaseUrl, getEnvironment, Environment, Service } from './global.js';\nimport type {\n GCSConfiguration,\n UnauthenticatedGCSConfiguration,\n} from '../services/globus-connect-server/index.js';\nimport { SDKOptions } from '../services/types.js';\n\n/**\n * An extremely simplified parameter serializer based on our current needs.\n *\n * **This is intended for internal @globus/sdk use only.**\n *\n * @private\n */\nexport function stringifyParameters(parameters: {\n [key: string]:\n | string\n | number\n | boolean\n | Array<string | number | null | undefined>\n | null\n | undefined;\n}) {\n const search = new URLSearchParams();\n\n Array.from(Object.entries(parameters)).forEach(([key, value]) => {\n if (Array.isArray(value)) {\n /**\n * Arrays are converted to comma-separated strings.\n */\n search.set(key, value.join(','));\n } else if (value !== undefined) {\n search.set(key, String(value));\n }\n });\n\n return search.toString();\n}\n\n/**\n * Return the base URL for a service (based on the environment).\n * @param service The service to build the URL for.\n * @param path The path to the resource.\n * @param environment The environment to use.\n */\nexport function getServiceURL(\n service: Service,\n path = '',\n environment: Environment = getEnvironment(),\n): URL {\n const base = getServiceBaseUrl(service, environment);\n return new URL(path, base);\n}\n\n/**\n * Build a URL for a service or GCSConfiguration.\n *\n * @param service The service identifier or GCSConfiguration object to build the URL for.\n * @param path The path to the resource.\n * @param options Additional options for the URL.\n */\nexport function build(\n serviceOrConfiguration: Service | GCSConfiguration | UnauthenticatedGCSConfiguration,\n path: string,\n options?: {\n search?: Parameters<typeof stringifyParameters>[0];\n },\n sdkOptions?: SDKOptions,\n): string {\n let url;\n if (typeof serviceOrConfiguration === 'object') {\n url = new URL(path, serviceOrConfiguration.host);\n } else {\n url = getServiceURL(serviceOrConfiguration, path, sdkOptions?.environment);\n }\n if (options && options.search) {\n url.search = stringifyParameters(options.search);\n }\n return url.toString();\n}\n", "import { ID, SCOPES } from '../../config.js';\nimport { serviceRequest } from '../../../../services/shared.js';\n\nimport type { ServiceMethod, ServiceMethodDynamicSegments } from '../../../types.js';\n\nexport * as consents from './consents.js';\n\n/**\n * Fetch a single Identity by ID.\n * @see https://docs.globus.org/api/auth/reference/#get_identities\n */\nexport const get = function (identity_id, options = {}, sdkOptions?) {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.VIEW_IDENTITIES,\n path: `/v2/api/identities/${identity_id}`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<string, Record<string, any>>;\n\n/**\n * Return a list of identities that match provided query parameters.\n * @see https://docs.globus.org/api/auth/reference/#get_identities\n */\nexport const getAll = function (options = {}, sdkOptions?) {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.VIEW_IDENTITIES,\n path: `/v2/api/identities`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethod<{\n query?: {\n ids?: string | string[];\n usernames?: string | string[];\n };\n headers?: Record<string, string>;\n payload?: never;\n}>;\n", "import _fetch from 'cross-fetch';\nimport { getClientInfoRequestHeaders } from '../core/info/index.js';\nimport { build } from '../core/url.js';\nimport { getSDKOptions, Service } from '../core/global.js';\nimport { isAuthorizationRequirementsError } from '../core/errors.js';\nimport { RESOURCE_SERVERS } from './auth/config.js';\nimport { isRefreshToken } from './auth/index.js';\nimport type { ServiceMethodOptions, SDKOptions } from './types.js';\nimport type {\n GCSConfiguration,\n UnauthenticatedGCSConfiguration,\n} from '../services/globus-connect-server/index.js';\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport enum HTTP_METHODS {\n POST = 'POST',\n GET = 'GET',\n DELETE = 'DELETE',\n PUT = 'PUT',\n PATCH = 'PATCH',\n}\n\n/**\n * Our domain-specific language for describing service requests.\n * @private\n */\ntype ServiceRequestDSL = {\n /**\n * The service that the request will be made to.\n */\n service: Service | GCSConfiguration | UnauthenticatedGCSConfiguration;\n /**\n * A specific scope that is required for the request. If a scope is provided,\n * the `serviceRequest` function will attempt to get a token for the request\n * based on the the `service` => `resource_server` mapping.\n * @deprecated Define using `resource_server` instead.\n */\n scope?: string;\n /**\n * The resource server that the request will be made to. This can be provided\n * instead of (or addition to) the `scope` property. If this is provided, the\n * `serviceRequest` function will attempt to get a token for the resource server\n * when a `manager` instance is provided in the SDK options.\n */\n resource_server?: string;\n /**\n * The path of the resource (appended to the service's host).\n */\n path: string;\n /**\n * The HTTP method to use for the request.\n */\n method?: HTTP_METHODS;\n /**\n * For some resources, it doesn't make sense for requests to be retried.\n * Setting this to `true` will prevent any retry logic from being applied.\n */\n preventRetry?: boolean;\n};\n\n/**\n * A helper function for making service requests that will handle the arguments\n * of `ServiceMethod` and `ServiceMethodDynamicSegments` functions in a uniform\n * way.\n *\n * @example\n * ```ts\n * export const get = function (flow_id, options?, sdkOptions?) {\n * return serviceRequest({\n * service: FLOWS.ID,\n * scope: SCOPES.VIEW_FLOWS,\n * path: `/flows/${flow_id}`,\n * }, options, sdkOptions);\n * } satisfies ServiceMethodDynamicSegments<string, Record<string, any>>;\n * ```\n *\n * @private\n * @param config The ServiceRequestDSL for the request.\n * @param options The options passed to the service method.\n * @param passedSdkOptions The SDK options passed to the service method.\n * @returns\n */\nexport async function serviceRequest(\n this: unknown,\n config: ServiceRequestDSL,\n options?: ServiceMethodOptions,\n passedSdkOptions?: SDKOptions,\n): Promise<Response> {\n /**\n * Get the SDK options, merging any passed options with the global options.\n */\n const sdkOptions = getSDKOptions(passedSdkOptions);\n const injectedFetchOptions = sdkOptions?.fetch?.options || {};\n\n const headers: Record<string, string> = {\n ...getClientInfoRequestHeaders(),\n ...options?.headers,\n /**\n * Key/value pairs found in the `fetch` options override those found in the\n * service method options.\n */\n ...injectedFetchOptions.headers,\n };\n\n /**\n * The `AuthorizationManager` instance provided with the call.\n */\n const manager = options?.manager || sdkOptions?.manager;\n\n let token;\n /**\n * If a `resource_server` was provided, and the SDK is configured with a `manager`\n * instance, we'll try to get a token for the resource server and use it.\n */\n if (config.resource_server && manager) {\n token = manager.tokens.getByResourceServer(config.resource_server);\n if (token) {\n headers['Authorization'] = `Bearer ${token.access_token}`;\n }\n }\n /**\n * If the `scope` property is provided, and the SDK is configured with a `manager`,\n * we'll try to map the service to a resource server. This is mostly to support\n * backwards compatibility of the `scope` property being used in the `ServiceRequestDSL`.\n *\n * @todo This condition will likely be removed in a future version in favor of using `resource_server` to\n * configure a service request.\n */\n if (\n config.scope &&\n manager &&\n /**\n * Only attempt to get a token if the `service` property is a string or has an `endpoint_id` property (GCSConfiguration).\n */\n (typeof config.service === 'string' || 'endpoint_id' in config.service)\n ) {\n const resourceServer =\n typeof config.service === 'string'\n ? RESOURCE_SERVERS[config.service]\n : // For `GCSConfiguration` objects, the `endpoint_id` is the resource server.\n config.service.endpoint_id;\n\n token = manager.tokens.getByResourceServer(resourceServer);\n if (token) {\n headers['Authorization'] = `Bearer ${token.access_token}`;\n }\n }\n\n /**\n * If a raw body was provided, use that. Otherwise, if a payload was provided, serialize it.\n */\n let body = options?.body;\n if (!body && options?.payload) {\n body = JSON.stringify(options.payload);\n }\n\n /**\n * If `Content-Type` header was not provided, and there is a body, we assume it is JSON.\n */\n if (!headers?.['Content-Type'] && body) {\n headers['Content-Type'] = 'application/json';\n }\n\n const url = build(\n config.service,\n config.path,\n {\n search: options?.query,\n },\n sdkOptions,\n );\n\n const init = {\n method: config.method,\n body,\n ...injectedFetchOptions,\n /**\n * Merge the headers from the options and SDK options.\n */\n headers,\n };\n\n /**\n * The request handler for the fetch call. This can be overridden by providing a\n * `__callable` property in the `fetch` options.\n */\n let handler = _fetch;\n /* eslint-disable no-underscore-dangle */\n if (injectedFetchOptions?.__callable) {\n handler = injectedFetchOptions.__callable.bind(this);\n /**\n * Remove the `__callable` property from the `fetch` options before passing the options along.\n */\n delete init.__callable;\n }\n /* eslint-enable no-underscore-dangle */\n\n /**\n * If the resource is configured to prevent retries, there is no `manager` instance,\n * or token, the request will be made as-is.\n */\n if (config.preventRetry || !manager || !token || !isRefreshToken(token)) {\n return handler(url, init);\n }\n\n /**\n * Automatic Retry Handling\n */\n\n const initialResponse = await handler(url, init);\n /**\n * If the response is \"ok\", we can return it as-is.\n */\n if (initialResponse.ok) {\n return initialResponse;\n }\n /**\n * Do a safe check to see if the response contains any authorization requirements.\n */\n let hasAuthorizationRequirements;\n try {\n hasAuthorizationRequirements = isAuthorizationRequirementsError(\n /**\n * It is important to clone the response before calling `json` avoid\n * `body used already for [...]` errors when the initial response is\n * returned.\n */\n await initialResponse.clone().json(),\n );\n } catch (_e) {\n hasAuthorizationRequirements = false;\n }\n /**\n * We only attempt to refresh the original token supplied with teh request, if the\n * response status is 401 and the response does not contain any authorization requirements.\n */\n const shouldAttemptTokenRefresh = initialResponse.status === 401 && !hasAuthorizationRequirements;\n if (shouldAttemptTokenRefresh) {\n const newToken = await manager.refreshToken(token);\n if (!newToken) {\n return initialResponse;\n }\n /**\n * Retry the request with the new token.\n */\n return handler(url, {\n ...init,\n headers: {\n ...init.headers,\n Authorization: `Bearer ${newToken.access_token}`,\n },\n });\n }\n /**\n * No retry was attempted, return the initial response.\n */\n return initialResponse;\n}\n", "import { ID, SCOPES } from '../../config.js';\nimport { serviceRequest } from '../../../../services/shared.js';\n\nimport type { JSONFetchResponse, ServiceMethodDynamicSegments } from '../../../types.js';\n\nexport type Consent = {\n auto_approved: boolean;\n effective_identity: string;\n id: number;\n client: string;\n updated: string;\n /**\n * An array of `Consent.id` values that represents the location of this consent in the dependency graph.\n */\n dependency_path: number[];\n status: string;\n allows_refresh: boolean;\n scope_name: string;\n created: string;\n atomically_revocable: boolean;\n scope: string;\n last_used: string;\n};\n\nexport const getAll = function (\n identity_id,\n options = {},\n sdkOptions?,\n): Promise<JSONFetchResponse<{ consents: Consent[] }>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.VIEW_IDENTITIES,\n path: `/v2/api/identities/${identity_id}/consents`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<string, Record<string, any>>;\n", "import { ID } from '../../config.js';\nimport { HTTP_METHODS, serviceRequest } from '../../../../services/shared.js';\n\nimport type { ServiceMethod } from '../../../types.js';\n\nexport const userinfo = function (options?, sdkOptions?) {\n return serviceRequest(\n {\n service: ID,\n scope: undefined,\n path: `/v2/oauth2/userinfo`,\n method: HTTP_METHODS.GET,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethod<{\n payload: never;\n}>;\n\nexport * as token from './token.js';\n", "import { ID } from '../../config.js';\nimport { HTTP_METHODS, serviceRequest } from '../../../../services/shared.js';\n\nimport type { ServiceMethod, ServiceMethodOptions } from '../../../types.js';\n\ntype IntrospectPayload = {\n token: string;\n include?: string;\n};\n\ntype RevokePayload = {\n token: string;\n /**\n * This is an undocumented property that is required for the request to be successful.\n */\n client_id: string;\n};\n\ntype ValidatePayload = {\n token: string;\n client_id: string;\n};\n\ntype RefreshPayload = {\n refresh_token: string;\n grant_type: 'refresh_token';\n /**\n * This is an undocumented property that is required for the request to be successful.\n */\n client_id: string;\n};\n\ntype ExchangePayload = {\n grant_type: 'authorization_code';\n code: string;\n client_id: string;\n code_verifier: string;\n redirect_uri: string;\n};\n\ntype SupportedPayloads =\n | IntrospectPayload\n | RevokePayload\n | ValidatePayload\n | RefreshPayload\n | ExchangePayload;\n\nfunction serialize(payload?: SupportedPayloads) {\n return new URLSearchParams(payload);\n}\n\n/**\n * Format and inject properties that are specific to the `/token` resources.\n */\nfunction injectServiceOptions(\n options: ServiceMethodOptions & {\n payload?: SupportedPayloads;\n },\n): ServiceMethodOptions {\n return {\n ...options,\n /**\n * The `token` service methods always expect a form-encoded body. We still allow\n * end-consumers to pass a raw body, but if `payload` is provided it is serialized.\n */\n body: options.payload ? serialize(options.payload) : undefined,\n headers: {\n ...(options?.headers || {}),\n Accept: 'application/json',\n /**\n * Force the `Content-Type` header to be `application/x-www-form-urlencoded` and `charset=UTF-8`.\n */\n 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',\n },\n };\n}\n\n/**\n * @see https://docs.globus.org/api/auth/reference/#dependent_token_grant_post_v2oauth2token\n */\nexport const token = function (options = {}, sdkOptions?) {\n return serviceRequest(\n {\n service: ID,\n scope: undefined,\n path: `/v2/oauth2/token`,\n method: HTTP_METHODS.POST,\n preventRetry: true,\n },\n injectServiceOptions(options),\n sdkOptions,\n );\n} satisfies ServiceMethod<{\n payload?: ExchangePayload;\n query?: {\n /**\n * Include tokens for all scopes that the user has consented to, for the requesting client.\n * @private\n */\n include_consented_scopes?: boolean;\n };\n}>;\n\n/**\n * @see https://docs.globus.org/api/auth/developer-guide/#obtaining-authorization\n */\nexport const exchange = token;\n\n/**\n * Token Introspection\n * @see https://docs.globus.org/api/auth/reference/#token-introspect\n */\nexport const introspect = function (options, sdkOptions?) {\n if (!options?.payload) {\n throw new Error(`'payload' is required for introspect`);\n }\n return serviceRequest(\n {\n service: ID,\n scope: undefined,\n path: `/v2/oauth2/token/introspect`,\n method: HTTP_METHODS.POST,\n preventRetry: true,\n },\n injectServiceOptions(options),\n sdkOptions,\n );\n} satisfies ServiceMethod<{\n payload: IntrospectPayload;\n}>;\n\n/**\n * Token Revocation\n * @see https://docs.globus.org/api/auth/reference/#token-revoke\n */\nexport const revoke = function (options, sdkOptions?) {\n if (!options?.payload) {\n throw new Error(`'payload' is required for revoke`);\n }\n return serviceRequest(\n {\n service: ID,\n scope: undefined,\n path: `/v2/oauth2/token/revoke`,\n method: HTTP_METHODS.POST,\n preventRetry: true,\n },\n injectServiceOptions(options),\n sdkOptions,\n );\n} satisfies ServiceMethod<{\n payload: RevokePayload;\n}>;\n\n/**\n * Token Refresh\n * @see https://docs.globus.org/api/auth/reference/#refresh_token_grant\n */\nexport const refresh = function (options, sdkOptions?) {\n if (!options?.payload) {\n throw new Error(`'payload' is required for revoke`);\n }\n return serviceRequest(\n {\n service: ID,\n scope: undefined,\n path: `/v2/oauth2/token`,\n method: HTTP_METHODS.POST,\n preventRetry: true,\n },\n injectServiceOptions(options),\n sdkOptions,\n );\n} satisfies ServiceMethod<{\n payload: RefreshPayload;\n}>;\n\n/**\n * @private\n * @deprecated Rather than using `validate` to check if a token is valid, it is recommended to make a request to the resource server with the token and handle the error response.\n */\nexport const validate = function (options, sdkOptions?) {\n if (!options?.payload) {\n throw new Error(`'payload' is required for validate`);\n }\n return serviceRequest(\n {\n service: ID,\n scope: undefined,\n path: `/v2/oauth2/token/validate`,\n method: HTTP_METHODS.POST,\n preventRetry: true,\n },\n injectServiceOptions(options),\n sdkOptions,\n );\n} satisfies ServiceMethod<{\n payload: ValidatePayload;\n}>;\n", "import { Consent } from './service/identities/consents.js';\n\nexport type ScopeTreeLeaf = {\n scope: string;\n atomically_revocable: boolean;\n children: ScopeTreeLeaf[];\n};\n\n/**\n * Splits a scope string into an array of individual scopes, accounting for nested, space-separated scopes.\n * @private\n */\nexport function splitScopeString(scope: string): string[] {\n const scopes: string[] = [];\n let currentScope = '';\n let openBrackets = 0;\n scope.split('').forEach((char, i) => {\n currentScope += char;\n if (char === '[') {\n openBrackets += 1;\n }\n if (char === ']') {\n openBrackets -= 1;\n }\n /**\n * If we encounter a space outside of brackets, or if we're at the end of the string and there is `currentScope`\n * value, push it to the `scopes` array.\n */\n if ((char === ' ' && openBrackets === 0) || (i === scope.length - 1 && currentScope)) {\n scopes.push(currentScope.trim());\n currentScope = '';\n }\n });\n return scopes;\n}\n\n/**\n * Parses a scope string into a normalized structure (leaf) for easier comparison.\n */\nfunction parseScope(s: string): ScopeTreeLeaf {\n let parsedScope = s;\n const revocable = parsedScope.startsWith('*');\n if (revocable) {\n parsedScope = parsedScope.replace(/^\\*\\s*/, '');\n }\n let children: ScopeTreeLeaf[] = [];\n /**\n * If there is no bracket, then there are no children and we can return the parsed scope.\n */\n const firstBracket = parsedScope.indexOf('[');\n if (firstBracket === -1) {\n return {\n scope: parsedScope,\n atomically_revocable: revocable,\n children: [],\n };\n }\n /**\n * The top-level scope is everything before the first encountered bracket.\n */\n const topLevelScope = parsedScope.slice(0, firstBracket);\n /**\n * The children are everything inside the brackets.\n */\n const dependentScope = parsedScope.slice(firstBracket + 1, -1);\n children = splitScopeString(dependentScope).map(parseScope);\n return {\n scope: topLevelScope,\n atomically_revocable: revocable,\n children,\n };\n}\n\n/**\n * Converts a scope string into a tree structure for easier comparison.\n */\nexport function toScopeTree(scope: string): ScopeTreeLeaf[] {\n return splitScopeString(scope).map(parseScope);\n}\n\n/**\n * Given a list of consent entries and a scope string, determine if **all** scopes have been approved.\n *\n * @param consents An array of consent entries (sourced from the Globus Auth API) that will be used as the \"haystack\" for the search.\n * @param scope A full scope string that will be parsed into a tree, and compared against the `consents`.\n * @returns boolean\n */\nexport function hasConsentForScope(consents: Consent[], scope: string): boolean {\n const tree = toScopeTree(scope);\n /**\n * Determine if a leaf of the scope tree has a consent entry (including all `children`).\n * @param leaf The leaf of the scope tree we are checking for consent.\n * @param path The current, expected path to the leaf when processing `children`.\n * @returns boolean\n */\n function hasConsentEntry(leaf: ScopeTreeLeaf, path?: number[]): boolean {\n /**\n * Find the consent entry that matches the current leaf, and the current path.\n */\n const entry = consents.find(\n (c) =>\n c.scope_name === leaf.scope &&\n /**\n * If a `path` is provided, we need to make sure the entry is at the proper depth.\n */\n (path\n ? c.dependency_path.join(',') === [...path, c.id].join(',')\n : /**\n * If there is no `path`, then the entry must be a \"top-level\" scope.\n */\n c.dependency_path.length === 1),\n );\n /**\n * If no entry was found, then the scope has not be explicitly approved (or denied).\n */\n if (!entry) return false;\n /**\n * If we found an entry, and there are no `children` to process on the leaf,\n * then we can use the `status` of the entry to determine if the scope has been approved.\n */\n if (!leaf.children.length) return entry.status === 'approved';\n /**\n * If there are `children` to process, then we need to check if all `children` have been approved.\n */\n return leaf.children.every((s) =>\n hasConsentEntry(\n s,\n /**\n * If there is a `path`, make sure to pass it down to account for deeply nested scopes, otherwise\n * the `entry` can be considered to \"root\".\n */\n path ? [...path, entry.id] : [entry.id],\n ),\n );\n }\n\n return tree.every((l) => hasConsentEntry(l));\n}\n", "/**\n * @todo It would be nice to not `| any` here, but ideally callers do not need to\n * fully type the payload to attach listeners.\n */\ntype ListenerCallback<P> = (payload?: P | any) => Promise<void> | void;\n\nexport class Event<EventName extends string, Payload extends unknown> {\n #callbacks: ListenerCallback<Payload>[] = [];\n\n constructor(readonly name: EventName) {}\n\n addListener(callback: ListenerCallback<Payload>) {\n this.#callbacks.push(callback);\n return () => this.removeListener(callback);\n }\n\n removeListener(callback: ListenerCallback<Payload>) {\n this.#callbacks = this.#callbacks.filter((cb) => cb !== callback);\n }\n\n clearListeners() {\n this.#callbacks = [];\n }\n\n async dispatch(payload?: Payload) {\n await Promise.all(this.#callbacks.map((callback) => callback(payload)));\n }\n}\n", "export function isSupported() {\n return 'crypto' in globalThis;\n}\n\nfunction getCrypto(): Crypto {\n return 'webcrypto' in globalThis.crypto\n ? (globalThis.crypto.webcrypto as unknown as Crypto)\n : globalThis.crypto;\n}\n\n/**\n * Base64 URL encode a string.\n * @see https://www.oauth.com/oauth2-servers/pkce/authorization-request/\n */\nconst encode = (value: string) =>\n btoa(value).replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=+$/, '');\n\nasync function sha256(input: string) {\n const hashBuffer = await getCrypto().subtle.digest('SHA-256', new TextEncoder().encode(input));\n return String.fromCharCode(...new Uint8Array(hashBuffer));\n}\n\n/**\n * Character set for generating random alpha-numeric strings.\n */\nconst CHARSET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n\n/**\n * Character set allowed to be used in the PKCE `code_verifier`\n * @see https://www.rfc-editor.org/rfc/rfc7636#section-4.1\n */\nconst PKCE_SAFE_CHARSET = `${CHARSET}-._~`;\n/**\n * Create a Code Verifier for PKCE\n * @see https://www.rfc-editor.org/rfc/rfc7636#section-4.1\n */\nexport function generateCodeVerifier() {\n /**\n * @todo Make length random between 43 and 128 characters\n */\n return Array.from(getCrypto().getRandomValues(new Uint8Array(43)))\n .map((v) => PKCE_SAFE_CHARSET[v % PKCE_SAFE_CHARSET.length])\n .join('');\n}\n\n/**\n * Create a Code Challenge from a provided Code Verifier (assumes S256 `code_challenge_method`).\n * @see https://www.rfc-editor.org/rfc/rfc7636#section-4.2\n */\nexport async function generateCodeChallenge(verifier: string) {\n const hashed = await sha256(verifier);\n return encode(hashed);\n}\n\nexport function generateState() {\n return Array.from(getCrypto().getRandomValues(new Uint8Array(16)))\n .map((v) => CHARSET[v % CHARSET.length])\n .join('');\n}\n\n/**\n * @see https://www.oauth.com/oauth2-servers/pkce/authorization-code-exchange/\n */\nexport type AuthorizationCodeExchangeParameters = {\n code: string;\n code_verifier: string;\n client_id: string;\n client_secret?: string;\n redirect_uri: string;\n grant_type: 'authorization_code';\n};\n\n/**\n * @see https://www.oauth.com/oauth2-servers/pkce/authorization-request/\n */\nexport type AuthorizationRequestParameters = {\n client_id: string;\n redirect_uri: string;\n response_type: 'code';\n scope: string;\n state: string;\n code_challenge: string;\n code_challenge_method: 'S256' | 'plain';\n};\n\n/**\n * @private\n */\nexport const KEYS = {\n PKCE_STATE: 'pkce_state',\n PKCE_CODE_VERIFIER: 'pkce_code_verifier',\n};\n\ntype Entries = 'state' | 'code_verifier';\n\nexport const store = {\n getKey(key: Entries) {\n return key === 'state' ? KEYS.PKCE_STATE : KEYS.PKCE_CODE_VERIFIER;\n },\n get: (entry: Entries) => sessionStorage.getItem(store.getKey(entry)),\n set: (entry: Entries, value: string) => sessionStorage.setItem(store.getKey(entry), value),\n reset: () => {\n sessionStorage.removeItem(KEYS.PKCE_STATE);\n sessionStorage.removeItem(KEYS.PKCE_CODE_VERIFIER);\n },\n};\n", "import { getAuthorizationEndpoint, oauth2 } from '../../services/auth/index.js';\nimport {\n generateCodeChallenge,\n generateCodeVerifier,\n generateState,\n AuthorizationRequestParameters,\n AuthorizationCodeExchangeParameters,\n isSupported,\n store,\n} from './pkce.js';\n\nimport type { AuthorizationManagerConfiguration } from './AuthorizationManager.js';\n\nexport type GetTokenOptions = {\n /**\n * Whether or not the URL should be replaced after processing the token.\n * This is used to remove the `?code=...&state=...` parameters from the URL after the token is retrieved.\n * If set to `false`, the URL will remain unchanged.\n * @default true\n */\n shouldReplace?: boolean;\n /**\n * When set to `true` in addition to the `scope` values originally requested, Globus Auth\n * will return tokens for **all** of the scopes that the user has consented to, for\n * the requesting client.\n * @default false\n * @private\n */\n includeConsentedScopes?: boolean;\n};\n\nexport type TransportOptions = Pick<\n AuthorizationManagerConfiguration,\n 'client' | 'redirect' | 'scopes'\n> & {\n /**\n * Query parameters to include in the authorization request.\n *\n * The transport will include all parameters required for a default OAuth PKCE flow, but\n * these parameters can be overridden or extended with this option.\n */\n params?: {\n [key: string]: string;\n };\n};\n\nexport type RedirectTransportOptions = TransportOptions;\nexport class RedirectTransport {\n #options: RedirectTransportOptions;\n\n constructor(options: RedirectTransportOptions) {\n this.#options = options;\n if (RedirectTransport.supported === false) {\n throw new Error('RedirectTransport is not supported in this environment.');\n }\n }\n\n static supported = isSupported();\n\n /**\n * For the redirect transport, sending the request will redirect the user to the authorization endpoint, initiating the OAuth flow.\n */\n async send() {\n /**\n * Since we'll be using PKCE, we need to generate a code verifier and challenge\n * for the OAuth handshake.\n */\n const verifier = generateCodeVerifier();\n const challenge = await generateCodeChallenge(verifier);\n /**\n * If there is caller-provided `state`, use it; Otherwise, generate a state parameter.\n */\n const state = this.#options.params?.['state'] ?? generateState();\n /**\n * The verifier and state are stored in session storage so that we can validate\n * the response when we receive it.\n */\n store.set('code_verifier', verifier);\n store.set('state', state);\n\n const params: AuthorizationRequestParameters = {\n response_type: 'code',\n client_id: this.#options.client,\n scope: this.#options.scopes || '',\n redirect_uri: this.#options.redirect,\n state,\n code_challenge: challenge,\n code_challenge_method: 'S256',\n ...(this.#options.params || {}),\n };\n\n const url = new URL(getAuthorizationEndpoint());\n url.search = new URLSearchParams(params).toString();\n\n window.location.assign(url.toString());\n }\n\n /**\n * Parse the current URL for the authorization code (`?code=...`) and exchange it for an access token when available.\n * - When the URL is processed and exchanged for an access token, the page is redirected to the current URL without the `?code=...&state=...` parameters.\n */\n async getToken(\n options: GetTokenOptions = { shouldReplace: true, includeConsentedScopes: false },\n ) {\n const url = new URL(window.location.href);\n const params = new URLSearchParams(url.search);\n /**\n * Check for an error in the OAuth flow.\n * @see https://www.oauth.com/oauth2-servers/pkce/authorization-request/\n */\n if (params.get('error')) {\n throw new Error(\n params.get('error_description') || 'An error occurred during the authorization process.',\n );\n }\n\n const code = params.get('code');\n\n /**\n * If we don't have a `code` parameter, we can't exchange it for an access token.\n */\n if (!code) return undefined;\n\n /**\n * Grab the PKCE information from session storage.\n */\n const state = store.get('state');\n const verifier = store.get('code_verifier');\n /**\n * Now that we have the values in memory, we can remove them from session storage.\n */\n store.reset();\n\n /**\n * Validate the `state` parameter matches the preserved state (to prevent CSRF attacks).\n */\n if (params.get('state') !== state) {\n throw new Error(\n 'Invalid State. The received \"state\" parameter does not match the expected state.',\n );\n }\n /**\n * Ensure we have a valid code verifier.\n */\n if (!verifier) {\n throw new Error('Invalid Code Verifier');\n }\n\n /**\n * Prepare the payload for the PKCE token exchange.\n */\n const payload: AuthorizationCodeExchangeParameters = {\n code,\n client_id: this.#options.client,\n /**\n * Retrieve the code verifier from session storage.\n */\n code_verifier: verifier,\n redirect_uri: this.#options.redirect,\n grant_type: 'authorization_code',\n };\n\n const response = await (\n await oauth2.token.exchange({\n query: options.includeConsentedScopes\n ? {\n include_consented_scopes: true,\n }\n : undefined,\n payload,\n })\n ).json();\n\n if (options.shouldReplace) {\n /**\n * Remove the `code` and `state` parameters from the URL.\n */\n params.delete('code');\n params.delete('state');\n /**\n * Update the URL with the new query string.\n */\n url.search = params.toString();\n /**\n * Redirect the page to the new URL (without the `code` and `state` parameters)/\n */\n window.location.replace(url);\n }\n return response;\n }\n}\n", "import { CONFIG, isToken } from '../../services/auth/index.js';\n\nimport { SERVICES, type Service } from '../global.js';\nimport { AuthorizationManager } from './AuthorizationManager.js';\n\nimport type { Token, TokenResponse } from '../../services/auth/types.js';\n\nexport type StoredToken = Token & {\n /**\n * Tokens stored before the introduction of the `__metadata` field will be missing this property.\n * @since 4.3.0\n */\n __metadata?: {\n /**\n * The timestamp when the token was added to the storage as a number of milliseconds since the Unix epoch.\n *\n * **IMPORTANT**: This value might **not** represent the time when the token was created by the authorization server.\n */\n created: number;\n /**\n * The timestamp when the token will expire as a number of milliseconds since the Unix epoch, based\n * on the `expires_in` value from the token response and the time when the token was stored.\n */\n expires: number | null;\n };\n};\n\nexport class TokenManager {\n #manager: AuthorizationManager;\n\n constructor(options: { manager: AuthorizationManager }) {\n this.#manager = options.manager;\n }\n\n /**\n * Retrieve and parse an item from the storage.\n */\n #getTokenFromStorage(key: string) {\n const raw = this.#manager.storage.getItem(key) || 'null';\n let token: StoredToken | null = null;\n try {\n const parsed = JSON.parse(raw);\n if (isToken(parsed)) {\n token = parsed;\n }\n } catch (e) {\n // no-op\n }\n return token;\n }\n\n #getTokenForService(service: Service) {\n const resourceServer = CONFIG.RESOURCE_SERVERS?.[service];\n return this.getByResourceServer(resourceServer);\n }\n\n getByResourceServer(resourceServer: string): StoredToken | null {\n return this.#getTokenFromStorage(`${this.#manager.storageKeyPrefix}${resourceServer}`);\n }\n\n get auth(): StoredToken | null {\n return this.#getTokenForService(SERVICES.AUTH);\n }\n\n get transfer(): StoredToken | null {\n return this.#getTokenForService(SERVICES.TRANSFER);\n }\n\n get flows(): StoredToken | null {\n return this.#getTokenForService(SERVICES.FLOWS);\n }\n\n get groups(): StoredToken | null {\n return this.#getTokenForService(SERVICES.GROUPS);\n }\n\n get search(): StoredToken | null {\n return this.#getTokenForService(SERVICES.SEARCH);\n }\n\n get timer(): StoredToken | null {\n return this.#getTokenForService(SERVICES.TIMERS);\n }\n\n get compute(): StoredToken | null {\n return this.#getTokenForService(SERVICES.COMPUTE);\n }\n\n gcs(endpoint: string): StoredToken | null {\n return this.getByResourceServer(endpoint);\n }\n\n getAll(): StoredToken[] {\n const entries = Object.keys(this.#manager.storage).reduce(\n (acc: (StoredToken | null)[], key) => {\n if (key.startsWith(this.#manager.storageKeyPrefix)) {\n acc.push(this.#getTokenFromStorage(key));\n }\n return acc;\n },\n [],\n );\n return entries.filter(isToken);\n }\n\n /**\n * Add a token to the storage.\n */\n add(token: Token | TokenResponse) {\n const created = Date.now();\n const expires = created + token.expires_in * 1000;\n this.#manager.storage.setItem(\n `${this.#manager.storageKeyPrefix}${token.resource_server}`,\n JSON.stringify({\n ...token,\n /**\n * Add metadata to the token to track when it was created and when it expires.\n */\n __metadata: {\n created,\n expires,\n },\n }),\n );\n if ('other_tokens' in token) {\n token.other_tokens?.forEach((t) => {\n this.add(t);\n });\n }\n }\n\n remove(token: Token | TokenResponse) {\n this.#manager.storage.removeItem(`${this.#manager.storageKeyPrefix}${token.resource_server}`);\n }\n\n /**\n * Determines whether or not a stored token is expired.\n * @param token The token to check.\n * @param augment An optional number of milliseconds to add to the current time when checking the expiration.\n * @returns `true` if the token is expired, `false` if it is not expired, and `undefined` if the expiration status cannot be determined\n * based on the token's metadata. This can happen if the token is missing the `__metadata` field or the `expires` field.\n */\n static isTokenExpired(token: StoredToken | null, augment: number = 0): boolean | undefined {\n /* eslint-disable no-underscore-dangle */\n if (!token || !token.__metadata || typeof token.__metadata.expires !== 'number') {\n return undefined;\n }\n return Date.now() + augment >= token.__metadata.expires;\n /* eslint-enable no-underscore-dangle */\n }\n}\n", "/**\n * An in-memory implementation of the `Storage` interface.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Storage\n */\nexport class MemoryStorage implements Storage {\n #storage: Record<string, string | null> = {};\n\n getItem(key: string) {\n return this.#storage[key] !== undefined ? this.#storage[key] : null;\n }\n\n setItem(key: string, value: string) {\n this.#storage[key] = value;\n }\n\n removeItem(key: string) {\n delete this.#storage[key];\n }\n\n key(index: number) {\n return Object.keys(this.#storage)[index];\n }\n\n clear() {\n this.#storage = {};\n }\n\n get length() {\n return Object.keys(this.#storage).length;\n }\n}\n", "import { getAuthorizationEndpoint, oauth2 } from '../../services/auth/index.js';\nimport {\n generateCodeChallenge,\n generateCodeVerifier,\n generateState,\n AuthorizationRequestParameters,\n AuthorizationCodeExchangeParameters,\n isSupported,\n store,\n} from './pkce.js';\n\nimport type { TransportOptions } from './RedirectTransport.js';\n\nexport type PopupTransportOptions = TransportOptions;\n\nconst MESSAGE_SOURCE = 'globus-sdk';\n\n/**\n * The `PopupTransport` (`popup`) uses a popup window to initiate the OAuth 2.0 using PKCE.\n *\n * When using the `PopupTransport`, the `redirect` parameter should be to a location\n * that will transmit the URL back to the opener. This can be done using `AuthorizationManager.handleCodeRedirect()`, or\n * manually by calling `window.opener.postMessage()`.\n *\n * @experimental\n */\nexport class PopupTransport {\n #options: PopupTransportOptions;\n\n #window: Window | null = null;\n\n constructor(options: PopupTransportOptions) {\n this.#options = options;\n if (PopupTransport.supported === false) {\n throw new Error('PopupTransport is not supported in this environment.');\n }\n }\n\n /**\n * The `PopupTransport` is supported in environments where the `window` object is available.\n */\n static supported =\n isSupported() && 'window' in globalThis && typeof globalThis.window.open === 'function';\n\n /**\n * For the redirect transport, sending the request will redirect the user to the authorization endpoint, initiating the OAuth flow.\n */\n async send() {\n /**\n * Since we'll be using PKCE, we need to generate a code verifier and challenge\n * for the OAuth handshake.\n */\n const verifier = generateCodeVerifier();\n const challenge = await generateCodeChallenge(verifier);\n /**\n * If there is caller-provided `state`, use it; Otherwise, generate a state parameter.\n */\n const state = this.#options.params?.['state'] ?? generateState();\n /**\n * The verifier and state are stored in session storage so that we can validate\n * the response when we receive it.\n */\n store.set('code_verifier', verifier);\n store.set('state', state);\n\n const params: AuthorizationRequestParameters = {\n response_type: 'code',\n client_id: this.#options.client,\n scope: this.#options.scopes || '',\n redirect_uri: this.#options.redirect,\n state,\n code_challenge: challenge,\n code_challenge_method: 'S256',\n ...(this.#options.params || {}),\n };\n\n const url = new URL(getAuthorizationEndpoint());\n url.search = new URLSearchParams(params).toString();\n\n const promise = new Promise((resolve) => {\n window.addEventListener(\n 'message',\n async (e) => {\n const { data } = e;\n if (e.origin !== window.location.origin || data?.source !== MESSAGE_SOURCE) {\n return;\n }\n this.#window?.close();\n const response = await this.#getToken(data.url);\n resolve(response);\n },\n false,\n );\n });\n\n this.#window = window.open(url.toString(), '_blank', 'width=800,height=600');\n\n if (!this.#window) {\n throw new Error('Unable to open window for PopupTransport.');\n }\n\n this.#window.focus();\n return promise;\n }\n\n async #getToken(href: string) {\n const url = new URL(href);\n const params = new URLSearchParams(url.search);\n /**\n * Check for an error in the OAuth flow.\n * @see https://www.oauth.com/oauth2-servers/pkce/authorization-request/\n */\n if (params.get('error')) {\n throw new Error(\n params.get('error_description') || 'An error occurred during the authorization process.',\n );\n }\n\n const code = params.get('code');\n\n /**\n * If we don't have a `code` parameter, we can't exchange it for an access token.\n */\n if (!code) return undefined;\n\n /**\n * Grab the PKCE information from session storage.\n */\n const state = store.get('state');\n const verifier = store.get('code_verifier');\n /**\n * Now that we have the values in memory, we can remove them from session storage.\n */\n store.reset();\n\n /**\n * Validate the `state` parameter matches the preserved state (to prevent CSRF attacks).\n */\n if (params.get('state') !== state) {\n throw new Error(\n 'Invalid State. The received \"state\" parameter does not match the expected state.',\n );\n }\n /**\n * Ensure we have a valid code verifier.\n */\n if (!verifier) {\n throw new Error('Invalid Code Verifier');\n }\n /**\n * Prepare the payload for the PKCE token exchange.\n */\n const payload: AuthorizationCodeExchangeParameters = {\n code,\n client_id: this.#options.client,\n /**\n * Retrieve the code verifier from session storage.\n */\n code_verifier: verifier,\n redirect_uri: this.#options.redirect,\n grant_type: 'authorization_code',\n };\n const response = await (\n await oauth2.token.exchange({\n payload,\n })\n ).json();\n return response;\n }\n\n // eslint-disable-next-line class-methods-use-this\n getToken() {\n if (!window.opener) {\n return;\n }\n\n window.opener.postMessage(\n {\n source: MESSAGE_SOURCE,\n url: window.location.href,\n },\n window.location.origin,\n );\n }\n}\n", "import { jwtDecode } from 'jwt-decode';\n\nimport { isGlobusAuthTokenResponse, isRefreshToken, oauth2 } from '../../services/auth/index.js';\nimport { RESOURCE_SERVERS } from '../../services/auth/config.js';\n\nimport { log } from '../logger.js';\n\nimport { Event } from './Event.js';\nimport { GetTokenOptions, RedirectTransport, TransportOptions } from './RedirectTransport.js';\nimport { TokenManager } from './TokenManager.js';\n\nimport {\n isConsentRequiredError,\n isAuthorizationRequirementsError,\n AuthorizationRequirementsError,\n ConsentRequiredError,\n toAuthorizationQueryParams,\n} from '../errors.js';\n\nimport type {\n JwtUserInfo,\n Token,\n TokenResponse,\n TokenWithRefresh,\n} from '../../services/auth/types.js';\nimport { MemoryStorage } from '../storage/memory.js';\nimport { PopupTransport } from './PopupTransport.js';\n\nconst TRANSPORTS = {\n redirect: RedirectTransport,\n popup: PopupTransport,\n};\n\nexport type AuthorizationManagerConfiguration = {\n client: string;\n scopes?: string;\n redirect: string;\n /**\n * The storage system used by the `AuthorizationManager`.\n *\n * By default, the `AuthorizationManager` uses an in-memory storage, this option is secure by default.\n *\n * If you want to persist the state of the `AuthorizationManager`, you can use `localStorage`, or provide your own storage system.\n * **It is important to note that using the `localStorage`, or any persistant storage option will preserve authorization and refresh tokens of users.**\n * Best practices for ensuring the security of your application should be followed to protect this data (e.g., ensuring XSS protection).\n *\n * @default MemoryStorage\n */\n storage?: Storage;\n /**\n * The transport method to use for the authorization flow.\n * @default 'redirect'\n */\n transport?: keyof typeof TRANSPORTS;\n /**\n * @private\n * @default DEFAULT_CONFIGURATION.useRefreshTokens\n */\n useRefreshTokens?: boolean;\n /**\n * @private\n * @default DEFAULT_CONFIGURATION.defaultScopes\n */\n defaultScopes?: string | false;\n /**\n * Provide an object with event listeners to attach to the instance.\n * This is useful if you need to listen to events that might dispatch immediately\n * after the creation of the instance (constructor), e.g., the `authenticated`.\n */\n events?: Partial<{\n [Event in keyof AuthorizationManager['events']]: Parameters<\n AuthorizationManager['events'][Event]['addListener']\n >[0];\n }>;\n};\n\nconst DEFAULT_CONFIGURATION = {\n useRefreshTokens: false,\n defaultScopes: 'openid profile email',\n transport: 'redirect' as const,\n};\n\nconst DEFAULT_HANDLE_ERROR_OPTIONS = {\n execute: true,\n additionalParams: undefined,\n};\n\n/**\n * Provides management of Globus authorization context for your application.\n * - Handles the OAuth protcol flow (via PKCE)\n * - Token lifecycle management\n * - Common errors (e.g., `ConsentRequired`, `authorization_requirements`)\n *\n * Once you configure your instance, you can determine the authenticated state using `manager.authenticated`.\n *\n * To prompt a user to authenticate, call `manager.login()` on user interaction \u2013 this will initiate the OAuth protocol flow with your configured client and scopes, resulting in an initial redirect to Globus Auth.\n *\n * Once the user authenticates with Globus Auth, they will be redirected to your application using the configured `redirect` URL. On this URL, you will need to call `manager.handleCodeRedirect` (using a manager instance configured in the same manner that initiated the `manager.login()` call) to complete the PKCE flow, exchanging the provided code for a valid token, or tokens.\n *\n * All tokens managed by the `AuthorizationManager` instance can be found on `manager.token`.\n *\n * ### Registering your Globus Application\n *\n * The `AuthorizationManager` expects your Globus Application to be registered as an OAuth public client.\n * In this Globus Web Application, this option is referenced as \"_Register a thick client or script that will be installed and run by users on their devices_\".\n *\n * @example Creating an AuthorizationManager instance.\n * ```ts\n * import { authorization } from \"globus/sdk\";\n *\n * const manager = authorization.create({\n * // Your registered Globus Application client ID.\n * client: '...',\n * // The redirect URL for your application; Where you will call `manager.handleCodeRedirect()`\n * redirect: 'https://example.com/callback',\n * // Known scopes required by your application.\n * scopes: 'urn:globus:auth:scope:transfer.api.globus.org:all',\n * });\n * ```\n *\n * ### Usage with Service Methods\n *\n * Once you have an instance of an `AuthorizationManager`, it can be passed to any service method as `ServiceMethodOptions.manager` or `SDKOptions.manager` option.\n * The service method will determine if a token is required to make the request and will use the `AuthorizationManager` to retrieve the token.\n *\n * @example Using the AuthorizationManager with a service method.\n *```ts\n * import { transfer } from \"globus/sdk\";\n * const manager = authorization.create({ ... });\n * const result = await (\n * await globus.transfer.endpointSearch({\n * query: { filter_fulltext: \"Globus\"},\n * manager\n * })\n * ).json();\n *```\n */\nexport class AuthorizationManager {\n #transport!: RedirectTransport | PopupTransport;\n\n configuration: AuthorizationManagerConfiguration;\n\n /**\n * The storage system used by the `AuthorizationManager`.\n * @implements Storage\n */\n storage: Storage;\n\n #authenticated = false;\n\n /**\n * The `AuthorizationManager` is considered `authenticated` if it has a valid Globus Auth token.\n * It does not necessarily mean that it has a valid token for a specific resource server.\n */\n get authenticated() {\n return this.#authenticated;\n }\n\n /**\n * Set the authenticated state and emit the `authenticated` event.\n */\n set authenticated(value: boolean) {\n /**\n * Avoid emitting the event if the value hasn't changed.\n */\n if (value === this.#authenticated) {\n return;\n }\n this.#authenticated = value;\n this.#emitAuthenticatedState();\n }\n\n tokens: TokenManager;\n\n events = {\n /**\n * Emitted when the authenticated state changes.\n * @event AuthorizationManager.events#authenticated\n * @type {object}\n * @property {boolean} isAuthenticated - Whether the `AuthorizationManager` is authenticated.\n * @property {TokenResponse} [token] - The token response if the `AuthorizationManager` is authenticated.\n */\n authenticated: new Event<\n 'authenticated',\n {\n /**\n * Whether the `AuthorizationManager` is authenticated.\n * @see {@link AuthorizationManager.authenticated}\n */\n isAuthenticated: boolean;\n token?: TokenResponse;\n }\n >('authenticated'),\n /**\n * Emitted when the user revokes their authentication.\n * @event AuthorizationManager.events#revoke\n */\n revoke: new Event('revoke'),\n };\n\n constructor(configuration: AuthorizationManagerConfiguration) {\n /**\n * Configure the storage system for the instance, defaulting to an in-memory storage system.\n */\n\n if (!configuration.client) {\n throw new Error('You must provide a `client` for your application.');\n }\n /**\n * Inject the `openid`, `profile`, `email`, and `offline_access` scopes by default unless\n * explicitly opted out of.\n */\n const scopes =\n configuration.defaultScopes === false\n ? ''\n : (configuration.defaultScopes ?? DEFAULT_CONFIGURATION.defaultScopes);\n\n this.configuration = {\n ...DEFAULT_CONFIGURATION,\n ...configuration,\n scopes: [configuration.scopes ? configuration.scopes : '', scopes]\n .filter((s) => s.length)\n .join(' '),\n };\n\n this.storage = configuration.storage || new MemoryStorage();\n\n /**\n * If an `events` object is provided, add the listeners to the instance before\n * any event might be dispatched.\n */\n if (this.configuration.events) {\n Object.entries(this.configuration.events).forEach(([name, callback]) => {\n if (name in this.events) {\n this.events[name as keyof AuthorizationManager['events']].addListener(callback);\n }\n });\n }\n\n this.tokens = new TokenManager({\n manager: this,\n });\n this.#checkAuthorizationState();\n }\n\n get storageKeyPrefix() {\n return `${this.configuration.client}:`;\n }\n\n /**\n * The user information decoded from the `id_token` (JWT) of the current Globus Auth token.\n * This method can be used instead of `auth.oauth2.userinfo` to get the user information without an additional request.\n *\n * **IMPORTANT**: The `id_token` can only be processed if the `openid` scope is requested during the authorization process.\n *\n * Additionally, the `profile` and `email` scopes are required to get the full user information.\n *\n * @see {@link https://docs.globus.org/api/auth/reference/#oidc_userinfo_endpoint}\n */\n get user() {\n const token = this.getGlobusAuthToken();\n return token && token.id_token ? jwtDecode<JwtUserInfo>(token.id_token) : null;\n }\n\n /**\n * Attempt to refresh all of the tokens managed by the instance.\n * This method will only attempt to refresh tokens that have a `refresh_token` attribute.\n */\n async refreshTokens() {\n log('debug', 'AuthorizationManager.refreshTokens');\n const tokens = await Promise.allSettled(\n this.tokens.getAll().map((token) => {\n if (isRefreshToken(token)) {\n return this.refreshToken(token);\n }\n return Promise.resolve(null);\n }),\n );\n this.#checkAuthorizationState();\n return tokens;\n }\n\n /**\n * Use the `refresh_token` attribute of a token to obtain a new access token.\n * @param token The well-formed token with a `refresh_token` attribute.\n */\n async refreshToken(token: TokenWithRefresh) {\n log('debug', `AuthorizationManager.refreshToken | resource_server=${token.resource_server}`);\n try {\n const response = await (\n await oauth2.token.refresh({\n payload: {\n client_id: this.configuration.client,\n refresh_token: token.refresh_token,\n grant_type: 'refresh_token',\n },\n })\n ).json();\n if (isGlobusAuthTokenResponse(response)) {\n this.addTokenResponse(response);\n return response;\n }\n } catch (error) {\n log('error', `AuthorizationManager.refreshToken | resource_server=${token.resource_server}`);\n }\n return null;\n }\n\n /**\n * Whether or not the instance has a reference to a Globus Auth token.\n */\n hasGlobusAuthToken() {\n return this.getGlobusAuthToken() !== null;\n }\n\n /**\n * Retrieve the Globus Auth token managed by the instance.\n */\n getGlobusAuthToken() {\n const entry = this.storage.getItem(`${this.storageKeyPrefix}${RESOURCE_SERVERS.AUTH}`);\n return entry ? JSON.parse(entry) : null;\n }\n\n #checkAuthorizationState() {\n log('debug', 'AuthorizationManager.#checkAuthorizationState');\n if (this.hasGlobusAuthToken()) {\n this.authenticated = true;\n }\n }\n\n async #emitAuthenticatedState() {\n const isAuthenticated = this.authenticated;\n const token = this.getGlobusAuthToken() ?? undefined;\n await this.events.authenticated.dispatch({\n isAuthenticated,\n token,\n });\n }\n\n /**\n * Reset the authenticated state and clear all tokens from storage.\n * This method **does not** emit the `revoke` event. If you need to emit the `revoke` event, use the `AuthorizationManager.revoke` method.\n */\n reset() {\n Object.keys(this.storage).forEach((key) => {\n if (key.startsWith(this.storageKeyPrefix)) {\n this.storage.removeItem(key);\n }\n });\n this.authenticated = false;\n }\n\n /**\n * A private utility method to add the `offline_access` scope to a scope string if the `useRefreshTokens` configuration is set to `true`.\n * @param scopes The scope string to modify.\n */\n #withOfflineAccess(scopes: string) {\n return `${scopes}${this.configuration.useRefreshTokens ? ' offline_access' : ''}`;\n }\n\n #buildTransport(options?: Partial<TransportOptions>) {\n const { scopes, ...overrides } = options ?? {};\n const TransportFactory = TRANSPORTS[this.configuration.transport || 'redirect'];\n\n let scopesToRequest = this.#withOfflineAccess(scopes ?? (this.configuration.scopes || ''));\n\n if (this.storage instanceof MemoryStorage) {\n /**\n * If the in-memory storage is used, we have to make sure when requesting additional\n * consent the original configured scopes are included in the request.\n *\n * This will ensure we recieve a token for all of resource servers that were originally requested,\n * in addition to any new scopes that are requested.\n */\n scopesToRequest = [\n // Use a Set to deduplicate the scopes.\n ...new Set(\n scopesToRequest.split(' ').concat((this.configuration?.scopes || '').split(' ')),\n ),\n ].join(' ');\n }\n\n return new TransportFactory({\n client: this.configuration.client,\n redirect: this.configuration.redirect,\n scopes: scopesToRequest,\n ...overrides,\n params: {\n ...overrides?.params,\n },\n });\n }\n\n /**\n * Initiate the login process by redirecting to the Globus Auth login page.\n *\n * **IMPORTANT**: This method will **reset the instance state before initiating the login process,\n * including clearing all tokens from storage**. If you need to maintain the current state,\n * use the `AuthorizationManager.prompt()` method.\n *\n * @example Passing parameters to the transport.\n * const result = await manager.login({\n * additionalParams: {\n * redirect_uri: '/oauth/redirect-uri-runtime-override',\n * },\n * });\n */\n async login(options = { additionalParams: {} }) {\n log('debug', 'AuthorizationManager.login');\n this.reset();\n /**\n * In the future, it's possible that we may want to support different types of transports.\n */\n const transport = this.#buildTransport({ params: options?.additionalParams });\n const result = await transport.send();\n if (isGlobusAuthTokenResponse(result)) {\n this.addTokenResponse(result);\n }\n return result;\n }\n\n /**\n * Prompt the user to authenticate with Globus Auth.\n *\n * @example Passing parameters to the transport.\n * const result = await manager.prompt({\n * additionalParams: {\n * redirect_uri: '/oauth/redirect-uri-runtime-override',\n * },\n * });\n */\n async prompt(options?: Partial<TransportOptions>) {\n log('debug', 'AuthorizationManager.prompt');\n const transport = this.#buildTransport(options);\n const result = await transport.send();\n if (isGlobusAuthTokenResponse(result)) {\n this.addTokenResponse(result);\n }\n return result;\n }\n\n /**\n * This method will attempt to complete the PKCE protocol flow.\n */\n async handleCodeRedirect(\n options: {\n shouldReplace?: GetTokenOptions['shouldReplace'];\n includeConsentedScopes?: GetTokenOptions['includeConsentedScopes'];\n additionalParams?: TransportOptions['params'];\n } = { shouldReplace: true, additionalParams: {} },\n ) {\n log('debug', 'AuthorizationManager.handleCodeRedirect');\n const response = await this.#buildTransport({ params: options?.additionalParams }).getToken({\n shouldReplace: options?.shouldReplace,\n includeConsentedScopes: options?.includeConsentedScopes,\n });\n if (isGlobusAuthTokenResponse(response)) {\n log(\n 'debug',\n `AuthorizationManager.handleCodeRedirect | response=${JSON.stringify(response)}`,\n );\n this.addTokenResponse(response);\n }\n return response;\n }\n\n /**\n * Handle an error response from a Globus service in the context of this `AuthorizationManager`.\n * This method will introspect the response and attempt to handle any errors that should result\n * in some additional Globus Auth interaction.\n * @param response The error response from a Globus service.\n * @param {object|boolean} options Options for handling the error response. If a boolean is provided, this will be treated as the `options.execute` value.\n * @param options.execute Whether to execute the handler immediately.\n * @param options.additionalParams Additional query parameters to be included with the transport generated URL.\n */\n async handleErrorResponse(\n response: Record<string, unknown>,\n options?: { execute?: true; additionalParams?: TransportOptions['params'] } | true,\n ): Promise<void>;\n async handleErrorResponse(\n response: Record<string, unknown>,\n options?: { execute?: false; additionalParams?: TransportOptions['params'] } | false,\n ): Promise<() => Promise<void>>;\n async handleErrorResponse(\n response: Record<string, unknown>,\n options?: { execute?: boolean; additionalParams?: TransportOptions['params'] } | boolean,\n ) {\n const opts =\n typeof options === 'boolean'\n ? {\n ...DEFAULT_HANDLE_ERROR_OPTIONS,\n execute: options,\n }\n : {\n ...DEFAULT_HANDLE_ERROR_OPTIONS,\n ...options,\n };\n log(\n 'debug',\n `AuthorizationManager.handleErrorResponse | response=${JSON.stringify(response)} execute=${opts.execute}`,\n );\n let handler = async () => {};\n if (isAuthorizationRequirementsError(response)) {\n log(\n 'debug',\n 'AuthorizationManager.handleErrorResponse | error=AuthorizationRequirementsError',\n );\n handler = async () => {\n await this.handleAuthorizationRequirementsError(response, {\n additionalParams: opts.additionalParams,\n });\n };\n }\n if (isConsentRequiredError(response)) {\n log('debug', 'AuthorizationManager.handleErrorResponse | error=ConsentRequiredError');\n handler = async () => {\n await this.handleConsentRequiredError(response, {\n additionalParams: opts.additionalParams,\n });\n };\n }\n if ('code' in response && response['code'] === 'AuthenticationFailed') {\n log('debug', 'AuthorizationManager.handleErrorResponse | error=AuthenticationFailed');\n handler = async () => {\n await this.revoke();\n };\n }\n\n const returnValue = opts.execute === true ? await handler() : handler;\n return returnValue;\n }\n\n /**\n * Process a well-formed Authorization Requirements error response from a Globus service\n * and redirect the user to the Globus Auth login page with the necessary parameters.\n */\n async handleAuthorizationRequirementsError(\n response: AuthorizationRequirementsError,\n options?: { additionalParams?: TransportOptions['params'] },\n ) {\n this.#transport = this.#buildTransport({\n params: {\n prompt: 'login',\n ...toAuthorizationQueryParams(response),\n ...options?.additionalParams,\n },\n });\n await this.#transport.send();\n }\n\n /**\n * Process a well-formed `ConsentRequired` error response from a Globus service\n * and redirect the user to the Globus Auth login page with the necessary parameters.\n */\n async handleConsentRequiredError(\n response: ConsentRequiredError,\n options?: { additionalParams?: TransportOptions['params'] },\n ) {\n this.#transport = this.#buildTransport({\n scopes: this.#withOfflineAccess(response.required_scopes.join(' ')),\n params: {\n ...options?.additionalParams,\n },\n });\n await this.#transport.send();\n }\n\n /**\n * Add a Globus Auth token response to storage, if `other_tokens` are present they are also added.\n * This method is mostly used internally by the `AuthorizationManager`, but can be used by downstream\n * consumers to add tokens to storage if necessary.\n */\n addTokenResponse = (token: Token | TokenResponse) => {\n this.tokens.add(token);\n this.#checkAuthorizationState();\n };\n\n /**\n * Call `AuthroizationManager.reset`, revoke all of the available tokns, and emit the `revoke` event.\n * @emits AuthorizationManager.events#revoke\n * @see AuthorizationManager.reset\n */\n async revoke() {\n log('debug', 'AuthorizationManager.revoke');\n const revocation = Promise.all(this.tokens.getAll().map(this.#revokeToken.bind(this)));\n this.reset();\n await revocation;\n await this.events.revoke.dispatch();\n }\n\n /**\n * Revoke a token from a resource server.\n */\n #revokeToken(token: Token) {\n log('debug', `AuthorizationManager.revokeToken | resource_server=${token.resource_server}`);\n return oauth2.token.revoke({\n payload: {\n client_id: this.configuration.client,\n token: token.access_token,\n },\n });\n }\n}\n", "/**\n * @description A wrapper around the Globus Transfer service.\n * @group Service\n * @see [Globus Transfer API Documentation](https://docs.globus.org/api/transfer/)\n * @module\n */\nimport * as TRANSFER from './config.js';\n\nimport { endpointSearch } from './service/endpoint-search.js';\n\n/**\n * @private\n * @internal\n */\nexport const CONFIG = TRANSFER;\n\nexport type * from './types.js';\n\nexport { endpointSearch };\nexport * as fileOperations from './service/file-operations.js';\nexport * as taskSubmission from './service/task-submission.js';\nexport * as endpoint from './service/endpoint.js';\nexport * as task from './service/task.js';\nexport * as access from './service/access.js';\nexport * as roles from './service/roles.js';\nexport * as collectionBookmarks from './service/collection-bookmarks.js';\n\nexport * as endpointManager from './service/endpoint-manager/index.js';\n\nexport * as utils from './utils.js';\n", "import { serviceRequest } from '../../shared.js';\nimport { ID, SCOPES } from '../config.js';\n\nimport type { ServiceMethod } from '../../../services/types.js';\nimport type { QueryParameters } from '../types.js';\nimport type { EntityType } from './endpoint.js';\n\n/**\n * @see https://docs.globus.org/api/transfer/endpoint_search/#search_scope\n */\nexport type EndpointSearchScope =\n | 'all'\n | 'my-endpoints'\n | 'my-gcp-endpoints'\n | 'recently-used'\n | 'in-use'\n | 'shared-by-me'\n | 'shared-with-me'\n | 'hide-no-permissions'\n | 'administered-by-me';\n\n/**\n * @see https://docs.globus.org/api/transfer/endpoint_search/#endpoint_search\n */\nexport type EndpointSearchQuery = QueryParameters<\n {\n filter_scope?: EndpointSearchScope;\n filter_entity_type?: EntityType;\n filter_fulltext?: string;\n filter_owner_id?: string;\n filter_host_endpoint?: string;\n filter_non_functional?: 0 | 1 | null;\n },\n 'Offset'\n>;\n\n/**\n * Get a list of endpoints matching the search filters in a given search scope.\n * @see https://docs.globus.org/api/transfer/endpoint_search/#endpoint_search\n */\nexport const endpointSearch = function (options?, sdkOptions?) {\n const serviceRequestOptions = {\n ...options,\n query: options?.query,\n };\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/endpoint_search`,\n },\n serviceRequestOptions,\n sdkOptions,\n );\n} satisfies ServiceMethod<{\n query?: EndpointSearchQuery;\n}>;\n\nexport default endpointSearch;\n", "import { HTTP_METHODS, serviceRequest } from '../../shared.js';\nimport { getHeadersForService } from '../shared.js';\nimport { ID, SCOPES } from '../config.js';\n\nimport type { ErrorDocument, QueryParameters } from '../types.js';\nimport type { JSONFetchResponse, ServiceMethodDynamicSegments } from '../../types.js';\nimport { ConsentRequiredError } from '../../../core/errors.js';\n\n/**\n * @see https://docs.globus.org/api/transfer/file_operations/#file_document\n */\nexport type FileDocument = {\n readonly DATA_TYPE: 'file';\n readonly name: string;\n readonly type: 'dir' | 'file' | 'invalid_symlink' | 'chr' | 'blk' | 'pipe' | 'other';\n readonly link_target?: string | null;\n readonly size?: number;\n readonly last_modified?: string;\n readonly permissions?: string;\n readonly user?: string | null;\n readonly group?: string | null;\n readonly link_size?: number | null;\n readonly link_user?: string | null;\n readonly link_group?: string | null;\n readonly link_last_modified?: string | null;\n};\n\n/**\n * @see https://docs.globus.org/api/transfer/file_operations/#file_list_document\n */\nexport type FileListDocument = {\n readonly DATA_TYPE: 'file_list';\n readonly endpoint: string;\n readonly path: string;\n readonly absolute_path: string | null;\n readonly rename_supported: boolean;\n readonly symlink_supported: boolean;\n readonly DATA: FileDocument[];\n /**\n * n.b. This is currently included in responses, but undocumented; use with care.\n */\n readonly length: number;\n /**\n * n.b. This is currently included in responses, but undocumented; use with care.\n */\n readonly total: number;\n};\n\n/**\n * @see https://docs.globus.org/api/transfer/file_operations/#errors\n */\nexport type DirectoryListingError = ErrorDocument &\n (\n | ConsentRequiredError\n | {\n code:\n | 'ServiceUnavailable'\n | 'OperationPaused'\n | 'NotSupported'\n | 'ClientError.NotFound'\n | 'EndpointError'\n // Encountered Errors (not documented)\n | 'ExternalError.DirListingFailed.LoginFailed'\n | string;\n }\n );\n\n/**\n * @see https://docs.globus.org/api/transfer/file_operations/#directory_listing_query_parameters\n */\nexport type DirectoryListingQuery = QueryParameters<\n {\n path?: string;\n show_hidden?: 'true' | 'false';\n local_user?: string;\n },\n 'Offset'\n>;\n\n/**\n * List the contents of the directory at the specified path on an endpoint\u2019s filesystem.\n * The endpoint must be activated before performing this operation.\n *\n * @see https://docs.globus.org/api/transfer/file_operations/#list_directory_contents\n */\nexport const ls = function (\n endpoint_xid,\n options?,\n sdkOptions?,\n): Promise<JSONFetchResponse<FileListDocument | DirectoryListingError>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/operation/endpoint/${endpoint_xid}/ls`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: DirectoryListingQuery;\n }\n>;\n\n/**\n * Create a directory at the specified path on an endpoint filesystem.\n * The endpoint must be activated before performing this operation.\n *\n * @see https://docs.globus.org/api/transfer/file_operations/#make_directory\n */\nexport const mkdir = function (endpoint_xid, options, sdkOptions?) {\n const serviceRequestOptions = {\n payload: {\n DATA_TYPE: 'mkdir',\n ...options?.payload,\n },\n headers: {\n ...getHeadersForService(HTTP_METHODS.POST),\n ...options?.headers,\n },\n };\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/operation/endpoint/${endpoint_xid}/mkdir`,\n method: HTTP_METHODS.POST,\n },\n serviceRequestOptions,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n payload: { path: string };\n }\n>;\n\n/**\n * Rename or move a file, directory, or symlink on an endpoint filesystem.\n * If the object is a symlink, the symlink itself is renamed, not its target\n * The endpoint must be activated before performing this operation.\n * When moving to a different parent directory, the parent directory of the new path must already exist.\n *\n * @see https://docs.globus.org/api/transfer/file_operations/#rename\n */\nexport const rename = function (endpoint_xid, options, sdkOptions?) {\n const serviceRequestOptions = {\n payload: {\n DATA_TYPE: 'rename',\n ...options?.payload,\n },\n headers: {\n ...getHeadersForService(HTTP_METHODS.POST),\n ...options?.headers,\n },\n };\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/operation/endpoint/${endpoint_xid}/rename`,\n method: HTTP_METHODS.POST,\n },\n serviceRequestOptions,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n payload: {\n old_path: string;\n new_path: string;\n };\n }\n>;\n\n/**\n * Create a directory at the specified path on an endpoint filesystem.\n * The endpoint must be activated before performing this operation.\n *\n * @see https://docs.globus.org/api/transfer/file_operations/#symlink\n */\nexport const symlink = function (endpoint_xid, options, sdkOptions?) {\n const serviceRequestOptions = {\n payload: {\n DATA_TYPE: 'symlink',\n ...options?.payload,\n },\n headers: {\n ...getHeadersForService(HTTP_METHODS.POST),\n ...options?.headers,\n },\n };\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/operation/endpoint/${endpoint_xid}/symlink`,\n method: HTTP_METHODS.POST,\n },\n serviceRequestOptions,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n payload: {\n path: string;\n symlink_target: string;\n };\n }\n>;\n\n/**\n * Stat the file or directory at the specified path on a collection.\n *\n * @see https://docs.globus.org/api/transfer/file_operations/#stat\n */\nexport const stat = function (\n endpoint_xid,\n options,\n sdkOptions?,\n): Promise<JSONFetchResponse<FileDocument>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/operation/endpoint/${endpoint_xid}/stat`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: {\n path: string;\n local_user?: string;\n };\n }\n>;\n", "import { HTTP_METHODS } from '../shared.js';\n\nexport function getHeadersForService(method: keyof typeof HTTP_METHODS): Record<string, any> {\n if (method === HTTP_METHODS.GET) {\n return {};\n }\n return {\n 'Content-Type': 'application/json',\n };\n}\n", "import { HTTP_METHODS, serviceRequest } from '../../shared.js';\n\nimport { getHeadersForService } from '../shared.js';\nimport { ID, SCOPES } from '../config.js';\n\nimport type { JSONFetchResponse, SDKOptions, ServiceMethod } from '../../types.js';\n\ntype TaskLink = {\n DATA_TYPE: 'link';\n href: string;\n rel: string;\n resource: string;\n title: string;\n};\n\ninterface TaskSubmissionResult {\n DATA_TYPE: string;\n resource: string;\n /**\n * @see https://docs.globus.org/api/transfer/task_submit/#result_codes\n */\n code: 'Accpeted' | 'Duplicate';\n message: string;\n request_id: string;\n submission_id: string;\n task_id: string;\n /**\n * @deprecated Undocumented property.\n */\n task_link: TaskLink;\n}\n\nexport type TransferResult = TaskSubmissionResult & {\n DATA_TYPE: 'transfer_result';\n resource: '/transfer';\n};\n\nexport type DeleteResult = {\n DATA_TYPE: 'delete_result';\n resource: '/delete';\n} & TaskSubmissionResult;\n\ntype UndocumentedEncouneredErrorCodes = 'EndpointNotFound' | string;\n\ntype TaskSubmissionError = {\n /**\n * Known error codes provided by the Transfer documentation.\n *\n * Since the documentation does not provide an exhaustive list of error codes,\n * we also include a catch-all type (`string`) for any undocumented error codes.\n *\n * @see https://docs.globus.org/api/transfer/task_submit/#errors\n */\n code:\n | 'ClientError.BadRequest'\n | 'BadRequest'\n | 'PermissionDenied'\n | 'ConsentRequired'\n | 'ServiceUnavailable'\n | 'Conflict'\n | UndocumentedEncouneredErrorCodes;\n message: string;\n request_id: string;\n resource: string;\n};\n\nexport type TransferError = TaskSubmissionError & {\n resource: '/transfer';\n};\n\nexport type DeleteError = TaskSubmissionError & {\n resource: '/delete';\n};\n\n/**\n * Common fields for Transfer and Delete requests.\n * @see https://docs.globus.org/api/transfer/task_submit/#common_transfer_and_delete_fields\n */\nexport type CommonTransferAndDeleteFields = {\n submission_id: string;\n label?: string;\n notify_on_succeeded?: boolean;\n notify_on_failed?: boolean;\n deadline?: string;\n store_base_path_info?: boolean;\n};\n\n/**\n * @see https://docs.globus.org/api/transfer/task_submit/#filter_rules\n */\nexport type FilterRule = {\n DATA_TYPE: 'filter_rule';\n method: 'exclude' | 'include';\n type?: 'file' | 'dir' | undefined | null;\n name: string;\n};\n\n/**\n * @see https://docs.globus.org/api/transfer/task_submit/#transfer_item_fields\n */\nexport type TransferItem = {\n DATA_TYPE: 'transfer_item';\n source_path: string;\n destination_path: string;\n recursive?: boolean;\n external_checksum?: string;\n checksum_algorithm?: string;\n};\n\n/**\n * @see https://docs.globus.org/api/transfer/task_submit/#transfer_symlink_item_fields\n */\nexport type TransferSymlinkItem = {\n DATA_TYPE: 'transfer_symlink_item';\n source_path: string;\n destination_path: string;\n};\n\n/**\n * https://docs.globus.org/api/transfer/task_submit/#transfer_specific_fields\n */\nexport type TransferFields = CommonTransferAndDeleteFields & {\n DATA_TYPE: 'transfer';\n DATA: (TransferItem | TransferSymlinkItem)[];\n source_endpoint: string;\n destination_endpoint: string;\n filter_rules?: FilterRule[];\n encrypt_data?: boolean;\n sync_level?: 0 | 1 | 2 | 3;\n verify_checksum?: boolean;\n preserve_timestamp?: boolean;\n delete_destination_extra?: boolean;\n /**\n * @beta\n */\n recursive_symlinks?: 'ignore' | 'keep' | 'copy';\n skip_source_errors?: boolean;\n fail_on_quota_errors?: boolean;\n source_local_user?: string;\n destination_local_user?: string;\n};\n\n/**\n * @see https://docs.globus.org/api/transfer/task_submit/#delete_item_fields\n */\nexport type DeleteItem = {\n DATA_TYPE: 'delete_item';\n path: string;\n};\n\n/**\n * @see https://docs.globus.org/api/transfer/task_submit/#delete_specific_fields\n */\nexport type DeleteFields = CommonTransferAndDeleteFields & {\n DATA_TYPE: 'delete';\n DATA: DeleteItem[];\n endpoint: string;\n ignore_missing?: boolean;\n recursive?: boolean;\n interpret_globs?: boolean;\n local_user?: string;\n};\n\n/**\n * Submit a delete task. A delete submission contains a single endpoint and a\n * list of paths to delete.\n *\n * @see https://docs.globus.org/api/transfer/task_submit/#submit_delete_task\n */\nexport const submitDelete = function (\n options,\n sdkOptions?: SDKOptions,\n): Promise<JSONFetchResponse<DeleteResult | DeleteError>> {\n const serviceRequestOptions = {\n payload: {\n DATA_TYPE: 'delete',\n ...options?.payload,\n },\n headers: {\n ...getHeadersForService(HTTP_METHODS.POST),\n ...options?.headers,\n },\n };\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/delete`,\n method: HTTP_METHODS.POST,\n },\n serviceRequestOptions,\n sdkOptions,\n );\n} satisfies ServiceMethod<{\n payload: Omit<DeleteFields, 'DATA_TYPE'>;\n}>;\n\n/**\n * @see https://docs.globus.org/api/transfer/task_submit/#submit_transfer_task\n */\nexport const submitTransfer = function (\n options,\n sdkOptions?: SDKOptions,\n): Promise<JSONFetchResponse<TransferResult | TransferError>> {\n const serviceRequestOptions = {\n payload: {\n DATA_TYPE: 'transfer',\n ...options?.payload,\n },\n headers: {\n ...getHeadersForService(HTTP_METHODS.POST),\n ...options?.headers,\n },\n };\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/transfer`,\n method: HTTP_METHODS.POST,\n },\n serviceRequestOptions,\n sdkOptions,\n );\n} satisfies ServiceMethod<{\n payload: Omit<TransferFields, 'DATA_TYPE'>;\n}>;\n\ntype SubmissionId = {\n DATA_TYPE: 'submission_id';\n value: string;\n};\n\n/**\n * Get a submission id, required when submitting transfer and delete tasks.\n * Note that this is different than the task id returned by the submit operations.\n *\n * @see https://docs.globus.org/api/transfer/task_submit/#get_submission_id\n */\nexport const submissionId = function (\n options?,\n sdkOptions?,\n): Promise<JSONFetchResponse<SubmissionId>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/submission_id`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethod<{\n query?: never;\n payload?: never;\n}>;\n", "import { HTTP_METHODS, serviceRequest } from '../../shared.js';\nimport { ID, SCOPES } from '../config.js';\n\nimport type {\n ServiceMethodDynamicSegments,\n JSONFetchResponse,\n ServiceMethod,\n ExtractKeys,\n} from '../../../services/types.js';\n\n/**\n * @see https://docs.globus.org/api/transfer/endpoint_roles/\n */\nexport type EndpointRole =\n | 'administrator'\n | 'access_manager'\n | 'activity_manager'\n | 'activity_monitor';\n\nexport type EntityType =\n | 'GCSv5_endpoint'\n | 'GCSv5_mapped_collection'\n | 'GCSv5_guest_collection'\n | 'GCP_mapped_collection'\n | 'GCP_guest_collection';\n\n/**\n * @see https://docs.globus.org/api/transfer/endpoints_and_collections/#server_document\n */\nexport type ServerDocument = {\n DATA_TYPE: 'server';\n id: number;\n hostname: null | string;\n port: null | number;\n scheme: null | 'ftp' | 'gsiftp';\n subject: null | string;\n incoming_data_port_start: null | number;\n incoming_data_port_end: null | number;\n outgoing_data_port_start: null | number;\n outgoing_data_port_end: null | number;\n /**\n * @deprecated\n */\n uri: string;\n /**\n * @deprecated\n */\n is_connected: boolean;\n /**\n * @deprecated\n */\n is_paused: boolean;\n};\n\ntype GuestCollectionActivityNotificationPolicy = {\n status: Array<'SUCCEEDED' | 'FAILED'>;\n transfer_use: Array<'source' | 'destination'>;\n};\n\n/**\n * @see https://docs.globus.org/api/transfer/endpoints_and_collections/#endpoint_or_collection_document\n */\nexport type EndpointDocument = {\n DATA_TYPE: 'endpoint';\n DATA?: ServerDocument[];\n id: string;\n display_name: string;\n organization: string | null;\n department: string | null;\n keywords: string | null;\n /**\n * @deprecated\n */\n name: string;\n /**\n * @deprecated use `id` instead in API requests, and use `display_name`\n * to display to users.\n */\n canonical_name: string;\n /**\n * @deprecated use `owner_id` or `owner_string` instead.\n */\n username: string;\n owner_id: string;\n owner_string: string;\n description: string | null;\n contact_email: string | null;\n contact_info: string | null;\n info_link: string | null;\n user_message: string | null;\n user_message_link: string | null;\n public: boolean;\n subscription_id: string | null;\n subscription_admin_verified: boolean;\n french_english_bilingual: boolean;\n default_directory: string | null;\n guest_collection_activity_notification_policy: GuestCollectionActivityNotificationPolicy | null;\n force_encryption: boolean;\n disable_verify: boolean;\n disable_anonymous_writes: boolean;\n entity_type: EntityType;\n force_verify: boolean;\n mfa_required: boolean;\n /**\n * @deprecated GCSv4-specific property - no longer supported\n */\n expire_time: null | string;\n /**\n * @deprecated GCSv4-specific property - no longer supported\n */\n expires_in: -1 | 0 | number;\n /**\n * @deprecated GCSv4-specific property - no longer supported\n */\n activated: boolean;\n /**\n * @deprecated GCSv4-specific property - no longer supported\n */\n myproxy_server: string | null;\n /**\n * @deprecated GCSv4-specific property - no longer supported\n */\n myproxy_dn: string | null;\n /**\n * @deprecated GCSv4-specific property - no longer supported\n */\n oauth_server: string | null;\n requester_pays: boolean;\n /**\n * `true` if the endpoint was created for Globus Connect Personal, `false` otherwise.\n *\n * @deprecated use `entity_type` instead.\n */\n is_globus_connect: boolean;\n gcs_version: string | null;\n globus_connect_setup_key: string | null;\n /**\n * @deprecated use `host_endpoint_id` and `host_endpoint_display_name`\n */\n host_endpoint: string | null;\n /**\n * UUID of standard endpoint hosting the shared endpoint; `null` for non-shared endpoints.\n */\n host_endpoint_id: string | null;\n host_endpoint_display_name: string | null;\n host_path: string | null;\n /**\n * @deprecated\n */\n s3_url: null;\n /**\n * @deprecated\n */\n s3_owner_activated: false;\n /**\n * @deprecated GCSv4-specific property - no longer supported\n */\n acl_available: boolean;\n /**\n * @deprecated use `my_effective_roles` instead.\n */\n acl_editable: boolean;\n in_use: boolean;\n my_effective_roles: Array<EndpointRole | 'restricted_administrator'>;\n gcp_connected: boolean | null;\n gcp_paused: boolean | null;\n network_use: null | 'normal' | 'minimal' | 'aggressive' | 'custom';\n location: string | null;\n max_concurrency: null | number;\n preferred_concurrency: null | number;\n max_parallelism: null | number;\n preferred_parallelism: null | number;\n /**\n * @deprecated GCSv4-specific property - no longer supported\n */\n local_user_info_available: null | boolean;\n https_server: null | string;\n tlsftp_server: null | string;\n gcs_manager_url: null | `${string}://${string}`;\n high_assurance: boolean;\n authentication_timeout_mins: number | null;\n authentication_policy_id: string | null;\n acl_max_expiration_period_mins: number | null;\n /**\n * @deprecated use `high_assurance` and `authentication_timeout_mins` instead.\n */\n authentication_assurance_timeout: number | null;\n /**\n * The number of days the endpoint has been configured to be auto-deleted after.\n * **NOT** the number of days until deletion (must be calculated).\n *\n * - Set on Mapped Collections\n * - Readable on Mapped and Guest Collections (inherited from Mapped Collection)\n * @example 2\n */\n auto_delete_timeout: number | null;\n /**\n * @example 2025-03-06T00:00:00+00:00\n */\n last_accessed_time: string | null;\n non_functional: boolean;\n non_functional_endpoint_id: string | null;\n non_functional_endpoint_display_name: string | null;\n mapped_collection_id: string | null;\n mapped_collection_display_name: string | null;\n /**\n * @deprecated use `entity_type` instead.\n */\n shareable: boolean;\n /**\n * @deprecated use `host_endpoint_id` instead.\n */\n sharing_target_endpoint: string | null;\n /**\n * @deprecated use `host_path` instead.\n */\n sharing_target_root_path: string | null;\n /**\n * Whether or not this endpoint will be skipped during auto-deletion.\n * If this is specified, `auto_delete_timeout` should be ignored.\n * - Only set on Guest Collections\n */\n skip_auto_delete: boolean | null;\n restrict_transfers_to_high_assurance: 'inbound' | 'outbound' | 'all' | null;\n associated_flow_policy: {\n transfer?: {\n destination?: { flow?: string | null };\n source?: { flow?: string | null };\n };\n } | null;\n preserve_modtime: 'inbound' | 'outbound' | 'all' | null;\n};\n\nexport type EndpointListDocument = {\n DATA_TYPE: 'endpoint_list';\n DATA: EndpointDocument[];\n length: number;\n};\n\n/**\n * Fetch an endpoint by its UUID.\n */\nexport const get = function (\n endpoint_xid,\n options?,\n sdkOptions?,\n): Promise<JSONFetchResponse<EndpointDocument>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/endpoint/${endpoint_xid}`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: never;\n payload?: never;\n }\n>;\n\n/**\n * @see https://docs.globus.org/api/transfer/gcp_management/#update_collection_by_id\n */\ntype GuestCollectionUpdatableField = ExtractKeys<\n EndpointDocument,\n | 'acl_max_expiration_period_mins'\n | 'display_name'\n | 'organization'\n | 'department'\n | 'keywords'\n | 'description'\n | 'contact_email'\n | 'contact_info'\n | 'info_link'\n | 'owner_string'\n | 'default_directory'\n | 'force_encryption'\n | 'disable_verify'\n>;\n\nexport type CreatePayload = Partial<Pick<EndpointDocument, GuestCollectionUpdatableField>> & {\n DATA_TYPE?: 'shared_endpoint';\n host_endpoint_id: string;\n host_path: string;\n};\nexport type CreateResponse = {\n DATA_TYPE: 'endpoint_create_result';\n code: 'Created';\n globus_connect_setup_key: string | null;\n id: string;\n message: string;\n request_id: string;\n resource: '/shared_endpoint';\n};\n/**\n * Create a Globus Connect Personal guest collection.\n * As of 2024-04-17, this method (and the Transfer API) only supports creating Globus Connect Personal guest collections.\n *\n * Globus Connect Personal mapped collections are created from the Globus Connect Personal application.\n * All GCSv5 collections should be created using Globus Connect Server (i.e. {@link \"@globus/sdk\".gcs.collections.create | `gcs.collections.create`}).\n *\n * @see https://docs.globus.org/api/transfer/gcp_management/#create_guest_collection\n */\nexport const create = function (options?, sdkOptions?): Promise<JSONFetchResponse<CreateResponse>> {\n if (options?.payload) {\n Object.assign(options.payload, { DATA_TYPE: 'shared_endpoint' });\n }\n\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: '/v0.10/shared_endpoint',\n method: HTTP_METHODS.POST,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethod<{\n payload?: CreatePayload;\n}>;\n\n/**\n * @see https://docs.globus.org/api/transfer/gcp_management/#update_collection_by_id\n */\ntype MappedCollectionUpdatableField = ExtractKeys<\n EndpointDocument,\n | GuestCollectionUpdatableField\n | 'authentication_timeout_mins'\n | 'subscription_id'\n | 'public'\n | 'location'\n | 'network_use'\n | 'max_concurrency'\n | 'preferred_concurrency'\n | 'max_parallelism'\n | 'preferred_parallelism'\n | 'user_message'\n | 'user_message_link'\n>;\n\nexport type UpdatePayload = Partial<\n Pick<EndpointDocument, MappedCollectionUpdatableField | 'DATA_TYPE'>\n>;\nexport type UpdateResponse = {\n DATA_TYPE: 'result';\n code: 'Updated';\n message: string;\n request_id: string;\n resource: `/endpoint/${string}`;\n};\n/**\n * Update a Globus Connect Personal collection.\n * As of 2024-04-17, this method (and the Transfer API) only supports updating Globus Connect Personal collections.\n *\n * All GCSv5 collections should be updated using Globus Connect Server (i.e. {@link \"@globus/sdk\".gcs.collections.update | `gcs.collections.update`}).\n *\n * @see https://docs.globus.org/api/transfer/gcp_management/#update_collection_by_id\n */\nexport const update = function (\n endpoint_xid,\n options?,\n sdkOptions?,\n): Promise<JSONFetchResponse<UpdateResponse>> {\n if (options?.payload) {\n Object.assign(options.payload, { DATA_TYPE: 'endpoint' });\n }\n\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/endpoint/${endpoint_xid}`,\n method: HTTP_METHODS.PUT,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n payload: UpdatePayload;\n query?: never;\n }\n>;\n\nexport type RemoveResponse = {\n DATA_TYPE: 'result';\n code: 'Deleted';\n message: string;\n request_id: string;\n resource: `/endpoint/${string}`;\n};\n/**\n * Delete a Globus Connect Personal entity by its UUID.\n * As of 2024-01-08, this method (and the Transfer API) only supports deleting Globus Connect Personal entities.\n *\n * All GCSv5 endpoints and collections should be deleted (and managed) using Globus Connect Server (i.e. {@link \"@globus/sdk\".gcs.collections.remove | `gcs.collections.remove`}).\n *\n * @see https://docs.globus.org/api/transfer/gcp_management/#delete_endpoint_by_id\n */\nexport const remove = function (\n endpoint_xid,\n options?,\n sdkOptions?,\n): Promise<JSONFetchResponse<RemoveResponse>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/endpoint/${endpoint_xid}`,\n method: HTTP_METHODS.DELETE,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: never;\n payload?: never;\n }\n>;\n", "import { HTTP_METHODS, serviceRequest } from '../../shared.js';\n\nimport { ID, SCOPES } from '../config.js';\n\nimport type {\n ServiceMethod,\n ServiceMethodDynamicSegments,\n JSONFetchResponse,\n} from '../../../services/types.js';\n\nimport type { PaginatedResponse, QueryParameters } from '../types.js';\nimport { PauseRuleDocument } from './endpoint-manager/pause-rule.js';\n\nexport type TaskDocument = {\n DATA_TYPE: 'task';\n task_id: string;\n type: 'TRANSFER' | 'DELETE';\n status: 'ACTIVE' | 'INACTIVE' | 'SUCCEEDED' | 'FAILED';\n fatal_error: object | null;\n label: string | null;\n /**\n * @deprecated use `owner_id` instead.\n */\n username: string;\n owner_id: string;\n request_time: string;\n completion_time: string | null;\n deadline: string | null;\n /**\n * @deprecated use `source_endpoint_id`\n */\n source_endpoint: string;\n source_endpoint_id: string;\n source_endpoint_display_name: string;\n /**\n * @deprecated use `destination_endpoint_id`\n */\n destination_endpoint: string;\n destination_endpoint_id: string | null;\n destination_endpoint_display_name: string;\n sync_level: number | null;\n encrypt_data: boolean;\n verify_checksum: boolean;\n delete_destination_extra: boolean;\n recursive_symlinks: string | null;\n preserve_timestamp: boolean;\n skip_source_errors: boolean;\n fail_on_quota_errors: boolean;\n command: string;\n history_deleted: boolean;\n faults: number;\n files: number;\n directories: number;\n symlinks: number;\n files_skipped: number;\n files_transferred: number;\n subtasks_total: number;\n subtasks_pending: number;\n subtasks_retrying: number;\n subtasks_succeeded: number;\n subtasks_expired: number;\n subtasks_canceled: number;\n subtasks_failed: number;\n subtasks_skipped_errors: number;\n bytes_transferred: number;\n bytes_checksummed: number;\n effective_bytes_per_second: number;\n nice_status: string | null;\n /**\n * @deprecated use `event_list`\n */\n nice_status_details: null;\n nice_status_short_description: string | null;\n nice_status_expires_in: -1 | 0 | string | null;\n canceled_by_admin: 'SOURCE' | 'DESTINATION' | 'BOTH' | null;\n canceled_by_admin_message: string | null;\n is_paused: boolean;\n source_base_path?: string | null;\n destination_base_path?: string | null;\n};\n\nexport type TaskListDocument = {\n DATA_TYPE: 'task_list';\n DATA: TaskDocument[];\n};\n\n/**\n * Get a list of tasks submitted by the current user.\n * @see https://docs.globus.org/api/transfer/task/#get_task_list\n */\nexport const getAll = function (\n options = {},\n sdkOptions?,\n): Promise<JSONFetchResponse<PaginatedResponse<'Offset', TaskListDocument>>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/task_list`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethod<{\n query?: QueryParameters<'Offset'>;\n headers?: Record<string, string>;\n payload?: never;\n}>;\n\n/**\n * Fetch a task by its UUID.\n * @see https://docs.globus.org/api/transfer/task/#get_task_by_id\n */\nexport const get = function (\n task_id,\n options?,\n sdkOptions?,\n): Promise<JSONFetchResponse<TaskDocument>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/task/${task_id}`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: never;\n payload?: never;\n }\n>;\n\n/**\n * @see https://docs.globus.org/api/transfer/task/#update_task_by_id\n */\nexport const update = function (\n task_id,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<{\n DATA_TYPE: 'result';\n code: 'Updated';\n message: string;\n request_id: string;\n resource: `/task/${string}/cancel`;\n }>\n> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/task/${task_id}`,\n method: HTTP_METHODS.PUT,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: never;\n payload: Record<string, string>;\n }\n>;\n\n/**\n * @see https://docs.globus.org/api/transfer/task/#cancel_task_by_id\n */\nexport const cancel = function (\n task_id,\n options?,\n sdkOptions?,\n): Promise<JSONFetchResponse<TaskDocument>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/task/${task_id}/cancel`,\n method: HTTP_METHODS.POST,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: never;\n payload?: never;\n }\n>;\n\n/**\n * @see https://docs.globus.org/api/transfer/task/#remove_task_by_id\n */\nexport const remove = function (\n task_id,\n options?,\n sdkOptions?,\n): Promise<JSONFetchResponse<TaskDocument>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/task/${task_id}/remove`,\n method: HTTP_METHODS.POST,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: never;\n payload?: never;\n }\n>;\n\n/**\n * @see https://docs.globus.org/api/transfer/task/#event_document\n */\nexport type EventDocument = {\n DATA_TYPE: 'event';\n code: string;\n is_error: boolean;\n description: string;\n details: string;\n time: string;\n};\n\nexport type TaskEventListDocument = {\n DATA_TYPE: 'task_event_list';\n DATA: EventDocument[];\n};\n\n/**\n * @see https://docs.globus.org/api/transfer/task/#get_event_list\n */\nexport const getEventList = function (\n task_id,\n options?,\n sdkOptions?,\n): Promise<JSONFetchResponse<PaginatedResponse<'Offset', TaskEventListDocument>>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/task/${task_id}/event_list`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: QueryParameters<'Offset'>;\n headers?: Record<string, string>;\n payload?: never;\n }\n>;\n\n/**\n * `source_path` or `destination_path` will be `null` when the user does not have\n * role permissions for either side of the transfer.\n * @see https://docs.globus.org/api/transfer/task/#successful_transfer_fields\n */\nexport type SuccessfulTransferDocument = {\n DATA_TYPE: 'successful_transfer';\n source_path: string | null;\n destination_path: string | null;\n checksum: string | null;\n checksum_algorithm: string | null;\n dynamic: boolean;\n size: number;\n};\n\nexport type SuccessfulTransfersListDocument = {\n DATA_TYPE: 'successful_transfers';\n marker: number;\n next_marker: null | number;\n DATA: SuccessfulTransferDocument[];\n};\n\n/**\n * @see https://docs.globus.org/api/transfer/task/#get_task_successful_transfers\n */\nexport const getSuccessfulTransfers = function (\n task_id,\n options?,\n sdkOptions?,\n): Promise<JSONFetchResponse<SuccessfulTransfersListDocument>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/task/${task_id}/successful_transfers`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: QueryParameters<'Marker'>;\n headers?: Record<string, string>;\n payload?: never;\n }\n>;\n\n/**\n * `source_path` or `destination_path` will be `null` when the user does not have\n * role permissions for either side of the transfer.\n * @see https://docs.globus.org/api/transfer/task/#skipped_error_fields\n */\nexport type SkippedErrorDocument = {\n DATA_TYPE: 'skipped_error';\n error_code: 'PERMISSION_DENIED' | 'FILE_NOT_FOUND';\n error_details: string;\n error_time: string;\n source_path: string | null;\n destination_path: string | null;\n is_directory: boolean;\n is_symlink: boolean;\n is_delete_destination_extra: boolean;\n external_checksum: string;\n checksum_algorithm: string;\n};\n\nexport type SkippedErrorsListDocument = {\n DATA_TYPE: 'skipped_errors';\n marker: number;\n next_marker: null | number;\n DATA: SkippedErrorDocument[];\n};\n\n/**\n * @see https://docs.globus.org/api/transfer/task/#get_task_skipped_errors\n */\nexport const getSkippedErrors = function (\n task_id,\n options?,\n sdkOptions?,\n): Promise<JSONFetchResponse<PaginatedResponse<'Marker', SkippedErrorsListDocument>>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/task/${task_id}/skipped_errors`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: QueryParameters<'Marker'>;\n headers?: Record<string, string>;\n payload?: never;\n }\n>;\n\n/**\n * @see https://docs.globus.org/api/transfer/task/#limited_pause_rule_document\n */\nexport type PauseRuleLimitedDocument = Omit<\n PauseRuleDocument,\n 'modified_by' | 'modified_by_id' | 'created_by_host_manager' | 'editable' | 'DATA_TYPE'\n> & {\n DATA_TYPE: 'pause_rule_limited';\n};\n/**\n * @see https://docs.globus.org/api/transfer/task/#get_task_pause_info\n */\ntype PauseInfoLimitedDocument = {\n DATA_TYPE: 'pause_info_limited';\n pause_rules: PauseRuleLimitedDocument[];\n source_pause_message: string | null;\n destination_pause_message: string | null;\n source_pause_message_share: string | null;\n destination_pause_message_share: string | null;\n};\n\n/**\n * @see https://docs.globus.org/api/transfer/task/#get_task_pause_info\n */\nexport const getPauseInfo = function (\n task_id,\n options?,\n sdkOptions?,\n): Promise<JSONFetchResponse<PauseInfoLimitedDocument>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/task/${task_id}/pause_info`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: never;\n headers?: Record<string, string>;\n payload?: never;\n }\n>;\n", "import { HTTP_METHODS, serviceRequest } from '../../shared.js';\nimport { ID, SCOPES } from '../config.js';\nimport { QueryParameters } from '../types.js';\n\nimport type { ServiceMethodDynamicSegments, JSONFetchResponse } from '../../../services/types.js';\n\n/**\n * @see https://docs.globus.org/api/transfer/permissions/#permission_document\n */\nexport type AccessDocument = {\n DATA_TYPE: 'access';\n id: null | string;\n role_id: null | string;\n role_type: null | 'administrator' | 'access_manager';\n principal_type: 'identity' | 'group' | 'all_authenticated_users' | 'anonymous';\n principal: '' | string;\n path: string;\n permissions: 'r' | 'rw';\n create_time: null | string;\n expiration_date: null | string;\n notify_email?: null | string;\n notify_message?: null | string;\n};\n\nexport type AccessListDocument = {\n DATA_TYPE: 'access_list';\n DATA: AccessDocument[];\n length: number;\n endpoint: string;\n};\n\n/**\n * @see https://docs.globus.org/api/transfer/permissions/#get_permission_list\n */\nexport const getAll = function (\n endpoint_xid,\n options?,\n sdkOptions?,\n): Promise<JSONFetchResponse<AccessListDocument>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/endpoint/${endpoint_xid}/access_list`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: QueryParameters<'Offset'>;\n payload?: never;\n }\n>;\n\n/**\n * @see https://docs.globus.org/api/transfer/permissions/#create_permission\n */\nexport const create = function (\n endpoint_xid,\n options,\n sdkOptions?,\n): Promise<JSONFetchResponse<AccessDocument>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/endpoint/${endpoint_xid}/access`,\n method: HTTP_METHODS.POST,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n payload: Partial<AccessDocument>;\n }\n>;\n\n/**\n * @see https://docs.globus.org/api/transfer/permissions/#get_permission_by_id\n */\nexport const get = function (\n { endpoint_xid, id },\n options?,\n sdkOptions?,\n): Promise<JSONFetchResponse<AccessDocument>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/endpoint/${endpoint_xid}/access/${id}`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n { endpoint_xid: string; id: string },\n {\n query?: never;\n payload?: never;\n }\n>;\n\n/**\n * @see https://docs.globus.org/api/transfer/permissions/#update_permission\n */\nexport const update = function (\n { endpoint_xid, id },\n options,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<{\n DATA_TYPE: 'result';\n code: 'Updated';\n message: string;\n request_id: string;\n resource: `/endpoint/${string}/access/${string}`;\n }>\n> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/endpoint/${endpoint_xid}/access/${id}`,\n method: HTTP_METHODS.PUT,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n { endpoint_xid: string; id: string },\n {\n query?: never;\n payload: Partial<AccessDocument>;\n }\n>;\n\n/**\n * @see https://docs.globus.org/api/transfer/permissions/#delete_permissoin\n */\nexport const remove = function (\n { endpoint_xid, id },\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<{\n DATA_TYPE: 'result';\n code: 'Deleted';\n message: string;\n request_id: string;\n resource: `/endpoint/${string}/access/${string}`;\n }>\n> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/endpoint/${endpoint_xid}/access/${id}`,\n method: HTTP_METHODS.DELETE,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n { endpoint_xid: string; id: string },\n {\n query?: never;\n payload?: never;\n }\n>;\n", "import { HTTP_METHODS, serviceRequest } from '../../shared.js';\n\nimport { ID, SCOPES } from '../config.js';\n\nimport type { ServiceMethodDynamicSegments, JSONFetchResponse } from '../../../services/types.js';\n\nimport type { EndpointRole } from './endpoint';\n\n/**\n * @see https://docs.globus.org/api/transfer/endpoint_roles/#role_document_fields\n */\nexport type RoleDocument = {\n DATA_TYPE: 'role';\n id: string;\n principal_type: 'identity' | 'group';\n principal: string;\n role: EndpointRole;\n};\n\n/**\n * @see https://docs.globus.org/api/transfer/endpoint_roles/#role_list\n */\nexport type RoleListDocument = {\n DATA_TYPE: 'role_list';\n DATA: RoleDocument[];\n};\n\n/**\n * Get a list of role assignments for an endpoint.\n * @see https://docs.globus.org/api/transfer/roles/#role_list\n */\nexport const getAll = function (\n endpoint_id: string,\n options = {},\n sdkOptions?,\n): Promise<JSONFetchResponse<RoleListDocument>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/endpoint/${endpoint_id}/role_list`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: never;\n payload?: never;\n }\n>;\n\n/**\n * Fetch a role by its UUID.\n * @see https://docs.globus.org/api/transfer/roles/#get_role_by_id\n */\nexport const get = function (\n { endpoint_id, role_id },\n options?,\n sdkOptions?,\n): Promise<JSONFetchResponse<RoleDocument>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/endpoint/${endpoint_id}/role/${role_id}`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n { endpoint_id: string; role_id: string },\n {\n query?: never;\n payload?: never;\n }\n>;\n\n/**\n * Assign a role to an identity or group for a Globus Connect Personal collection.\n * @see https://docs.globus.org/api/transfer/roles/#create_role\n */\nexport const create = function (\n collection_id: string,\n options,\n sdkOptions?,\n): Promise<JSONFetchResponse<RoleDocument>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/endpoint/${collection_id}/role`,\n method: HTTP_METHODS.POST,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n payload: Partial<RoleDocument>;\n }\n>;\n\n/**\n * Delete a single Globus Connect Personal collection role assignment by id.\n * @see https://docs.globus.org/api/transfer/roles/#delete_globus_connect_personal_collection_role_by_id\n */\nexport const remove = function (\n { collection_id, role_id },\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<{\n DATA_TYPE: 'result';\n code: 'Deleted';\n message: string;\n request_id: string;\n resource: `/endpoint/${string}/role/${string}`;\n }>\n> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/endpoint/${collection_id}/role/${role_id}`,\n method: HTTP_METHODS.DELETE,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n { collection_id: string; role_id: string },\n {\n query?: never;\n payload?: never;\n }\n>;\n", "import { HTTP_METHODS, serviceRequest } from '../../shared.js';\nimport { ID, SCOPES } from '../config.js';\n\nimport type {\n ServiceMethodDynamicSegments,\n JSONFetchResponse,\n ServiceMethod,\n} from '../../types.js';\n\n/**\n * @see https://docs.globus.org/api/transfer/collection_bookmarks/#bookmark_document\n */\nexport type BookmarkDocument = {\n DATA_TYPE: 'bookmark';\n id: string;\n name: string;\n endpoint_id: string;\n path: string;\n};\n\nexport type BookmarkListDocument = {\n DATA_TYPE: 'bookmark_list';\n DATA: BookmarkDocument[];\n};\n\n/**\n * @see https://docs.globus.org/api/transfer/collection_bookmarks/#get_list_of_bookmarks\n */\nexport const getAll = function (\n options?,\n sdkOptions?,\n): Promise<JSONFetchResponse<BookmarkListDocument>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/bookmark_list`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethod<{\n query?: never;\n payload?: never;\n}>;\n\n/**\n * @see https://docs.globus.org/api/transfer/collection_bookmarks/#create_bookmark\n */\nexport const create = function (\n options,\n sdkOptions?,\n): Promise<JSONFetchResponse<BookmarkDocument>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/bookmark`,\n method: HTTP_METHODS.POST,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethod<{\n payload: Partial<BookmarkDocument>;\n}>;\n\n/**\n * @see https://docs.globus.org/api/transfer/collection_bookmarks/#get_bookmark_by_id\n */\nexport const get = function (\n bookmark_id,\n options?,\n sdkOptions?,\n): Promise<JSONFetchResponse<BookmarkDocument>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/bookmark/${bookmark_id}`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: never;\n payload?: never;\n }\n>;\n\n/**\n * @see https://docs.globus.org/api/transfer/collection_bookmarks/#update_bookmark\n */\nexport const update = function (\n bookmark_id,\n options,\n sdkOptions?,\n): Promise<JSONFetchResponse<BookmarkDocument>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/bookmark/${bookmark_id}`,\n method: HTTP_METHODS.PUT,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: never;\n payload: Partial<BookmarkDocument> & { name: string };\n }\n>;\n\n/**\n * @see https://docs.globus.org/api/transfer/collection_bookmarks/#delete_bookmark_by_id\n */\nexport const remove = function (\n bookmark_id,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<{\n DATA_TYPE: 'result';\n code: 'Deleted';\n message: string;\n resource: `/bookmark/${string}`;\n request_id: string;\n }>\n> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/bookmark/${bookmark_id}`,\n method: HTTP_METHODS.DELETE,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: never;\n payload?: never;\n }\n>;\n", "export * as endpoint from './endpoint.js';\nexport * as pauseRule from './pause-rule.js';\nexport * as task from './task.js';\n", "import { serviceRequest } from '../../../shared.js';\nimport { ID, SCOPES } from '../../config.js';\n\nimport type {\n ServiceMethodDynamicSegments,\n JSONFetchResponse,\n ServiceMethod,\n} from '../../../../services/types.js';\nimport type { PaginatedResponse, QueryParameters } from '../../types.js';\nimport type { AccessListDocument } from '../access.js';\nimport { EndpointDocument, EndpointListDocument } from '../endpoint.js';\n\n/**\n * Fetch an endpoint by its UUID as an administrator.\n * @see https://docs.globus.org/api/transfer/advanced_endpoint_management/#mc_get_endpoint\n */\nexport const get = function (\n endpoint_xid,\n options?,\n sdkOptions?,\n): Promise<JSONFetchResponse<EndpointDocument>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/endpoint_manager/endpoint/${endpoint_xid}`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: never;\n payload?: never;\n }\n>;\n\n/**\n * @see https://docs.globus.org/api/transfer/advanced_endpoint_management/#get_hosted_endpoint_list\n */\nexport const getHostedEndpoints = function (\n endpoint_xid,\n options?,\n sdkOptions?,\n): Promise<JSONFetchResponse<PaginatedResponse<'Offset', EndpointListDocument>>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/endpoint_manager/endpoint/${endpoint_xid}/hosted_endpoint_list`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: QueryParameters<'Offset'>;\n payload?: never;\n }\n>;\n\n/**\n * @see https://docs.globus.org/api/transfer/advanced_endpoint_management/#get_task_events\n */\nexport const getAccessList = function (\n endpoint_xid,\n options?,\n sdkOptions?,\n): Promise<JSONFetchResponse<AccessListDocument>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/endpoint_manager/endpoint/${endpoint_xid}/access_list`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: QueryParameters<'Offset'>;\n payload?: never;\n }\n>;\n\n/**\n * @see https://docs.globus.org/api/transfer/advanced_endpoint_management/#get_monitored_endpoints\n */\nexport const getMonitoredEndpoints = function (\n options = {},\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n PaginatedResponse<\n 'Offset',\n Omit<EndpointListDocument, 'DATA_TYPE'> & {\n DATA_TYPE: 'monitored_endpoints';\n }\n >\n >\n> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/endpoint_manager/monitored_endpoints`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethod<{\n query?: QueryParameters<'Offset'>;\n payload?: never;\n}>;\n", "import { HTTP_METHODS, serviceRequest } from '../../../shared.js';\n\nimport { ID, SCOPES } from '../../config.js';\n\nimport type {\n ServiceMethod,\n ServiceMethodDynamicSegments,\n JSONFetchResponse,\n} from '../../../../services/types.js';\n\n/**\n * @see https://docs.globus.org/api/transfer/advanced_collection_management/#pause_rule_document\n */\nexport type PauseRuleDocument = {\n DATA_TYPE: 'pause_rule';\n id: string;\n message: string;\n start_time: string | null;\n endpoint_id: string;\n endpoint_display_name: string;\n identity_id: string;\n modified_by_id: string;\n created_by_host_manager: boolean;\n editable: boolean;\n pause_ls: boolean;\n pause_mkdir: boolean;\n pause_symlink: boolean;\n pause_rename: boolean;\n pause_task_delete: boolean;\n pause_task_transfer_delete: boolean;\n pause_task_transfer_read: boolean;\n};\n\n/**\n * Get a list of pause rules on endpoints that the current user has the \"activity_monitor\" role on.\n * @see https://docs.globus.org/api/transfer/advanced_endpoint_management/#get_pause_rules\n */\nexport const getAll = function (\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<{\n DATA_TYPE: 'pause_rule_list';\n DATA: PauseRuleDocument[];\n }>\n> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/endpoint_manager/pause_rule_list`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethod<{\n query?: { filter_endpoint?: string; filter_host_endpoint?: string };\n payload?: never;\n}>;\n\n/**\n * @see https://docs.globus.org/api/transfer/advanced_endpoint_management/#create_pause_rule\n */\nexport const create = function (\n options,\n sdkOptions?,\n): Promise<JSONFetchResponse<PauseRuleDocument>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/endpoint_manager/pause_rule`,\n method: HTTP_METHODS.POST,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethod<{\n payload: Partial<PauseRuleDocument>;\n}>;\n\n/**\n * Fetch a pause_rule by its UUID.\n * @see https://docs.globus.org/api/transfer/advanced_endpoint_management/#get_pause_rule\n */\nexport const get = function (\n pause_rule_id,\n options?,\n sdkOptions?,\n): Promise<JSONFetchResponse<PauseRuleDocument>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/endpoint_manager/pause_rule/${pause_rule_id}`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: never;\n payload?: never;\n }\n>;\n\n/**\n * @see https://docs.globus.org/api/transfer/advanced_endpoint_management/#update_pause_rule\n */\nexport const update = function (\n pause_rule_id,\n options,\n sdkOptions?,\n): Promise<JSONFetchResponse<PauseRuleDocument>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/endpoint_manager/pause_rule/${pause_rule_id}`,\n method: HTTP_METHODS.PUT,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: never;\n payload: Partial<PauseRuleDocument>;\n }\n>;\n\n/**\n * @see https://docs.globus.org/api/transfer/advanced_endpoint_management/#delete_pause_rule\n */\nexport const remove = function (\n pause_rule_id,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<{\n DATA_TYPE: 'result';\n code: 'Deleted';\n message: string;\n request_id: string;\n resource: string;\n }>\n> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/endpoint_manager/pause_rule/${pause_rule_id}`,\n method: HTTP_METHODS.DELETE,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: never;\n payload?: never;\n }\n>;\n", "import { HTTP_METHODS, serviceRequest } from '../../../shared.js';\nimport { ID, SCOPES } from '../../config.js';\n\nimport type {\n ServiceMethod,\n ServiceMethodDynamicSegments,\n JSONFetchResponse,\n} from '../../../../services/types.js';\n\nimport type { PaginatedResponse, QueryParameters } from '../../types.js';\nimport type {\n SkippedErrorsListDocument,\n SuccessfulTransferDocument,\n TaskDocument,\n TaskEventListDocument,\n} from '../task.js';\nimport { PauseRuleDocument } from './pause-rule.js';\n\ntype LocalUserStatus = 'OK' | 'NO_PERMISSION' | 'NOT_SCANNED' | 'ENDPOINT_ERROR' | 'NO_ENDPOINT';\n\n/**\n * @see https://docs.globus.org/api/transfer/advanced_endpoint_management/#task_document\n */\nexport type EndpointManagerTaskDocument = TaskDocument & {\n source_endpoint_id: string | null;\n source_endpoint_display_name: string | null;\n destination_endpoint_id: string | null;\n destination_endpoint_display_name: string | null;\n /**\n * @deprecated\n */\n source_host_endpoint: string | null;\n source_host_endpoint_id: string | null;\n source_host_endpoint_display_name: string | null;\n source_mapped_collection_id: string | null;\n source_mapped_collection_display_name: string | null;\n /**\n * @deprecated\n */\n destination_host_endpoint: string | null;\n destination_host_endpoint_id: string | null;\n destination_host_endpoint_display_name: string | null;\n destination_mapped_collection_id: string | null;\n destination_mapped_collection_display_name: string | null;\n\n source_host_path: string | null;\n destination_host_path: string | null;\n is_ok: boolean | null;\n source_local_user: null;\n source_local_user_status: LocalUserStatus;\n destination_local_user: string | null;\n destination_local_user_status: LocalUserStatus;\n owner_string: string;\n};\n\n/**\n * @see https://docs.globus.org/api/transfer/advanced_endpoint_management/#get_tasks\n */\nexport const getAll = function (\n options = {},\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n PaginatedResponse<\n 'LastKey',\n {\n DATA_TYPE: 'task_list';\n DATA: EndpointManagerTaskDocument[];\n }\n >\n >\n> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/task_list`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethod<{\n query?: QueryParameters<\n {\n filter_status?: string;\n filter_task_id?: string;\n filter_owner_id?: string;\n filter_endpoint?: string;\n filter_is_paused?: boolean;\n filter_completion_time?: string;\n filter_min_faults?: number;\n filter_local_user?: string;\n },\n 'LastKey'\n >;\n payload?: never;\n}>;\n\n/**\n * @see https://docs.globus.org/api/transfer/advanced_endpoint_management/#get_task\n */\nexport const get = function (\n task_id,\n options?,\n sdkOptions?,\n): Promise<JSONFetchResponse<EndpointManagerTaskDocument>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/endpoint_manager/task/${task_id}`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: never;\n payload?: never;\n }\n>;\n\n/**\n * @see https://docs.globus.org/api/transfer/advanced_collection_management/#admin_cancel_document\n */\nexport type AdminCancelDocument = {\n DATA_TYPE: 'admin_cancel';\n id: number;\n message: string;\n task_id_list: string[];\n done: boolean;\n};\n\n/**\n * @see https://docs.globus.org/api/transfer/advanced_collection_management/#cancel_tasks\n */\nexport const cancel = function (\n options,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<{\n DATA_TYPE: 'admin_cancel';\n readonly id?: AdminCancelDocument['id'];\n readonly done?: AdminCancelDocument['done'];\n }>\n> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/endpoint_manager/admin_cancel`,\n method: HTTP_METHODS.POST,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethod<{\n query?: never;\n payload: {\n DATA_TYPE: AdminCancelDocument['DATA_TYPE'];\n task_id_list: AdminCancelDocument['task_id_list'];\n message: AdminCancelDocument['message'];\n };\n}>;\n\n/**\n * @see https://docs.globus.org/api/transfer/advanced_endpoint_management/#get_cancel_status_by_id\n */\nexport const getAdminCancel = function (\n admin_cancel_id,\n options?,\n sdkOptions?,\n): Promise<JSONFetchResponse<AdminCancelDocument>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/endpoint_manager/admin_cancel/${admin_cancel_id}`,\n method: HTTP_METHODS.POST,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: never;\n payload?: never;\n }\n>;\n\n/**\n * @see https://docs.globus.org/api/transfer/advanced_endpoint_management/#get_task_events\n */\nexport const getEventList = function (\n task_id,\n options?,\n sdkOptions?,\n): Promise<JSONFetchResponse<PaginatedResponse<'Offset', TaskEventListDocument>>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/endpoint_manager/task/${task_id}/event_list`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: QueryParameters<{ filter_is_error?: 1 }, 'Offset'>;\n payload?: never;\n }\n>;\n\n/**\n * @see https://docs.globus.org/api/transfer/advanced_endpoint_management/#get_task_successful_transfers_as_admin\n */\nexport const getSuccessfulTransfers = function (\n task_id,\n options?,\n sdkOptions?,\n): Promise<JSONFetchResponse<PaginatedResponse<'Marker', SuccessfulTransferDocument>>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/endpoint_manager/task/${task_id}/successful_transfers`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: QueryParameters<'Marker'>;\n payload?: never;\n }\n>;\n\n/**\n * @see https://docs.globus.org/api/transfer/advanced_endpoint_management/#get_task_skipped_errors_transfers_as_admin\n */\nexport const getSkippedErrors = function (\n task_id,\n options?,\n sdkOptions?,\n): Promise<JSONFetchResponse<PaginatedResponse<'Marker', SkippedErrorsListDocument>>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/endpoint_manager/task/${task_id}/skipped_errors`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: QueryParameters<'Marker'>;\n payload?: never;\n }\n>;\n\n/**\n * @see https://docs.globus.org/api/transfer/advanced_endpoint_management/#admin_pause_document\n */\nexport type AdminPauseDocument = {\n DATA_TYPE: 'admin_pause';\n task_id_list: string[];\n message: string;\n};\n\n/**\n * @see https://docs.globus.org/api/transfer/advanced_endpoint_management/#pause_tasks_as_admin\n */\nexport const pause = function (\n options,\n sdkOptions?,\n): Promise<JSONFetchResponse<AdminPauseDocument>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/endpoint_manager/admin_pause`,\n method: HTTP_METHODS.POST,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethod<{\n query?: never;\n payload?: Pick<AdminPauseDocument, 'task_id_list' | 'message' | 'DATA_TYPE'>;\n}>;\n\n/**\n * @see https://docs.globus.org/api/transfer/advanced_collection_management/#admin_resume_document\n */\nexport type AdminResumeDocument = {\n task_id_list: string[];\n};\n\n/**\n * @see https://docs.globus.org/api/transfer/advanced_endpoint_management/#resume_tasks_as_admin\n */\nexport const resume = function (\n options,\n sdkOptions?,\n): Promise<JSONFetchResponse<AdminResumeDocument>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/endpoint_manager/admin_resume`,\n method: HTTP_METHODS.POST,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethod<{\n query?: never;\n payload?: AdminResumeDocument;\n}>;\n\n/**\n * @see https://docs.globus.org/api/transfer/advanced_endpoint_management/#get_task_pause_info_as_admin\n */\nexport const getPauseInfo = function (\n task_id,\n options?,\n sdkOptions?,\n): Promise<JSONFetchResponse<PauseRuleDocument>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/endpoint_manager/task/${task_id}/pause_info`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: never;\n payload?: never;\n }\n>;\n", "import type { FileDocument } from './service/file-operations.js';\n\n/**\n * Determines if the given entry is a Globus Transfer File Document.\n * @see https://docs.globus.org/api/transfer/file_operations/#file_document\n */\nexport function isFileDocument(entry: unknown): entry is FileDocument {\n return (\n typeof entry === 'object' &&\n entry !== null &&\n 'DATA_TYPE' in entry &&\n entry.DATA_TYPE === 'file'\n );\n}\n/**\n * Determines if the given entry is a directory.\n * @see https://docs.globus.org/api/transfer/file_operations/#file_document\n */\nexport function isDirectory(entry: unknown) {\n return isFileDocument(entry) && entry.type === 'dir';\n}\n\nconst KB = 1000;\nconst MB = KB * 1000;\nconst GB = MB * 1000;\nconst TB = GB * 1000;\nconst PB = TB * 1000;\n/**\n * Returns a readable string for the given bytes, **rounded and truncated** to the given number of decimal places.\n * @param bytes The number of bytes to convert to a readable string.\n * @param [truncate=2] The number of decimal places to truncate the result to.\n */\nexport function readableBytes(bytes: number, truncate = 2) {\n let unit = 'B';\n let bytesInUnit = 1;\n if (bytes < KB) {\n return `${bytes} ${unit}`;\n }\n if (bytes < MB) {\n unit = 'KB';\n bytesInUnit = KB;\n } else if (bytes < GB) {\n unit = 'MB';\n bytesInUnit = MB;\n } else if (bytes < TB) {\n unit = 'GB';\n bytesInUnit = GB;\n } else if (bytes < PB) {\n unit = 'TB';\n bytesInUnit = TB;\n } else {\n unit = 'PB';\n bytesInUnit = PB;\n }\n const value = bytes / bytesInUnit;\n const [int, dec] = `${value}`.split('.');\n let rendered = `${int}`;\n if (dec && dec.length) {\n const truncated = dec.slice(0, truncate);\n if (truncated.length) {\n rendered = `${int}.${truncated}`;\n }\n }\n return `${rendered} ${unit}`;\n}\n\n/**\n * Known Globus DNS domains.\n */\nexport const GLOBUS_DNS_DOMAINS = [\n 'dnsteam.globuscs.info',\n 'data.globus.org',\n 'dn.glob.us',\n 'gaccess.io',\n];\n\n/**\n * Check the given hostname to determine if it is one of the known Globus DNS domains.\n * @param hostname The hostname to check.\n * @returns `true` if the hostname is a known Globus DNS domain, `false` otherwise.\n */\nexport function isGlobusHostname(hostname: string): boolean {\n return Boolean(GLOBUS_DNS_DOMAINS.find((d) => hostname.endsWith(`.${d}`)));\n}\n\n/**\n * Returns DNS domain, if any, for a collection or endpoint.\n *\n * - Custom domains will be displayed without any auto-generated wildcard subdomains.\n * - Globus domains will include the auto-generated section to make them identifiable.\n *\n * @param endpoint The endpoint to extract the domain from. While any object will be parsed, this function is intended for use with [Globus Transfer Endpoint or Collection Documents](https://docs.globus.org/api/transfer/endpoints_and_collections/#endpoint_or_collection_document).\n * @see https://docs.globus.org/globus-connect-server/v5.4/domain-guide/#custom_domains_new_in_v_5_4_13\n */\nexport function getDomainFromEndpoint(endpoint: Record<string, unknown>) {\n const { tlsftp_server: tls } = endpoint;\n if (!tls || typeof tls !== 'string') {\n return null;\n }\n /**\n * Swap the protocol to `https` so we can use the URL API to extract the hostname.\n */\n const { hostname } = new URL(tls.replace('tlsftp', 'https'));\n const hasCustomDomain = !isGlobusHostname(hostname);\n const customDomain =\n hasCustomDomain && /(?:[gm]-\\w{6}.)?([\\w-]+(\\.[\\w-]+)+)$/.exec(hostname)?.[1];\n\n return customDomain || hostname || null;\n}\n", "/**\n * @description A wrapper around the Globus Search service.\n * @group Service\n * @see [Globus Search API Documentation](https://docs.globus.org/api/search/reference/)\n * @module\n */\nimport * as SEARCH from './config.js';\n\n/**\n * @private\n * @internal\n */\nexport const CONFIG = SEARCH;\n\nexport type * as OpenAPI from '../../open-api/types/search.js';\nexport type * from './types.js';\n\nexport * as query from './service/query.js';\nexport * as subject from './service/subject.js';\nexport * as entry from './service/entry.js';\nexport * as index from './service/search-index.js';\n", "import { HTTP_METHODS, serviceRequest } from '../../shared.js';\n\nimport type { JSONFetchResponse, ServiceMethodDynamicSegments } from '../../types.js';\n\nimport { ID, SCOPES } from '../config.js';\nimport { ResultFormatVersion } from '../types.js';\n\nexport type MatchedPrincipalSets = string[];\n\n/**\n * @see https://docs.globus.org/api/search/reference/post_query/#gmetaresult\n */\nexport type GMetaResult = {\n subject: string;\n entries: {\n entry_id: string;\n content: Record<string, unknown>;\n matched_principal_sets: MatchedPrincipalSets;\n }[];\n};\n\n/**\n * @see https://docs.globus.org/api/search/reference/post_query/#gfacetresult\n */\nexport type GFacetResult = {\n name: string;\n value?: string;\n buckets?: GBucket[];\n};\n\n/**\n * @see https://docs.globus.org/api/search/reference/post_query/#gbucket\n */\nexport type GBucket = {\n value: string | GFilter;\n count: number;\n};\n\n/**\n * @see https://docs.globus.org/api/search/reference/post_query/#gsearchresult\n */\nexport type GSearchResult = {\n gmeta: GMetaResult[];\n facet_results?: GFacetResult[];\n offset: number;\n count: number;\n total: number;\n has_next_page: boolean;\n};\n\n/**\n * @param index_id The UUID of the index to query.\n *\n * @see https://docs.globus.org/api/search/reference/get_query/\n */\nexport const get = function (\n index_id,\n options?,\n sdkOptions?,\n): Promise<JSONFetchResponse<GSearchResult>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.SEARCH,\n path: `/v1/index/${index_id}/search`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n /**\n * @see https://docs.globus.org/api/search/reference/get_query/#parameters\n */\n query?: {\n q: string;\n offset?: `${number}` | number;\n limit?: `${number}` | number;\n advanced?: 'true' | 'false';\n bypass_visible_to?: 'true' | 'false';\n result_format_version?: string;\n filter_principal_sets?: string;\n };\n }\n>;\n\n/**\n * @see https://docs.globus.org/api/search/reference/post_query/#gsearchrequest\n */\nexport type GSearchRequest = {\n q: string;\n offset?: number;\n limit?: number;\n advanced?: boolean;\n bypass_visible_to?: boolean;\n result_format_version?: ResultFormatVersion;\n filter_principal_sets?: string[];\n filters?: GFilter[];\n facets?: GFacet[];\n boosts?: GBoost[];\n sort?: GSort[];\n};\n\n/**\n * @param index_id The UUID of the index to query.\n *\n * @see https://docs.globus.org/api/search/reference/post_query/\n */\nexport const post = function (\n index_id,\n options,\n sdkOptions?,\n): Promise<JSONFetchResponse<GSearchResult>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.SEARCH,\n path: `/v1/index/${index_id}/search`,\n method: HTTP_METHODS.POST,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n payload: GSearchRequest;\n }\n>;\n\n/**\n * @see https://docs.globus.org/api/search/reference/post_query/#gfilter\n */\nexport type GFilter = GFilterMatch | GFilterRange | GFilterExists | GFilterNot;\n\ntype GFilterTypeMatch = 'match_any' | 'match_all';\ntype GFilterTypeRange = 'range';\n\ntype GFilterMatch = {\n type: GFilterTypeMatch;\n field_name: string;\n values: Array<string>;\n};\ntype GFilterRange = {\n type: GFilterTypeRange;\n field_name: string;\n values: Array<{ from: string; to: string }>;\n};\ntype GFilterExists = {\n type: 'exists';\n field_name: string;\n};\ntype GFilterNot = {\n type: 'not';\n filter: GFilter;\n};\n\ntype HistogramRange = { low: number | string; high: number | string };\n\n/**\n * @see https://docs.globus.org/api/search/reference/post_query/#gfacet\n */\nexport type GFacet = {\n name?: string;\n field_name: string;\n} & (\n | {\n type: 'terms';\n size?: number;\n }\n | {\n type: 'sum' | 'avg';\n missing?: number;\n }\n | {\n type: 'date_histogram';\n date_interval: DateInterval;\n histogram_range?: HistogramRange;\n }\n | {\n type: 'numeric_histogram';\n size: string;\n histogram_range: HistogramRange;\n }\n);\n\ntype DateInterval = 'year' | 'quarter' | 'month' | 'week' | 'day' | 'hour' | 'minute' | 'second';\n\n/**\n * @see https://docs.globus.org/api/search/reference/post_query/#gboost\n */\nexport type GBoost = {\n field_name: string;\n factor: number;\n};\n\n/**\n * @see https://docs.globus.org/api/search/reference/post_query/#gsort\n */\nexport type GSort = {\n field_name: string;\n order: 'asc' | 'desc';\n};\n", "import { serviceRequest } from '../../shared.js';\nimport { ID, SCOPES } from '../config.js';\n\nimport type { ServiceMethodDynamicSegments } from '../../types.js';\nimport type { ResultFormatVersion } from '../types.js';\n\n/**\n * Lookup a single Subject in a Search Index.\n * @param index_id The UUID of the Search index where the lookup will be performed.\n *\n * @see https://docs.globus.org/api/search/reference/get_subject/\n */\nexport const get = function (index_id, options?, sdkOptions?) {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.SEARCH,\n path: `/v1/index/${index_id}/subject`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n /**\n * @see https://docs.globus.org/api/search/reference/get_subject/#parameters\n */\n query: {\n subject: string;\n result_format_version?: ResultFormatVersion | string;\n bypass_visible_to?: 'true' | 'false';\n };\n }\n>;\n", "import { serviceRequest } from '../../shared.js';\nimport { ID, SCOPES } from '../config.js';\n\nimport type { ResultFormatVersion } from '../types.js';\nimport type { ServiceMethodDynamicSegments } from '../../types.js';\n\n/**\n * Lookup a single Entry in a Search Index.\n * @param index_id The UUID of the Search index where the lookup will be performed.\n *\n * @see https://docs.globus.org/api/search/reference/get_entry/\n */\nexport const get = function (index_id, options?, sdkOptions?) {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.SEARCH,\n path: `/v1/index/${index_id}/entry`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n /**\n * @see https://docs.globus.org/api/search/reference/get_entry/#parameters\n */\n query: {\n subject: string;\n entry_id?: string;\n result_format_version?: ResultFormatVersion | string;\n bypass_visible_to?: 'true' | 'false';\n };\n }\n>;\n", "import { HTTP_METHODS, serviceRequest } from '../../shared.js';\nimport { ID, SCOPES } from '../config.js';\n\nimport type {\n JSONFetchResponse,\n ServiceMethod,\n ServiceMethodDynamicSegments,\n} from '../../types.js';\n\nexport * as roles from './roles.js';\n\n/**\n * @see https://docs.globus.org/api/search/reference/index_list/#indexwithpermissions\n */\nexport type IndexWithPermissions = GSearchIndex & {\n permissions: string[];\n};\n\nexport type GSearchIndex = {\n display_name: string;\n id: string;\n description: string;\n creation_date: string;\n is_trial: boolean;\n subscription_id: string;\n max_size_in_mb: number;\n size_in_mb: number;\n num_subjects: number;\n num_entries: number;\n status: 'open' | 'delete-pending' | string;\n};\n\n/**\n * @see https://docs.globus.org/api/search/reference/index_list/#indexlist\n */\nexport type IndexList = {\n index_list: IndexWithPermissions[];\n};\n\n/**\n * `permissions` is included in the response as a convenience to\n * the client, but it is not a field in GSearchIndex itself.\n *\n * @see https://docs.globus.org/api/search/reference/index_show/\n */\nexport const get = function (\n index_id,\n options?,\n sdkOptions?,\n): Promise<JSONFetchResponse<IndexWithPermissions>> {\n return serviceRequest(\n {\n service: ID,\n // scope: SCOPES.ALL,\n path: `/v1/index/${index_id}`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<string, {}>;\n\n/**\n * @see https://docs.globus.org/api/search/reference/index_list/\n */\nexport const getAll = function (options?, sdkOptions?): Promise<JSONFetchResponse<IndexList>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v1/index_list`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethod<{}>;\n\ntype IndexCreate = {\n display_name: string;\n description: string;\n};\n\n/**\n * @see https://docs.globus.org/api/search/reference/index_create/\n */\nexport const create = function (options, sdkOptions?): Promise<JSONFetchResponse<GSearchIndex>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v1/index`,\n method: HTTP_METHODS.POST,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethod<{\n payload: IndexCreate;\n}>;\n\ntype IndexDeleteResponse = {\n index_id: string;\n acknowledged: boolean;\n};\n\n/**\n * @see https://docs.globus.org/api/search/reference/index_delete/\n */\nexport const remove = function (\n index_id,\n options?,\n sdkOptions?,\n): Promise<JSONFetchResponse<IndexDeleteResponse>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v1/index/${index_id}`,\n method: HTTP_METHODS.DELETE,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: never;\n payload?: never;\n }\n>;\n\ntype IndexReopenResponse = {\n index_id: string;\n acknowledged: boolean;\n};\n\n/**\n * @see https://docs.globus.org/api/search/reference/index_reopen/\n */\nexport const reopen = function (\n index_id,\n options?,\n sdkOptions?,\n): Promise<JSONFetchResponse<IndexReopenResponse>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v1/index/${index_id}/reopen`,\n method: HTTP_METHODS.POST,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: never;\n payload?: never;\n }\n>;\n\ntype IngestResponse = {\n task_id: string;\n as_identity: string;\n success: boolean;\n num_documents_ingested: number;\n};\n\n/**\n * A mapping from field names (dotted) to the types for those fields. Currently only supports `geo_point` and `geo_shape` as types.\n */\ntype FieldMapping = Record<string, 'geo_point' | 'geo_shape' | string>;\n\n/**\n * A `GIngest` document is a wrapper around a {@link GMetaList} or {@link GMetaEntry} which supplies attributes relevant to the ingest and indexing of metadata into the Globus Search service.\n * @see https://docs.globus.org/api/search/reference/ingest/#gingest\n */\nexport type GIngest =\n | {\n ingest_type: string;\n ingest_data: Record<string, unknown>;\n field_mapping?: FieldMapping;\n }\n | {\n ingest_type: 'GMetaList';\n ingest_data: GMetaList;\n field_mapping?: FieldMapping;\n }\n | {\n ingest_type: 'GMetaEntry';\n ingest_data: GMetaEntry;\n field_mapping?: FieldMapping;\n };\n\n/**\n * A GMetaList is a collection of {@link GMetaEntry} documents.\n * @see https://docs.globus.org/api/search/reference/ingest/#gmetalist\n */\nexport type GMetaList = {\n gmeta: GMetaEntry[];\n};\n\n/**\n * A GMetaEntry is a single block of data pertaining to a given subject.\n * @see https://docs.globus.org/api/search/reference/ingest/#gmetaentry\n */\nexport type GMetaEntry = {\n id?: string;\n subject: string;\n visible_to: 'public' | 'all_authenticated_users' | string;\n principal_sets: Record<string, unknown>;\n content: Record<string, unknown>;\n};\n\nexport const ingest = function (\n index_id,\n options?,\n sdkOptions?,\n): Promise<JSONFetchResponse<IngestResponse>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v1/index/${index_id}/ingest`,\n method: HTTP_METHODS.POST,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n payload: GIngest;\n }\n>;\n", "import { HTTP_METHODS, serviceRequest } from '../../shared.js';\nimport { ID, SCOPES } from '../config.js';\n\nimport type { JSONFetchResponse, ServiceMethodDynamicSegments } from '../../types.js';\n\n/**\n * Search Index Role document\n *\n * @see https://docs.globus.org/api/search/reference/role_list/#role\n */\nexport type IndexRole = {\n id: string;\n creation_date: string;\n role_name: string;\n index_id: string;\n principal: string;\n principal_type: string;\n};\n\n/**\n * Search Index Role List document\n *\n * @see https://docs.globus.org/api/search/reference/role_list/#rolelist\n */\nexport type IndexRoleListResponse = {\n role_list: IndexRole[];\n};\n\n/**\n * Get role list for a search index as owner or admin only\n *\n * @see https://docs.globus.org/api/search/reference/role_list/\n */\nexport const getAll = function (\n index_id,\n options?,\n sdkOptions?,\n): Promise<JSONFetchResponse<IndexRoleListResponse>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v1/index/${index_id}/role_list`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<string, {}>;\n\nexport type SearchIndexRoleCreate = Pick<IndexRole, 'role_name' | 'principal'>;\n\n/**\n * Create a new role for a search index as owner or admin only\n *\n * @see https://docs.globus.org/api/search/reference/role_create/\n */\nexport const create = function (\n index_id,\n options,\n sdkOptions?,\n): Promise<JSONFetchResponse<IndexRole>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v1/index/${index_id}/role`,\n method: HTTP_METHODS.POST,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n payload: SearchIndexRoleCreate;\n },\n JSONFetchResponse<IndexRole>\n>;\n\nexport type SearchIndexRoleDeleted = {\n success: true;\n deleted: IndexRole;\n};\n\n/**\n * Delete a role for a search index as owner or admin only\n *\n * @see https://docs.globus.org/api/search/reference/role_delete/\n */\nexport const remove = function (\n { index_id, role_id },\n options?,\n sdkOptions?,\n): Promise<JSONFetchResponse<SearchIndexRoleDeleted>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v1/index/${index_id}/role/${role_id}`,\n method: HTTP_METHODS.DELETE,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n { index_id: string; role_id: string },\n {\n query?: never;\n payload?: never;\n }\n>;\n", "/**\n * @description A wrapper around the Groups API.\n * @group Service\n * @see [Groups API Documentation](https://docs.globus.org/api/groups/)\n * @module\n */\n\nimport * as GROUPS from './config.js';\n\nexport type * as OpenAPI from '../../open-api/types/groups.js';\n\n/**\n * @private\n * @internal\n */\nexport const CONFIG = GROUPS;\n\n/**\n * Service methods for the Groups API.\n */\nexport * as groups from './service/groups.js';\nexport * as policies from './service/policies.js';\nexport * as membership from './service/membership.js';\n", "import { ID, SCOPES } from '../config.js';\nimport { serviceRequest } from '../../shared.js';\n\nimport type { OpenAPI } from '../index.js';\n\nimport type {\n JSONFetchResponse,\n ServiceMethod,\n ServiceMethodDynamicSegments,\n} from '../../types.js';\n\n/**\n * @see https://groups.api.globus.org/redoc#tag/groups/operation/get_my_groups_and_memberships_v2_groups_my_groups_get\n */\nexport const getMyGroups = function (\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['get_my_groups_and_memberships_v2_groups_my_groups_get']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n scope: SCOPES.ALL,\n path: `/v2/groups/my_groups`,\n service: ID,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethod<{\n query?: {\n /**\n * @todo This should probably be replaced with a more specific type for the method's accepted query parameters once available.\n */\n statuses?: OpenAPI.components['schemas']['StatusEnum'][];\n };\n}>;\n\n/**\n * @see https://groups.api.globus.org/redoc#tag/groups/operation/get_group_v2_groups__group_id__get\n */\nexport const get = function (\n group_id,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['get_group_v2_groups__group_id__get']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v2/groups/${group_id}`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n OpenAPI.operations['get_group_v2_groups__group_id__get']['parameters']['path']['group_id'],\n {\n query?: OpenAPI.operations['get_group_v2_groups__group_id__get']['parameters']['query'];\n }\n>;\n", "import { ID, SCOPES } from '../config.js';\nimport { serviceRequest } from '../../shared.js';\n\nimport type { OpenAPI } from '../index.js';\nimport type { JSONFetchResponse, ServiceMethodDynamicSegments } from '../../types.js';\n\n/**\n * @see https://groups.api.globus.org/redoc#tag/groups/operation/get_policies_v2_groups__group_id__policies_get\n */\nexport const get = function (\n group_id,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['get_policies_v2_groups__group_id__policies_get']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n scope: SCOPES.ALL,\n path: `/v2/groups/${group_id}/policies`,\n service: ID,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n OpenAPI.operations['get_policies_v2_groups__group_id__policies_get']['parameters']['path']['group_id'],\n {\n query?: never;\n payload?: never;\n }\n>;\n", "import { ID, SCOPES } from '../config.js';\nimport { HTTP_METHODS, serviceRequest } from '../../shared.js';\n\nimport type { OpenAPI } from '../index.js';\nimport type { JSONFetchResponse, ServiceMethodDynamicSegments } from '../../types.js';\n\n/**\n * Perform actions on members of the group.\n * @see https://groups.api.globus.org/redoc#tag/groups/operation/group_membership_post_actions_v2_groups__group_id__post\n */\nexport const act = function (\n group_id,\n options,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['group_membership_post_actions_v2_groups__group_id__post']['responses']['200']['content']['application/json']\n >\n> {\n if (!options?.payload) throw new Error('payload is required.');\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v2/groups/${group_id}`,\n method: HTTP_METHODS.POST,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n OpenAPI.operations['update_group_v2_groups__group_id__put']['parameters']['path']['group_id'],\n {\n payload: OpenAPI.operations['group_membership_post_actions_v2_groups__group_id__post']['requestBody']['content']['application/json'];\n }\n>;\n", "/**\n * @description A wrapper around the Globus Flows service.\n * @group Service\n * @see [Globus Flows API Documentation](https://docs.globus.org/api/flows/)\n * @module\n */\nimport * as FLOWS from './config.js';\n\nexport type * as OpenAPI from '../../open-api/types/flows.js';\n\n/**\n * @private\n * @internal\n */\nexport const CONFIG = FLOWS;\n\nexport * as flows from './service/flows.js';\nexport * as runs from './service/runs.js';\n", "import { ID, SCOPES } from '../config.js';\nimport { HTTP_METHODS, serviceRequest } from '../../../services/shared.js';\n\nimport type { OpenAPI } from '../index.js';\n\nimport type {\n JSONFetchResponse,\n ServiceMethod,\n ServiceMethodDynamicSegments,\n} from '../../types.js';\n\n/**\n * @see https://globusonline.github.io/globus-flows/#tag/Flows/paths/~1flows/get\n */\nexport const getAll = function (\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.paths['/flows']['get']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.VIEW_FLOWS,\n path: `/flows`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethod<{\n query?: OpenAPI.paths['/flows']['get']['parameters']['query'];\n}>;\n\n/**\n * @see https://globusonline.github.io/globus-flows/#tag/Flows/paths/~1flows~1{flow_id}/get\n */\nexport const get = function (\n flow_id,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.paths['/flows/{flow_id}']['get']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.VIEW_FLOWS,\n path: `/flows/${flow_id}`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: OpenAPI.paths['/flows/{flow_id}']['get']['parameters']['query'];\n }\n>;\n\n/**\n * @see https://globusonline.github.io/globus-flows/#tag/Flows/paths/~1flows~1{flow_id}/delete\n */\nexport const remove = function (\n flow_id,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.paths['/flows/{flow_id}']['delete']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n scope: SCOPES.MANAGE_FLOWS,\n service: ID,\n path: `/flows/${flow_id}`,\n method: HTTP_METHODS.DELETE,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: never;\n payload?: never;\n }\n>;\n\n/**\n * Run an instance of a particular Flow.\n * @see https://globusonline.github.io/globus-flows/#tag/Runs/paths/~1flows~1%7Bflow_id%7D~1run/post\n */\nexport const run = function (\n flow_id,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.paths['/flows/{flow_id}/run']['post']['responses']['201']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.VIEW_FLOWS,\n path: `/flows/${flow_id}/run`,\n method: HTTP_METHODS.POST,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: never;\n payload: OpenAPI.paths['/flows/{flow_id}/run']['post']['requestBody']['content']['application/json'];\n }\n>;\n\n/**\n * An error that was generated during validation that includes the location of the error.\n */\nexport type ValidationLocationError = OpenAPI.components['schemas']['LocationErrorList'][number];\n\n/**\n * Validate a flow definition and its schema.\n * @see https://globusonline.github.io/globus-flows/#tag/Flows/paths/~1flows~1validate/post\n */\nexport const validate = function (\n options,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n | OpenAPI.paths['/flows/validate']['post']['responses']['200']['content']['application/json']\n | OpenAPI.paths['/flows/validate']['post']['responses']['422']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.MANAGE_FLOWS,\n path: `/flows/validate`,\n method: HTTP_METHODS.POST,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethod<{\n query?: never;\n payload: OpenAPI.paths['/flows/validate']['post']['requestBody']['content']['application/json'];\n}>;\n\n/**\n * Create a Flow\n * @see https://globusonline.github.io/globus-flows/#tag/Flows/paths/~1flows/post\n */\nexport const create = function (\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.paths['/flows']['post']['responses']['201']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.MANAGE_FLOWS,\n path: `/flows`,\n method: HTTP_METHODS.POST,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethod<{\n query?: never;\n payload: OpenAPI.paths['/flows']['post']['requestBody']['content']['application/json'];\n}>;\n\n/**\n * An alias for `create` to match the API documentation.\n */\nexport const deploy = create;\n\n/**\n * Update a Flow\n * @see https://globusonline.github.io/globus-flows/#tag/Flows/paths/~1flows~1{flow_id}/put\n */\nexport const update = function (\n flow_id,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.paths['/flows/{flow_id}']['put']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.MANAGE_FLOWS,\n path: `/flows/${flow_id}`,\n method: HTTP_METHODS.PUT,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: never;\n payload: OpenAPI.paths['/flows/{flow_id}']['put']['requestBody']['content']['application/json'];\n }\n>;\n", "import { ID, SCOPES } from '../config.js';\nimport { HTTP_METHODS, serviceRequest } from '../../shared.js';\n\nimport type {\n ServiceMethod,\n ServiceMethodDynamicSegments,\n JSONFetchResponse,\n} from '../../../services/types.js';\n\nimport type { OpenAPI } from '../index.js';\n\n/**\n * @see https://globusonline.github.io/globus-flows/#tag/Runs/paths/~1runs/get\n */\nexport const getAll = function (\n options = {},\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.paths['/runs']['get']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.RUN_MANAGE,\n path: `/runs`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethod<{\n query?: OpenAPI.paths['/runs']['get']['parameters']['query'];\n payload?: never;\n}>;\n\n/**\n * Get details about a run\n * @see https://globusonline.github.io/globus-flows/#tag/Runs/paths/~1runs~1{run_id}/get\n */\nexport const get = function (\n run_id,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.paths['/runs/{run_id}']['get']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.RUN_MANAGE,\n path: `/runs/${run_id}`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: OpenAPI.paths['/runs/{run_id}']['get']['parameters']['query'];\n payload?: never;\n }\n>;\n\n/**\n * Cancel the execution for a particular Run of a Flow.\n * https://globusonline.github.io/globus-flows/#tag/Runs/paths/~1runs~1%7Brun_id%7D~1cancel/post\n */\nexport const cancel = function (\n run_id,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.paths['/runs/{run_id}/cancel']['post']['responses']['202']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.RUN_MANAGE,\n path: `/runs/${run_id}/cancel`,\n method: HTTP_METHODS.POST,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: never;\n payload?: never;\n }\n>;\n\n/**\n * Retrieve detailed execution information for a particular Flow Run.\n * @see https://globusonline.github.io/globus-flows/#tag/Runs/paths/~1runs~1%7Baction_id%7D~1log/get\n */\nexport const getLog = function (\n run_id,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.paths['/runs/{run_id}/log']['get']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.RUN_MANAGE,\n path: `/runs/${run_id}/log`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: OpenAPI.paths['/runs/{run_id}/log']['get']['parameters']['query'];\n }\n>;\n\n/**\n * Update a Run's metadata.\n *\n * @see https://globusonline.github.io/globus-flows/#tag/Runs/paths/~1runs~1{run_id}/put\n */\nexport const update = function (\n run_id,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.paths['/runs/{run_id}']['put']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.RUN_MANAGE,\n path: `/runs/${run_id}`,\n method: HTTP_METHODS.PUT,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: never;\n payload?: OpenAPI.paths['/runs/{run_id}']['put']['requestBody']['content']['application/json'];\n }\n>;\n\n/**\n * Remove a Run.\n *\n * @see https://globusonline.github.io/globus-flows/#tag/Runs/paths/~1runs~1{run_id}~1release/post\n */\nexport const remove = function (\n run_id,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.paths['/runs/{run_id}/release']['post']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.RUN_MANAGE,\n path: `/runs/${run_id}/release`,\n method: HTTP_METHODS.POST,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: never;\n payload?: never;\n }\n>;\n\n/**\n * Get the Flow definition and input schema that were used to start a Run\n *\n * @see https://globusonline.github.io/globus-flows/#tag/Runs/paths/~1runs~1{run_id}~1definition/get\n */\nexport const getDefinition = function (\n run_id,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.paths['/runs/{run_id}/definition']['get']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.RUN_MANAGE,\n path: `/runs/${run_id}/definition`,\n method: HTTP_METHODS.GET,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: never;\n payload?: never;\n }\n>;\n", "/**\n * @description A wrapper around the Globus Connect Server Manager API.\n * @group Service\n * @see [Globus Connect Server Manager API Documentation](https://docs.globus.org/globus-connect-server/v5.4/api/)\n * @module\n */\nimport type {\n Segment,\n ServiceMethodOptions,\n SDKOptions,\n ServiceMethod,\n ServiceMethodDynamicSegments,\n BaseServiceMethodOptions,\n} from '../types.js';\n\nexport type * as OpenAPI from '../../open-api/types/gcs/v5.4.js';\n\n/**\n * Service methods for the Globus Connect Server Manager API.\n */\nexport * as collections from './service/collections.js';\nexport * as endpoint from './service/endpoint.js';\nexport * as https from './service/https.js';\nexport * as nodes from './service/nodes.js';\nexport * as roles from './service/roles.js';\nexport * as storageGateways from './service/storage-gateways.js';\nexport * as userCredentials from './service/user-credentials.js';\nexport * as versioning from './service/versioning.js';\n\nexport * as utils from './utils.js';\n\nconst SCOPES = {\n HIGH_ASSURANCE: 'urn:globus:auth:scope:<ENDPOINT_ID>:manage_collections',\n NON_HIGH_ASSURANCE:\n 'urn:globus:auth:scope:<ENDPOINT_ID>:manage_collections[*https://auth.globus.org/scopes/<MAPPED_COLLECTION_ID>/data_access]',\n};\n\nexport function getScopes(configuration: GCSConfiguration, scope?: keyof typeof SCOPES) {\n const { endpoint_id: id } = configuration;\n if (!id) {\n throw new Error(`An 'endpoint_id' is required to determine the required scopes`);\n }\n /**\n * If a specific scope is requested, return the scope with the `<ENDPOINT_ID>` placeholder replaced\n */\n if (scope) {\n return SCOPES[scope].replace('<ENDPOINT_ID>', id);\n }\n /**\n * Otherwise, return all scopes with the `<ENDPOINT_ID>` placeholder replaced.\n */\n return Object.entries(SCOPES).reduce(\n (reduc, [key, value]) => ({\n ...reduc,\n [key]: value.replace('<ENDPOINT_ID>', id),\n }),\n {},\n );\n}\n\n/**\n * The configuration object used by all Globus Connect Server Manager API methods.\n */\nexport type GCSConfiguration = {\n /**\n * The host (base URL) for the Globus Connect Server Manager API.\n * @example https://fa5e.bd7c.data.globus.org\n */\n host: string;\n /**\n * The UUID of the endpoint the GCS API is associated with.\n */\n endpoint_id: string;\n};\n\n/**\n * In the case of a resource that allows unauthenticated access, the only property required is the `host`.\n */\nexport type UnauthenticatedGCSConfiguration = Pick<GCSConfiguration, 'host'>;\n\n/**\n * The GCSServiceMethod type is similar to the core ServiceMethod type, but\n * the first parameter is always a GCSConfiguration object.\n */\nexport type GCSServiceMethod<\n O extends ServiceMethodOptions,\n R extends Response = Response,\n /**\n * If `true`, the service method allows unauthenticated access (will not attempt to send an `Authorization` header).\n */\n AllowUnauthenticated extends Boolean = false,\n> = (\n configuration: AllowUnauthenticated extends false\n ? GCSConfiguration\n : UnauthenticatedGCSConfiguration,\n methodOptions?: O & {\n query?: BaseServiceMethodOptions['query'];\n headers?: BaseServiceMethodOptions['headers'];\n },\n sdkOptions?: SDKOptions,\n) => ReturnType<ServiceMethod<O, R>>;\n\n/**\n * The GCSServiceMethodDynamicSegments type is similar to the core ServiceMethodDynamicSegments type, but\n * the first parameter is always a GCSConfiguration object.\n */\nexport type GCSServiceMethodDynamicSegments<\n S extends Segment,\n O extends ServiceMethodOptions,\n R extends Response = Response,\n> = (\n configuration: GCSConfiguration,\n segments: S,\n methodOptions?: O & {\n query?: BaseServiceMethodOptions['query'];\n headers?: BaseServiceMethodOptions['headers'];\n },\n sdkOptions?: SDKOptions,\n) => ReturnType<ServiceMethodDynamicSegments<S, O, R>>;\n", "import { HTTP_METHODS, serviceRequest } from '../../shared.js';\n\nimport type { OpenAPI, GCSServiceMethod, GCSServiceMethodDynamicSegments } from '../index.js';\n\nimport type { JSONFetchResponse } from '../../types.js';\n\n/**\n * @see https://docs.globus.org/globus-connect-server/v5.4/api/openapi_Collections/#listCollections\n */\nexport const getAll = function (\n configuration,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['listCollections']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: configuration,\n resource_server: configuration.endpoint_id,\n path: `/api/collections`,\n },\n options,\n sdkOptions,\n );\n} satisfies GCSServiceMethod<{\n query?: OpenAPI.operations['listCollections']['parameters']['query'];\n}>;\n\n/**\n * @see https://docs.globus.org/globus-connect-server/v5.4/api/openapi_Collections/#getCollection\n */\nexport const get = function (\n configuration,\n collection_id,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['getCollection']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: configuration,\n resource_server: configuration.endpoint_id,\n path: `/api/collections/${collection_id}`,\n },\n options,\n sdkOptions,\n );\n} satisfies GCSServiceMethodDynamicSegments<\n OpenAPI.operations['getCollection']['parameters']['path']['collection_id'],\n {\n query?: OpenAPI.operations['getCollection']['parameters']['query'];\n }\n>;\n\n/**\n * @see https://docs.globus.org/globus-connect-server/v5.4/api/openapi_Collections/#deleteCollection\n */\nexport const remove = function (\n configuration,\n collection_id,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['deleteCollection']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: configuration,\n resource_server: configuration.endpoint_id,\n path: `/api/collections/${collection_id}`,\n method: HTTP_METHODS.DELETE,\n },\n options,\n sdkOptions,\n );\n} satisfies GCSServiceMethodDynamicSegments<\n OpenAPI.operations['deleteCollection']['parameters']['path']['collection_id'],\n {\n query?: never;\n payload?: never;\n }\n>;\n\n/**\n * @see https://docs.globus.org/globus-connect-server/v5.4/api/openapi_Collections/#postCollection\n */\nexport const create = function (\n configuration,\n options,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['postCollection']['responses']['201']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: configuration,\n resource_server: configuration.endpoint_id,\n path: `/api/collections`,\n method: HTTP_METHODS.POST,\n },\n options,\n sdkOptions,\n );\n} satisfies GCSServiceMethod<{\n payload: OpenAPI.operations['postCollection']['requestBody']['content']['application/json'];\n}>;\n\n/**\n * @see https://docs.globus.org/globus-connect-server/v5.4/api/openapi_Collections/#putCollection\n */\nexport const update = function (\n configuration,\n collection_id,\n options,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['putCollection']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: configuration,\n resource_server: configuration.endpoint_id,\n path: `/api/collections/${collection_id}`,\n method: HTTP_METHODS.PUT,\n },\n options,\n sdkOptions,\n );\n} satisfies GCSServiceMethodDynamicSegments<\n OpenAPI.operations['putCollection']['parameters']['path']['collection_id'],\n {\n payload: OpenAPI.operations['putCollection']['requestBody']['content']['application/json'];\n }\n>;\n\n/**\n * @see https://docs.globus.org/globus-connect-server/v5.4/api/openapi_Collections/#patchCollection\n */\nexport const patch = function (\n configuration,\n collection_id,\n options,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['patchCollection']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: configuration,\n resource_server: configuration.endpoint_id,\n path: `/api/collections/${collection_id}`,\n method: HTTP_METHODS.PATCH,\n },\n options,\n sdkOptions,\n );\n} satisfies GCSServiceMethodDynamicSegments<\n OpenAPI.operations['patchCollection']['parameters']['path']['collection_id'],\n {\n payload: Partial<\n OpenAPI.operations['patchCollection']['requestBody']['content']['application/json']\n >;\n }\n>;\n\n/**\n * @see https://docs.globus.org/globus-connect-server/v5.4/api/openapi_Collections/#putCollectionOwnerString\n */\nexport const updateOwnerString = function (\n configuration,\n collection_id,\n options,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['putCollectionOwnerString']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: configuration,\n resource_server: configuration.endpoint_id,\n path: `/api/collections/${collection_id}/owner_string`,\n method: HTTP_METHODS.PUT,\n },\n options,\n sdkOptions,\n );\n} satisfies GCSServiceMethodDynamicSegments<\n OpenAPI.operations['putCollectionOwnerString']['parameters']['path']['collection_id'],\n {\n payload: Partial<\n OpenAPI.operations['putCollectionOwnerString']['requestBody']['content']['application/json']\n >;\n }\n>;\n\n/**\n * @see https://docs.globus.org/globus-connect-server/v5.4/api/openapi_Collections/#deleteCollectionOwnerString\n */\nexport const resetOwnerString = function (\n configuration,\n collection_id,\n options,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['deleteCollectionOwnerString']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: configuration,\n resource_server: configuration.endpoint_id,\n path: `/api/collections/${collection_id}/owner_string`,\n method: HTTP_METHODS.DELETE,\n },\n options,\n sdkOptions,\n );\n} satisfies GCSServiceMethodDynamicSegments<\n OpenAPI.operations['deleteCollectionOwnerString']['parameters']['path']['collection_id'],\n {}\n>;\n", "import { HTTP_METHODS, serviceRequest } from '../../shared.js';\n\nimport type { OpenAPI, GCSServiceMethod } from '../index.js';\nimport type { JSONFetchResponse } from '../../types.js';\n\n/**\n * @see https://docs.globus.org/globus-connect-server/v5.4/api/openapi_Endpoint/#getEndpoint\n */\nexport const get = function (\n configuration,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['getEndpoint']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: configuration,\n resource_server: configuration.endpoint_id,\n path: `/api/endpoint`,\n },\n options,\n sdkOptions,\n );\n} satisfies GCSServiceMethod<{\n query?: never;\n payload?: never;\n}>;\n\n/**\n * @see https://docs.globus.org/globus-connect-server/v5.4/api/openapi_Endpoint/#putEndpoint\n */\nexport const update = function (\n configuration,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['putEndpoint']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: configuration,\n resource_server: configuration.endpoint_id,\n path: `/api/endpoint`,\n method: HTTP_METHODS.PUT,\n },\n options,\n sdkOptions,\n );\n} satisfies GCSServiceMethod<{\n payload: Partial<OpenAPI.operations['putEndpoint']['requestBody']['content']['application/json']>;\n}>;\n\n/**\n * @see https://docs.globus.org/globus-connect-server/v5.4/api/openapi_Endpoint/#patchEndpoint\n */\nexport const patch = function (\n configuration,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['patchEndpoint']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: configuration,\n resource_server: configuration.endpoint_id,\n path: `/api/endpoint`,\n method: HTTP_METHODS.PATCH,\n },\n options,\n sdkOptions,\n );\n} satisfies GCSServiceMethod<{\n /**\n * @todo The generated PATCH type is resolving to the Endpoint document, which\n * has some properties that are required (i.e. `display_name`). For now, we're\n * just allowing unknown properties to be passed in, but we should fix this\n * when the auotgenerated types are corrected.\n */\n payload:\n | OpenAPI.operations['patchEndpoint']['requestBody']['content']['application/json']\n | Record<string, unknown>;\n}>;\n\n/**\n * @see https://docs.globus.org/globus-connect-server/v5.4/api/openapi_Endpoint/#putEndpointSubscriptionId\n */\nexport const updateSubscriptionId = function (\n configuration,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['putEndpointSubscriptionId']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: configuration,\n resource_server: configuration.endpoint_id,\n path: `/api/endpoint/subscription_id`,\n method: HTTP_METHODS.PUT,\n },\n options,\n sdkOptions,\n );\n} satisfies GCSServiceMethod<{\n payload: OpenAPI.operations['putEndpointSubscriptionId']['requestBody']['content']['application/json'];\n}>;\n\n/**\n * @see https://docs.globus.org/globus-connect-server/v5.4/api/openapi_Endpoint/#putEndpointOwner\n */\nexport const updateOwner = function (\n configuration,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['putEndpointOwner']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: configuration,\n resource_server: configuration.endpoint_id,\n path: `/api/endpoint/owner`,\n method: HTTP_METHODS.PUT,\n },\n options,\n sdkOptions,\n );\n} satisfies GCSServiceMethod<{\n payload: OpenAPI.operations['putEndpointOwner']['requestBody']['content']['application/json'];\n}>;\n\n/**\n * @see https://docs.globus.org/globus-connect-server/v5.4/api/openapi_Endpoint/#putEndpointOwnerString\n */\nexport const updateOwnerString = function (\n configuration,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['putEndpointOwnerString']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: configuration,\n resource_server: configuration.endpoint_id,\n path: `/api/endpoint/owner_string`,\n method: HTTP_METHODS.PUT,\n },\n options,\n sdkOptions,\n );\n} satisfies GCSServiceMethod<{\n payload: OpenAPI.operations['putEndpointOwnerString']['requestBody']['content']['application/json'];\n}>;\n\n/**\n * @see https://docs.globus.org/globus-connect-server/v5.4/api/openapi_Endpoint/#deleteEndpointOwnerString\n */\nexport const resetOwnerString = function (\n configuration,\n options,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['deleteEndpointOwnerString']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: configuration,\n resource_server: configuration.endpoint_id,\n path: `/api/endpoint/owner_string`,\n method: HTTP_METHODS.DELETE,\n },\n options,\n sdkOptions,\n );\n} satisfies GCSServiceMethod<{}>;\n", "import { HTTP_METHODS, serviceRequest } from '../../shared.js';\n\nimport type { GCSServiceMethodDynamicSegments } from '../index.js';\n\n/**\n * @see https://docs.globus.org/globus-connect-server/v5.4/https-access-collections/\n */\nexport const get = function (configuration, path, options?, sdkOptions?): Promise<Response> {\n return serviceRequest(\n {\n service: configuration,\n resource_server: configuration.endpoint_id,\n path,\n },\n options,\n sdkOptions,\n );\n} satisfies GCSServiceMethodDynamicSegments<\n string,\n {\n query?: {\n /**\n * @see https://docs.globus.org/globus-connect-server/v5.4/https-access-collections/#request_a_browser_download\n */\n download?: boolean;\n };\n }\n>;\n\n/**\n * @see https://docs.globus.org/globus-connect-server/v5.4/https-access-collections/\n */\nexport const remove = function (configuration, path, options?, sdkOptions?): Promise<Response> {\n return serviceRequest(\n {\n service: configuration,\n resource_server: configuration.endpoint_id,\n path,\n method: HTTP_METHODS.DELETE,\n },\n options,\n sdkOptions,\n );\n} satisfies GCSServiceMethodDynamicSegments<\n string,\n {\n query?: never;\n payload?: never;\n }\n>;\n\n/**\n * @see https://docs.globus.org/globus-connect-server/v5.4/https-access-collections/\n */\nexport const update = function (configuration, path, options, sdkOptions?): Promise<Response> {\n return serviceRequest(\n {\n service: configuration,\n resource_server: configuration.endpoint_id,\n path,\n method: HTTP_METHODS.PUT,\n },\n options,\n sdkOptions,\n );\n} satisfies GCSServiceMethodDynamicSegments<\n string,\n {\n query?: never;\n payload?: never;\n }\n>;\n", "import { HTTP_METHODS, serviceRequest } from '../../../services/shared.js';\n\nimport type { OpenAPI, GCSServiceMethod, GCSServiceMethodDynamicSegments } from '../index.js';\n\nimport type { JSONFetchResponse } from '../../types.js';\n\n/**\n * @see https://docs.globus.org/globus-connect-server/v5.4/api/openapi_Nodes/#listNodes\n */\nexport const getAll = function (\n configuration,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['listNodes']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: configuration,\n resource_server: configuration.endpoint_id,\n path: `/api/nodes`,\n },\n options,\n sdkOptions,\n );\n} satisfies GCSServiceMethod<{\n query?: OpenAPI.operations['listNodes']['parameters']['query'];\n}>;\n\n/**\n * @see https://docs.globus.org/globus-connect-server/v5.4/api/openapi_Nodes/#getNode\n */\nexport const get = function (\n configuration,\n node_id,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['getNode']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: configuration,\n resource_server: configuration.endpoint_id,\n path: `/api/nodes/${node_id}`,\n },\n options,\n sdkOptions,\n );\n} satisfies GCSServiceMethodDynamicSegments<\n OpenAPI.operations['getNode']['parameters']['path']['node_id'],\n {\n query?: never;\n payload?: never;\n }\n>;\n\n/**\n * @see https://docs.globus.org/globus-connect-server/v5.4/api/openapi_Nodes/#deleteNode\n */\nexport const remove = function (\n configuration,\n node_id,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['deleteNode']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: configuration,\n resource_server: configuration.endpoint_id,\n path: `/api/nodes/${node_id}`,\n method: HTTP_METHODS.DELETE,\n },\n options,\n sdkOptions,\n );\n} satisfies GCSServiceMethodDynamicSegments<\n OpenAPI.operations['deleteNode']['parameters']['path']['node_id'],\n {\n query?: never;\n payload?: never;\n }\n>;\n\n/**\n * @see https://docs.globus.org/globus-connect-server/v5.4/api/openapi_Nodes/#postNodes\n */\nexport const create = function (\n configuration,\n options,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['postNode']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: configuration,\n resource_server: configuration.endpoint_id,\n path: `/api/nodes`,\n method: HTTP_METHODS.POST,\n },\n options,\n sdkOptions,\n );\n} satisfies GCSServiceMethod<{\n payload: OpenAPI.operations['postNode']['requestBody']['content']['application/json'];\n}>;\n\n/**\n * @see https://docs.globus.org/globus-connect-server/v5.4/api/openapi_Nodes/#putNode\n */\nexport const update = function (\n configuration,\n node_id,\n options,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['putNode']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: configuration,\n resource_server: configuration.endpoint_id,\n path: `/api/nodes/${node_id}`,\n method: HTTP_METHODS.PUT,\n },\n options,\n sdkOptions,\n );\n} satisfies GCSServiceMethodDynamicSegments<\n OpenAPI.operations['putNode']['parameters']['path']['node_id'],\n {\n payload: OpenAPI.operations['putNode']['requestBody']['content']['application/json'];\n }\n>;\n\n/**\n * @see https://docs.globus.org/globus-connect-server/v5.4/api/openapi_Nodes/#patchNode\n */\nexport const patch = function (\n configuration,\n node_id,\n options,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['patchNode']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: configuration,\n resource_server: configuration.endpoint_id,\n path: `/api/nodes/${node_id}`,\n method: HTTP_METHODS.PATCH,\n },\n options,\n sdkOptions,\n );\n} satisfies GCSServiceMethodDynamicSegments<\n OpenAPI.operations['patchNode']['parameters']['path']['node_id'],\n {\n payload: Partial<OpenAPI.operations['patchNode']['requestBody']['content']['application/json']>;\n }\n>;\n", "import { HTTP_METHODS, serviceRequest } from '../../../services/shared.js';\n\nimport type { OpenAPI, GCSServiceMethod, GCSServiceMethodDynamicSegments } from '../index.js';\n\nimport type { JSONFetchResponse } from '../../types.js';\n/**\n * @see https://docs.globus.org/globus-connect-server/v5.4/api/openapi_Roles/#listRoles\n */\nexport const getAll = function (\n configuration,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['listRoles']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: configuration,\n resource_server: configuration.endpoint_id,\n path: `/api/roles`,\n },\n options,\n sdkOptions,\n );\n} satisfies GCSServiceMethod<{\n query?: OpenAPI.operations['listRoles']['parameters']['query'];\n}>;\n\n/**\n * @see https://docs.globus.org/globus-connect-server/v5.4/api/openapi_Roles/#getRole\n */\nexport const get = function (\n configuration,\n role_id,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['getRole']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: configuration,\n resource_server: configuration.endpoint_id,\n path: `/api/roles/${role_id}`,\n },\n options,\n sdkOptions,\n );\n} satisfies GCSServiceMethodDynamicSegments<\n OpenAPI.operations['getRole']['parameters']['path']['role_id'],\n {\n query?: never;\n payload?: never;\n }\n>;\n\n/**\n * @see https://docs.globus.org/globus-connect-server/v5.4/api/openapi_Roles/#deleteRole\n */\nexport const remove = function (\n configuration,\n role_id,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['deleteRole']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: configuration,\n resource_server: configuration.endpoint_id,\n path: `/api/roles/${role_id}`,\n method: HTTP_METHODS.DELETE,\n },\n options,\n sdkOptions,\n );\n} satisfies GCSServiceMethodDynamicSegments<\n OpenAPI.operations['deleteRole']['parameters']['path']['role_id'],\n {\n query?: never;\n payload?: never;\n }\n>;\n\n/**\n * @see https://docs.globus.org/globus-connect-server/v5.4/api/openapi_Roles/#postRoles\n */\nexport const create = function (\n configuration,\n options,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['postRoles']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: configuration,\n resource_server: configuration.endpoint_id,\n path: `/api/roles`,\n method: HTTP_METHODS.POST,\n },\n options,\n sdkOptions,\n );\n} satisfies GCSServiceMethod<{\n payload: OpenAPI.operations['postRoles']['requestBody']['content']['application/json'];\n}>;\n", "import { HTTP_METHODS, serviceRequest } from '../../../services/shared.js';\n\nimport type { OpenAPI, GCSServiceMethod, GCSServiceMethodDynamicSegments } from '../index.js';\n\nimport type { JSONFetchResponse } from '../../types.js';\n/**\n * @see https://docs.globus.org/globus-connect-server/v5.4/api/openapi_Storage_Gateways/#listStorageGateways\n */\nexport const getAll = function (\n configuration,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['listStorageGateways']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: configuration,\n resource_server: configuration.endpoint_id,\n path: `/api/storage_gateways`,\n },\n options,\n sdkOptions,\n );\n} satisfies GCSServiceMethod<{\n query?: OpenAPI.operations['listStorageGateways']['parameters']['query'];\n}>;\n\n/**\n * @see https://docs.globus.org/globus-connect-server/v5.4/api/openapi_Storage_Gateways/#getStorageGateway\n */\nexport const get = function (\n configuration,\n storage_gateway_id,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['getStorageGateway']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: configuration,\n resource_server: configuration.endpoint_id,\n path: `/api/storage_gateways/${storage_gateway_id}`,\n },\n options,\n sdkOptions,\n );\n} satisfies GCSServiceMethodDynamicSegments<\n OpenAPI.operations['getStorageGateway']['parameters']['path']['storage_gateway_id'],\n {\n query?: OpenAPI.operations['getStorageGateway']['parameters']['query'];\n }\n>;\n\n/**\n * @see https://docs.globus.org/globus-connect-server/v5.4/api/openapi_Storage_Gateways/#deleteStorageGateway\n */\nexport const remove = function (\n configuration,\n storage_gateway_id,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['deleteStorageGateway']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: configuration,\n resource_server: configuration.endpoint_id,\n path: `/api/storage_gateways/${storage_gateway_id}`,\n method: HTTP_METHODS.DELETE,\n },\n options,\n sdkOptions,\n );\n} satisfies GCSServiceMethodDynamicSegments<\n OpenAPI.operations['deleteStorageGateway']['parameters']['path']['storage_gateway_id'],\n {\n query?: never;\n payload?: never;\n }\n>;\n\n/**\n * @see https://docs.globus.org/globus-connect-server/v5.4/api/openapi_Storage_Gateways/#postStorageGateway\n */\nexport const create = function (\n configuration,\n options,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['postStorageGateway']['responses']['201']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: configuration,\n resource_server: configuration.endpoint_id,\n path: `/api/storage_gateways`,\n method: HTTP_METHODS.POST,\n },\n options,\n sdkOptions,\n );\n} satisfies GCSServiceMethod<{\n payload: OpenAPI.operations['postStorageGateway']['requestBody']['content']['application/json'];\n}>;\n\n/**\n * @see https://docs.globus.org/globus-connect-server/v5.4/api/openapi_Storage_Gateways/#putStorageGateway\n */\nexport const update = function (\n configuration,\n storage_gateway_id,\n options,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['putStorageGateway']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: configuration,\n resource_server: configuration.endpoint_id,\n path: `/api/storage_gateways/${storage_gateway_id}`,\n method: HTTP_METHODS.PUT,\n },\n options,\n sdkOptions,\n );\n} satisfies GCSServiceMethodDynamicSegments<\n OpenAPI.operations['putStorageGateway']['parameters']['path']['storage_gateway_id'],\n {\n payload: OpenAPI.operations['putStorageGateway']['requestBody']['content']['application/json'];\n }\n>;\n\n/**\n * @see https://docs.globus.org/globus-connect-server/v5.4/api/openapi_Storage_Gateways/#patchStorageGateway\n */\nexport const patch = function (\n configuration,\n storage_gateway_id,\n options,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['patchStorageGateway']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: configuration,\n resource_server: configuration.endpoint_id,\n path: `/api/storage_gateways/${storage_gateway_id}`,\n method: HTTP_METHODS.PATCH,\n },\n options,\n sdkOptions,\n );\n} satisfies GCSServiceMethodDynamicSegments<\n OpenAPI.operations['patchStorageGateway']['parameters']['path']['storage_gateway_id'],\n {\n payload: Partial<\n OpenAPI.operations['patchStorageGateway']['requestBody']['content']['application/json']\n >;\n }\n>;\n", "import { HTTP_METHODS, serviceRequest } from '../../../services/shared.js';\n\nimport type { OpenAPI, GCSServiceMethod, GCSServiceMethodDynamicSegments } from '../index.js';\n\nimport type { JSONFetchResponse } from '../../types.js';\n/**\n * @see https://docs.globus.org/globus-connect-server/v5.4/api/openapi_User_Credentials/#listUserCredentials\n */\nexport const getAll = function (\n configuration,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['listUserCredentials']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: configuration,\n resource_server: configuration.endpoint_id,\n path: `/api/user_credentials`,\n },\n options,\n sdkOptions,\n );\n} satisfies GCSServiceMethod<{\n query?: OpenAPI.operations['listUserCredentials']['parameters']['query'];\n}>;\n\n/**\n * @see https://docs.globus.org/globus-connect-server/v5.4/api/openapi_User_Credentials/#getUserCredential\n */\nexport const get = function (\n configuration,\n user_credential_id,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['getCollection']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: configuration,\n resource_server: configuration.endpoint_id,\n path: `/api/user_credentials/${user_credential_id}`,\n },\n options,\n sdkOptions,\n );\n} satisfies GCSServiceMethodDynamicSegments<\n OpenAPI.operations['getUserCredential']['parameters']['path']['user_credential_id'],\n {\n query?: never;\n payload?: never;\n }\n>;\n\n/**\n * @see https://docs.globus.org/globus-connect-server/v5.4/api/openapi_User_Credentials/#deleteUserCredential\n */\nexport const remove = function (\n configuration,\n user_credential_id,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['deleteUserCredential']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: configuration,\n resource_server: configuration.endpoint_id,\n path: `/api/user_credentials/${user_credential_id}`,\n method: HTTP_METHODS.DELETE,\n },\n options,\n sdkOptions,\n );\n} satisfies GCSServiceMethodDynamicSegments<\n OpenAPI.operations['deleteUserCredential']['parameters']['path']['user_credential_id'],\n {\n query?: never;\n payload?: never;\n }\n>;\n\n/**\n * @see https://docs.globus.org/globus-connect-server/v5.4/api/openapi_User_Credentials/#postUserCredential\n */\nexport const create = function (\n configuration,\n options,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['postUserCredential']['responses']['201']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: configuration,\n resource_server: configuration.endpoint_id,\n path: `/api/user_credentials`,\n method: HTTP_METHODS.POST,\n },\n options,\n sdkOptions,\n );\n} satisfies GCSServiceMethod<{\n payload: OpenAPI.operations['postUserCredential']['requestBody']['content']['application/json'];\n}>;\n\n/**\n * @see https://docs.globus.org/globus-connect-server/v5.4/api/openapi_User_Credentials/#putUserCredential\n */\nexport const update = function (\n configuration,\n user_credential_id,\n options,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['putUserCredential']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: configuration,\n resource_server: configuration.endpoint_id,\n path: `/api/user_credentials/${user_credential_id}`,\n method: HTTP_METHODS.PUT,\n },\n options,\n sdkOptions,\n );\n} satisfies GCSServiceMethodDynamicSegments<\n OpenAPI.operations['putUserCredential']['parameters']['path']['user_credential_id'],\n {\n payload: OpenAPI.operations['putUserCredential']['requestBody']['content']['application/json'];\n }\n>;\n\n/**\n * @see https://docs.globus.org/globus-connect-server/v5.4/api/openapi_User_Credentials/#patchUserCredential\n */\nexport const patch = function (\n configuration,\n user_credential_id,\n options,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['patchUserCredential']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: configuration,\n resource_server: configuration.endpoint_id,\n path: `/api/user_credentials/${user_credential_id}`,\n method: HTTP_METHODS.PATCH,\n },\n options,\n sdkOptions,\n );\n} satisfies GCSServiceMethodDynamicSegments<\n OpenAPI.operations['patchUserCredential']['parameters']['path']['user_credential_id'],\n {\n payload: Partial<\n OpenAPI.operations['patchUserCredential']['requestBody']['content']['application/json']\n >;\n }\n>;\n", "import { serviceRequest } from '../../../services/shared.js';\n\nimport type { OpenAPI, GCSServiceMethod } from '../index.js';\nimport type { JSONFetchResponse } from '../../types.js';\n\n/**\n * **This operation can be performed without an `Authorization` header.**\n * @see https://docs.globus.org/globus-connect-server/v5.4/api/openapi_Versioning/#getInfo\n */\nexport const info = function (\n configuration,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['getInfo']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: configuration,\n path: `/api/info`,\n },\n options,\n sdkOptions,\n );\n} satisfies GCSServiceMethod<\n {\n query?: never;\n payload?: never;\n },\n Response,\n true\n>;\n", "import { info } from './service/versioning.js';\n\n/**\n * The default domain for a Globus Connect Server instance.\n * @see https://docs.globus.org/globus-connect-server/v5.4/domain-guide/#default_domain_names\n */\nconst GCS_DEFAULT_DOMAIN = 'data.globus.org';\n\nexport function getGCSDomainFromURL(url: string | URL) {\n const { host } = typeof url === 'string' ? new URL(url) : url;\n if (!host.endsWith(GCS_DEFAULT_DOMAIN)) {\n /**\n * If the host does not end with the default domain, it is a custom domain and we'll return it as is.\n */\n return host;\n }\n const [subdomain] = host.split(`.${GCS_DEFAULT_DOMAIN}`);\n const parts = subdomain.split('.');\n /**\n * If the subdomain only has two parts, it is the domain of the endpoint.\n * Otherwise it is a subdomain on the endpoint domain (a collection label) we'll drop that part.\n */\n return (\n parts.length === 2 ? [...parts, GCS_DEFAULT_DOMAIN] : [parts[1], parts[2], GCS_DEFAULT_DOMAIN]\n ).join('.');\n}\n\n/**\n * Derive the Globus Connect Server Endpoint ID (UUID) from a URL.\n * This method can be useful for determining the `endpoint_id` when only an HTTPS asset URL is known.\n *\n * @todo This method will only return an `endpoint_id` for URLs that **do not** use a custom domain.\n * @param url The URL the endpoint will be attempted to be derived from.\n * @returns The Globus Connect Server Endpoint ID (UUID) or `null` if the endpoint could not be derived.\n */\nexport async function getEndpointIdFromURL(url: string | URL) {\n const u = typeof url === 'string' ? new URL(url) : url;\n const isCustomDomain = !u.host.endsWith(GCS_DEFAULT_DOMAIN);\n if (isCustomDomain) {\n /**\n * @todo This can likely be implemented by querying the TXT record of the domain to obtain the `client_id` of\n * the endpoint (which happens to be be the GCS Endpoint UUID).\n * @see https://docs.globus.org/globus-connect-server/v5.4/domain-guide/#dns_configuration\n */\n return null;\n }\n\n const res = await (\n await info({\n host: `https://${getGCSDomainFromURL(u)}`,\n })\n ).json();\n const i = res.data?.filter((d) => d.DATA_TYPE.startsWith('info#'))[0];\n return i && 'endpoint_id' in i ? i.endpoint_id : null;\n}\n", "/**\n * @description A wrapper around the Globus Timers service.\n * @group Service\n * @see [Globus Timers API Documentation](https://timer.automate.globus.org/docs#/)\n * @module\n */\nimport * as TIMERS from './config.js';\n\nexport type * as OpenAPI from '../../open-api/types/timers.js';\n\n/**\n * @private\n * @internal\n */\nexport const CONFIG = TIMERS;\n\nexport * as timer from './service/timer.js';\nexport * as jobs from './service/jobs/index.js';\n", "import { HTTP_METHODS, serviceRequest } from '../../shared.js';\nimport { ID } from '../config.js';\n\nimport type { OpenAPI } from '../index.js';\nimport type { ServiceMethod } from '../../types.js';\nimport { RESOURCE_SERVERS } from '../../auth/config.js';\n\n/**\n * The Timer OpenAPI definitions include default vaules which will present as **required** in\n * the creation context. We're overriding the generated types to make these fields optional.\n */\ntype OpenAPITimer = OpenAPI.components['schemas']['V2TransferTimerCreate'];\ntype OpenAPITransferTaskDocument = OpenAPI.components['schemas']['TransferTaskDocument'];\n\ntype TransferTaskDocument = Omit<\n OpenAPITransferTaskDocument,\n | 'DATA_TYPE'\n | 'delete_destination_extra'\n | 'encrypt_data'\n | 'fail_on_quota_errors'\n | 'notify_on_failed'\n | 'notify_on_inactive'\n | 'notify_on_succeeded'\n | 'preserve_timestamp'\n | 'skip_source_errors'\n | 'store_base_path_info'\n | 'verify_checksum'\n> & {\n DATA_TYPE?: OpenAPITransferTaskDocument['DATA_TYPE'];\n delete_destination_extra?: OpenAPITransferTaskDocument['delete_destination_extra'];\n encrypt_data?: OpenAPITransferTaskDocument['encrypt_data'];\n fail_on_quota_errors?: OpenAPITransferTaskDocument['fail_on_quota_errors'];\n notify_on_failed?: OpenAPITransferTaskDocument['notify_on_failed'];\n notify_on_inactive?: OpenAPITransferTaskDocument['notify_on_inactive'];\n notify_on_succeeded?: OpenAPITransferTaskDocument['notify_on_succeeded'];\n preserve_timestamp?: OpenAPITransferTaskDocument['preserve_timestamp'];\n skip_source_errors?: OpenAPITransferTaskDocument['skip_source_errors'];\n store_base_path_info?: OpenAPITransferTaskDocument['store_base_path_info'];\n verify_checksum?: OpenAPITransferTaskDocument['verify_checksum'];\n};\n\ntype TimerCreatePayload = {\n timer: Omit<OpenAPITimer, 'resource_server' | 'body'> & {\n resource_server?: OpenAPITimer['resource_server'];\n body: TransferTaskDocument;\n };\n};\n\nexport const create = function (options, sdkOptions?) {\n return serviceRequest(\n {\n service: ID,\n resource_server: RESOURCE_SERVERS.TIMERS,\n path: '/v2/timer',\n method: HTTP_METHODS.POST,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethod<{\n payload: TimerCreatePayload;\n}>;\n", "import { HTTP_METHODS, serviceRequest } from '../../../shared.js';\nimport { ID } from '../../config.js';\nimport { RESOURCE_SERVERS } from '../../../auth/config.js';\n\nimport type { OpenAPI } from '../../index.js';\nimport type {\n ServiceMethod,\n ServiceMethodDynamicSegments,\n JSONFetchResponse,\n} from '../../../types.js';\n\n/**\n * @see https://timer.automate.globus.org/redoc#tag/jobs/operation/list_jobs_jobs__get\n */\nexport const getAll = function (\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['list_jobs_jobs__get']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: ID,\n resource_server: RESOURCE_SERVERS[ID],\n path: '/jobs',\n method: HTTP_METHODS.GET,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethod<{\n query?: OpenAPI.operations['list_jobs_jobs__get']['parameters']['query'];\n payload?: never;\n}>;\n\n/**\n * @see https://timer.automate.globus.org/redoc#tag/jobs/operation/read_job_jobs__job_id__get\n */\nexport const get = function (\n job_id,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['read_job_jobs__job_id__get']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: ID,\n resource_server: RESOURCE_SERVERS[ID],\n path: `/jobs/${job_id}`,\n method: HTTP_METHODS.GET,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: OpenAPI.operations['read_job_jobs__job_id__get']['parameters']['query'];\n payload?: never;\n }\n>;\n\n/**\n * @see https://timer.automate.globus.org/redoc#tag/jobs/operation/update_job_jobs__job_id__patch\n */\nexport const patch = function (\n job_id,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['update_job_jobs__job_id__patch']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: ID,\n resource_server: RESOURCE_SERVERS[ID],\n path: `/jobs/${job_id}`,\n method: HTTP_METHODS.PATCH,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n payload: OpenAPI.operations['update_job_jobs__job_id__patch']['requestBody']['content']['application/json'];\n }\n>;\n\n/**\n * @see https://timer.automate.globus.org/redoc#tag/jobs/operation/pause_job_jobs__job_id__pause_post\n */\nexport const pause = function (\n job_id,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['pause_job_jobs__job_id__pause_post']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: ID,\n resource_server: RESOURCE_SERVERS[ID],\n path: `/jobs/${job_id}/pause`,\n method: HTTP_METHODS.POST,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n payload?: never;\n body?: never;\n query?: never;\n }\n>;\n\n/**\n * @see https://timer.automate.globus.org/redoc#tag/jobs/operation/resume_job_jobs__job_id__resume_post\n */\nexport const resume = function (\n job_id,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['resume_job_jobs__job_id__resume_post']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: ID,\n resource_server: RESOURCE_SERVERS[ID],\n path: `/jobs/${job_id}/resume`,\n method: HTTP_METHODS.POST,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n payload?: never;\n body?: never;\n query?: OpenAPI.operations['resume_job_jobs__job_id__resume_post']['parameters']['query'];\n }\n>;\n\n/**\n * @see https://timer.automate.globus.org/redoc#tag/jobs/operation/delete_timer_jobs__timer_id__delete\n */\nexport const remove = function (\n job_id,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['delete_timer_jobs__timer_id__delete']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: ID,\n resource_server: RESOURCE_SERVERS[ID],\n path: `/jobs/${job_id}`,\n method: HTTP_METHODS.DELETE,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n payload?: never;\n body?: never;\n query?: never;\n }\n>;\n", "/**\n * @description A wrapper around the Globus Compute service.\n * @group Service\n * @see [Globus Compute API Documentation](https://api2.funcx.org/redoc)\n * @module\n */\nimport * as COMPUTE from './config.js';\n\nexport type * as OpenAPI from '../../open-api/types/compute.js';\n\n/**\n * @private\n * @internal\n */\nexport const CONFIG = COMPUTE;\n\nexport * as endpoints from './service/endpoints.js';\n", "import { HTTP_METHODS, serviceRequest } from '../../shared.js';\nimport { ID, SCOPES } from '../config.js';\n\nimport type {\n ServiceMethod,\n ServiceMethodDynamicSegments,\n JSONFetchResponse,\n} from '../../types.js';\n\nimport type { OpenAPI } from '../index.js';\n\n/**\n * @see https://compute.api.globus.org/redoc#tag/Endpoints/operation/get_endpoints_v2_endpoints_get\n */\nexport const getAll = function (\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['get_endpoints_v2_endpoints_get']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: '/v2/endpoints',\n method: HTTP_METHODS.GET,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethod<{\n query: OpenAPI.operations['get_endpoints_v2_endpoints_get']['parameters']['query'];\n}>;\n\n/**\n * @see https://compute.api.globus.org/redoc#tag/Endpoints/operation/get_endpoint_v2_endpoints__endpoint_uuid__get\n */\nexport const get = function (\n endpoint_uuid,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['get_endpoint_v2_endpoints__endpoint_uuid__get']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v2/endpoints/${endpoint_uuid}`,\n method: HTTP_METHODS.GET,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n OpenAPI.operations['get_endpoint_v2_endpoints__endpoint_uuid__get']['parameters']['path']['endpoint_uuid'],\n {\n query?: never;\n payload?: never;\n }\n>;\n\n/**\n * @see https://compute.api.globus.org/redoc#tag/Endpoints/operation/get_endpoint_status_v2_endpoints__endpoint_uuid__status_get\n */\nexport const getStatus = function (\n endpoint_uuid,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['get_endpoint_status_v2_endpoints__endpoint_uuid__status_get']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v2/endpoints/${endpoint_uuid}/status`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n OpenAPI.operations['get_endpoint_status_v2_endpoints__endpoint_uuid__status_get']['parameters']['path']['endpoint_uuid'],\n {\n query?: never;\n payload?: never;\n }\n>;\n\n/**\n * @see https://compute.api.globus.org/redoc#tag/Endpoints/operation/update_endpoint_v3_endpoints__endpoint_uuid__put\n */\nexport const update = function (\n endpoint_uuid,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['update_endpoint_v3_endpoints__endpoint_uuid__put']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v3/endpoints/${endpoint_uuid}`,\n method: HTTP_METHODS.PUT,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n OpenAPI.operations['update_endpoint_v3_endpoints__endpoint_uuid__put']['parameters']['path']['endpoint_uuid'],\n {\n query?: never;\n payload: Partial<\n OpenAPI.operations['update_endpoint_v3_endpoints__endpoint_uuid__put']['requestBody']['content']['application/json']\n >;\n }\n>;\n\n/**\n * @see https://compute.api.globus.org/redoc#tag/Endpoints/operation/delete_endpoint_v2_endpoints__endpoint_uuid__delete\n */\nexport const remove = function (\n endpoint_uuid,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['delete_endpoint_v2_endpoints__endpoint_uuid__delete']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v2/endpoints/${endpoint_uuid}`,\n method: HTTP_METHODS.DELETE,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n OpenAPI.operations['delete_endpoint_v2_endpoints__endpoint_uuid__delete']['parameters']['path']['endpoint_uuid'],\n {\n query?: never;\n payload?: never;\n }\n>;\n", "/**\n * Utilities and methods related to the Globus Web App.\n * @see https://app.globus.org/\n */\n\nimport { getEnvironment, type Environment } from '../core/global.js';\nimport type { SDKOptions } from '../services/types.js';\n\n/**\n * The hostnames for the Globus Web App in each environment.\n */\nexport const HOSTS: Record<Environment, string> = {\n integration: 'app.integration.globuscs.info',\n sandbox: 'app.sandbox.globuscs.info',\n test: 'app.test.globuscs.info',\n staging: 'app.staging.globuscs.info',\n preview: 'app.preview.globus.org',\n production: 'app.globus.org',\n};\n\n/**\n * Return the hostname for the Globus Web App in the given environment.\n */\nexport function host(env: Environment = getEnvironment()) {\n return HOSTS[env];\n}\n\n/**\n * Return a URL for the Globus Web App.\n */\nexport function url(path?: string, sdkOptions?: SDKOptions) {\n return new URL(path || '', `https://${host(sdkOptions?.environment)}`);\n}\n\ntype WebAppURLIdentifier = 'TASK' | 'COLLECTION' | 'ENDPOINT';\n\nconst WEBAPP_URLS: Record<WebAppURLIdentifier, string> = {\n TASK: '/activity/%s/overview',\n COLLECTION: '/file-manager/collections/%s/overview',\n ENDPOINT: '/file-manager/collections/%s/overview',\n};\n\n/**\n * Obtain a URL for a specific page in the Globus Web App.\n * @example\n * ```typescript\n * const url = urlFor('TASK', ['example-uuid']);\n * ```\n */\nexport function urlFor(\n identifier: WebAppURLIdentifier,\n segments?: string[],\n sdkOptions?: SDKOptions,\n) {\n const path = WEBAPP_URLS[identifier].replace(/%s/g, segments?.join('/') || '');\n return url(path, sdkOptions);\n}\n"],
|
|
5
|
-
"mappings": "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CAN,EACAC,EASA,CACA,OAAOC,EACL,CACE,QAASC,EACT,MAAOC,EAAO,IACd,KAAM,eAAeE,CAAO,GAC5B,YACF,EACAN,EACAC,CACF,CACF,EAWaO,GAAS,SACpBF,EACAN,EACAC,EAC0C,CAC1C,OAAOC,EACL,CACE,QAASC,EACT,MAAOC,EAAO,IACd,KAAM,eAAeE,CAAO,UAC5B,aACF,EACAN,EACAC,CACF,CACF,EAWaQ,GAAS,SACpBH,EACAN,EACAC,EAC0C,CAC1C,OAAOC,EACL,CACE,QAASC,EACT,MAAOC,EAAO,IACd,KAAM,eAAeE,CAAO,UAC5B,aACF,EACAN,EACAC,CACF,CACF,EA4BaS,GAAe,SAC1BJ,EACAN,EACAC,EACgF,CAChF,OAAOC,EACL,CACE,QAASC,EACT,MAAOC,EAAO,IACd,KAAM,eAAeE,CAAO,aAC9B,EACAN,EACAC,CACF,CACF,EAkCaU,GAAyB,SACpCL,EACAN,EACAC,EAC6D,CAC7D,OAAOC,EACL,CACE,QAASC,EACT,MAAOC,EAAO,IACd,KAAM,eAAeE,CAAO,uBAC9B,EACAN,EACAC,CACF,CACF,EAsCaW,GAAmB,SAC9BN,EACAN,EACAC,EACoF,CACpF,OAAOC,EACL,CACE,QAASC,EACT,MAAOC,EAAO,IACd,KAAM,eAAeE,CAAO,iBAC9B,EACAN,EACAC,CACF,CACF,EAiCaY,GAAe,SAC1BP,EACAN,EACAC,EACsD,CACtD,OAAOC,EACL,CACE,QAASC,EACT,MAAOC,EAAO,IACd,KAAM,eAAeE,CAAO,aAC9B,EACAN,EACAC,CACF,CACF,EClZA,IAAAa,GAAA,GAAAC,EAAAD,GAAA,YAAAE,GAAA,QAAAC,GAAA,WAAAC,GAAA,WAAAC,GAAA,WAAAC,KAkCO,IAAMC,GAAS,SACpBC,EACAC,EACAC,EACgD,CAChD,OAAOC,EACL,CACE,QAASC,EACT,MAAOC,EAAO,IACd,KAAM,mBAAmBL,CAAY,cACvC,EACAC,EACAC,CACF,CACF,EAWaI,GAAS,SACpBN,EACAC,EACAC,EAC4C,CAC5C,OAAOC,EACL,CACE,QAASC,EACT,MAAOC,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,IACd,KAAM,kBACR,EACAJ,EACAC,CACF,CACF,EAoBaI,GAAM,SACjBC,EACAN,EACAC,EACyD,CACzD,OAAOC,EACL,CACE,QAASC,EACT,MAAOC,EAAO,IACd,KAAM,gCAAgCE,CAAO,EAC/C,EACAN,EACAC,CACF,CACF,EAsBaM,GAAS,SACpBP,EACAC,EAOA,CACA,OAAOC,EACL,CACE,QAASC,EACT,MAAOC,EAAO,IACd,KAAM,uCACN,aACF,EACAJ,EACAC,CACF,CACF,EAYaO,GAAiB,SAC5BC,EACAT,EACAC,EACiD,CACjD,OAAOC,EACL,CACE,QAASC,EACT,MAAOC,EAAO,IACd,KAAM,wCAAwCK,CAAe,GAC7D,aACF,EACAT,EACAC,CACF,CACF,EAWaS,GAAe,SAC1BJ,EACAN,EACAC,EACgF,CAChF,OAAOC,EACL,CACE,QAASC,EACT,MAAOC,EAAO,IACd,KAAM,gCAAgCE,CAAO,aAC/C,EACAN,EACAC,CACF,CACF,EAWaU,GAAyB,SACpCL,EACAN,EACAC,EACqF,CACrF,OAAOC,EACL,CACE,QAASC,EACT,MAAOC,EAAO,IACd,KAAM,gCAAgCE,CAAO,uBAC/C,EACAN,EACAC,CACF,CACF,EAWaW,GAAmB,SAC9BN,EACAN,EACAC,EACoF,CACpF,OAAOC,EACL,CACE,QAASC,EACT,MAAOC,EAAO,IACd,KAAM,gCAAgCE,CAAO,iBAC/C,EACAN,EACAC,CACF,CACF,EAoBaY,GAAQ,SACnBb,EACAC,EACgD,CAChD,OAAOC,EACL,CACE,QAASC,EACT,MAAOC,EAAO,IACd,KAAM,sCACN,aACF,EACAJ,EACAC,CACF,CACF,EAeaa,GAAS,SACpBd,EACAC,EACiD,CACjD,OAAOC,EACL,CACE,QAASC,EACT,MAAOC,EAAO,IACd,KAAM,uCACN,aACF,EACAJ,EACAC,CACF,CACF,EAQac,GAAe,SAC1BT,EACAN,EACAC,EAC+C,CAC/C,OAAOC,EACL,CACE,QAASC,EACT,MAAOC,EAAO,IACd,KAAM,gCAAgCE,CAAO,aAC/C,EACAN,EACAC,CACF,CACF,ECxVA,IAAAe,G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ACT,MAAOC,EAAO,WACd,KAAM,UAAUE,CAAO,OACvB,aACF,EACAN,EACAC,CACF,CACF,EAiBaQ,GAAW,SACtBT,EACAC,EAMA,CACA,OAAOC,EACL,CACE,QAASC,EACT,MAAOC,EAAO,aACd,KAAM,kBACN,aACF,EACAJ,EACAC,CACF,CACF,EASaS,GAAS,SACpBV,EACAC,EAKA,CACA,OAAOC,EACL,CACE,QAASC,EACT,MAAOC,EAAO,aACd,KAAM,SACN,aACF,EACAJ,EACAC,CACF,CACF,EAQaU,GAASD,GAMTE,GAAS,SACpBN,EACAN,EACAC,EAKA,CACA,OAAOC,EACL,CACE,QAASC,EACT,MAAOC,EAAO,aACd,KAAM,UAAUE,CAAO,GACvB,YACF,EACAN,EACAC,CACF,CACF,ECpNA,IAAAY,GAAA,GAAAC,EAAAD,GAAA,YAAAE,GAAA,QAAAC,GAAA,WAAAC,GAAA,kBAAAC,GAAA,WAAAC,GAAA,WAAAC,GAAA,WAAAC,KAcO,IAAMC,GAAS,SACpBC,EAAU,CAAC,EACXC,EAKA,CACA,OAAOC,EACL,CACE,QAASC,EACT,MAAOC,EAAO,WACd,KAAM,OACR,EACAJ,EACAC,CACF,CACF,EASaI,GAAM,SACjBC,EACAN,EACAC,EAKA,CACA,OAAOC,EACL,CACE,QAASC,EACT,MAAOC,EAAO,WACd,KAAM,SAASE,CAAM,EACvB,EACAN,EACAC,CACF,CACF,EAYaM,GAAS,SACpBD,EACAN,EACAC,EAKA,CACA,OAAOC,EACL,CACE,QAASC,EACT,MAAOC,EAAO,WACd,KAAM,SAASE,CAAM,UACrB,aACF,EACAN,EACAC,CACF,CACF,EAYaO,GAAS,SACpBF,EACAN,EACAC,EAKA,CACA,OAAOC,EACL,CACE,QAASC,EACT,MAAOC,EAAO,WACd,KAAM,SAASE,CAAM,MACvB,EACAN,EACAC,CACF,CACF,EAYaQ,GAAS,SACpBH,EACAN,EACAC,EAKA,CACA,OAAOC,EACL,CACE,QAASC,EACT,MAAOC,EAAO,WACd,KAAM,SAASE,CAAM,GACrB,YACF,EACAN,EACAC,CACF,CACF,EAaaS,GAAS,SACpBJ,EACAN,EACAC,EAKA,CACA,OAAOC,EACL,CACE,QAASC,EACT,MAAOC,EAAO,WACd,KAAM,SAASE,CAAM,WACrB,aACF,EACAN,EACAC,CACF,CACF,EAaaU,GAAgB,SAC3BL,EACAN,EACAC,EAKA,CACA,OAAOC,EACL,CACE,QAASC,EACT,MAAOC,EAAO,WACd,KAAM,SAASE,CAAM,cACrB,YACF,EACAN,EACAC,CACF,CACF,EFxMO,IAAMW,GAASC,GGdtB,IAAAC,GAAA,GAAAC,EAAAD,GAAA,iBAAAE,GAAA,aAAAC,GAAA,cAAAC,GAAA,UAAAC,GAAA,UAAAC,GAAA,UAAAC,GAAA,oBAAAC,GAAA,oBAAAC,GAAA,UAAAC,GAAA,eAAAC,KCAA,IAAAC,GAAA,GAAAC,EAAAD,GAAA,YAAAE,GAAA,QAAAC,GAAA,WAAAC,GAAA,UAAAC,GAAA,WAAAC,GAAA,qBAAAC,GAAA,WAAAC,GAAA,sBAAAC,KASO,IAAMC,GAAS,SACpBC,EACAC,EACAC,EAKA,CACA,OAAOC,EACL,CACE,QAASH,EACT,gBAAiBA,EAAc,YAC/B,KAAM,kBACR,EACAC,EACAC,CACF,CACF,EAOaE,GAAM,SACjBJ,EACAK,EACAJ,EACAC,EAKA,CACA,OAAOC,EACL,CACE,QAASH,EACT,gBAAiBA,EAAc,YAC/B,KAAM,oBAAoBK,CAAa,EACzC,EACAJ,EACAC,CACF,CACF,EAUaI,GAAS,SACpBN,EACAK,EACAJ,EACAC,EAKA,CACA,OAAOC,EACL,CACE,QAASH,EACT,gBAAiBA,EAAc,YAC/B,KAAM,oBAAoBK,CAAa,GACvC,eACF,EACAJ,EACAC,CACF,CACF,EAWaK,GAAS,SACpBP,EACAC,EACAC,EAKA,CACA,OAAOC,EACL,CACE,QAASH,EACT,gBAAiBA,EAAc,YAC/B,KAAM,mBACN,aACF,EACAC,EACAC,CACF,CACF,EAOaM,GAAS,SACpBR,EACAK,EACAJ,EACAC,EAKA,CACA,OAAOC,EACL,CACE,QAASH,EACT,gBAAiBA,EAAc,YAC/B,KAAM,oBAAoBK,CAAa,GACvC,YACF,EACAJ,EACAC,CACF,CACF,EAUaO,GAAQ,SACnBT,EACAK,EACAJ,EACAC,EAKA,CACA,OAAOC,EACL,CACE,QAASH,EACT,gBAAiBA,EAAc,YAC/B,KAAM,oBAAoBK,CAAa,GACvC,cACF,EACAJ,EACAC,CACF,CACF,EAYaQ,GAAoB,SAC/BV,EACAK,EACAJ,EACAC,EAKA,CACA,OAAOC,EACL,CACE,QAASH,EACT,gBAAiBA,EAAc,YAC/B,KAAM,oBAAoBK,CAAa,gBACvC,YACF,EACAJ,EACAC,CACF,CACF,EAYaS,GAAmB,SAC9BX,EACAK,EACAJ,EACAC,EAKA,CACA,OAAOC,EACL,CACE,QAASH,EACT,gBAAiBA,EAAc,YAC/B,KAAM,oBAAoBK,CAAa,gBACvC,eACF,EACAJ,EACAC,CACF,CACF,EC1OA,IAAAU,GAAA,GAAAC,EAAAD,GAAA,SAAAE,GAAA,UAAAC,GAAA,qBAAAC,GAAA,WAAAC,GAAA,gBAAAC,GAAA,sBAAAC,GAAA,yBAAAC,KAQO,IAAMC,GAAM,SACjBC,EACAC,EACAC,EAKA,CACA,OAAOC,EACL,CACE,QAASH,EACT,gBAAiBA,EAAc,YAC/B,KAAM,eACR,EACAC,EACAC,CACF,CACF,EAQaE,GAAS,SACpBJ,EACAC,EACAC,EAKA,CACA,OAAOC,EACL,CACE,QAASH,EACT,gBAAiBA,EAAc,YAC/B,KAAM,gBACN,YACF,EACAC,EACAC,CACF,CACF,EAOaG,GAAQ,SACnBL,EACAC,EACAC,EAKA,CACA,OAAOC,EACL,CACE,QAASH,EACT,gBAAiBA,EAAc,YAC/B,KAAM,gBACN,cACF,EACAC,EACAC,CACF,CACF,EAeaI,GAAuB,SAClCN,EACAC,EACAC,EAKA,CACA,OAAOC,EACL,CACE,QAASH,EACT,gBAAiBA,EAAc,YAC/B,KAAM,gCACN,YACF,EACAC,EACAC,CACF,CACF,EAOaK,GAAc,SACzBP,EACAC,EACAC,EAKA,CACA,OAAOC,EACL,CACE,QAASH,EACT,gBAAiBA,EAAc,YAC/B,KAAM,sBACN,YACF,EACAC,EACAC,CACF,CACF,EAOaM,GAAoB,SAC/BR,EACAC,EACAC,EAKA,CACA,OAAOC,EACL,CACE,QAASH,EACT,gBAAiBA,EAAc,YAC/B,KAAM,6BACN,YACF,EACAC,EACAC,CACF,CACF,EAOaO,GAAmB,SAC9BT,EACAC,EACAC,EAKA,CACA,OAAOC,EACL,CACE,QAASH,EACT,gBAAiBA,EAAc,YAC/B,KAAM,6BACN,eACF,EACAC,EACAC,CACF,CACF,EC/LA,IAAAQ,GAAA,GAAAC,EAAAD,GAAA,SAAAE,GAAA,WAAAC,GAAA,WAAAC,KAOO,IAAMC,GAAM,SAAUC,EAAeC,EAAMC,EAAUC,EAAgC,CAC1F,OAAOC,EACL,CACE,QAASJ,EACT,gBAAiBA,EAAc,YAC/B,KAAAC,CACF,EACAC,EACAC,CACF,CACF,EAeaE,GAAS,SAAUL,EAAeC,EAAMC,EAAUC,EAAgC,CAC7F,OAAOC,EACL,CACE,QAASJ,EACT,gBAAiBA,EAAc,YAC/B,KAAAC,EACA,eACF,EACAC,EACAC,CACF,CACF,EAWaG,GAAS,SAAUN,EAAeC,EAAMC,EAASC,EAAgC,CAC5F,OAAOC,EACL,CACE,QAASJ,EACT,gBAAiBA,EAAc,YAC/B,KAAAC,EACA,YACF,EACAC,EACAC,CACF,CACF,ECjEA,IAAAI,GAAA,GAAAC,EAAAD,GAAA,YAAAE,GAAA,QAAAC,GAAA,WAAAC,GAAA,UAAAC,GAAA,WAAAC,GAAA,WAAAC,KASO,IAAMC,GAAS,SACpBC,EACAC,EACAC,EAKA,CACA,OAAOC,EACL,CACE,QAASH,EACT,gBAAiBA,EAAc,YAC/B,KAAM,YACR,EACAC,EACAC,CACF,CACF,EAOaE,GAAM,SACjBJ,EACAK,EACAJ,EACAC,EAKA,CACA,OAAOC,EACL,CACE,QAASH,EACT,gBAAiBA,EAAc,YAC/B,KAAM,cAAcK,CAAO,EAC7B,EACAJ,EACAC,CACF,CACF,EAWaI,GAAS,SACpBN,EACAK,EACAJ,EACAC,EAKA,CACA,OAAOC,EACL,CACE,QAASH,EACT,gBAAiBA,EAAc,YAC/B,KAAM,cAAcK,CAAO,GAC3B,eACF,EACAJ,EACAC,CACF,CACF,EAWaK,GAAS,SACpBP,EACAC,EACAC,EAKA,CACA,OAAOC,EACL,CACE,QAASH,EACT,gBAAiBA,EAAc,YAC/B,KAAM,aACN,aACF,EACAC,EACAC,CACF,CACF,EAOaM,GAAS,SACpBR,EACAK,EACAJ,EACAC,EAKA,CACA,OAAOC,EACL,CACE,QAASH,EACT,gBAAiBA,EAAc,YAC/B,KAAM,cAAcK,CAAO,GAC3B,YACF,EACAJ,EACAC,CACF,CACF,EAUaO,GAAQ,SACnBT,EACAK,EACAJ,EACAC,EAKA,CACA,OAAOC,EACL,CACE,QAASH,EACT,gBAAiBA,EAAc,YAC/B,KAAM,cAAcK,CAAO,GAC3B,cACF,EACAJ,EACAC,CACF,CACF,EC3KA,IAAAQ,GAAA,GAAAC,EAAAD,GAAA,YAAAE,GAAA,QAAAC,GAAA,WAAAC,GAAA,WAAAC,KAQO,IAAMC,GAAS,SACpBC,EACAC,EACAC,EAKA,CACA,OAAOC,EACL,CACE,QAASH,EACT,gBAAiBA,EAAc,YAC/B,KAAM,YACR,EACAC,EACAC,CACF,CACF,EAOaE,GAAM,SACjBJ,EACAK,EACAJ,EACAC,EAKA,CACA,OAAOC,EACL,CACE,QAASH,EACT,gBAAiBA,EAAc,YAC/B,KAAM,cAAcK,CAAO,EAC7B,EACAJ,EACAC,CACF,CACF,EAWaI,GAAS,SACpBN,EACAK,EACAJ,EACAC,EAKA,CACA,OAAOC,EACL,CACE,QAASH,EACT,gBAAiBA,EAAc,YAC/B,KAAM,cAAcK,CAAO,GAC3B,eACF,EACAJ,EACAC,CACF,CACF,EAWaK,GAAS,SACpBP,EACAC,EACAC,EAKA,CACA,OAAOC,EACL,CACE,QAASH,EACT,gBAAiBA,EAAc,YAC/B,KAAM,aACN,aACF,EACAC,EACAC,CACF,CACF,ECjHA,IAAAM,GAAA,GAAAC,EAAAD,GAAA,YAAAE,GAAA,QAAAC,GAAA,WAAAC,GAAA,UAAAC,GAAA,WAAAC,GAAA,WAAAC,KAQO,IAAMC,GAAS,SACpBC,EACAC,EACAC,EAKA,CACA,OAAOC,EACL,CACE,QAASH,EACT,gBAAiBA,EAAc,YAC/B,KAAM,uBACR,EACAC,EACAC,CACF,CACF,EAOaE,GAAM,SACjBJ,EACAK,EACAJ,EACAC,EAKA,CACA,OAAOC,EACL,CACE,QAASH,EACT,gBAAiBA,EAAc,YAC/B,KAAM,yBAAyBK,CAAkB,EACnD,EACAJ,EACAC,CACF,CACF,EAUaI,GAAS,SACpBN,EACAK,EACAJ,EACAC,EAKA,CACA,OAAOC,EACL,CACE,QAASH,EACT,gBAAiBA,EAAc,YAC/B,KAAM,yBAAyBK,CAAkB,GACjD,eACF,EACAJ,EACAC,CACF,CACF,EAWaK,GAAS,SACpBP,EACAC,EACAC,EAKA,CACA,OAAOC,EACL,CACE,QAASH,EACT,gBAAiBA,EAAc,YAC/B,KAAM,wBACN,aACF,EACAC,EACAC,CACF,CACF,EAOaM,GAAS,SACpBR,EACAK,EACAJ,EACAC,EAKA,CACA,OAAOC,EACL,CACE,QAASH,EACT,gBAAiBA,EAAc,YAC/B,KAAM,yBAAyBK,CAAkB,GACjD,YACF,EACAJ,EACAC,CACF,CACF,EAUaO,GAAQ,SACnBT,EACAK,EACAJ,EACAC,EAKA,CACA,OAAOC,EACL,CACE,QAASH,EACT,gBAAiBA,EAAc,YAC/B,KAAM,yBAAyBK,CAAkB,GACjD,cACF,EACAJ,EACAC,CACF,CACF,ECzKA,IAAAQ,GAAA,GAAAC,EAAAD,GAAA,YAAAE,GAAA,QAAAC,GAAA,WAAAC,GAAA,UAAAC,GAAA,WAAAC,GAAA,WAAAC,KAQO,IAAMC,GAAS,SACpBC,EACAC,EACAC,EAKA,CACA,OAAOC,EACL,CACE,QAASH,EACT,gBAAiBA,EAAc,YAC/B,KAAM,uBACR,EACAC,EACAC,CACF,CACF,EAOaE,GAAM,SACjBJ,EACAK,EACAJ,EACAC,EAKA,CACA,OAAOC,EACL,CACE,QAASH,EACT,gBAAiBA,EAAc,YAC/B,KAAM,yBAAyBK,CAAkB,EACnD,EACAJ,EACAC,CACF,CACF,EAWaI,GAAS,SACpBN,EACAK,EACAJ,EACAC,EAKA,CACA,OAAOC,EACL,CACE,QAASH,EACT,gBAAiBA,EAAc,YAC/B,KAAM,yBAAyBK,CAAkB,GACjD,eACF,EACAJ,EACAC,CACF,CACF,EAWaK,GAAS,SACpBP,EACAC,EACAC,EAKA,CACA,OAAOC,EACL,CACE,QAASH,EACT,gBAAiBA,EAAc,YAC/B,KAAM,wBACN,aACF,EACAC,EACAC,CACF,CACF,EAOaM,GAAS,SACpBR,EACAK,EACAJ,EACAC,EAKA,CACA,OAAOC,EACL,CACE,QAASH,EACT,gBAAiBA,EAAc,YAC/B,KAAM,yBAAyBK,CAAkB,GACjD,YACF,EACAJ,EACAC,CACF,CACF,EAUaO,GAAQ,SACnBT,EACAK,EACAJ,EACAC,EAKA,CACA,OAAOC,EACL,CACE,QAASH,EACT,gBAAiBA,EAAc,YAC/B,KAAM,yBAAyBK,CAAkB,GACjD,cACF,EACAJ,EACAC,CACF,CACF,EC1KA,IAAAQ,GAAA,GAAAC,EAAAD,GAAA,UAAAE,KASO,IAAMC,GAAO,SAClBC,EACAC,EACAC,EAKA,CACA,OAAOC,EACL,CACE,QAASH,EACT,KAAM,WACR,EACAC,EACAC,CACF,CACF,EC1BA,IAAAE,GAAA,GAAAC,EAAAD,GAAA,0BAAAE,GAAA,wBAAAC,KAMA,IAAMC,GAAqB,kBAEpB,SAASC,GAAoBC,EAAmB,CACrD,GAAM,CAAE,KAAAC,CAAK,EAAI,OAAOD,GAAQ,SAAW,IAAI,IAAIA,CAAG,EAAIA,EAC1D,GAAI,CAACC,EAAK,SAASH,EAAkB,EAInC,OAAOG,EAET,GAAM,CAACC,CAAS,EAAID,EAAK,MAAM,IAAIH,EAAkB,EAAE,EACjDK,EAAQD,EAAU,MAAM,GAAG,EAKjC,OACEC,EAAM,SAAW,EAAI,CAAC,GAAGA,EAAOL,EAAkB,EAAI,CAACK,EAAM,CAAC,EAAGA,EAAM,CAAC,EAAGL,EAAkB,GAC7F,KAAK,GAAG,CACZ,CAUA,eAAsBM,GAAqBJ,EAAmB,CAC5D,IAAMK,EAAI,OAAOL,GAAQ,SAAW,IAAI,IAAIA,CAAG,EAAIA,EAEnD,GADuB,CAACK,EAAE,KAAK,SAASP,EAAkB,EAOxD,OAAO,KAQT,IAAM,GALM,MACV,MAAMQ,GAAK,CACT,KAAM,WAAWP,GAAoBM,CAAC,CAAC,EACzC,CAAC,GACD,KAAK,GACO,MAAM,OAAQ,GAAM,EAAE,UAAU,WAAW,OAAO,CAAC,EAAE,CAAC,EACpE,OAAO,GAAK,gBAAiB,EAAI,EAAE,YAAc,IACnD,CTvBA,IAAME,GAAS,CACb,eAAgB,yDAChB,mBACE,4HACJ,EAEO,SAASC,GAAUC,EAAiCC,EAA6B,CACtF,GAAM,CAAE,YAAaC,CAAG,EAAIF,EAC5B,GAAI,CAACE,EACH,MAAM,IAAI,MAAM,+DAA+D,EAKjF,OAAID,EACKH,GAAOG,CAAK,EAAE,QAAQ,gBAAiBC,CAAE,EAK3C,OAAO,QAAQJ,EAAM,EAAE,OAC5B,CAACK,EAAO,CAACC,EAAKC,CAAK,KAAO,CACxB,GAAGF,EACH,CAACC,CAAG,EAAGC,EAAM,QAAQ,gBAAiBH,CAAE,CAC1C,GACA,CAAC,CACH,CACF,CU1DA,IAAAI,GAAA,GAAAC,EAAAD,GAAA,YAAAE,GAAA,SAAAC,GAAA,UAAAC,KCAA,IAAAC,GAAA,GAAAC,EAAAD,GAAA,YAAAE,KAgDO,IAAMC,GAAS,SAAUC,EAASC,EAAa,CACpD,OAAOC,EACL,CACE,QAASC,EACT,gBAAiBC,EAAiB,OAClC,KAAM,YACN,aACF,EACAJ,EACAC,CACF,CACF,EC3DA,IAAAI,GAAA,GAAAC,EAAAD,GAAA,SAAAE,GAAA,WAAAC,GAAA,UAAAC,GAAA,UAAAC,GAAA,WAAAC,GAAA,WAAAC,KAcO,IAAMC,GAAS,SACpBC,EACAC,EAKA,CACA,OAAOC,EACL,CACE,QAASC,EACT,gBAAiBC,EAAiBD,CAAE,EACpC,KAAM,QACN,YACF,EACAH,EACAC,CACF,CACF,EAQaI,GAAM,SACjBC,EACAN,EACAC,EAKA,CACA,OAAOC,EACL,CACE,QAASC,EACT,gBAAiBC,EAAiBD,CAAE,EACpC,KAAM,SAASG,CAAM,GACrB,YACF,EACAN,EACAC,CACF,CACF,EAWaM,GAAQ,SACnBD,EACAN,EACAC,EAKA,CACA,OAAOC,EACL,CACE,QAASC,EACT,gBAAiBC,EAAiBD,CAAE,EACpC,KAAM,SAASG,CAAM,GACrB,cACF,EACAN,EACAC,CACF,CACF,EAUaO,GAAQ,SACnBF,EACAN,EACAC,EAKA,CACA,OAAOC,EACL,CACE,QAASC,EACT,gBAAiBC,EAAiBD,CAAE,EACpC,KAAM,SAASG,CAAM,SACrB,aACF,EACAN,EACAC,CACF,CACF,EAYaQ,GAAS,SACpBH,EACAN,EACAC,EAKA,CACA,OAAOC,EACL,CACE,QAASC,EACT,gBAAiBC,EAAiBD,CAAE,EACpC,KAAM,SAASG,CAAM,UACrB,aACF,EACAN,EACAC,CACF,CACF,EAYaS,GAAS,SACpBJ,EACAN,EACAC,EAKA,CACA,OAAOC,EACL,CACE,QAASC,EACT,gBAAiBC,EAAiBD,CAAE,EACpC,KAAM,SAASG,CAAM,GACrB,eACF,EACAN,EACAC,CACF,CACF,EFtKO,IAAMU,GAASC,GGdtB,IAAAC,GAAA,GAAAC,EAAAD,GAAA,YAAAE,GAAA,cAAAC,KCAA,IAAAC,GAAA,GAAAC,EAAAD,GAAA,SAAAE,GAAA,WAAAC,GAAA,cAAAC,GAAA,WAAAC,GAAA,WAAAC,KAcO,IAAMC,GAAS,SACpBC,EACAC,EAKA,CACA,OAAOC,EACL,CACE,QAASC,EACT,MAAOC,EAAO,IACd,KAAM,gBACN,YACF,EACAJ,EACAC,CACF,CACF,EAOaI,GAAM,SACjBC,EACAN,EACAC,EAKA,CACA,OAAOC,EACL,CACE,QAASC,EACT,MAAOC,EAAO,IACd,KAAM,iBAAiBE,CAAa,GACpC,YACF,EACAN,EACAC,CACF,CACF,EAWaM,GAAY,SACvBD,EACAN,EACAC,EAKA,CACA,OAAOC,EACL,CACE,QAASC,EACT,MAAOC,EAAO,IACd,KAAM,iBAAiBE,CAAa,SACtC,EACAN,EACAC,CACF,CACF,EAWaO,GAAS,SACpBF,EACAN,EACAC,EAKA,CACA,OAAOC,EACL,CACE,QAASC,EACT,MAAOC,EAAO,IACd,KAAM,iBAAiBE,CAAa,GACpC,YACF,EACAN,EACAC,CACF,CACF,EAaaQ,GAAS,SACpBH,EACAN,EACAC,EAKA,CACA,OAAOC,EACL,CACE,QAASC,EACT,MAAOC,EAAO,IACd,KAAM,iBAAiBE,CAAa,GACpC,eACF,EACAN,EACAC,CACF,CACF,EDvIO,IAAMS,GAASC,GEdtB,IAAAC,GAAA,GAAAC,EAAAD,GAAA,WAAAE,GAAA,SAAAC,GAAA,QAAAC,GAAA,WAAAC,KAWO,IAAMC,GAAqC,CAChD,YAAa,gCACb,QAAS,4BACT,KAAM,yBACN,QAAS,4BACT,QAAS,yBACT,WAAY,gBACd,EAKO,SAASC,GAAKC,EAAmBC,EAAe,EAAG,CACxD,OAAOH,GAAME,CAAG,CAClB,CAKO,SAASE,GAAIC,EAAeC,EAAyB,CAC1D,OAAO,IAAI,IAAID,GAAQ,GAAI,WAAWJ,GAAKK,GAAY,WAAW,CAAC,EAAE,CACvE,CAIA,IAAMC,GAAmD,CACvD,KAAM,wBACN,WAAY,wCACZ,SAAU,uCACZ,EASO,SAASC,GACdC,EACAC,EACAJ,EACA,CACA,IAAMD,EAAOE,GAAYE,CAAU,EAAE,QAAQ,MAAOC,GAAU,KAAK,GAAG,GAAK,EAAE,EAC7E,OAAON,GAAIC,EAAMC,CAAU,CAC7B",
|
|
6
|
-
"names": ["require_browser_ponyfill", "__commonJSMin", "exports", "module", "__global__", "__globalThis__", "F", "globalThis", "irrelevant", "g", "support", "isDataView", "obj", "viewClasses", "isArrayBufferView", "normalizeName", "name", "normalizeValue", "value", "iteratorFor", "items", "iterator", "Headers", "headers", "header", "oldValue", "callback", "thisArg", "consumed", "body", "fileReaderReady", "reader", "resolve", "reject", "readBlobAsArrayBuffer", "blob", "promise", "readBlobAsText", "match", "encoding", "readArrayBufferAsText", "buf", "view", "chars", "i", "bufferClone", "Body", "rejected", "isConsumed", "decode", "methods", "normalizeMethod", "method", "upcased", "Request", "input", "options", "ctrl", "reParamSearch", "reQueryString", "form", "bytes", "split", "parseHeaders", "rawHeaders", "preProcessedHeaders", "line", "parts", "key", "error", "Response", "bodyInit", "response", "redirectStatuses", "url", "status", "message", "fetch", "init", "request", "xhr", "abortXhr", "fixUrl", "names", "ctx", "src_exports", "__export", "auth_exports", "authorization_exports", "compute_exports", "errors_exports", "flows_exports", "globus_connect_server_exports", "groups_exports", "info_exports", "logger_exports", "serviceRequest", "search_exports", "timers_exports", "transfer_exports", "web_exports", "info_exports", "__export", "CLIENT_INFO", "VERSION", "addClientInfo", "getClientInfo", "getClientInfoRequestHeaders", "CLIENT_INFO_HEADER", "ENABLED", "isEnabled", "ENABLED", "INFOS_SEPERATOR", "INFO_ITEM_SEPARATOR", "toString", "info", "i", "key", "value", "VERSION", "VERSION", "CLIENT_INFO", "INFOS", "addClientInfo", "info", "getClientInfo", "toString", "getClientInfoRequestHeaders", "isEnabled", "CLIENT_INFO_HEADER", "logger_exports", "__export", "log", "setLogLevel", "setLogger", "LOG_LEVELS", "logger", "level", "logMechanism", "severity", "args", "authorization_exports", "__export", "AuthorizationManager", "create", "InvalidTokenError", "b64DecodeUnicode", "str", "m", "p", "code", "base64UrlDecode", "output", "jwtDecode", "token", "options", "pos", "part", "decoded", "e", "auth_exports", "__export", "CONFIG", "getAuthorizationEndpoint", "getTokenEndpoint", "identities_exports", "isGlobusAuthTokenResponse", "isRefreshToken", "isToken", "oauth2_exports", "utils_exports", "config_exports", "__export", "HOSTS", "ID", "RESOURCE_SERVERS", "SCOPES", "config_exports", "__export", "HOSTS", "ID", "SCOPES", "config_exports", "__export", "HOSTS", "ID", "SCOPES", "config_exports", "__export", "HOSTS", "ID", "config_exports", "__export", "HOSTS", "ID", "SCOPES", "config_exports", "__export", "HOSTS", "ID", "SCOPES", "config_exports", "__export", "HOSTS", "ID", "SCOPES", "ID", "HOSTS", "SCOPES", "RESOURCE_SERVERS", "errors_exports", "__export", "EnvironmentConfigurationError", "isAuthorizationRequirementsError", "isConsentRequiredError", "isErrorWellFormed", "toAuthorizationQueryParams", "variable", "value", "test", "NO_OP_KEYS", "error", "mapped", "acc", "key", "v", "getRuntime", "isBrowser", "runtime", "env", "key", "fallback", "envConfiguration", "ENVIRONMENTS", "SERVICES", "ID", "SERVICE_HOSTS", "HOSTS", "getSDKOptions", "options", "globalOptions", "getEnvironment", "environment", "log", "EnvironmentConfigurationError", "getServiceHost", "service", "environment", "getEnvironment", "SERVICE_HOSTS", "getServiceBaseUrl", "host", "env", "stringifyParameters", "parameters", "search", "key", "value", "getServiceURL", "service", "path", "environment", "getEnvironment", "base", "getServiceBaseUrl", "build", "serviceOrConfiguration", "options", "sdkOptions", "url", "identities_exports", "__export", "consents_exports", "get", "getAll", "import_cross_fetch", "serviceRequest", "config", "options", "passedSdkOptions", "sdkOptions", "getSDKOptions", "injectedFetchOptions", "headers", "getClientInfoRequestHeaders", "manager", "token", "resourceServer", "RESOURCE_SERVERS", "body", "url", "build", "init", "handler", "_fetch", "isRefreshToken", "initialResponse", "hasAuthorizationRequirements", "isAuthorizationRequirementsError", "newToken", "consents_exports", "__export", "getAll", "getAll", "identity_id", "options", "sdkOptions", "serviceRequest", "ID", "SCOPES", "get", "identity_id", "options", "sdkOptions", "serviceRequest", "ID", "SCOPES", "getAll", "oauth2_exports", "__export", "token_exports", "userinfo", "token_exports", "__export", "exchange", "introspect", "refresh", "revoke", "token", "validate", "serialize", "payload", "injectServiceOptions", "options", "token", "sdkOptions", "serviceRequest", "ID", "exchange", "introspect", "revoke", "refresh", "validate", "userinfo", "options", "sdkOptions", "serviceRequest", "ID", "utils_exports", "__export", "hasConsentForScope", "splitScopeString", "toScopeTree", "scope", "scopes", "currentScope", "openBrackets", "char", "i", "parseScope", "s", "parsedScope", "revocable", "children", "firstBracket", "topLevelScope", "dependentScope", "consents", "tree", "hasConsentEntry", "leaf", "path", "entry", "c", "l", "CONFIG", "config_exports", "getAuthorizationEndpoint", "build", "ID", "getTokenEndpoint", "isToken", "check", "isRefreshToken", "isGlobusAuthTokenResponse", "Event", "name", "#callbacks", "callback", "cb", "payload", "isSupported", "getCrypto", "encode", "value", "sha256", "input", "hashBuffer", "CHARSET", "PKCE_SAFE_CHARSET", "generateCodeVerifier", "v", "generateCodeChallenge", "verifier", "hashed", "generateState", "KEYS", "store", "key", "entry", "RedirectTransport", "_RedirectTransport", "#options", "options", "isSupported", "verifier", "generateCodeVerifier", "challenge", "generateCodeChallenge", "state", "generateState", "store", "params", "url", "getAuthorizationEndpoint", "code", "payload", "response", "oauth2_exports", "TokenManager", "#manager", "options", "#getTokenFromStorage", "key", "raw", "token", "parsed", "isToken", "#getTokenForService", "service", "resourceServer", "CONFIG", "SERVICES", "endpoint", "acc", "created", "expires", "t", "augment", "MemoryStorage", "#storage", "key", "value", "index", "MESSAGE_SOURCE", "PopupTransport", "_PopupTransport", "#options", "#window", "options", "isSupported", "verifier", "generateCodeVerifier", "challenge", "generateCodeChallenge", "state", "generateState", "store", "params", "url", "getAuthorizationEndpoint", "promise", "resolve", "e", "data", "response", "#getToken", "href", "code", "payload", "oauth2_exports", "TRANSPORTS", "RedirectTransport", "PopupTransport", "DEFAULT_CONFIGURATION", "DEFAULT_HANDLE_ERROR_OPTIONS", "AuthorizationManager", "#transport", "#authenticated", "value", "#emitAuthenticatedState", "Event", "configuration", "scopes", "s", "MemoryStorage", "name", "callback", "TokenManager", "#checkAuthorizationState", "token", "jwtDecode", "log", "tokens", "isRefreshToken", "response", "oauth2_exports", "isGlobusAuthTokenResponse", "entry", "RESOURCE_SERVERS", "isAuthenticated", "key", "#withOfflineAccess", "#buildTransport", "options", "overrides", "TransportFactory", "scopesToRequest", "result", "opts", "handler", "isAuthorizationRequirementsError", "isConsentRequiredError", "toAuthorizationQueryParams", "revocation", "#revokeToken", "create", "configuration", "AuthorizationManager", "transfer_exports", "__export", "CONFIG", "access_exports", "collection_bookmarks_exports", "endpoint_exports", "endpoint_manager_exports", "endpointSearch", "file_operations_exports", "roles_exports", "task_exports", "task_submission_exports", "utils_exports", "endpointSearch", "options", "sdkOptions", "serviceRequestOptions", "serviceRequest", "ID", "SCOPES", "file_operations_exports", "__export", "ls", "mkdir", "rename", "stat", "symlink", "getHeadersForService", "method", "ls", "endpoint_xid", "options", "sdkOptions", "serviceRequest", "ID", "SCOPES", "mkdir", "serviceRequestOptions", "getHeadersForService", "rename", "symlink", "stat", "task_submission_exports", "__export", "submissionId", "submitDelete", "submitTransfer", "submitDelete", "options", "sdkOptions", "serviceRequestOptions", "getHeadersForService", "serviceRequest", "ID", "SCOPES", "submitTransfer", "submissionId", "endpoint_exports", "__export", "create", "get", "remove", "update", "get", "endpoint_xid", "options", "sdkOptions", "serviceRequest", "ID", "SCOPES", "create", "update", "remove", "task_exports", "__export", "cancel", "get", "getAll", "getEventList", "getPauseInfo", "getSkippedErrors", "getSuccessfulTransfers", "remove", "update", "getAll", "options", "sdkOptions", "serviceRequest", "ID", "SCOPES", "get", "task_id", "update", "cancel", "remove", "getEventList", "getSuccessfulTransfers", "getSkippedErrors", "getPauseInfo", "access_exports", "__export", "create", "get", "getAll", "remove", "update", "getAll", "endpoint_xid", "options", "sdkOptions", "serviceRequest", "ID", "SCOPES", "create", "get", "id", "update", "remove", "roles_exports", "__export", "create", "get", "getAll", "remove", "getAll", "endpoint_id", "options", "sdkOptions", "serviceRequest", "ID", "SCOPES", "get", "role_id", "create", "collection_id", "remove", "collection_bookmarks_exports", "__export", "create", "get", "getAll", "remove", "update", "getAll", "options", "sdkOptions", "serviceRequest", "ID", "SCOPES", "create", "get", "bookmark_id", "update", "remove", "endpoint_manager_exports", "__export", "endpoint_exports", "pause_rule_exports", "task_exports", "endpoint_exports", "__export", "get", "getAccessList", "getHostedEndpoints", "getMonitoredEndpoints", "get", "endpoint_xid", "options", "sdkOptions", "serviceRequest", "ID", "SCOPES", "getHostedEndpoints", "getAccessList", "getMonitoredEndpoints", "pause_rule_exports", "__export", "create", "get", "getAll", "remove", "update", "getAll", "options", "sdkOptions", "serviceRequest", "ID", "SCOPES", "create", "get", "pause_rule_id", "update", "remove", "task_exports", "__export", "cancel", "get", "getAdminCancel", "getAll", "getEventList", "getPauseInfo", "getSkippedErrors", "getSuccessfulTransfers", "pause", "resume", "getAll", "options", "sdkOptions", "serviceRequest", "ID", "SCOPES", "get", "task_id", "cancel", "getAdminCancel", "admin_cancel_id", "getEventList", "getSuccessfulTransfers", "getSkippedErrors", "pause", "resume", "getPauseInfo", "utils_exports", "__export", "GLOBUS_DNS_DOMAINS", "getDomainFromEndpoint", "isDirectory", "isFileDocument", "isGlobusHostname", "readableBytes", "entry", "KB", "MB", "GB", "TB", "PB", "bytes", "truncate", "unit", "bytesInUnit", "value", "int", "dec", "rendered", "truncated", "hostname", "d", "endpoint", "tls", "CONFIG", "config_exports", "search_exports", "__export", "CONFIG", "entry_exports", "search_index_exports", "query_exports", "subject_exports", "query_exports", "__export", "get", "post", "get", "index_id", "options", "sdkOptions", "serviceRequest", "ID", "SCOPES", "post", "subject_exports", "__export", "get", "get", "index_id", "options", "sdkOptions", "serviceRequest", "ID", "SCOPES", "entry_exports", "__export", "get", "get", "index_id", "options", "sdkOptions", "serviceRequest", "ID", "SCOPES", "search_index_exports", "__export", "create", "get", "getAll", "ingest", "remove", "reopen", "roles_exports", "roles_exports", "__export", "create", "getAll", "remove", "getAll", "index_id", "options", "sdkOptions", "serviceRequest", "ID", "SCOPES", "create", "remove", "role_id", "get", "index_id", "options", "sdkOptions", "serviceRequest", "ID", "getAll", "SCOPES", "create", "remove", "reopen", "ingest", "CONFIG", "config_exports", "groups_exports", "__export", "CONFIG", "membership_exports", "policies_exports", "groups_exports", "__export", "get", "getMyGroups", "getMyGroups", "options", "sdkOptions", "serviceRequest", "SCOPES", "ID", "get", "group_id", "policies_exports", "__export", "get", "get", "group_id", "options", "sdkOptions", "serviceRequest", "SCOPES", "ID", "membership_exports", "__export", "act", "act", "group_id", "options", "sdkOptions", "serviceRequest", "ID", "SCOPES", "CONFIG", "config_exports", "flows_exports", "__export", "CONFIG", "runs_exports", "flows_exports", "__export", "create", "deploy", "get", "getAll", "remove", "run", "update", "validate", "getAll", "options", "sdkOptions", "serviceRequest", "ID", "SCOPES", "get", "flow_id", "remove", "run", "validate", "create", "deploy", "update", "runs_exports", "__export", "cancel", "get", "getAll", "getDefinition", "getLog", "remove", "update", "getAll", "options", "sdkOptions", "serviceRequest", "ID", "SCOPES", "get", "run_id", "cancel", "getLog", "update", "remove", "getDefinition", "CONFIG", "config_exports", "globus_connect_server_exports", "__export", "collections_exports", "endpoint_exports", "getScopes", "https_exports", "nodes_exports", "roles_exports", "storage_gateways_exports", "user_credentials_exports", "utils_exports", "versioning_exports", "collections_exports", "__export", "create", "get", "getAll", "patch", "remove", "resetOwnerString", "update", "updateOwnerString", "getAll", "configuration", "options", "sdkOptions", "serviceRequest", "get", "collection_id", "remove", "create", "update", "patch", "updateOwnerString", "resetOwnerString", "endpoint_exports", "__export", "get", "patch", "resetOwnerString", "update", "updateOwner", "updateOwnerString", "updateSubscriptionId", "get", "configuration", "options", "sdkOptions", "serviceRequest", "update", "patch", "updateSubscriptionId", "updateOwner", "updateOwnerString", "resetOwnerString", "https_exports", "__export", "get", "remove", "update", "get", "configuration", "path", "options", "sdkOptions", "serviceRequest", "remove", "update", "nodes_exports", "__export", "create", "get", "getAll", "patch", "remove", "update", "getAll", "configuration", "options", "sdkOptions", "serviceRequest", "get", "node_id", "remove", "create", "update", "patch", "roles_exports", "__export", "create", "get", "getAll", "remove", "getAll", "configuration", "options", "sdkOptions", "serviceRequest", "get", "role_id", "remove", "create", "storage_gateways_exports", "__export", "create", "get", "getAll", "patch", "remove", "update", "getAll", "configuration", "options", "sdkOptions", "serviceRequest", "get", "storage_gateway_id", "remove", "create", "update", "patch", "user_credentials_exports", "__export", "create", "get", "getAll", "patch", "remove", "update", "getAll", "configuration", "options", "sdkOptions", "serviceRequest", "get", "user_credential_id", "remove", "create", "update", "patch", "versioning_exports", "__export", "info", "info", "configuration", "options", "sdkOptions", "serviceRequest", "utils_exports", "__export", "getEndpointIdFromURL", "getGCSDomainFromURL", "GCS_DEFAULT_DOMAIN", "getGCSDomainFromURL", "url", "host", "subdomain", "parts", "getEndpointIdFromURL", "u", "info", "SCOPES", "getScopes", "configuration", "scope", "id", "reduc", "key", "value", "timers_exports", "__export", "CONFIG", "jobs_exports", "timer_exports", "timer_exports", "__export", "create", "create", "options", "sdkOptions", "serviceRequest", "ID", "RESOURCE_SERVERS", "jobs_exports", "__export", "get", "getAll", "patch", "pause", "remove", "resume", "getAll", "options", "sdkOptions", "serviceRequest", "ID", "RESOURCE_SERVERS", "get", "job_id", "patch", "pause", "resume", "remove", "CONFIG", "config_exports", "compute_exports", "__export", "CONFIG", "endpoints_exports", "endpoints_exports", "__export", "get", "getAll", "getStatus", "remove", "update", "getAll", "options", "sdkOptions", "serviceRequest", "ID", "SCOPES", "get", "endpoint_uuid", "getStatus", "update", "remove", "CONFIG", "config_exports", "web_exports", "__export", "HOSTS", "host", "url", "urlFor", "HOSTS", "host", "env", "getEnvironment", "url", "path", "sdkOptions", "WEBAPP_URLS", "urlFor", "identifier", "segments"]
|
|
3
|
+
"sources": ["../../node_modules/cross-fetch/dist/browser-ponyfill.js", "../../src/index.ts", "../../src/core/info/index.ts", "../../src/core/info/private.ts", "../../src/core/info/version.ts", "../../src/core/logger.ts", "../../src/core/authorization/index.ts", "../../node_modules/jwt-decode/build/esm/index.js", "../../src/services/auth/index.ts", "../../src/services/auth/config.ts", "../../src/services/transfer/config.ts", "../../src/services/flows/config.ts", "../../src/services/timers/config.ts", "../../src/services/groups/config.ts", "../../src/services/search/config.ts", "../../src/services/compute/config.ts", "../../src/core/errors.ts", "../../src/core/global.ts", "../../src/core/url.ts", "../../src/services/auth/service/identities/index.ts", "../../src/services/shared.ts", "../../src/services/auth/service/identities/consents.ts", "../../src/services/auth/service/oauth2/index.ts", "../../src/services/auth/service/oauth2/token.ts", "../../src/services/auth/utils.ts", "../../src/core/authorization/Event.ts", "../../src/core/authorization/pkce.ts", "../../src/core/authorization/RedirectTransport.ts", "../../src/core/authorization/TokenManager.ts", "../../src/core/storage/memory.ts", "../../src/core/authorization/PopupTransport.ts", "../../src/core/authorization/AuthorizationManager.ts", "../../src/services/transfer/index.ts", "../../src/services/transfer/service/endpoint-search.ts", "../../src/services/transfer/service/file-operations.ts", "../../src/services/transfer/shared.ts", "../../src/services/transfer/service/task-submission.ts", "../../src/services/transfer/service/endpoint.ts", "../../src/services/transfer/service/task.ts", "../../src/services/transfer/service/access.ts", "../../src/services/transfer/service/roles.ts", "../../src/services/transfer/service/collection-bookmarks.ts", "../../src/services/transfer/service/tunnel.ts", "../../src/services/transfer/service/stream-access-point.ts", "../../src/services/transfer/service/endpoint-manager/index.ts", "../../src/services/transfer/service/endpoint-manager/endpoint.ts", "../../src/services/transfer/service/endpoint-manager/pause-rule.ts", "../../src/services/transfer/service/endpoint-manager/task.ts", "../../src/services/transfer/utils.ts", "../../src/services/search/index.ts", "../../src/services/search/service/query.ts", "../../src/services/search/service/subject.ts", "../../src/services/search/service/entry.ts", "../../src/services/search/service/search-index.ts", "../../src/services/search/service/roles.ts", "../../src/services/groups/index.ts", "../../src/services/groups/service/groups.ts", "../../src/services/groups/service/policies.ts", "../../src/services/groups/service/membership.ts", "../../src/services/flows/index.ts", "../../src/services/flows/service/flows.ts", "../../src/services/flows/service/runs.ts", "../../src/services/globus-connect-server/index.ts", "../../src/services/globus-connect-server/service/collections.ts", "../../src/services/globus-connect-server/service/endpoint.ts", "../../src/services/globus-connect-server/service/https.ts", "../../src/services/globus-connect-server/service/nodes.ts", "../../src/services/globus-connect-server/service/roles.ts", "../../src/services/globus-connect-server/service/storage-gateways.ts", "../../src/services/globus-connect-server/service/user-credentials.ts", "../../src/services/globus-connect-server/service/versioning.ts", "../../src/services/globus-connect-server/utils.ts", "../../src/services/timers/index.ts", "../../src/services/timers/service/timer.ts", "../../src/services/timers/service/jobs/index.ts", "../../src/services/compute/index.ts", "../../src/services/compute/service/endpoints.ts", "../../src/apps/web.ts"],
|
|
4
|
+
"sourcesContent": ["// Save global object in a variable\nvar __global__ =\n(typeof globalThis !== 'undefined' && globalThis) ||\n(typeof self !== 'undefined' && self) ||\n(typeof global !== 'undefined' && global);\n// Create an object that extends from __global__ without the fetch function\nvar __globalThis__ = (function () {\nfunction F() {\nthis.fetch = false;\nthis.DOMException = __global__.DOMException\n}\nF.prototype = __global__; // Needed for feature detection on whatwg-fetch's code\nreturn new F();\n})();\n// Wraps whatwg-fetch with a function scope to hijack the global object\n// \"globalThis\" that's going to be patched\n(function(globalThis) {\n\nvar irrelevant = (function (exports) {\n\n /* eslint-disable no-prototype-builtins */\n var g =\n (typeof globalThis !== 'undefined' && globalThis) ||\n (typeof self !== 'undefined' && self) ||\n // eslint-disable-next-line no-undef\n (typeof global !== 'undefined' && global) ||\n {};\n\n var support = {\n searchParams: 'URLSearchParams' in g,\n iterable: 'Symbol' in g && 'iterator' in Symbol,\n blob:\n 'FileReader' in g &&\n 'Blob' in g &&\n (function() {\n try {\n new Blob();\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in g,\n arrayBuffer: 'ArrayBuffer' in g\n };\n\n function isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ];\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n };\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~!]/i.test(name) || name === '') {\n throw new TypeError('Invalid character in header field name: \"' + name + '\"')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift();\n return {done: value === undefined, value: value}\n }\n };\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n };\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {};\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n if (header.length != 2) {\n throw new TypeError('Headers constructor: expected name/value pair to be length 2, found' + header.length)\n }\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name]);\n }, this);\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue + ', ' + value : value;\n };\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)];\n };\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null\n };\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n };\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value);\n };\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n };\n\n Headers.prototype.keys = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push(name);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.values = function() {\n var items = [];\n this.forEach(function(value) {\n items.push(value);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.entries = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push([name, value]);\n });\n return iteratorFor(items)\n };\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n }\n\n function consumed(body) {\n if (body._noBody) return\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true;\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result);\n };\n reader.onerror = function() {\n reject(reader.error);\n };\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsArrayBuffer(blob);\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n var match = /charset=([A-Za-z0-9_-]+)/.exec(blob.type);\n var encoding = match ? match[1] : 'utf-8';\n reader.readAsText(blob, encoding);\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf);\n var chars = new Array(view.length);\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i]);\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength);\n view.set(new Uint8Array(buf));\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false;\n\n this._initBody = function(body) {\n /*\n fetch-mock wraps the Response object in an ES6 Proxy to\n provide useful test harness features such as flush. However, on\n ES5 browsers without fetch or Proxy support pollyfills must be used;\n the proxy-pollyfill is unable to proxy an attribute unless it exists\n on the object before the Proxy is created. This change ensures\n Response.bodyUsed exists on the instance, while maintaining the\n semantic of setting Request.bodyUsed in the constructor before\n _initBody is called.\n */\n // eslint-disable-next-line no-self-assign\n this.bodyUsed = this.bodyUsed;\n this._bodyInit = body;\n if (!body) {\n this._noBody = true;\n this._bodyText = '';\n } else if (typeof body === 'string') {\n this._bodyText = body;\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body;\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body;\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString();\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer);\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer]);\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body);\n } else {\n this._bodyText = body = Object.prototype.toString.call(body);\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8');\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type);\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n }\n };\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n };\n }\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n var isConsumed = consumed(this);\n if (isConsumed) {\n return isConsumed\n } else if (ArrayBuffer.isView(this._bodyArrayBuffer)) {\n return Promise.resolve(\n this._bodyArrayBuffer.buffer.slice(\n this._bodyArrayBuffer.byteOffset,\n this._bodyArrayBuffer.byteOffset + this._bodyArrayBuffer.byteLength\n )\n )\n } else {\n return Promise.resolve(this._bodyArrayBuffer)\n }\n } else if (support.blob) {\n return this.blob().then(readBlobAsArrayBuffer)\n } else {\n throw new Error('could not read as ArrayBuffer')\n }\n };\n\n this.text = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n };\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n };\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n };\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['CONNECT', 'DELETE', 'GET', 'HEAD', 'OPTIONS', 'PATCH', 'POST', 'PUT', 'TRACE'];\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase();\n return methods.indexOf(upcased) > -1 ? upcased : method\n }\n\n function Request(input, options) {\n if (!(this instanceof Request)) {\n throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.')\n }\n\n options = options || {};\n var body = options.body;\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url;\n this.credentials = input.credentials;\n if (!options.headers) {\n this.headers = new Headers(input.headers);\n }\n this.method = input.method;\n this.mode = input.mode;\n this.signal = input.signal;\n if (!body && input._bodyInit != null) {\n body = input._bodyInit;\n input.bodyUsed = true;\n }\n } else {\n this.url = String(input);\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin';\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers);\n }\n this.method = normalizeMethod(options.method || this.method || 'GET');\n this.mode = options.mode || this.mode || null;\n this.signal = options.signal || this.signal || (function () {\n if ('AbortController' in g) {\n var ctrl = new AbortController();\n return ctrl.signal;\n }\n }());\n this.referrer = null;\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body);\n\n if (this.method === 'GET' || this.method === 'HEAD') {\n if (options.cache === 'no-store' || options.cache === 'no-cache') {\n // Search for a '_' parameter in the query string\n var reParamSearch = /([?&])_=[^&]*/;\n if (reParamSearch.test(this.url)) {\n // If it already exists then set the value with the current time\n this.url = this.url.replace(reParamSearch, '$1_=' + new Date().getTime());\n } else {\n // Otherwise add a new '_' parameter to the end with the current time\n var reQueryString = /\\?/;\n this.url += (reQueryString.test(this.url) ? '&' : '?') + '_=' + new Date().getTime();\n }\n }\n }\n }\n\n Request.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n };\n\n function decode(body) {\n var form = new FormData();\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=');\n var name = split.shift().replace(/\\+/g, ' ');\n var value = split.join('=').replace(/\\+/g, ' ');\n form.append(decodeURIComponent(name), decodeURIComponent(value));\n }\n });\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers();\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n // Avoiding split via regex to work around a common IE11 bug with the core-js 3.6.0 regex polyfill\n // https://github.com/github/fetch/issues/748\n // https://github.com/zloirock/core-js/issues/751\n preProcessedHeaders\n .split('\\r')\n .map(function(header) {\n return header.indexOf('\\n') === 0 ? header.substr(1, header.length) : header\n })\n .forEach(function(line) {\n var parts = line.split(':');\n var key = parts.shift().trim();\n if (key) {\n var value = parts.join(':').trim();\n try {\n headers.append(key, value);\n } catch (error) {\n console.warn('Response ' + error.message);\n }\n }\n });\n return headers\n }\n\n Body.call(Request.prototype);\n\n function Response(bodyInit, options) {\n if (!(this instanceof Response)) {\n throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.')\n }\n if (!options) {\n options = {};\n }\n\n this.type = 'default';\n this.status = options.status === undefined ? 200 : options.status;\n if (this.status < 200 || this.status > 599) {\n throw new RangeError(\"Failed to construct 'Response': The status provided (0) is outside the range [200, 599].\")\n }\n this.ok = this.status >= 200 && this.status < 300;\n this.statusText = options.statusText === undefined ? '' : '' + options.statusText;\n this.headers = new Headers(options.headers);\n this.url = options.url || '';\n this._initBody(bodyInit);\n }\n\n Body.call(Response.prototype);\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n };\n\n Response.error = function() {\n var response = new Response(null, {status: 200, statusText: ''});\n response.ok = false;\n response.status = 0;\n response.type = 'error';\n return response\n };\n\n var redirectStatuses = [301, 302, 303, 307, 308];\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n };\n\n exports.DOMException = g.DOMException;\n try {\n new exports.DOMException();\n } catch (err) {\n exports.DOMException = function(message, name) {\n this.message = message;\n this.name = name;\n var error = Error(message);\n this.stack = error.stack;\n };\n exports.DOMException.prototype = Object.create(Error.prototype);\n exports.DOMException.prototype.constructor = exports.DOMException;\n }\n\n function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init);\n\n if (request.signal && request.signal.aborted) {\n return reject(new exports.DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest();\n\n function abortXhr() {\n xhr.abort();\n }\n\n xhr.onload = function() {\n var options = {\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n };\n // This check if specifically for when a user fetches a file locally from the file system\n // Only if the status is out of a normal range\n if (request.url.indexOf('file://') === 0 && (xhr.status < 200 || xhr.status > 599)) {\n options.status = 200;\n } else {\n options.status = xhr.status;\n }\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n var body = 'response' in xhr ? xhr.response : xhr.responseText;\n setTimeout(function() {\n resolve(new Response(body, options));\n }, 0);\n };\n\n xhr.onerror = function() {\n setTimeout(function() {\n reject(new TypeError('Network request failed'));\n }, 0);\n };\n\n xhr.ontimeout = function() {\n setTimeout(function() {\n reject(new TypeError('Network request timed out'));\n }, 0);\n };\n\n xhr.onabort = function() {\n setTimeout(function() {\n reject(new exports.DOMException('Aborted', 'AbortError'));\n }, 0);\n };\n\n function fixUrl(url) {\n try {\n return url === '' && g.location.href ? g.location.href : url\n } catch (e) {\n return url\n }\n }\n\n xhr.open(request.method, fixUrl(request.url), true);\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true;\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false;\n }\n\n if ('responseType' in xhr) {\n if (support.blob) {\n xhr.responseType = 'blob';\n } else if (\n support.arrayBuffer\n ) {\n xhr.responseType = 'arraybuffer';\n }\n }\n\n if (init && typeof init.headers === 'object' && !(init.headers instanceof Headers || (g.Headers && init.headers instanceof g.Headers))) {\n var names = [];\n Object.getOwnPropertyNames(init.headers).forEach(function(name) {\n names.push(normalizeName(name));\n xhr.setRequestHeader(name, normalizeValue(init.headers[name]));\n });\n request.headers.forEach(function(value, name) {\n if (names.indexOf(name) === -1) {\n xhr.setRequestHeader(name, value);\n }\n });\n } else {\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value);\n });\n }\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr);\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr);\n }\n };\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n })\n }\n\n fetch.polyfill = true;\n\n if (!g.fetch) {\n g.fetch = fetch;\n g.Headers = Headers;\n g.Request = Request;\n g.Response = Response;\n }\n\n exports.Headers = Headers;\n exports.Request = Request;\n exports.Response = Response;\n exports.fetch = fetch;\n\n return exports;\n\n})({});\n})(__globalThis__);\n// This is a ponyfill, so...\n__globalThis__.fetch.ponyfill = true;\ndelete __globalThis__.fetch.polyfill;\n// Choose between native implementation (__global__) or custom implementation (__globalThis__)\nvar ctx = __global__.fetch ? __global__ : __globalThis__;\nexports = ctx.fetch // To enable: import fetch from 'cross-fetch'\nexports.default = ctx.fetch // For TypeScript consumers without esModuleInterop.\nexports.fetch = ctx.fetch // To enable: import {fetch} from 'cross-fetch'\nexports.Headers = ctx.Headers\nexports.Request = ctx.Request\nexports.Response = ctx.Response\nmodule.exports = exports\n", "/**\n * @module @globus/sdk\n * @description `@globus/sdk` provides modules for interacting with the various APIs that make up the Globus platform.\n *\n * ### Key Concepts\n * - All service methods return a `Promise` that resolves to a [Fetch API Response object](https://developer.mozilla.org/en-US/docs/Web/API/Response).\n * - Under the hood, we are returning the result of a composed [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/fetch).\n * - All service methods accept a `ServiceMethodOptions` object to pass query parameters, a payload, and headers.\n * - All service methods support a tail argument to pass options to the SDK, including the composed `fetch` call.\n *\n * #### Service Method Names\n *\n * Basic CRUD operations provided by services are exposed as the following:\n *\n * | Service Method Name | HTTP Method | Description | Example |\n * | --------------------| ----------- | ---------------------------- | ------- |\n * | `get` | `GET` | Fetch a single resource. | `transfer.endpoint.get()` |\n * | `getAll` | `GET` | Fetch a list of resources. | `flows.flows.getAll()` |\n * | `create` | `POST` | Create a new resource. | `gcs.roles.create()` |\n * | `update` | `PUT` | Update an existing resource. | `gcs.endpoint.update()` |\n * | `patch` | `PATCH` | Update an existing resource. | `gcs.endpoint.patch()` |\n * | `remove` | `DELETE` | Delete an existing resource. | `gcs.collections.remove()`|\n *\n * Methods that do not map to obvious CRUD operations are named according to the resource. i.e., `groups.groups.getMyGroups()`, `transfer.endpointSearch()`, `search.query.post()`\n *\n * @example Using the SDK to search for endpoints via Transfer API.\n * ```ts\n * import { transfer } from \"@globus/sdk\";\n *\n * const result = await (\n * await globus.transfer.endpointSearch(\n * {\n * query: { filter_fulltext: \"Globus Tutorial\" }\n * headers: {\n * Authorization: \"Bearer MY_ACCESS_TOKEN\",\n * },\n * },\n * {\n * fetch: {\n * // Provide parameters to the underlying `fetch` call.\n * // https://developer.mozilla.org/en-US/docs/Web/API/fetch#parameters\n * options: {\n * priority: \"high\"\n * },\n * },\n * }\n * )\n * ).json();\n * ```\n *\n * @example Using the SDK to fetch a single flow from the Flows API.\n * ```ts\n * import { flows } from \"@globus/sdk\";\n *\n * const result = await (await flows.flows.get(\"452bbea3-5e3b-45a5-af08-50179839a4e8\")).json();\n *```\n *\n * ### Authorization\n *\n * While all methods support passing of `headers` and direct modification of the underlying `fetch` call, the SDK provides an {@link Authorization.AuthorizationManager | `AuthorizationManager`} that can be used to manage access tokens and handle the authorization process.\n *\n * @example Using the AuthorizationManager with a service method.\n * ```ts\n * import { transfer, authorization } from \"@globus/sdk\";\n * const manager = authorization.create({ ... });\n * const result = await (\n * await globus.transfer.endpointSearch(\n * {\n * query: { filter_fulltext: \"Globus Tutorial\" },\n * manager\n * }\n * )\n * ).json();\n *```\n */\n\n/**\n * Core\n */\nexport * as info from './core/info/index.js';\nexport * as logger from './core/logger.js';\nexport * as authorization from './core/authorization/index.js';\nexport * as errors from './core/errors.js';\n\n/**\n * Services\n */\nexport * as auth from './services/auth/index.js';\nexport * as transfer from './services/transfer/index.js';\nexport * as search from './services/search/index.js';\nexport * as groups from './services/groups/index.js';\nexport * as flows from './services/flows/index.js';\nexport * as gcs from './services/globus-connect-server/index.js';\nexport * as timers from './services/timers/index.js';\nexport * as compute from './services/compute/index.js';\n\nexport { serviceRequest as request } from './services/shared.js';\n\n/**\n * Applications\n */\nexport * as webapp from './apps/web.js';\n", "/**\n * @module Information\n * @description This module is mostly intended for internal use, but can be helpful\n * identifying information about the SDK package you are using at runtime.\n */\nimport { toString, isEnabled, CLIENT_INFO_HEADER } from './private.js';\nimport { VERSION as _VERSION } from './version.js';\n\nexport type Version = string;\n\n/**\n * The version of the `@globus/sdk` package that is in use.\n */\nexport const VERSION: Version = _VERSION;\n\nexport type Info = {\n product: string;\n version: Version;\n};\n\n/**\n * The client information identifier for this package.\n */\nexport const CLIENT_INFO: Info = {\n product: 'javascript-sdk',\n version: VERSION,\n};\n\nlet INFOS: Info[] = [CLIENT_INFO];\n\n/**\n * Add a client information identifier to the existing SDK information.\n */\nexport function addClientInfo(info: Info) {\n INFOS = INFOS.concat(info);\n}\n/**\n * Get the current client information as a string.\n */\nexport function getClientInfo(): string {\n return toString(INFOS);\n}\n\nexport function getClientInfoRequestHeaders(): Record<string, string> {\n if (!isEnabled()) {\n return {};\n }\n return {\n [CLIENT_INFO_HEADER]: getClientInfo(),\n };\n}\n", "import type { Info } from './index.js';\n\n/**\n * @private\n */\nexport const CLIENT_INFO_HEADER = `X-Globus-Client-Info`;\n\nlet ENABLED = true;\n/**\n * Disable the client information header from being included in requests (enabled by default).\n * @private\n */\nexport function disable() {\n ENABLED = false;\n}\n\n/**\n * Enables the client information header to be included in requests.\n * @private\n */\nexport function enable() {\n ENABLED = true;\n}\n\n/**\n * Whether or not the client information header should be sent with requests.\n * @private\n */\nexport function isEnabled() {\n return ENABLED;\n}\n\nconst INFOS_SEPERATOR = ';';\nconst INFO_ITEM_SEPARATOR = ',';\n\n/**\n * Exported for test purposes only.\n * @private\n */\nexport function toString(info: Info | Info[]) {\n const infos = Array.isArray(info) ? info : [info];\n return infos\n .map((i) =>\n Object.entries(i)\n .map(([key, value]) => `${key}=${value}`)\n .join(INFO_ITEM_SEPARATOR),\n )\n .join(INFOS_SEPERATOR);\n}\n", "// x-release-please-start-version\nexport const VERSION = '6.2.0';\n// x-release-please-end\n", "const LOG_LEVELS = ['debug', 'info', 'warn', 'error'] as const;\n\ntype LogLevel = (typeof LOG_LEVELS)[number];\n\ntype LogHandler = (...args: unknown[]) => void;\n\ntype Logger = {\n log: LogHandler;\n error?: LogHandler;\n warn?: LogHandler;\n info?: LogHandler;\n debug?: LogHandler;\n};\n/**\n * No logger is set by default.\n */\nlet logger: Logger | undefined;\n/**\n * By default, the logger is set to `error`.\n */\nlet level: number = LOG_LEVELS.indexOf('error');\n/**\n * Set the global logger for the SDK.\n * @param logMechanism The logger to use.\n * @example `log.setLogger(console)`\n */\nexport function setLogger(logMechanism: Logger) {\n logger = logMechanism;\n}\n/**\n * Set the global log level for the logger.\n * @param severity The severity to set the logger to.\n * @example `log.setLogLevel('info')`\n */\nexport function setLogLevel(severity: LogLevel) {\n level = LOG_LEVELS.indexOf(severity);\n}\n/**\n * Log a message to the logger.\n * @param severity The severity of the log entry.\n * @param args The message to log.\n * @private\n */\nexport function log(severity: LogLevel, ...args: unknown[]) {\n if (!logger) return;\n /**\n * If the severity of the entry is less than the logger's configured severity, do not log.\n */\n if (LOG_LEVELS.indexOf(severity) < level) {\n return;\n }\n /**\n * If the logger does not have a handler for the specified severity, use the default `log` handler.\n */\n const handler = logger[severity] ?? logger.log;\n handler(...args);\n}\n", "/**\n * @module Authorization\n * @description Provides modules for interacting with Globus-related authorization contexts in your application.\n * @example\n * import { authorization } from \"globus/sdk\";\n * const manager = authorization.create(...);\n */\nimport {\n AuthorizationManager,\n type AuthorizationManagerConfiguration,\n} from './AuthorizationManager.js';\n\n/**\n * Create an instance of the {@link AuthorizationManager}.\n */\nexport function create(configuration: AuthorizationManagerConfiguration) {\n return new AuthorizationManager(configuration);\n}\n\nexport { AuthorizationManager, AuthorizationManagerConfiguration };\n", "export class InvalidTokenError extends Error {\n}\nInvalidTokenError.prototype.name = \"InvalidTokenError\";\nfunction b64DecodeUnicode(str) {\n return decodeURIComponent(atob(str).replace(/(.)/g, (m, p) => {\n let code = p.charCodeAt(0).toString(16).toUpperCase();\n if (code.length < 2) {\n code = \"0\" + code;\n }\n return \"%\" + code;\n }));\n}\nfunction base64UrlDecode(str) {\n let output = str.replace(/-/g, \"+\").replace(/_/g, \"/\");\n switch (output.length % 4) {\n case 0:\n break;\n case 2:\n output += \"==\";\n break;\n case 3:\n output += \"=\";\n break;\n default:\n throw new Error(\"base64 string is not of the correct length\");\n }\n try {\n return b64DecodeUnicode(output);\n }\n catch (err) {\n return atob(output);\n }\n}\nexport function jwtDecode(token, options) {\n if (typeof token !== \"string\") {\n throw new InvalidTokenError(\"Invalid token specified: must be a string\");\n }\n options || (options = {});\n const pos = options.header === true ? 0 : 1;\n const part = token.split(\".\")[pos];\n if (typeof part !== \"string\") {\n throw new InvalidTokenError(`Invalid token specified: missing part #${pos + 1}`);\n }\n let decoded;\n try {\n decoded = base64UrlDecode(part);\n }\n catch (e) {\n throw new InvalidTokenError(`Invalid token specified: invalid base64 for part #${pos + 1} (${e.message})`);\n }\n try {\n return JSON.parse(decoded);\n }\n catch (e) {\n throw new InvalidTokenError(`Invalid token specified: invalid json for part #${pos + 1} (${e.message})`);\n }\n}\n", "/**\n * @description A wrapper around the Globus Auth service.\n * @group Service\n * @see [Globus Auth API Documentation](https://docs.globus.org/api/auth/)\n * @module\n */\nimport { build } from '../../core/url.js';\n\nimport * as AUTH from './config.js';\n\nimport type { Token, TokenWithRefresh, TokenResponse } from './types.js';\n\n/**\n * @private\n * @internal\n */\nexport const CONFIG = AUTH;\n\nexport type * from './types.js';\n\n/**\n * Query parameters that can be passed to the authorization endpoint.\n * @see https://docs.globus.org/api/auth/reference/#authorization_code_grant_preferred\n * @see https://docs.globus.org/api/auth/sessions/#client-initiated-authns\n */\nexport type AuthorizationQueryParameters = {\n prompt?: string;\n session_message?: string;\n session_required_identities?: string;\n session_required_single_domain?: string;\n session_required_mfa?: 'true' | 'false';\n session_required_policies?: string;\n};\n\nexport function getAuthorizationEndpoint() {\n return build(AUTH.ID, '/v2/oauth2/authorize');\n}\n\nexport function getTokenEndpoint() {\n return build(AUTH.ID, '/v2/oauth2/token');\n}\n\nexport * as identities from './service/identities/index.js';\nexport * as oauth2 from './service/oauth2/index.js';\n\nexport function isToken(check: unknown): check is Token {\n return typeof check === 'object' && check !== null && 'access_token' in check;\n}\n\nexport function isRefreshToken(check: unknown): check is TokenWithRefresh {\n return isToken(check) && check !== null && 'refresh_token' in check;\n}\n\nexport function isGlobusAuthTokenResponse(check: unknown): check is TokenResponse {\n /**\n * @todo This could be made more robust by checking whether the `resource_server` is a well-known value.\n */\n return isToken(check) && check !== null && 'resource_server' in check;\n}\n\nexport * as utils from './utils.js';\n", "import { ID as TRANSFER } from '../transfer/config.js';\nimport { ID as FLOWS } from '../flows/config.js';\nimport { ID as TIMERS } from '../timers/config.js';\nimport { ID as GROUPS } from '../groups/config.js';\nimport { ID as SEARCH } from '../search/config.js';\nimport { ID as COMPUTE } from '../compute/config.js';\n\nimport type { Environment } from '../../core/global.js';\n\nexport const ID = 'AUTH' as const;\nexport const HOSTS: Partial<Record<Environment, string>> = {\n integration: 'auth.integration.globuscs.info',\n sandbox: 'auth.sandbox.globuscs.info',\n production: 'auth.globus.org',\n test: 'auth.test.globuscs.info',\n staging: 'auth.staging.globuscs.info',\n preview: 'auth.preview.globus.org',\n};\n\nexport const SCOPES = {\n VIEW_IDENTITIES: 'urn:globus:auth:scope:auth.globus.org:view_identities',\n};\n\nexport const RESOURCE_SERVERS = {\n [ID]: 'auth.globus.org',\n [TRANSFER]: 'transfer.api.globus.org',\n [FLOWS]: 'flows.globus.org',\n [GROUPS]: 'groups.api.globus.org',\n [SEARCH]: 'search.api.globus.org',\n [TIMERS]: '524230d7-ea86-4a52-8312-86065a9e0417',\n [COMPUTE]: 'funcx_service',\n};\n", "import type { Environment } from '../../core/global.js';\n\nexport const ID = 'TRANSFER' as const;\n\nexport const SCOPES = {\n ALL: 'urn:globus:auth:scope:transfer.api.globus.org:all',\n};\n\nexport const HOSTS: Partial<Record<Environment, string>> = {\n sandbox: 'transfer.api.sandbox.globuscs.info',\n production: 'transfer.api.globusonline.org',\n staging: 'transfer.api.staging.globuscs.info',\n integration: 'transfer.api.integration.globuscs.info',\n test: 'transfer.api.test.globuscs.info',\n preview: 'transfer.api.preview.globus.org',\n};\n", "import type { Environment } from '../../core/global.js';\n\nexport const ID = 'FLOWS' as const;\nexport const HOSTS: Partial<Record<Environment, string>> = {\n sandbox: 'sandbox.flows.automate.globus.org',\n production: 'flows.globus.org',\n staging: 'staging.flows.automate.globus.org',\n integration: 'integration.flows.automate.globus.org',\n test: 'test.flows.automate.globus.org',\n preview: 'preview.flows.automate.globus.org',\n};\n\n/**\n * @see https://docs.globus.org/api/flows/overview/#scopes\n */\nexport const SCOPES = {\n MANAGE_FLOWS: 'https://auth.globus.org/scopes/eec9b274-0c81-4334-bdc2-54e90e689b9a/manage_flows',\n VIEW_FLOWS: 'https://auth.globus.org/scopes/eec9b274-0c81-4334-bdc2-54e90e689b9a/view_flows',\n RUN: 'https://auth.globus.org/scopes/eec9b274-0c81-4334-bdc2-54e90e689b9a/run',\n RUN_STATUS: 'https://auth.globus.org/scopes/eec9b274-0c81-4334-bdc2-54e90e689b9a/run_status',\n RUN_MANAGE: 'https://auth.globus.org/scopes/eec9b274-0c81-4334-bdc2-54e90e689b9a/run_manage',\n};\n", "import type { Environment } from '../../core/global.js';\n\nexport const ID = 'TIMERS' as const;\nexport const HOSTS: Partial<Record<Environment, string>> = {\n sandbox: 'sandbox.timer.automate.globus.org',\n production: 'timer.automate.globus.org',\n staging: 'staging.timer.automate.globus.org',\n integration: 'integration.timer.automate.globus.org',\n test: 'test.timer.automate.globus.org',\n preview: 'preview.timer.automate.globus.org',\n};\n", "import type { Environment } from '../../core/global.js';\n\nexport const ID = 'GROUPS' as const;\nexport const HOSTS: Partial<Record<Environment, string>> = {\n sandbox: 'groups.api.sandbox.globuscs.info',\n production: 'groups.api.globus.org',\n staging: 'groups.api.staging.globuscs.info',\n integration: 'groups.api.integration.globuscs.info',\n test: 'groups.api.test.globuscs.info',\n preview: 'groups.api.preview.globuscs.info',\n};\n\n/**\n * @see https://docs.globus.org/api/groups/#scopes\n */\nexport const SCOPES = {\n ALL: 'urn:globus:auth:scope:groups.api.globus.org:all',\n VIEW_MY: 'urn:globus:auth:scope:groups.api.globus.org:view_my_groups_and_membership',\n};\n", "import type { Environment } from '../../core/global.js';\n\nexport const ID = 'SEARCH' as const;\nexport const HOSTS: Partial<Record<Environment, string>> = {\n sandbox: 'search.api.sandbox.globuscs.info',\n production: 'search.api.globus.org',\n staging: 'search.api.staging.globuscs.info',\n integration: 'search.api.integration.globuscs.info',\n test: 'search.api.test.globuscs.info',\n preview: 'search.api.preview.globus.org',\n};\n\n/**\n * @see https://docs.globus.org/api/search/api_usage/#scopes\n */\nexport const SCOPES = {\n ALL: 'urn:globus:auth:scope:search.api.globus.org:all',\n INGEST: 'urn:globus:auth:scope:search.api.globus.org:ingest',\n SEARCH: 'urn:globus:auth:scope:search.api.globus.org:search',\n};\n", "import type { Environment } from '../../core/global.js';\n\nexport const ID = 'COMPUTE' as const;\nexport const HOSTS: Partial<Record<Environment, string>> = {\n sandbox: 'compute.api.sandbox.globuscs.info',\n production: 'compute.api.globus.org',\n staging: 'compute.api.staging.globuscs.info',\n integration: 'compute.api.integration.globuscs.info',\n test: 'compute.api.test.globuscs.info',\n preview: 'compute.api.preview.globus.org',\n};\n\nexport const SCOPES = {\n ALL: 'https://auth.globus.org/scopes/facd7ccc-c5f4-42aa-916b-a0e270e2c2a9/all',\n};\n", "/**\n * @module Errors\n * @example\n * import { errors } from \"globus/sdk\";\n * if (errors.isConsentRequiredError(...)) { ... }\n */\nimport type { AuthorizationQueryParameters } from '../services/auth/index.js';\nimport type { AuthorizationRequestParameters } from './authorization/pkce.js';\n\nexport class EnvironmentConfigurationError extends Error {\n override name = 'EnvironmentConfigurationError';\n\n constructor(variable: string, value: unknown) {\n super();\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n this.message = `Invalid configuration value provided for ${variable} (${value}).`;\n }\n}\n\nexport type WellFormedError = {\n code: string;\n message: string;\n};\n\n/**\n * Test an unknown argument to determine if it can be further parsed as a potentnial known error.\n */\nexport function isErrorWellFormed(test: unknown): test is WellFormedError {\n return typeof test === 'object' && test !== null && 'code' in test && 'message' in test;\n}\n\n/**\n * An error that indicates that the user must provide consent for additional scopes.\n * - This error typically encountered when interacting with Globus Transfer or Globus Connect Server.\n * - Many instances of `code: \"ConsentRequire\"` in the Globus platform are being migrated to `AuthorizationRequirementsError`.\n */\nexport type ConsentRequiredError = {\n code: 'ConsentRequired';\n required_scopes: string[];\n [key: string]: unknown;\n};\n\n/**\n * Whether or not the provide object is recognized as a `ConsentRequiredError`.\n * @see {@link ConsentRequiredError}\n */\nexport function isConsentRequiredError(test: unknown): test is ConsentRequiredError {\n return (\n isErrorWellFormed(test) &&\n test.code === 'ConsentRequired' &&\n 'required_scopes' in test &&\n Array.isArray(test.required_scopes)\n );\n}\n\n/**\n * An error that includes an `authorization_parameters` property, a.k.a \"G.A.R.E\".\n *\n * A well-known error shape is provided by services when additional authorization requirements must be met by the session.\n * This object can be converted to parameters accepted by Globus Auth using `sdk.errors.toAuthorizationQueryParams()`.\n */\nexport type AuthorizationRequirementsError = {\n authorization_parameters: {\n session_message?: string;\n session_required_identities?: string[];\n session_required_mfa?: boolean;\n session_required_single_domain?: string[];\n session_required_policies?: string[];\n prompt?: string;\n required_scopes?: string[];\n };\n /**\n * @todo At the moment, most Globus services do not guarentee a `code` property for this error type.\n * Once it becomes more common, this type (and the `isAuthorizationRequirementsError` function) should be updated.\n * @see https://globus-sdk-python.readthedocs.io/en/stable/experimental/auth_requirements_errors.html\n */\n // code: string;\n [key: string]: unknown;\n};\n/**\n * Keys that should not be included in the query string object (not recognized by Globus Auth),\n * but are found on the `AuthorizationRequirementsError` object.\n */\nconst NO_OP_KEYS: (keyof AuthorizationRequirementsError)[] = ['required_scopes'];\n/**\n * Convert an `AuthorizationRequirementsError` to a query string object accepted by Globus Auth.\n */\nexport function toAuthorizationQueryParams(\n error: AuthorizationRequirementsError,\n): AuthorizationQueryParameters & Partial<AuthorizationRequestParameters> {\n /**\n * Map properties from the `AuthorizationRequirementsError` to accepted query parameters.\n */\n const mapped = {\n /**\n * `required_scopes` isn't a query parameter accepted by Globus Auth, but\n * in most cases the `required_scopes` represented in the error are intended\n * to be included in the `scopes` (OAuth) parameter.\n * @see https://docs.globus.org/api/auth/sessions/#client-initiated-authns\n */\n scope: error.authorization_parameters.required_scopes?.join(' '),\n /**\n * We still include the entire `authorization_parameters` object in addition to the mapped values for parsing.\n */\n ...error.authorization_parameters,\n };\n\n return Object.entries(mapped).reduce((acc, [key, v]) => {\n /**\n * Remove keys that are not recognized by Globus Auth and empty values.\n */\n if (NO_OP_KEYS.includes(key) || v === undefined || v === null) {\n return acc;\n }\n /**\n * All other values are converted to strings.\n */\n let value = v;\n if (Array.isArray(value)) {\n value = value.join(',');\n } else if (typeof v === 'boolean') {\n value = value ? 'true' : 'false';\n }\n return { ...acc, [key]: value };\n }, {});\n}\n\n/**\n * Check if an object is an `AuthorizationRequirementsError`.\n * @see {@link AuthorizationRequirementsError}\n */\nexport function isAuthorizationRequirementsError(\n test: unknown,\n): test is AuthorizationRequirementsError {\n return (\n typeof test === 'object' &&\n test !== null &&\n 'authorization_parameters' in test &&\n typeof test.authorization_parameters === 'object' &&\n test.authorization_parameters !== null\n );\n}\n", "import * as AUTH from '../services/auth/config.js';\nimport * as TRANSFER from '../services/transfer/config.js';\nimport * as FLOWS from '../services/flows/config.js';\nimport * as GROUPS from '../services/groups/config.js';\nimport * as SEARCH from '../services/search/config.js';\nimport * as TIMERS from '../services/timers/config.js';\nimport * as COMPUTE from '../services/compute/config.js';\n\nimport { EnvironmentConfigurationError } from './errors.js';\nimport { SDKOptions } from '../services/types.js';\nimport { log } from './logger.js';\n\nfunction getRuntime() {\n return typeof window !== 'undefined' ? window : process;\n}\n\nfunction isBrowser(runtime: Window | NodeJS.Process): runtime is Window {\n return typeof window === typeof runtime;\n}\n\nfunction env<T>(key: string, fallback: T): T {\n const runtime = getRuntime();\n let envConfiguration;\n if (isBrowser(runtime)) {\n envConfiguration = runtime;\n } else {\n envConfiguration = runtime.env;\n }\n if (key in envConfiguration) {\n return (envConfiguration as Record<typeof key, T>)[key];\n }\n return fallback;\n}\n\n/**\n * Handlers for: GLOBUS_SDK_ENVIRONMENT\n */\nexport const ENVIRONMENTS = {\n PRODUCTION: 'production',\n PREVIEW: 'preview',\n STAGING: 'staging',\n SANDBOX: 'sandbox',\n INTEGRATION: 'integration',\n TEST: 'test',\n} as const;\n\nexport type Environment = (typeof ENVIRONMENTS)[keyof typeof ENVIRONMENTS];\n\nexport const SERVICES = {\n [AUTH.ID]: AUTH.ID,\n [TRANSFER.ID]: TRANSFER.ID,\n [FLOWS.ID]: FLOWS.ID,\n [GROUPS.ID]: GROUPS.ID,\n [SEARCH.ID]: SEARCH.ID,\n [TIMERS.ID]: TIMERS.ID,\n [COMPUTE.ID]: COMPUTE.ID,\n};\n\nexport type Service = keyof typeof SERVICES;\n\nexport const SERVICE_HOSTS: Record<Service, Partial<Record<Environment, string>>> = {\n [AUTH.ID]: AUTH.HOSTS,\n [TRANSFER.ID]: TRANSFER.HOSTS,\n [FLOWS.ID]: FLOWS.HOSTS,\n [GROUPS.ID]: GROUPS.HOSTS,\n [SEARCH.ID]: SEARCH.HOSTS,\n [TIMERS.ID]: TIMERS.HOSTS,\n [COMPUTE.ID]: COMPUTE.HOSTS,\n};\n\n/**\n * Get the computed SDK options based on the runtime.\n * This should be used any time we're referencing the SDK options in\n * methods to ensure we're including any global overrides.\n */\nexport function getSDKOptions(options?: SDKOptions) {\n let globalOptions = env<string | SDKOptions>('GLOBUS_SDK_OPTIONS', {});\n if (typeof globalOptions === 'string') {\n globalOptions = JSON.parse(globalOptions) as SDKOptions;\n }\n return {\n ...globalOptions,\n ...options,\n fetch: {\n ...globalOptions?.fetch,\n ...options?.fetch,\n options: {\n ...globalOptions?.fetch?.options,\n ...options?.fetch?.options,\n headers: {\n ...globalOptions?.fetch?.options?.headers,\n ...options?.fetch?.options?.headers,\n },\n },\n },\n };\n}\n\nexport function getEnvironment(): Environment {\n const globalOptions = getSDKOptions();\n const environment = env<Environment>(\n 'GLOBUS_SDK_ENVIRONMENT',\n globalOptions?.environment ?? ENVIRONMENTS.PRODUCTION,\n );\n if (globalOptions?.environment && environment !== globalOptions.environment) {\n log(\n 'debug',\n 'GLOBUS_SDK_ENVIRONMENT and GLOBUS_SDK_OPTIONS.environment are set to different values. GLOBUS_SDK_ENVIRONMENT will take precedence',\n );\n }\n if (!environment || !Object.values(ENVIRONMENTS).includes(environment)) {\n throw new EnvironmentConfigurationError('GLOBUS_SDK_ENVIRONMENT', environment);\n }\n return environment;\n}\n\n/**\n * Handlers for: GLOBUS_SDK_VERIFY_SSL\n * Since disabling SSL is at least not-recommended, we consider\n * this value to always be true, but provide a warning when it set\n * to one of the falsey values for informational purposes.\n *\n * Taking direction from `globus-sdk-python` for possible false values\n * @see https://github.com/globus/globus-sdk-python/blob/18eced9c12e2ec41745d1be183148845198b999c/src/globus_sdk/config/env_vars.py#L20\n */\nexport function getVerifySSL(): boolean {\n const verifySSLTemp = env<string>('GLOBUS_SDK_VERIFY_SSL', 'true').toLowerCase();\n if (['n', 'no', 'f', 'false', 'off', '0'].includes(verifySSLTemp)) {\n log(\n 'warn',\n 'Setting GLOBUS_SDK_VERIFY_SSL to false is disallowed in the Globus JavaScript SDK. It will always true in this context',\n );\n }\n return true;\n}\n\n/**\n * Handlers for: GLOBUS_SDK_HTTP_TIMEOUT\n */\nexport function getHttpTimeout() {\n const timeout = Number(env<string | number>('GLOBUS_SDK_HTTP_TIMEOUT', 60));\n if (timeout === -1) {\n return null;\n }\n return timeout;\n}\n\nexport function getServiceHost(service: Service, environment: Environment = getEnvironment()) {\n return SERVICE_HOSTS[service][environment];\n}\n\nexport function getServiceBaseUrl(service: Service, environment: Environment = getEnvironment()) {\n const host = getServiceHost(service, environment);\n return env(`GLOBUS_SDK_SERVICE_URL_${service}`, host ? `https://${host}` : undefined);\n}\n", "import { getServiceBaseUrl, getEnvironment, Environment, Service } from './global.js';\nimport type {\n GCSConfiguration,\n UnauthenticatedGCSConfiguration,\n} from '../services/globus-connect-server/index.js';\nimport { SDKOptions } from '../services/types.js';\n\n/**\n * An extremely simplified parameter serializer based on our current needs.\n *\n * **This is intended for internal @globus/sdk use only.**\n *\n * @private\n */\nexport function stringifyParameters(parameters: {\n [key: string]:\n | string\n | number\n | boolean\n | Array<string | number | null | undefined>\n | null\n | undefined;\n}) {\n const search = new URLSearchParams();\n\n Array.from(Object.entries(parameters)).forEach(([key, value]) => {\n if (Array.isArray(value)) {\n /**\n * Arrays are converted to comma-separated strings.\n */\n search.set(key, value.join(','));\n } else if (value !== undefined) {\n search.set(key, String(value));\n }\n });\n\n return search.toString();\n}\n\n/**\n * Return the base URL for a service (based on the environment).\n * @param service The service to build the URL for.\n * @param path The path to the resource.\n * @param environment The environment to use.\n */\nexport function getServiceURL(\n service: Service,\n path = '',\n environment: Environment = getEnvironment(),\n): URL {\n const base = getServiceBaseUrl(service, environment);\n return new URL(path, base);\n}\n\n/**\n * Build a URL for a service or GCSConfiguration.\n *\n * @param service The service identifier or GCSConfiguration object to build the URL for.\n * @param path The path to the resource.\n * @param options Additional options for the URL.\n */\nexport function build(\n serviceOrConfiguration: Service | GCSConfiguration | UnauthenticatedGCSConfiguration,\n path: string,\n options?: {\n search?: Parameters<typeof stringifyParameters>[0];\n },\n sdkOptions?: SDKOptions,\n): string {\n let url;\n if (typeof serviceOrConfiguration === 'object') {\n url = new URL(path, serviceOrConfiguration.host);\n } else {\n url = getServiceURL(serviceOrConfiguration, path, sdkOptions?.environment);\n }\n if (options && options.search) {\n url.search = stringifyParameters(options.search);\n }\n return url.toString();\n}\n", "import { ID, SCOPES } from '../../config.js';\nimport { serviceRequest } from '../../../../services/shared.js';\n\nimport type { ServiceMethod, ServiceMethodDynamicSegments } from '../../../types.js';\n\nexport * as consents from './consents.js';\n\n/**\n * Fetch a single Identity by ID.\n * @see https://docs.globus.org/api/auth/reference/#get_identities\n */\nexport const get = function (identity_id, options = {}, sdkOptions?) {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.VIEW_IDENTITIES,\n path: `/v2/api/identities/${identity_id}`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<string, Record<string, any>>;\n\n/**\n * Return a list of identities that match provided query parameters.\n * @see https://docs.globus.org/api/auth/reference/#get_identities\n */\nexport const getAll = function (options = {}, sdkOptions?) {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.VIEW_IDENTITIES,\n path: `/v2/api/identities`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethod<{\n query?: {\n ids?: string | string[];\n usernames?: string | string[];\n };\n headers?: Record<string, string>;\n payload?: never;\n}>;\n", "import _fetch from 'cross-fetch';\nimport { getClientInfoRequestHeaders } from '../core/info/index.js';\nimport { build } from '../core/url.js';\nimport { getSDKOptions, Service } from '../core/global.js';\nimport { isAuthorizationRequirementsError } from '../core/errors.js';\nimport { RESOURCE_SERVERS } from './auth/config.js';\nimport { isRefreshToken } from './auth/index.js';\nimport type { ServiceMethodOptions, SDKOptions } from './types.js';\nimport type {\n GCSConfiguration,\n UnauthenticatedGCSConfiguration,\n} from '../services/globus-connect-server/index.js';\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport enum HTTP_METHODS {\n POST = 'POST',\n GET = 'GET',\n DELETE = 'DELETE',\n PUT = 'PUT',\n PATCH = 'PATCH',\n}\n\n/**\n * Our domain-specific language for describing service requests.\n * @private\n */\ntype ServiceRequestDSL = {\n /**\n * The service that the request will be made to.\n */\n service: Service | GCSConfiguration | UnauthenticatedGCSConfiguration;\n /**\n * A specific scope that is required for the request. If a scope is provided,\n * the `serviceRequest` function will attempt to get a token for the request\n * based on the the `service` => `resource_server` mapping.\n * @deprecated Define using `resource_server` instead.\n */\n scope?: string;\n /**\n * The resource server that the request will be made to. This can be provided\n * instead of (or addition to) the `scope` property. If this is provided, the\n * `serviceRequest` function will attempt to get a token for the resource server\n * when a `manager` instance is provided in the SDK options.\n */\n resource_server?: string;\n /**\n * The path of the resource (appended to the service's host).\n */\n path: string;\n /**\n * The HTTP method to use for the request.\n */\n method?: HTTP_METHODS;\n /**\n * For some resources, it doesn't make sense for requests to be retried.\n * Setting this to `true` will prevent any retry logic from being applied.\n */\n preventRetry?: boolean;\n};\n\n/**\n * A helper function for making service requests that will handle the arguments\n * of `ServiceMethod` and `ServiceMethodDynamicSegments` functions in a uniform\n * way.\n *\n * @example\n * ```ts\n * export const get = function (flow_id, options?, sdkOptions?) {\n * return serviceRequest({\n * service: FLOWS.ID,\n * scope: SCOPES.VIEW_FLOWS,\n * path: `/flows/${flow_id}`,\n * }, options, sdkOptions);\n * } satisfies ServiceMethodDynamicSegments<string, Record<string, any>>;\n * ```\n *\n * @private\n * @param config The ServiceRequestDSL for the request.\n * @param options The options passed to the service method.\n * @param passedSdkOptions The SDK options passed to the service method.\n * @returns\n */\nexport async function serviceRequest(\n this: unknown,\n config: ServiceRequestDSL,\n options?: ServiceMethodOptions,\n passedSdkOptions?: SDKOptions,\n): Promise<Response> {\n /**\n * Get the SDK options, merging any passed options with the global options.\n */\n const sdkOptions = getSDKOptions(passedSdkOptions);\n const injectedFetchOptions = sdkOptions?.fetch?.options || {};\n\n const headers: Record<string, string> = {\n ...getClientInfoRequestHeaders(),\n ...options?.headers,\n /**\n * Key/value pairs found in the `fetch` options override those found in the\n * service method options.\n */\n ...injectedFetchOptions.headers,\n };\n\n /**\n * The `AuthorizationManager` instance provided with the call.\n */\n const manager = options?.manager || sdkOptions?.manager;\n\n let token;\n /**\n * If a `resource_server` was provided, and the SDK is configured with a `manager`\n * instance, we'll try to get a token for the resource server and use it.\n */\n if (config.resource_server && manager) {\n token = manager.tokens.getByResourceServer(config.resource_server);\n if (token) {\n headers['Authorization'] = `Bearer ${token.access_token}`;\n }\n }\n /**\n * If the `scope` property is provided, and the SDK is configured with a `manager`,\n * we'll try to map the service to a resource server. This is mostly to support\n * backwards compatibility of the `scope` property being used in the `ServiceRequestDSL`.\n *\n * @todo This condition will likely be removed in a future version in favor of using `resource_server` to\n * configure a service request.\n */\n if (\n config.scope &&\n manager &&\n /**\n * Only attempt to get a token if the `service` property is a string or has an `endpoint_id` property (GCSConfiguration).\n */\n (typeof config.service === 'string' || 'endpoint_id' in config.service)\n ) {\n const resourceServer =\n typeof config.service === 'string'\n ? RESOURCE_SERVERS[config.service]\n : // For `GCSConfiguration` objects, the `endpoint_id` is the resource server.\n config.service.endpoint_id;\n\n token = manager.tokens.getByResourceServer(resourceServer);\n if (token) {\n headers['Authorization'] = `Bearer ${token.access_token}`;\n }\n }\n\n /**\n * If a raw body was provided, use that. Otherwise, if a payload was provided, serialize it.\n */\n let body = options?.body;\n if (!body && options?.payload) {\n body = JSON.stringify(options.payload);\n }\n\n /**\n * If `Content-Type` header was not provided, and there is a body, we assume it is JSON.\n */\n if (!headers?.['Content-Type'] && body) {\n headers['Content-Type'] = 'application/json';\n }\n\n const url = build(\n config.service,\n config.path,\n {\n search: options?.query,\n },\n sdkOptions,\n );\n\n const init = {\n method: config.method,\n body,\n ...injectedFetchOptions,\n /**\n * Merge the headers from the options and SDK options.\n */\n headers,\n };\n\n /**\n * The request handler for the fetch call. This can be overridden by providing a\n * `__callable` property in the `fetch` options.\n */\n let handler = _fetch;\n /* eslint-disable no-underscore-dangle */\n if (injectedFetchOptions?.__callable) {\n handler = injectedFetchOptions.__callable.bind(this);\n /**\n * Remove the `__callable` property from the `fetch` options before passing the options along.\n */\n delete init.__callable;\n }\n /* eslint-enable no-underscore-dangle */\n\n /**\n * If the resource is configured to prevent retries, there is no `manager` instance,\n * or token, the request will be made as-is.\n */\n if (config.preventRetry || !manager || !token || !isRefreshToken(token)) {\n return handler(url, init);\n }\n\n /**\n * Automatic Retry Handling\n */\n\n const initialResponse = await handler(url, init);\n /**\n * If the response is \"ok\", we can return it as-is.\n */\n if (initialResponse.ok) {\n return initialResponse;\n }\n /**\n * Do a safe check to see if the response contains any authorization requirements.\n */\n let hasAuthorizationRequirements;\n try {\n hasAuthorizationRequirements = isAuthorizationRequirementsError(\n /**\n * It is important to clone the response before calling `json` avoid\n * `body used already for [...]` errors when the initial response is\n * returned.\n */\n await initialResponse.clone().json(),\n );\n } catch (_e) {\n hasAuthorizationRequirements = false;\n }\n /**\n * We only attempt to refresh the original token supplied with teh request, if the\n * response status is 401 and the response does not contain any authorization requirements.\n */\n const shouldAttemptTokenRefresh = initialResponse.status === 401 && !hasAuthorizationRequirements;\n if (shouldAttemptTokenRefresh) {\n const newToken = await manager.refreshToken(token);\n if (!newToken) {\n return initialResponse;\n }\n /**\n * Retry the request with the new token.\n */\n return handler(url, {\n ...init,\n headers: {\n ...init.headers,\n Authorization: `Bearer ${newToken.access_token}`,\n },\n });\n }\n /**\n * No retry was attempted, return the initial response.\n */\n return initialResponse;\n}\n", "import { ID, SCOPES } from '../../config.js';\nimport { serviceRequest } from '../../../../services/shared.js';\n\nimport type { JSONFetchResponse, ServiceMethodDynamicSegments } from '../../../types.js';\n\nexport type Consent = {\n auto_approved: boolean;\n effective_identity: string;\n id: number;\n client: string;\n updated: string;\n /**\n * An array of `Consent.id` values that represents the location of this consent in the dependency graph.\n */\n dependency_path: number[];\n status: string;\n allows_refresh: boolean;\n scope_name: string;\n created: string;\n atomically_revocable: boolean;\n scope: string;\n last_used: string;\n};\n\nexport const getAll = function (\n identity_id,\n options = {},\n sdkOptions?,\n): Promise<JSONFetchResponse<{ consents: Consent[] }>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.VIEW_IDENTITIES,\n path: `/v2/api/identities/${identity_id}/consents`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<string, Record<string, any>>;\n", "import { ID } from '../../config.js';\nimport { HTTP_METHODS, serviceRequest } from '../../../../services/shared.js';\n\nimport type { ServiceMethod } from '../../../types.js';\n\nexport const userinfo = function (options?, sdkOptions?) {\n return serviceRequest(\n {\n service: ID,\n scope: undefined,\n path: `/v2/oauth2/userinfo`,\n method: HTTP_METHODS.GET,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethod<{\n payload: never;\n}>;\n\nexport * as token from './token.js';\n", "import { ID } from '../../config.js';\nimport { HTTP_METHODS, serviceRequest } from '../../../../services/shared.js';\n\nimport type { ServiceMethod, ServiceMethodOptions } from '../../../types.js';\n\ntype IntrospectPayload = {\n token: string;\n include?: string;\n};\n\ntype RevokePayload = {\n token: string;\n /**\n * This is an undocumented property that is required for the request to be successful.\n */\n client_id: string;\n};\n\ntype ValidatePayload = {\n token: string;\n client_id: string;\n};\n\ntype RefreshPayload = {\n refresh_token: string;\n grant_type: 'refresh_token';\n /**\n * This is an undocumented property that is required for the request to be successful.\n */\n client_id: string;\n};\n\ntype ExchangePayload = {\n grant_type: 'authorization_code';\n code: string;\n client_id: string;\n code_verifier: string;\n redirect_uri: string;\n};\n\ntype SupportedPayloads =\n | IntrospectPayload\n | RevokePayload\n | ValidatePayload\n | RefreshPayload\n | ExchangePayload;\n\nfunction serialize(payload?: SupportedPayloads) {\n return new URLSearchParams(payload);\n}\n\n/**\n * Format and inject properties that are specific to the `/token` resources.\n */\nfunction injectServiceOptions(\n options: ServiceMethodOptions & {\n payload?: SupportedPayloads;\n },\n): ServiceMethodOptions {\n return {\n ...options,\n /**\n * The `token` service methods always expect a form-encoded body. We still allow\n * end-consumers to pass a raw body, but if `payload` is provided it is serialized.\n */\n body: options.payload ? serialize(options.payload) : undefined,\n headers: {\n ...(options?.headers || {}),\n Accept: 'application/json',\n /**\n * Force the `Content-Type` header to be `application/x-www-form-urlencoded` and `charset=UTF-8`.\n */\n 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',\n },\n };\n}\n\n/**\n * @see https://docs.globus.org/api/auth/reference/#dependent_token_grant_post_v2oauth2token\n */\nexport const token = function (options = {}, sdkOptions?) {\n return serviceRequest(\n {\n service: ID,\n scope: undefined,\n path: `/v2/oauth2/token`,\n method: HTTP_METHODS.POST,\n preventRetry: true,\n },\n injectServiceOptions(options),\n sdkOptions,\n );\n} satisfies ServiceMethod<{\n payload?: ExchangePayload;\n query?: {\n /**\n * Include tokens for all scopes that the user has consented to, for the requesting client.\n * @private\n */\n include_consented_scopes?: boolean;\n };\n}>;\n\n/**\n * @see https://docs.globus.org/api/auth/developer-guide/#obtaining-authorization\n */\nexport const exchange = token;\n\n/**\n * Token Introspection\n * @see https://docs.globus.org/api/auth/reference/#token-introspect\n */\nexport const introspect = function (options, sdkOptions?) {\n if (!options?.payload) {\n throw new Error(`'payload' is required for introspect`);\n }\n return serviceRequest(\n {\n service: ID,\n scope: undefined,\n path: `/v2/oauth2/token/introspect`,\n method: HTTP_METHODS.POST,\n preventRetry: true,\n },\n injectServiceOptions(options),\n sdkOptions,\n );\n} satisfies ServiceMethod<{\n payload: IntrospectPayload;\n}>;\n\n/**\n * Token Revocation\n * @see https://docs.globus.org/api/auth/reference/#token-revoke\n */\nexport const revoke = function (options, sdkOptions?) {\n if (!options?.payload) {\n throw new Error(`'payload' is required for revoke`);\n }\n return serviceRequest(\n {\n service: ID,\n scope: undefined,\n path: `/v2/oauth2/token/revoke`,\n method: HTTP_METHODS.POST,\n preventRetry: true,\n },\n injectServiceOptions(options),\n sdkOptions,\n );\n} satisfies ServiceMethod<{\n payload: RevokePayload;\n}>;\n\n/**\n * Token Refresh\n * @see https://docs.globus.org/api/auth/reference/#refresh_token_grant\n */\nexport const refresh = function (options, sdkOptions?) {\n if (!options?.payload) {\n throw new Error(`'payload' is required for revoke`);\n }\n return serviceRequest(\n {\n service: ID,\n scope: undefined,\n path: `/v2/oauth2/token`,\n method: HTTP_METHODS.POST,\n preventRetry: true,\n },\n injectServiceOptions(options),\n sdkOptions,\n );\n} satisfies ServiceMethod<{\n payload: RefreshPayload;\n}>;\n\n/**\n * @private\n * @deprecated Rather than using `validate` to check if a token is valid, it is recommended to make a request to the resource server with the token and handle the error response.\n */\nexport const validate = function (options, sdkOptions?) {\n if (!options?.payload) {\n throw new Error(`'payload' is required for validate`);\n }\n return serviceRequest(\n {\n service: ID,\n scope: undefined,\n path: `/v2/oauth2/token/validate`,\n method: HTTP_METHODS.POST,\n preventRetry: true,\n },\n injectServiceOptions(options),\n sdkOptions,\n );\n} satisfies ServiceMethod<{\n payload: ValidatePayload;\n}>;\n", "import { Consent } from './service/identities/consents.js';\n\nexport type ScopeTreeLeaf = {\n scope: string;\n atomically_revocable: boolean;\n children: ScopeTreeLeaf[];\n};\n\n/**\n * Splits a scope string into an array of individual scopes, accounting for nested, space-separated scopes.\n * @private\n */\nexport function splitScopeString(scope: string): string[] {\n const scopes: string[] = [];\n let currentScope = '';\n let openBrackets = 0;\n scope.split('').forEach((char, i) => {\n currentScope += char;\n if (char === '[') {\n openBrackets += 1;\n }\n if (char === ']') {\n openBrackets -= 1;\n }\n /**\n * If we encounter a space outside of brackets, or if we're at the end of the string and there is `currentScope`\n * value, push it to the `scopes` array.\n */\n if ((char === ' ' && openBrackets === 0) || (i === scope.length - 1 && currentScope)) {\n scopes.push(currentScope.trim());\n currentScope = '';\n }\n });\n return scopes;\n}\n\n/**\n * Parses a scope string into a normalized structure (leaf) for easier comparison.\n */\nfunction parseScope(s: string): ScopeTreeLeaf {\n let parsedScope = s;\n const revocable = parsedScope.startsWith('*');\n if (revocable) {\n parsedScope = parsedScope.replace(/^\\*\\s*/, '');\n }\n let children: ScopeTreeLeaf[] = [];\n /**\n * If there is no bracket, then there are no children and we can return the parsed scope.\n */\n const firstBracket = parsedScope.indexOf('[');\n if (firstBracket === -1) {\n return {\n scope: parsedScope,\n atomically_revocable: revocable,\n children: [],\n };\n }\n /**\n * The top-level scope is everything before the first encountered bracket.\n */\n const topLevelScope = parsedScope.slice(0, firstBracket);\n /**\n * The children are everything inside the brackets.\n */\n const dependentScope = parsedScope.slice(firstBracket + 1, -1);\n children = splitScopeString(dependentScope).map(parseScope);\n return {\n scope: topLevelScope,\n atomically_revocable: revocable,\n children,\n };\n}\n\n/**\n * Converts a scope string into a tree structure for easier comparison.\n */\nexport function toScopeTree(scope: string): ScopeTreeLeaf[] {\n return splitScopeString(scope).map(parseScope);\n}\n\n/**\n * Given a list of consent entries and a scope string, determine if **all** scopes have been approved.\n *\n * @param consents An array of consent entries (sourced from the Globus Auth API) that will be used as the \"haystack\" for the search.\n * @param scope A full scope string that will be parsed into a tree, and compared against the `consents`.\n * @returns boolean\n */\nexport function hasConsentForScope(consents: Consent[], scope: string): boolean {\n const tree = toScopeTree(scope);\n /**\n * Determine if a leaf of the scope tree has a consent entry (including all `children`).\n * @param leaf The leaf of the scope tree we are checking for consent.\n * @param path The current, expected path to the leaf when processing `children`.\n * @returns boolean\n */\n function hasConsentEntry(leaf: ScopeTreeLeaf, path?: number[]): boolean {\n /**\n * Find the consent entry that matches the current leaf, and the current path.\n */\n const entry = consents.find(\n (c) =>\n c.scope_name === leaf.scope &&\n /**\n * If a `path` is provided, we need to make sure the entry is at the proper depth.\n */\n (path\n ? c.dependency_path.join(',') === [...path, c.id].join(',')\n : /**\n * If there is no `path`, then the entry must be a \"top-level\" scope.\n */\n c.dependency_path.length === 1),\n );\n /**\n * If no entry was found, then the scope has not be explicitly approved (or denied).\n */\n if (!entry) return false;\n /**\n * If we found an entry, and there are no `children` to process on the leaf,\n * then we can use the `status` of the entry to determine if the scope has been approved.\n */\n if (!leaf.children.length) return entry.status === 'approved';\n /**\n * If there are `children` to process, then we need to check if all `children` have been approved.\n */\n return leaf.children.every((s) =>\n hasConsentEntry(\n s,\n /**\n * If there is a `path`, make sure to pass it down to account for deeply nested scopes, otherwise\n * the `entry` can be considered to \"root\".\n */\n path ? [...path, entry.id] : [entry.id],\n ),\n );\n }\n\n return tree.every((l) => hasConsentEntry(l));\n}\n", "/**\n * @todo It would be nice to not `| any` here, but ideally callers do not need to\n * fully type the payload to attach listeners.\n */\ntype ListenerCallback<P> = (payload?: P | any) => Promise<void> | void;\n\nexport class Event<EventName extends string, Payload extends unknown> {\n #callbacks: ListenerCallback<Payload>[] = [];\n\n constructor(readonly name: EventName) {}\n\n addListener(callback: ListenerCallback<Payload>) {\n this.#callbacks.push(callback);\n return () => this.removeListener(callback);\n }\n\n removeListener(callback: ListenerCallback<Payload>) {\n this.#callbacks = this.#callbacks.filter((cb) => cb !== callback);\n }\n\n clearListeners() {\n this.#callbacks = [];\n }\n\n async dispatch(payload?: Payload) {\n await Promise.all(this.#callbacks.map((callback) => callback(payload)));\n }\n}\n", "export function isSupported() {\n return 'crypto' in globalThis;\n}\n\nfunction getCrypto(): Crypto {\n return 'webcrypto' in globalThis.crypto\n ? (globalThis.crypto.webcrypto as unknown as Crypto)\n : globalThis.crypto;\n}\n\n/**\n * Base64 URL encode a string.\n * @see https://www.oauth.com/oauth2-servers/pkce/authorization-request/\n */\nconst encode = (value: string) =>\n btoa(value).replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=+$/, '');\n\nasync function sha256(input: string) {\n const hashBuffer = await getCrypto().subtle.digest('SHA-256', new TextEncoder().encode(input));\n return String.fromCharCode(...new Uint8Array(hashBuffer));\n}\n\n/**\n * Character set for generating random alpha-numeric strings.\n */\nconst CHARSET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n\n/**\n * Character set allowed to be used in the PKCE `code_verifier`\n * @see https://www.rfc-editor.org/rfc/rfc7636#section-4.1\n */\nconst PKCE_SAFE_CHARSET = `${CHARSET}-._~`;\n/**\n * Create a Code Verifier for PKCE\n * @see https://www.rfc-editor.org/rfc/rfc7636#section-4.1\n */\nexport function generateCodeVerifier() {\n /**\n * @todo Make length random between 43 and 128 characters\n */\n return Array.from(getCrypto().getRandomValues(new Uint8Array(43)))\n .map((v) => PKCE_SAFE_CHARSET[v % PKCE_SAFE_CHARSET.length])\n .join('');\n}\n\n/**\n * Create a Code Challenge from a provided Code Verifier (assumes S256 `code_challenge_method`).\n * @see https://www.rfc-editor.org/rfc/rfc7636#section-4.2\n */\nexport async function generateCodeChallenge(verifier: string) {\n const hashed = await sha256(verifier);\n return encode(hashed);\n}\n\nexport function generateState() {\n return Array.from(getCrypto().getRandomValues(new Uint8Array(16)))\n .map((v) => CHARSET[v % CHARSET.length])\n .join('');\n}\n\n/**\n * @see https://www.oauth.com/oauth2-servers/pkce/authorization-code-exchange/\n */\nexport type AuthorizationCodeExchangeParameters = {\n code: string;\n code_verifier: string;\n client_id: string;\n client_secret?: string;\n redirect_uri: string;\n grant_type: 'authorization_code';\n};\n\n/**\n * @see https://www.oauth.com/oauth2-servers/pkce/authorization-request/\n */\nexport type AuthorizationRequestParameters = {\n client_id: string;\n redirect_uri: string;\n response_type: 'code';\n scope: string;\n state: string;\n code_challenge: string;\n code_challenge_method: 'S256' | 'plain';\n};\n\n/**\n * @private\n */\nexport const KEYS = {\n PKCE_STATE: 'pkce_state',\n PKCE_CODE_VERIFIER: 'pkce_code_verifier',\n};\n\ntype Entries = 'state' | 'code_verifier';\n\nexport const store = {\n getKey(key: Entries) {\n return key === 'state' ? KEYS.PKCE_STATE : KEYS.PKCE_CODE_VERIFIER;\n },\n get: (entry: Entries) => sessionStorage.getItem(store.getKey(entry)),\n set: (entry: Entries, value: string) => sessionStorage.setItem(store.getKey(entry), value),\n reset: () => {\n sessionStorage.removeItem(KEYS.PKCE_STATE);\n sessionStorage.removeItem(KEYS.PKCE_CODE_VERIFIER);\n },\n};\n", "import { getAuthorizationEndpoint, oauth2 } from '../../services/auth/index.js';\nimport {\n generateCodeChallenge,\n generateCodeVerifier,\n generateState,\n AuthorizationRequestParameters,\n AuthorizationCodeExchangeParameters,\n isSupported,\n store,\n} from './pkce.js';\n\nimport type { AuthorizationManagerConfiguration } from './AuthorizationManager.js';\n\nexport type GetTokenOptions = {\n /**\n * Whether or not the URL should be replaced after processing the token.\n * This is used to remove the `?code=...&state=...` parameters from the URL after the token is retrieved.\n * If set to `false`, the URL will remain unchanged.\n * @default true\n */\n shouldReplace?: boolean;\n /**\n * When set to `true` in addition to the `scope` values originally requested, Globus Auth\n * will return tokens for **all** of the scopes that the user has consented to, for\n * the requesting client.\n * @default false\n * @private\n */\n includeConsentedScopes?: boolean;\n};\n\nexport type TransportOptions = Pick<\n AuthorizationManagerConfiguration,\n 'client' | 'redirect' | 'scopes'\n> & {\n /**\n * Query parameters to include in the authorization request.\n *\n * The transport will include all parameters required for a default OAuth PKCE flow, but\n * these parameters can be overridden or extended with this option.\n */\n params?: {\n [key: string]: string;\n };\n};\n\nexport type RedirectTransportOptions = TransportOptions;\nexport class RedirectTransport {\n #options: RedirectTransportOptions;\n\n constructor(options: RedirectTransportOptions) {\n this.#options = options;\n if (RedirectTransport.supported === false) {\n throw new Error('RedirectTransport is not supported in this environment.');\n }\n }\n\n static supported = isSupported();\n\n /**\n * For the redirect transport, sending the request will redirect the user to the authorization endpoint, initiating the OAuth flow.\n */\n async send() {\n /**\n * Since we'll be using PKCE, we need to generate a code verifier and challenge\n * for the OAuth handshake.\n */\n const verifier = generateCodeVerifier();\n const challenge = await generateCodeChallenge(verifier);\n /**\n * If there is caller-provided `state`, use it; Otherwise, generate a state parameter.\n */\n const state = this.#options.params?.['state'] ?? generateState();\n /**\n * The verifier and state are stored in session storage so that we can validate\n * the response when we receive it.\n */\n store.set('code_verifier', verifier);\n store.set('state', state);\n\n const params: AuthorizationRequestParameters = {\n response_type: 'code',\n client_id: this.#options.client,\n scope: this.#options.scopes || '',\n redirect_uri: this.#options.redirect,\n state,\n code_challenge: challenge,\n code_challenge_method: 'S256',\n ...(this.#options.params || {}),\n };\n\n const url = new URL(getAuthorizationEndpoint());\n url.search = new URLSearchParams(params).toString();\n\n window.location.assign(url.toString());\n }\n\n /**\n * Parse the current URL for the authorization code (`?code=...`) and exchange it for an access token when available.\n * - When the URL is processed and exchanged for an access token, the page is redirected to the current URL without the `?code=...&state=...` parameters.\n */\n async getToken(\n options: GetTokenOptions = { shouldReplace: true, includeConsentedScopes: false },\n ) {\n const url = new URL(window.location.href);\n const params = new URLSearchParams(url.search);\n /**\n * Check for an error in the OAuth flow.\n * @see https://www.oauth.com/oauth2-servers/pkce/authorization-request/\n */\n if (params.get('error')) {\n throw new Error(\n params.get('error_description') || 'An error occurred during the authorization process.',\n );\n }\n\n const code = params.get('code');\n\n /**\n * If we don't have a `code` parameter, we can't exchange it for an access token.\n */\n if (!code) return undefined;\n\n /**\n * Grab the PKCE information from session storage.\n */\n const state = store.get('state');\n const verifier = store.get('code_verifier');\n /**\n * Now that we have the values in memory, we can remove them from session storage.\n */\n store.reset();\n\n /**\n * Validate the `state` parameter matches the preserved state (to prevent CSRF attacks).\n */\n if (params.get('state') !== state) {\n throw new Error(\n 'Invalid State. The received \"state\" parameter does not match the expected state.',\n );\n }\n /**\n * Ensure we have a valid code verifier.\n */\n if (!verifier) {\n throw new Error('Invalid Code Verifier');\n }\n\n /**\n * Prepare the payload for the PKCE token exchange.\n */\n const payload: AuthorizationCodeExchangeParameters = {\n code,\n client_id: this.#options.client,\n /**\n * Retrieve the code verifier from session storage.\n */\n code_verifier: verifier,\n redirect_uri: this.#options.redirect,\n grant_type: 'authorization_code',\n };\n\n const response = await (\n await oauth2.token.exchange({\n query: options.includeConsentedScopes\n ? {\n include_consented_scopes: true,\n }\n : undefined,\n payload,\n })\n ).json();\n\n if (options.shouldReplace) {\n /**\n * Remove the `code` and `state` parameters from the URL.\n */\n params.delete('code');\n params.delete('state');\n /**\n * Update the URL with the new query string.\n */\n url.search = params.toString();\n /**\n * Redirect the page to the new URL (without the `code` and `state` parameters)/\n */\n window.location.replace(url);\n }\n return response;\n }\n}\n", "import { CONFIG, isToken } from '../../services/auth/index.js';\n\nimport { SERVICES, type Service } from '../global.js';\nimport { AuthorizationManager } from './AuthorizationManager.js';\n\nimport type { Token, TokenResponse } from '../../services/auth/types.js';\n\nexport type StoredToken = Token & {\n /**\n * Tokens stored before the introduction of the `__metadata` field will be missing this property.\n * @since 4.3.0\n */\n __metadata?: {\n /**\n * The timestamp when the token was added to the storage as a number of milliseconds since the Unix epoch.\n *\n * **IMPORTANT**: This value might **not** represent the time when the token was created by the authorization server.\n */\n created: number;\n /**\n * The timestamp when the token will expire as a number of milliseconds since the Unix epoch, based\n * on the `expires_in` value from the token response and the time when the token was stored.\n */\n expires: number | null;\n };\n};\n\nexport class TokenManager {\n #manager: AuthorizationManager;\n\n constructor(options: { manager: AuthorizationManager }) {\n this.#manager = options.manager;\n }\n\n /**\n * Retrieve and parse an item from the storage.\n */\n #getTokenFromStorage(key: string) {\n const raw = this.#manager.storage.getItem(key) || 'null';\n let token: StoredToken | null = null;\n try {\n const parsed = JSON.parse(raw);\n if (isToken(parsed)) {\n token = parsed;\n }\n } catch (e) {\n // no-op\n }\n return token;\n }\n\n #getTokenForService(service: Service) {\n const resourceServer = CONFIG.RESOURCE_SERVERS?.[service];\n return this.getByResourceServer(resourceServer);\n }\n\n getByResourceServer(resourceServer: string): StoredToken | null {\n return this.#getTokenFromStorage(`${this.#manager.storageKeyPrefix}${resourceServer}`);\n }\n\n get auth(): StoredToken | null {\n return this.#getTokenForService(SERVICES.AUTH);\n }\n\n get transfer(): StoredToken | null {\n return this.#getTokenForService(SERVICES.TRANSFER);\n }\n\n get flows(): StoredToken | null {\n return this.#getTokenForService(SERVICES.FLOWS);\n }\n\n get groups(): StoredToken | null {\n return this.#getTokenForService(SERVICES.GROUPS);\n }\n\n get search(): StoredToken | null {\n return this.#getTokenForService(SERVICES.SEARCH);\n }\n\n get timer(): StoredToken | null {\n return this.#getTokenForService(SERVICES.TIMERS);\n }\n\n get compute(): StoredToken | null {\n return this.#getTokenForService(SERVICES.COMPUTE);\n }\n\n gcs(endpoint: string): StoredToken | null {\n return this.getByResourceServer(endpoint);\n }\n\n getAll(): StoredToken[] {\n const entries = Object.keys(this.#manager.storage).reduce(\n (acc: (StoredToken | null)[], key) => {\n if (key.startsWith(this.#manager.storageKeyPrefix)) {\n acc.push(this.#getTokenFromStorage(key));\n }\n return acc;\n },\n [],\n );\n return entries.filter(isToken);\n }\n\n /**\n * Add a token to the storage.\n */\n add(token: Token | TokenResponse) {\n const created = Date.now();\n const expires = created + token.expires_in * 1000;\n this.#manager.storage.setItem(\n `${this.#manager.storageKeyPrefix}${token.resource_server}`,\n JSON.stringify({\n ...token,\n /**\n * Add metadata to the token to track when it was created and when it expires.\n */\n __metadata: {\n created,\n expires,\n },\n }),\n );\n if ('other_tokens' in token) {\n token.other_tokens?.forEach((t) => {\n this.add(t);\n });\n }\n }\n\n remove(token: Token | TokenResponse) {\n this.#manager.storage.removeItem(`${this.#manager.storageKeyPrefix}${token.resource_server}`);\n }\n\n /**\n * Determines whether or not a stored token is expired.\n * @param token The token to check.\n * @param augment An optional number of milliseconds to add to the current time when checking the expiration.\n * @returns `true` if the token is expired, `false` if it is not expired, and `undefined` if the expiration status cannot be determined\n * based on the token's metadata. This can happen if the token is missing the `__metadata` field or the `expires` field.\n */\n static isTokenExpired(token: StoredToken | null, augment: number = 0): boolean | undefined {\n /* eslint-disable no-underscore-dangle */\n if (!token || !token.__metadata || typeof token.__metadata.expires !== 'number') {\n return undefined;\n }\n return Date.now() + augment >= token.__metadata.expires;\n /* eslint-enable no-underscore-dangle */\n }\n}\n", "/**\n * An in-memory implementation of the `Storage` interface.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Storage\n */\nexport class MemoryStorage implements Storage {\n #storage: Record<string, string | null> = {};\n\n getItem(key: string) {\n return this.#storage[key] !== undefined ? this.#storage[key] : null;\n }\n\n setItem(key: string, value: string) {\n this.#storage[key] = value;\n }\n\n removeItem(key: string) {\n delete this.#storage[key];\n }\n\n key(index: number) {\n return Object.keys(this.#storage)[index];\n }\n\n clear() {\n this.#storage = {};\n }\n\n get length() {\n return Object.keys(this.#storage).length;\n }\n}\n", "import { getAuthorizationEndpoint, oauth2 } from '../../services/auth/index.js';\nimport {\n generateCodeChallenge,\n generateCodeVerifier,\n generateState,\n AuthorizationRequestParameters,\n AuthorizationCodeExchangeParameters,\n isSupported,\n store,\n} from './pkce.js';\n\nimport type { TransportOptions } from './RedirectTransport.js';\n\nexport type PopupTransportOptions = TransportOptions;\n\nconst MESSAGE_SOURCE = 'globus-sdk';\n\n/**\n * The `PopupTransport` (`popup`) uses a popup window to initiate the OAuth 2.0 using PKCE.\n *\n * When using the `PopupTransport`, the `redirect` parameter should be to a location\n * that will transmit the URL back to the opener. This can be done using `AuthorizationManager.handleCodeRedirect()`, or\n * manually by calling `window.opener.postMessage()`.\n *\n * @experimental\n */\nexport class PopupTransport {\n #options: PopupTransportOptions;\n\n #window: Window | null = null;\n\n constructor(options: PopupTransportOptions) {\n this.#options = options;\n if (PopupTransport.supported === false) {\n throw new Error('PopupTransport is not supported in this environment.');\n }\n }\n\n /**\n * The `PopupTransport` is supported in environments where the `window` object is available.\n */\n static supported =\n isSupported() && 'window' in globalThis && typeof globalThis.window.open === 'function';\n\n /**\n * For the redirect transport, sending the request will redirect the user to the authorization endpoint, initiating the OAuth flow.\n */\n async send() {\n /**\n * Since we'll be using PKCE, we need to generate a code verifier and challenge\n * for the OAuth handshake.\n */\n const verifier = generateCodeVerifier();\n const challenge = await generateCodeChallenge(verifier);\n /**\n * If there is caller-provided `state`, use it; Otherwise, generate a state parameter.\n */\n const state = this.#options.params?.['state'] ?? generateState();\n /**\n * The verifier and state are stored in session storage so that we can validate\n * the response when we receive it.\n */\n store.set('code_verifier', verifier);\n store.set('state', state);\n\n const params: AuthorizationRequestParameters = {\n response_type: 'code',\n client_id: this.#options.client,\n scope: this.#options.scopes || '',\n redirect_uri: this.#options.redirect,\n state,\n code_challenge: challenge,\n code_challenge_method: 'S256',\n ...(this.#options.params || {}),\n };\n\n const url = new URL(getAuthorizationEndpoint());\n url.search = new URLSearchParams(params).toString();\n\n const promise = new Promise((resolve) => {\n window.addEventListener(\n 'message',\n async (e) => {\n const { data } = e;\n if (e.origin !== window.location.origin || data?.source !== MESSAGE_SOURCE) {\n return;\n }\n this.#window?.close();\n const response = await this.#getToken(data.url);\n resolve(response);\n },\n false,\n );\n });\n\n this.#window = window.open(url.toString(), '_blank', 'width=800,height=600');\n\n if (!this.#window) {\n throw new Error('Unable to open window for PopupTransport.');\n }\n\n this.#window.focus();\n return promise;\n }\n\n async #getToken(href: string) {\n const url = new URL(href);\n const params = new URLSearchParams(url.search);\n /**\n * Check for an error in the OAuth flow.\n * @see https://www.oauth.com/oauth2-servers/pkce/authorization-request/\n */\n if (params.get('error')) {\n throw new Error(\n params.get('error_description') || 'An error occurred during the authorization process.',\n );\n }\n\n const code = params.get('code');\n\n /**\n * If we don't have a `code` parameter, we can't exchange it for an access token.\n */\n if (!code) return undefined;\n\n /**\n * Grab the PKCE information from session storage.\n */\n const state = store.get('state');\n const verifier = store.get('code_verifier');\n /**\n * Now that we have the values in memory, we can remove them from session storage.\n */\n store.reset();\n\n /**\n * Validate the `state` parameter matches the preserved state (to prevent CSRF attacks).\n */\n if (params.get('state') !== state) {\n throw new Error(\n 'Invalid State. The received \"state\" parameter does not match the expected state.',\n );\n }\n /**\n * Ensure we have a valid code verifier.\n */\n if (!verifier) {\n throw new Error('Invalid Code Verifier');\n }\n /**\n * Prepare the payload for the PKCE token exchange.\n */\n const payload: AuthorizationCodeExchangeParameters = {\n code,\n client_id: this.#options.client,\n /**\n * Retrieve the code verifier from session storage.\n */\n code_verifier: verifier,\n redirect_uri: this.#options.redirect,\n grant_type: 'authorization_code',\n };\n const response = await (\n await oauth2.token.exchange({\n payload,\n })\n ).json();\n return response;\n }\n\n // eslint-disable-next-line class-methods-use-this\n getToken() {\n if (!window.opener) {\n return;\n }\n\n window.opener.postMessage(\n {\n source: MESSAGE_SOURCE,\n url: window.location.href,\n },\n window.location.origin,\n );\n }\n}\n", "import { jwtDecode } from 'jwt-decode';\n\nimport { isGlobusAuthTokenResponse, isRefreshToken, oauth2 } from '../../services/auth/index.js';\nimport { RESOURCE_SERVERS } from '../../services/auth/config.js';\n\nimport { log } from '../logger.js';\n\nimport { Event } from './Event.js';\nimport { GetTokenOptions, RedirectTransport, TransportOptions } from './RedirectTransport.js';\nimport { TokenManager } from './TokenManager.js';\n\nimport {\n isConsentRequiredError,\n isAuthorizationRequirementsError,\n AuthorizationRequirementsError,\n ConsentRequiredError,\n toAuthorizationQueryParams,\n} from '../errors.js';\n\nimport type {\n JwtUserInfo,\n Token,\n TokenResponse,\n TokenWithRefresh,\n} from '../../services/auth/types.js';\nimport { MemoryStorage } from '../storage/memory.js';\nimport { PopupTransport } from './PopupTransport.js';\n\nconst TRANSPORTS = {\n redirect: RedirectTransport,\n popup: PopupTransport,\n};\n\nexport type AuthorizationManagerConfiguration = {\n client: string;\n scopes?: string;\n redirect: string;\n /**\n * The storage system used by the `AuthorizationManager`.\n *\n * By default, the `AuthorizationManager` uses an in-memory storage, this option is secure by default.\n *\n * If you want to persist the state of the `AuthorizationManager`, you can use `localStorage`, or provide your own storage system.\n * **It is important to note that using the `localStorage`, or any persistant storage option will preserve authorization and refresh tokens of users.**\n * Best practices for ensuring the security of your application should be followed to protect this data (e.g., ensuring XSS protection).\n *\n * @default MemoryStorage\n */\n storage?: Storage;\n /**\n * The transport method to use for the authorization flow.\n * @default 'redirect'\n */\n transport?: keyof typeof TRANSPORTS;\n /**\n * @private\n * @default DEFAULT_CONFIGURATION.useRefreshTokens\n */\n useRefreshTokens?: boolean;\n /**\n * @private\n * @default DEFAULT_CONFIGURATION.defaultScopes\n */\n defaultScopes?: string | false;\n /**\n * Provide an object with event listeners to attach to the instance.\n * This is useful if you need to listen to events that might dispatch immediately\n * after the creation of the instance (constructor), e.g., the `authenticated`.\n */\n events?: Partial<{\n [Event in keyof AuthorizationManager['events']]: Parameters<\n AuthorizationManager['events'][Event]['addListener']\n >[0];\n }>;\n};\n\nconst DEFAULT_CONFIGURATION = {\n useRefreshTokens: false,\n defaultScopes: 'openid profile email',\n transport: 'redirect' as const,\n};\n\nconst DEFAULT_HANDLE_ERROR_OPTIONS = {\n execute: true,\n additionalParams: undefined,\n};\n\n/**\n * Provides management of Globus authorization context for your application.\n * - Handles the OAuth protcol flow (via PKCE)\n * - Token lifecycle management\n * - Common errors (e.g., `ConsentRequired`, `authorization_requirements`)\n *\n * Once you configure your instance, you can determine the authenticated state using `manager.authenticated`.\n *\n * To prompt a user to authenticate, call `manager.login()` on user interaction \u2013 this will initiate the OAuth protocol flow with your configured client and scopes, resulting in an initial redirect to Globus Auth.\n *\n * Once the user authenticates with Globus Auth, they will be redirected to your application using the configured `redirect` URL. On this URL, you will need to call `manager.handleCodeRedirect` (using a manager instance configured in the same manner that initiated the `manager.login()` call) to complete the PKCE flow, exchanging the provided code for a valid token, or tokens.\n *\n * All tokens managed by the `AuthorizationManager` instance can be found on `manager.token`.\n *\n * ### Registering your Globus Application\n *\n * The `AuthorizationManager` expects your Globus Application to be registered as an OAuth public client.\n * In this Globus Web Application, this option is referenced as \"_Register a thick client or script that will be installed and run by users on their devices_\".\n *\n * @example Creating an AuthorizationManager instance.\n * ```ts\n * import { authorization } from \"globus/sdk\";\n *\n * const manager = authorization.create({\n * // Your registered Globus Application client ID.\n * client: '...',\n * // The redirect URL for your application; Where you will call `manager.handleCodeRedirect()`\n * redirect: 'https://example.com/callback',\n * // Known scopes required by your application.\n * scopes: 'urn:globus:auth:scope:transfer.api.globus.org:all',\n * });\n * ```\n *\n * ### Usage with Service Methods\n *\n * Once you have an instance of an `AuthorizationManager`, it can be passed to any service method as `ServiceMethodOptions.manager` or `SDKOptions.manager` option.\n * The service method will determine if a token is required to make the request and will use the `AuthorizationManager` to retrieve the token.\n *\n * @example Using the AuthorizationManager with a service method.\n *```ts\n * import { transfer } from \"globus/sdk\";\n * const manager = authorization.create({ ... });\n * const result = await (\n * await globus.transfer.endpointSearch({\n * query: { filter_fulltext: \"Globus\"},\n * manager\n * })\n * ).json();\n *```\n */\nexport class AuthorizationManager {\n #transport!: RedirectTransport | PopupTransport;\n\n configuration: AuthorizationManagerConfiguration;\n\n /**\n * The storage system used by the `AuthorizationManager`.\n * @implements Storage\n */\n storage: Storage;\n\n #authenticated = false;\n\n /**\n * The `AuthorizationManager` is considered `authenticated` if it has a valid Globus Auth token.\n * It does not necessarily mean that it has a valid token for a specific resource server.\n */\n get authenticated() {\n return this.#authenticated;\n }\n\n /**\n * Set the authenticated state and emit the `authenticated` event.\n */\n set authenticated(value: boolean) {\n /**\n * Avoid emitting the event if the value hasn't changed.\n */\n if (value === this.#authenticated) {\n return;\n }\n this.#authenticated = value;\n this.#emitAuthenticatedState();\n }\n\n tokens: TokenManager;\n\n events = {\n /**\n * Emitted when the authenticated state changes.\n * @event AuthorizationManager.events#authenticated\n * @type {object}\n * @property {boolean} isAuthenticated - Whether the `AuthorizationManager` is authenticated.\n * @property {TokenResponse} [token] - The token response if the `AuthorizationManager` is authenticated.\n */\n authenticated: new Event<\n 'authenticated',\n {\n /**\n * Whether the `AuthorizationManager` is authenticated.\n * @see {@link AuthorizationManager.authenticated}\n */\n isAuthenticated: boolean;\n token?: TokenResponse;\n }\n >('authenticated'),\n /**\n * Emitted when the user revokes their authentication.\n * @event AuthorizationManager.events#revoke\n */\n revoke: new Event('revoke'),\n };\n\n constructor(configuration: AuthorizationManagerConfiguration) {\n /**\n * Configure the storage system for the instance, defaulting to an in-memory storage system.\n */\n\n if (!configuration.client) {\n throw new Error('You must provide a `client` for your application.');\n }\n /**\n * Inject the `openid`, `profile`, `email`, and `offline_access` scopes by default unless\n * explicitly opted out of.\n */\n const scopes =\n configuration.defaultScopes === false\n ? ''\n : (configuration.defaultScopes ?? DEFAULT_CONFIGURATION.defaultScopes);\n\n this.configuration = {\n ...DEFAULT_CONFIGURATION,\n ...configuration,\n scopes: [configuration.scopes ? configuration.scopes : '', scopes]\n .filter((s) => s.length)\n .join(' '),\n };\n\n this.storage = configuration.storage || new MemoryStorage();\n\n /**\n * If an `events` object is provided, add the listeners to the instance before\n * any event might be dispatched.\n */\n if (this.configuration.events) {\n Object.entries(this.configuration.events).forEach(([name, callback]) => {\n if (name in this.events) {\n this.events[name as keyof AuthorizationManager['events']].addListener(callback);\n }\n });\n }\n\n this.tokens = new TokenManager({\n manager: this,\n });\n this.#checkAuthorizationState();\n }\n\n get storageKeyPrefix() {\n return `${this.configuration.client}:`;\n }\n\n /**\n * The user information decoded from the `id_token` (JWT) of the current Globus Auth token.\n * This method can be used instead of `auth.oauth2.userinfo` to get the user information without an additional request.\n *\n * **IMPORTANT**: The `id_token` can only be processed if the `openid` scope is requested during the authorization process.\n *\n * Additionally, the `profile` and `email` scopes are required to get the full user information.\n *\n * @see {@link https://docs.globus.org/api/auth/reference/#oidc_userinfo_endpoint}\n */\n get user() {\n const token = this.getGlobusAuthToken();\n return token && token.id_token ? jwtDecode<JwtUserInfo>(token.id_token) : null;\n }\n\n /**\n * Attempt to refresh all of the tokens managed by the instance.\n * This method will only attempt to refresh tokens that have a `refresh_token` attribute.\n */\n async refreshTokens() {\n log('debug', 'AuthorizationManager.refreshTokens');\n const tokens = await Promise.allSettled(\n this.tokens.getAll().map((token) => {\n if (isRefreshToken(token)) {\n return this.refreshToken(token);\n }\n return Promise.resolve(null);\n }),\n );\n this.#checkAuthorizationState();\n return tokens;\n }\n\n /**\n * Use the `refresh_token` attribute of a token to obtain a new access token.\n * @param token The well-formed token with a `refresh_token` attribute.\n */\n async refreshToken(token: TokenWithRefresh) {\n log('debug', `AuthorizationManager.refreshToken | resource_server=${token.resource_server}`);\n try {\n const response = await (\n await oauth2.token.refresh({\n payload: {\n client_id: this.configuration.client,\n refresh_token: token.refresh_token,\n grant_type: 'refresh_token',\n },\n })\n ).json();\n if (isGlobusAuthTokenResponse(response)) {\n this.addTokenResponse(response);\n return response;\n }\n } catch (error) {\n log('error', `AuthorizationManager.refreshToken | resource_server=${token.resource_server}`);\n }\n return null;\n }\n\n /**\n * Whether or not the instance has a reference to a Globus Auth token.\n */\n hasGlobusAuthToken() {\n return this.getGlobusAuthToken() !== null;\n }\n\n /**\n * Retrieve the Globus Auth token managed by the instance.\n */\n getGlobusAuthToken() {\n const entry = this.storage.getItem(`${this.storageKeyPrefix}${RESOURCE_SERVERS.AUTH}`);\n return entry ? JSON.parse(entry) : null;\n }\n\n #checkAuthorizationState() {\n log('debug', 'AuthorizationManager.#checkAuthorizationState');\n if (this.hasGlobusAuthToken()) {\n this.authenticated = true;\n }\n }\n\n async #emitAuthenticatedState() {\n const isAuthenticated = this.authenticated;\n const token = this.getGlobusAuthToken() ?? undefined;\n await this.events.authenticated.dispatch({\n isAuthenticated,\n token,\n });\n }\n\n /**\n * Reset the authenticated state and clear all tokens from storage.\n * This method **does not** emit the `revoke` event. If you need to emit the `revoke` event, use the `AuthorizationManager.revoke` method.\n */\n reset() {\n Object.keys(this.storage).forEach((key) => {\n if (key.startsWith(this.storageKeyPrefix)) {\n this.storage.removeItem(key);\n }\n });\n this.authenticated = false;\n }\n\n /**\n * A private utility method to add the `offline_access` scope to a scope string if the `useRefreshTokens` configuration is set to `true`.\n * @param scopes The scope string to modify.\n */\n #withOfflineAccess(scopes: string) {\n return `${scopes}${this.configuration.useRefreshTokens ? ' offline_access' : ''}`;\n }\n\n #buildTransport(options?: Partial<TransportOptions>) {\n const { scopes, ...overrides } = options ?? {};\n const TransportFactory = TRANSPORTS[this.configuration.transport || 'redirect'];\n\n let scopesToRequest = this.#withOfflineAccess(scopes ?? (this.configuration.scopes || ''));\n\n if (this.storage instanceof MemoryStorage) {\n /**\n * If the in-memory storage is used, we have to make sure when requesting additional\n * consent the original configured scopes are included in the request.\n *\n * This will ensure we recieve a token for all of resource servers that were originally requested,\n * in addition to any new scopes that are requested.\n */\n scopesToRequest = [\n // Use a Set to deduplicate the scopes.\n ...new Set(\n scopesToRequest.split(' ').concat((this.configuration?.scopes || '').split(' ')),\n ),\n ].join(' ');\n }\n\n return new TransportFactory({\n client: this.configuration.client,\n redirect: this.configuration.redirect,\n scopes: scopesToRequest,\n ...overrides,\n params: {\n ...overrides?.params,\n },\n });\n }\n\n /**\n * Initiate the login process by redirecting to the Globus Auth login page.\n *\n * **IMPORTANT**: This method will **reset the instance state before initiating the login process,\n * including clearing all tokens from storage**. If you need to maintain the current state,\n * use the `AuthorizationManager.prompt()` method.\n *\n * @example Passing parameters to the transport.\n * const result = await manager.login({\n * additionalParams: {\n * redirect_uri: '/oauth/redirect-uri-runtime-override',\n * },\n * });\n */\n async login(options = { additionalParams: {} }) {\n log('debug', 'AuthorizationManager.login');\n this.reset();\n /**\n * In the future, it's possible that we may want to support different types of transports.\n */\n const transport = this.#buildTransport({ params: options?.additionalParams });\n const result = await transport.send();\n if (isGlobusAuthTokenResponse(result)) {\n this.addTokenResponse(result);\n }\n return result;\n }\n\n /**\n * Prompt the user to authenticate with Globus Auth.\n *\n * @example Passing parameters to the transport.\n * const result = await manager.prompt({\n * additionalParams: {\n * redirect_uri: '/oauth/redirect-uri-runtime-override',\n * },\n * });\n */\n async prompt(options?: Partial<TransportOptions>) {\n log('debug', 'AuthorizationManager.prompt');\n const transport = this.#buildTransport(options);\n const result = await transport.send();\n if (isGlobusAuthTokenResponse(result)) {\n this.addTokenResponse(result);\n }\n return result;\n }\n\n /**\n * This method will attempt to complete the PKCE protocol flow.\n */\n async handleCodeRedirect(\n options: {\n shouldReplace?: GetTokenOptions['shouldReplace'];\n includeConsentedScopes?: GetTokenOptions['includeConsentedScopes'];\n additionalParams?: TransportOptions['params'];\n } = { shouldReplace: true, additionalParams: {} },\n ) {\n log('debug', 'AuthorizationManager.handleCodeRedirect');\n const response = await this.#buildTransport({ params: options?.additionalParams }).getToken({\n shouldReplace: options?.shouldReplace,\n includeConsentedScopes: options?.includeConsentedScopes,\n });\n if (isGlobusAuthTokenResponse(response)) {\n log(\n 'debug',\n `AuthorizationManager.handleCodeRedirect | response=${JSON.stringify(response)}`,\n );\n this.addTokenResponse(response);\n }\n return response;\n }\n\n /**\n * Handle an error response from a Globus service in the context of this `AuthorizationManager`.\n * This method will introspect the response and attempt to handle any errors that should result\n * in some additional Globus Auth interaction.\n * @param response The error response from a Globus service.\n * @param {object|boolean} options Options for handling the error response. If a boolean is provided, this will be treated as the `options.execute` value.\n * @param options.execute Whether to execute the handler immediately.\n * @param options.additionalParams Additional query parameters to be included with the transport generated URL.\n */\n async handleErrorResponse(\n response: Record<string, unknown>,\n options?: { execute?: true; additionalParams?: TransportOptions['params'] } | true,\n ): Promise<void>;\n async handleErrorResponse(\n response: Record<string, unknown>,\n options?: { execute?: false; additionalParams?: TransportOptions['params'] } | false,\n ): Promise<() => Promise<void>>;\n async handleErrorResponse(\n response: Record<string, unknown>,\n options?: { execute?: boolean; additionalParams?: TransportOptions['params'] } | boolean,\n ) {\n const opts =\n typeof options === 'boolean'\n ? {\n ...DEFAULT_HANDLE_ERROR_OPTIONS,\n execute: options,\n }\n : {\n ...DEFAULT_HANDLE_ERROR_OPTIONS,\n ...options,\n };\n log(\n 'debug',\n `AuthorizationManager.handleErrorResponse | response=${JSON.stringify(response)} execute=${opts.execute}`,\n );\n let handler = async () => {};\n if (isAuthorizationRequirementsError(response)) {\n log(\n 'debug',\n 'AuthorizationManager.handleErrorResponse | error=AuthorizationRequirementsError',\n );\n handler = async () => {\n await this.handleAuthorizationRequirementsError(response, {\n additionalParams: opts.additionalParams,\n });\n };\n }\n if (isConsentRequiredError(response)) {\n log('debug', 'AuthorizationManager.handleErrorResponse | error=ConsentRequiredError');\n handler = async () => {\n await this.handleConsentRequiredError(response, {\n additionalParams: opts.additionalParams,\n });\n };\n }\n if ('code' in response && response['code'] === 'AuthenticationFailed') {\n log('debug', 'AuthorizationManager.handleErrorResponse | error=AuthenticationFailed');\n handler = async () => {\n await this.revoke();\n };\n }\n\n const returnValue = opts.execute === true ? await handler() : handler;\n return returnValue;\n }\n\n /**\n * Process a well-formed Authorization Requirements error response from a Globus service\n * and redirect the user to the Globus Auth login page with the necessary parameters.\n */\n async handleAuthorizationRequirementsError(\n response: AuthorizationRequirementsError,\n options?: { additionalParams?: TransportOptions['params'] },\n ) {\n this.#transport = this.#buildTransport({\n params: {\n prompt: 'login',\n ...toAuthorizationQueryParams(response),\n ...options?.additionalParams,\n },\n });\n await this.#transport.send();\n }\n\n /**\n * Process a well-formed `ConsentRequired` error response from a Globus service\n * and redirect the user to the Globus Auth login page with the necessary parameters.\n */\n async handleConsentRequiredError(\n response: ConsentRequiredError,\n options?: { additionalParams?: TransportOptions['params'] },\n ) {\n this.#transport = this.#buildTransport({\n scopes: this.#withOfflineAccess(response.required_scopes.join(' ')),\n params: {\n ...options?.additionalParams,\n },\n });\n await this.#transport.send();\n }\n\n /**\n * Add a Globus Auth token response to storage, if `other_tokens` are present they are also added.\n * This method is mostly used internally by the `AuthorizationManager`, but can be used by downstream\n * consumers to add tokens to storage if necessary.\n */\n addTokenResponse = (token: Token | TokenResponse) => {\n this.tokens.add(token);\n this.#checkAuthorizationState();\n };\n\n /**\n * Call `AuthroizationManager.reset`, revoke all of the available tokns, and emit the `revoke` event.\n * @emits AuthorizationManager.events#revoke\n * @see AuthorizationManager.reset\n */\n async revoke() {\n log('debug', 'AuthorizationManager.revoke');\n const revocation = Promise.all(this.tokens.getAll().map(this.#revokeToken.bind(this)));\n this.reset();\n await revocation;\n await this.events.revoke.dispatch();\n }\n\n /**\n * Revoke a token from a resource server.\n */\n #revokeToken(token: Token) {\n log('debug', `AuthorizationManager.revokeToken | resource_server=${token.resource_server}`);\n return oauth2.token.revoke({\n payload: {\n client_id: this.configuration.client,\n token: token.access_token,\n },\n });\n }\n}\n", "/**\n * @description A wrapper around the Globus Transfer service.\n * @group Service\n * @see [Globus Transfer API Documentation](https://docs.globus.org/api/transfer/)\n * @module\n */\nimport * as TRANSFER from './config.js';\n\nimport { endpointSearch } from './service/endpoint-search.js';\n\n/**\n * @private\n * @internal\n */\nexport const CONFIG = TRANSFER;\n\nexport type * from './types.js';\n\nexport { endpointSearch };\nexport * as fileOperations from './service/file-operations.js';\nexport * as taskSubmission from './service/task-submission.js';\nexport * as endpoint from './service/endpoint.js';\nexport * as task from './service/task.js';\nexport * as access from './service/access.js';\nexport * as roles from './service/roles.js';\nexport * as collectionBookmarks from './service/collection-bookmarks.js';\nexport * as tunnel from './service/tunnel.js';\nexport * as streamAccessPoint from './service/stream-access-point.js';\n\nexport * as endpointManager from './service/endpoint-manager/index.js';\n\nexport * as utils from './utils.js';\n", "import { serviceRequest } from '../../shared.js';\nimport { ID, SCOPES } from '../config.js';\n\nimport type { JSONFetchResponse, ServiceMethod } from '../../../services/types.js';\nimport type { PaginatedResponse, QueryParameters } from '../types.js';\nimport type { EntityType, EndpointListDocument } from './endpoint.js';\n/**\n * @see https://docs.globus.org/api/transfer/endpoint_search/#search_scope\n */\nexport type EndpointSearchScope =\n | 'all'\n | 'my-endpoints'\n | 'my-gcp-endpoints'\n | 'recently-used'\n | 'in-use'\n | 'shared-by-me'\n | 'shared-with-me'\n | 'hide-no-permissions'\n | 'administered-by-me';\n\n/**\n * @see https://docs.globus.org/api/transfer/endpoint_search/#endpoint_search\n */\nexport type EndpointSearchQuery = QueryParameters<\n {\n filter_scope?: EndpointSearchScope;\n filter_entity_type?: EntityType;\n filter_fulltext?: string;\n filter_owner_id?: string;\n filter_host_endpoint?: string;\n filter_non_functional?: 0 | 1 | null;\n },\n 'Offset'\n>;\n\nexport type EndpointSearchResult = PaginatedResponse<\n 'Offset',\n Omit<EndpointListDocument, 'length'>\n>;\n\n/**\n * Get a list of endpoints matching the search filters in a given search scope.\n * @see https://docs.globus.org/api/transfer/endpoint_search/#endpoint_search\n */\nexport const endpointSearch = function (\n options?,\n sdkOptions?,\n): Promise<JSONFetchResponse<EndpointSearchResult>> {\n const serviceRequestOptions = {\n ...options,\n query: options?.query,\n };\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/endpoint_search`,\n },\n serviceRequestOptions,\n sdkOptions,\n );\n} satisfies ServiceMethod<\n {\n query?: EndpointSearchQuery;\n },\n JSONFetchResponse<EndpointSearchResult>\n>;\n\nexport default endpointSearch;\n", "import { HTTP_METHODS, serviceRequest } from '../../shared.js';\nimport { getHeadersForService } from '../shared.js';\nimport { ID, SCOPES } from '../config.js';\n\nimport type { ErrorDocument, QueryParameters } from '../types.js';\nimport type { JSONFetchResponse, ServiceMethodDynamicSegments } from '../../types.js';\nimport { ConsentRequiredError } from '../../../core/errors.js';\n\n/**\n * @see https://docs.globus.org/api/transfer/file_operations/#file_document\n */\nexport type FileDocument = {\n readonly DATA_TYPE: 'file';\n readonly name: string;\n readonly type: 'dir' | 'file' | 'invalid_symlink' | 'chr' | 'blk' | 'pipe' | 'other';\n readonly link_target?: string | null;\n readonly size?: number;\n readonly last_modified?: string;\n readonly permissions?: string;\n readonly user?: string | null;\n readonly group?: string | null;\n readonly link_size?: number | null;\n readonly link_user?: string | null;\n readonly link_group?: string | null;\n readonly link_last_modified?: string | null;\n};\n\n/**\n * @see https://docs.globus.org/api/transfer/file_operations/#file_list_document\n */\nexport type FileListDocument = {\n readonly DATA_TYPE: 'file_list';\n readonly endpoint: string;\n readonly path: string;\n readonly absolute_path: string | null;\n readonly rename_supported: boolean;\n readonly symlink_supported: boolean;\n readonly DATA: FileDocument[];\n /**\n * n.b. This is currently included in responses, but undocumented; use with care.\n */\n readonly length: number;\n /**\n * n.b. This is currently included in responses, but undocumented; use with care.\n */\n readonly total: number;\n};\n\n/**\n * @see https://docs.globus.org/api/transfer/file_operations/#errors\n */\nexport type DirectoryListingError = ErrorDocument &\n (\n | ConsentRequiredError\n | {\n code:\n | 'ServiceUnavailable'\n | 'OperationPaused'\n | 'NotSupported'\n | 'ClientError.NotFound'\n | 'EndpointError'\n // Encountered Errors (not documented)\n | 'ExternalError.DirListingFailed.LoginFailed'\n | string;\n }\n );\n\n/**\n * @see https://docs.globus.org/api/transfer/file_operations/#directory_listing_query_parameters\n */\nexport type DirectoryListingQuery = QueryParameters<\n {\n path?: string;\n show_hidden?: 'true' | 'false';\n local_user?: string;\n },\n 'Offset'\n>;\n\n/**\n * List the contents of the directory at the specified path on an endpoint\u2019s filesystem.\n * The endpoint must be activated before performing this operation.\n *\n * @see https://docs.globus.org/api/transfer/file_operations/#list_directory_contents\n */\nexport const ls = function (\n endpoint_xid,\n options?,\n sdkOptions?,\n): Promise<JSONFetchResponse<FileListDocument | DirectoryListingError>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/operation/endpoint/${endpoint_xid}/ls`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: DirectoryListingQuery;\n }\n>;\n\n/**\n * Create a directory at the specified path on an endpoint filesystem.\n * The endpoint must be activated before performing this operation.\n *\n * @see https://docs.globus.org/api/transfer/file_operations/#make_directory\n */\nexport const mkdir = function (endpoint_xid, options, sdkOptions?) {\n const serviceRequestOptions = {\n payload: {\n DATA_TYPE: 'mkdir',\n ...options?.payload,\n },\n headers: {\n ...getHeadersForService(HTTP_METHODS.POST),\n ...options?.headers,\n },\n };\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/operation/endpoint/${endpoint_xid}/mkdir`,\n method: HTTP_METHODS.POST,\n },\n serviceRequestOptions,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n payload: { path: string };\n }\n>;\n\n/**\n * Rename or move a file, directory, or symlink on an endpoint filesystem.\n * If the object is a symlink, the symlink itself is renamed, not its target\n * The endpoint must be activated before performing this operation.\n * When moving to a different parent directory, the parent directory of the new path must already exist.\n *\n * @see https://docs.globus.org/api/transfer/file_operations/#rename\n */\nexport const rename = function (endpoint_xid, options, sdkOptions?) {\n const serviceRequestOptions = {\n payload: {\n DATA_TYPE: 'rename',\n ...options?.payload,\n },\n headers: {\n ...getHeadersForService(HTTP_METHODS.POST),\n ...options?.headers,\n },\n };\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/operation/endpoint/${endpoint_xid}/rename`,\n method: HTTP_METHODS.POST,\n },\n serviceRequestOptions,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n payload: {\n old_path: string;\n new_path: string;\n };\n }\n>;\n\n/**\n * Create a directory at the specified path on an endpoint filesystem.\n * The endpoint must be activated before performing this operation.\n *\n * @see https://docs.globus.org/api/transfer/file_operations/#symlink\n */\nexport const symlink = function (endpoint_xid, options, sdkOptions?) {\n const serviceRequestOptions = {\n payload: {\n DATA_TYPE: 'symlink',\n ...options?.payload,\n },\n headers: {\n ...getHeadersForService(HTTP_METHODS.POST),\n ...options?.headers,\n },\n };\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/operation/endpoint/${endpoint_xid}/symlink`,\n method: HTTP_METHODS.POST,\n },\n serviceRequestOptions,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n payload: {\n path: string;\n symlink_target: string;\n };\n }\n>;\n\n/**\n * Stat the file or directory at the specified path on a collection.\n *\n * @see https://docs.globus.org/api/transfer/file_operations/#stat\n */\nexport const stat = function (\n endpoint_xid,\n options,\n sdkOptions?,\n): Promise<JSONFetchResponse<FileDocument>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/operation/endpoint/${endpoint_xid}/stat`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: {\n path: string;\n local_user?: string;\n };\n }\n>;\n", "import { HTTP_METHODS } from '../shared.js';\n\nexport function getHeadersForService(method: keyof typeof HTTP_METHODS): Record<string, any> {\n if (method === HTTP_METHODS.GET) {\n return {};\n }\n return {\n 'Content-Type': 'application/json',\n };\n}\n", "import { HTTP_METHODS, serviceRequest } from '../../shared.js';\n\nimport { getHeadersForService } from '../shared.js';\nimport { ID, SCOPES } from '../config.js';\n\nimport type { JSONFetchResponse, SDKOptions, ServiceMethod } from '../../types.js';\n\ntype TaskLink = {\n DATA_TYPE: 'link';\n href: string;\n rel: string;\n resource: string;\n title: string;\n};\n\ninterface TaskSubmissionResult {\n DATA_TYPE: string;\n resource: string;\n /**\n * @see https://docs.globus.org/api/transfer/task_submit/#result_codes\n */\n code: 'Accpeted' | 'Duplicate';\n message: string;\n request_id: string;\n submission_id: string;\n task_id: string;\n /**\n * @deprecated Undocumented property.\n */\n task_link: TaskLink;\n}\n\nexport type TransferResult = TaskSubmissionResult & {\n DATA_TYPE: 'transfer_result';\n resource: '/transfer';\n};\n\nexport type DeleteResult = {\n DATA_TYPE: 'delete_result';\n resource: '/delete';\n} & TaskSubmissionResult;\n\ntype UndocumentedEncouneredErrorCodes = 'EndpointNotFound' | string;\n\ntype TaskSubmissionError = {\n /**\n * Known error codes provided by the Transfer documentation.\n *\n * Since the documentation does not provide an exhaustive list of error codes,\n * we also include a catch-all type (`string`) for any undocumented error codes.\n *\n * @see https://docs.globus.org/api/transfer/task_submit/#errors\n */\n code:\n | 'ClientError.BadRequest'\n | 'BadRequest'\n | 'PermissionDenied'\n | 'ConsentRequired'\n | 'ServiceUnavailable'\n | 'Conflict'\n | UndocumentedEncouneredErrorCodes;\n message: string;\n request_id: string;\n resource: string;\n};\n\nexport type TransferError = TaskSubmissionError & {\n resource: '/transfer';\n};\n\nexport type DeleteError = TaskSubmissionError & {\n resource: '/delete';\n};\n\n/**\n * Common fields for Transfer and Delete requests.\n * @see https://docs.globus.org/api/transfer/task_submit/#common_transfer_and_delete_fields\n */\nexport type CommonTransferAndDeleteFields = {\n submission_id: string;\n label?: string;\n notify_on_succeeded?: boolean;\n notify_on_failed?: boolean;\n deadline?: string;\n store_base_path_info?: boolean;\n};\n\n/**\n * @see https://docs.globus.org/api/transfer/task_submit/#filter_rules\n */\nexport type FilterRule = {\n DATA_TYPE: 'filter_rule';\n method: 'exclude' | 'include';\n type?: 'file' | 'dir' | undefined | null;\n name: string;\n};\n\n/**\n * @see https://docs.globus.org/api/transfer/task_submit/#transfer_item_fields\n */\nexport type TransferItem = {\n DATA_TYPE: 'transfer_item';\n source_path: string;\n destination_path: string;\n recursive?: boolean;\n external_checksum?: string;\n checksum_algorithm?: string;\n};\n\n/**\n * @see https://docs.globus.org/api/transfer/task_submit/#transfer_symlink_item_fields\n */\nexport type TransferSymlinkItem = {\n DATA_TYPE: 'transfer_symlink_item';\n source_path: string;\n destination_path: string;\n};\n\n/**\n * https://docs.globus.org/api/transfer/task_submit/#transfer_specific_fields\n */\nexport type TransferFields = CommonTransferAndDeleteFields & {\n DATA_TYPE: 'transfer';\n DATA: (TransferItem | TransferSymlinkItem)[];\n source_endpoint: string;\n destination_endpoint: string;\n filter_rules?: FilterRule[];\n encrypt_data?: boolean;\n sync_level?: 0 | 1 | 2 | 3;\n verify_checksum?: boolean;\n preserve_timestamp?: boolean;\n delete_destination_extra?: boolean;\n /**\n * @beta\n */\n recursive_symlinks?: 'ignore' | 'keep' | 'copy';\n skip_source_errors?: boolean;\n fail_on_quota_errors?: boolean;\n source_local_user?: string;\n destination_local_user?: string;\n};\n\n/**\n * @see https://docs.globus.org/api/transfer/task_submit/#delete_item_fields\n */\nexport type DeleteItem = {\n DATA_TYPE: 'delete_item';\n path: string;\n};\n\n/**\n * @see https://docs.globus.org/api/transfer/task_submit/#delete_specific_fields\n */\nexport type DeleteFields = CommonTransferAndDeleteFields & {\n DATA_TYPE: 'delete';\n DATA: DeleteItem[];\n endpoint: string;\n ignore_missing?: boolean;\n recursive?: boolean;\n interpret_globs?: boolean;\n local_user?: string;\n};\n\n/**\n * Submit a delete task. A delete submission contains a single endpoint and a\n * list of paths to delete.\n *\n * @see https://docs.globus.org/api/transfer/task_submit/#submit_delete_task\n */\nexport const submitDelete = function (\n options,\n sdkOptions?: SDKOptions,\n): Promise<JSONFetchResponse<DeleteResult | DeleteError>> {\n const serviceRequestOptions = {\n payload: {\n DATA_TYPE: 'delete',\n ...options?.payload,\n },\n headers: {\n ...getHeadersForService(HTTP_METHODS.POST),\n ...options?.headers,\n },\n };\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/delete`,\n method: HTTP_METHODS.POST,\n },\n serviceRequestOptions,\n sdkOptions,\n );\n} satisfies ServiceMethod<{\n payload: Omit<DeleteFields, 'DATA_TYPE'>;\n}>;\n\n/**\n * @see https://docs.globus.org/api/transfer/task_submit/#submit_transfer_task\n */\nexport const submitTransfer = function (\n options,\n sdkOptions?: SDKOptions,\n): Promise<JSONFetchResponse<TransferResult | TransferError>> {\n const serviceRequestOptions = {\n payload: {\n DATA_TYPE: 'transfer',\n ...options?.payload,\n },\n headers: {\n ...getHeadersForService(HTTP_METHODS.POST),\n ...options?.headers,\n },\n };\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/transfer`,\n method: HTTP_METHODS.POST,\n },\n serviceRequestOptions,\n sdkOptions,\n );\n} satisfies ServiceMethod<{\n payload: Omit<TransferFields, 'DATA_TYPE'>;\n}>;\n\ntype SubmissionId = {\n DATA_TYPE: 'submission_id';\n value: string;\n};\n\n/**\n * Get a submission id, required when submitting transfer and delete tasks.\n * Note that this is different than the task id returned by the submit operations.\n *\n * @see https://docs.globus.org/api/transfer/task_submit/#get_submission_id\n */\nexport const submissionId = function (\n options?,\n sdkOptions?,\n): Promise<JSONFetchResponse<SubmissionId>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/submission_id`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethod<{\n query?: never;\n payload?: never;\n}>;\n", "import { HTTP_METHODS, serviceRequest } from '../../shared.js';\nimport { ID, SCOPES } from '../config.js';\n\nimport type {\n ServiceMethodDynamicSegments,\n JSONFetchResponse,\n ServiceMethod,\n ExtractKeys,\n} from '../../../services/types.js';\n\n/**\n * @see https://docs.globus.org/api/transfer/endpoint_roles/\n */\nexport type EndpointRole =\n | 'administrator'\n | 'access_manager'\n | 'activity_manager'\n | 'activity_monitor';\n\nexport type EntityType =\n | 'GCSv5_endpoint'\n | 'GCSv5_mapped_collection'\n | 'GCSv5_guest_collection'\n | 'GCP_mapped_collection'\n | 'GCP_guest_collection';\n\n/**\n * @see https://docs.globus.org/api/transfer/endpoints_and_collections/#server_document\n */\nexport type ServerDocument = {\n DATA_TYPE: 'server';\n id: number;\n hostname: null | string;\n port: null | number;\n scheme: null | 'ftp' | 'gsiftp';\n subject: null | string;\n incoming_data_port_start: null | number;\n incoming_data_port_end: null | number;\n outgoing_data_port_start: null | number;\n outgoing_data_port_end: null | number;\n /**\n * @deprecated\n */\n uri: string;\n /**\n * @deprecated\n */\n is_connected: boolean;\n /**\n * @deprecated\n */\n is_paused: boolean;\n};\n\ntype GuestCollectionActivityNotificationPolicy = {\n status: Array<'SUCCEEDED' | 'FAILED'>;\n transfer_use: Array<'source' | 'destination'>;\n};\n\n/**\n * @see https://docs.globus.org/api/transfer/endpoints_and_collections/#endpoint_or_collection_document\n */\nexport type EndpointDocument = {\n DATA_TYPE: 'endpoint';\n DATA?: ServerDocument[];\n id: string;\n display_name: string;\n organization: string | null;\n department: string | null;\n keywords: string | null;\n /**\n * @deprecated\n */\n name: string;\n /**\n * @deprecated use `id` instead in API requests, and use `display_name`\n * to display to users.\n */\n canonical_name: string;\n /**\n * @deprecated use `owner_id` or `owner_string` instead.\n */\n username: string;\n owner_id: string;\n owner_string: string;\n description: string | null;\n contact_email: string | null;\n contact_info: string | null;\n info_link: string | null;\n user_message: string | null;\n user_message_link: string | null;\n public: boolean;\n subscription_id: string | null;\n subscription_admin_verified: boolean;\n french_english_bilingual: boolean;\n default_directory: string | null;\n guest_collection_activity_notification_policy: GuestCollectionActivityNotificationPolicy | null;\n force_encryption: boolean;\n disable_verify: boolean;\n disable_anonymous_writes: boolean;\n entity_type: EntityType;\n force_verify: boolean;\n mfa_required: boolean;\n /**\n * @deprecated GCSv4-specific property - no longer supported\n */\n expire_time: null | string;\n /**\n * @deprecated GCSv4-specific property - no longer supported\n */\n expires_in: -1 | 0 | number;\n /**\n * @deprecated GCSv4-specific property - no longer supported\n */\n activated: boolean;\n /**\n * @deprecated GCSv4-specific property - no longer supported\n */\n myproxy_server: string | null;\n /**\n * @deprecated GCSv4-specific property - no longer supported\n */\n myproxy_dn: string | null;\n /**\n * @deprecated GCSv4-specific property - no longer supported\n */\n oauth_server: string | null;\n requester_pays: boolean;\n /**\n * `true` if the endpoint was created for Globus Connect Personal, `false` otherwise.\n *\n * @deprecated use `entity_type` instead.\n */\n is_globus_connect: boolean;\n gcs_version: string | null;\n globus_connect_setup_key: string | null;\n /**\n * @deprecated use `host_endpoint_id` and `host_endpoint_display_name`\n */\n host_endpoint: string | null;\n /**\n * UUID of standard endpoint hosting the shared endpoint; `null` for non-shared endpoints.\n */\n host_endpoint_id: string | null;\n host_endpoint_display_name: string | null;\n host_path: string | null;\n /**\n * @deprecated\n */\n s3_url: null;\n /**\n * @deprecated\n */\n s3_owner_activated: false;\n /**\n * @deprecated GCSv4-specific property - no longer supported\n */\n acl_available: boolean;\n /**\n * @deprecated use `my_effective_roles` instead.\n */\n acl_editable: boolean;\n in_use: boolean;\n my_effective_roles: Array<EndpointRole | 'restricted_administrator'>;\n gcp_connected: boolean | null;\n gcp_paused: boolean | null;\n network_use: null | 'normal' | 'minimal' | 'aggressive' | 'custom';\n location: string | null;\n max_concurrency: null | number;\n preferred_concurrency: null | number;\n max_parallelism: null | number;\n preferred_parallelism: null | number;\n /**\n * @deprecated GCSv4-specific property - no longer supported\n */\n local_user_info_available: null | boolean;\n https_server: null | string;\n tlsftp_server: null | string;\n gcs_manager_url: null | `${string}://${string}`;\n high_assurance: boolean;\n authentication_timeout_mins: number | null;\n authentication_policy_id: string | null;\n acl_max_expiration_period_mins: number | null;\n /**\n * @deprecated use `high_assurance` and `authentication_timeout_mins` instead.\n */\n authentication_assurance_timeout: number | null;\n /**\n * The number of days the endpoint has been configured to be auto-deleted after.\n * **NOT** the number of days until deletion (must be calculated).\n *\n * - Set on Mapped Collections\n * - Readable on Mapped and Guest Collections (inherited from Mapped Collection)\n * @example 2\n */\n auto_delete_timeout: number | null;\n /**\n * @example 2025-03-06T00:00:00+00:00\n */\n last_accessed_time: string | null;\n non_functional: boolean;\n non_functional_endpoint_id: string | null;\n non_functional_endpoint_display_name: string | null;\n mapped_collection_id: string | null;\n mapped_collection_display_name: string | null;\n /**\n * @deprecated use `entity_type` instead.\n */\n shareable: boolean;\n /**\n * @deprecated use `host_endpoint_id` instead.\n */\n sharing_target_endpoint: string | null;\n /**\n * @deprecated use `host_path` instead.\n */\n sharing_target_root_path: string | null;\n /**\n * Whether or not this endpoint will be skipped during auto-deletion.\n * If this is specified, `auto_delete_timeout` should be ignored.\n * - Only set on Guest Collections\n */\n skip_auto_delete: boolean | null;\n restrict_transfers_to_high_assurance: 'inbound' | 'outbound' | 'all' | null;\n associated_flow_policy: {\n transfer?: {\n destination?: { flow?: string | null };\n source?: { flow?: string | null };\n };\n } | null;\n preserve_modtime: 'inbound' | 'outbound' | 'all' | null;\n};\n\nexport type EndpointListDocument = {\n DATA_TYPE: 'endpoint_list';\n DATA: EndpointDocument[];\n length: number;\n};\n\n/**\n * Fetch an endpoint by its UUID.\n */\nexport const get = function (\n endpoint_xid,\n options?,\n sdkOptions?,\n): Promise<JSONFetchResponse<EndpointDocument>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/endpoint/${endpoint_xid}`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: never;\n payload?: never;\n }\n>;\n\n/**\n * @see https://docs.globus.org/api/transfer/gcp_management/#update_collection_by_id\n */\ntype GuestCollectionUpdatableField = ExtractKeys<\n EndpointDocument,\n | 'acl_max_expiration_period_mins'\n | 'display_name'\n | 'organization'\n | 'department'\n | 'keywords'\n | 'description'\n | 'contact_email'\n | 'contact_info'\n | 'info_link'\n | 'owner_string'\n | 'default_directory'\n | 'force_encryption'\n | 'disable_verify'\n>;\n\nexport type CreatePayload = Partial<Pick<EndpointDocument, GuestCollectionUpdatableField>> & {\n DATA_TYPE?: 'shared_endpoint';\n host_endpoint_id: string;\n host_path: string;\n};\nexport type CreateResponse = {\n DATA_TYPE: 'endpoint_create_result';\n code: 'Created';\n globus_connect_setup_key: string | null;\n id: string;\n message: string;\n request_id: string;\n resource: '/shared_endpoint';\n};\n/**\n * Create a Globus Connect Personal guest collection.\n * As of 2024-04-17, this method (and the Transfer API) only supports creating Globus Connect Personal guest collections.\n *\n * Globus Connect Personal mapped collections are created from the Globus Connect Personal application.\n * All GCSv5 collections should be created using Globus Connect Server (i.e. {@link \"@globus/sdk\".gcs.collections.create | `gcs.collections.create`}).\n *\n * @see https://docs.globus.org/api/transfer/gcp_management/#create_guest_collection\n */\nexport const create = function (options?, sdkOptions?): Promise<JSONFetchResponse<CreateResponse>> {\n if (options?.payload) {\n Object.assign(options.payload, { DATA_TYPE: 'shared_endpoint' });\n }\n\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: '/v0.10/shared_endpoint',\n method: HTTP_METHODS.POST,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethod<{\n payload?: CreatePayload;\n}>;\n\n/**\n * @see https://docs.globus.org/api/transfer/gcp_management/#update_collection_by_id\n */\ntype MappedCollectionUpdatableField = ExtractKeys<\n EndpointDocument,\n | GuestCollectionUpdatableField\n | 'authentication_timeout_mins'\n | 'subscription_id'\n | 'public'\n | 'location'\n | 'network_use'\n | 'max_concurrency'\n | 'preferred_concurrency'\n | 'max_parallelism'\n | 'preferred_parallelism'\n | 'user_message'\n | 'user_message_link'\n>;\n\nexport type UpdatePayload = Partial<\n Pick<EndpointDocument, MappedCollectionUpdatableField | 'DATA_TYPE'>\n>;\nexport type UpdateResponse = {\n DATA_TYPE: 'result';\n code: 'Updated';\n message: string;\n request_id: string;\n resource: `/endpoint/${string}`;\n};\n/**\n * Update a Globus Connect Personal collection.\n * As of 2024-04-17, this method (and the Transfer API) only supports updating Globus Connect Personal collections.\n *\n * All GCSv5 collections should be updated using Globus Connect Server (i.e. {@link \"@globus/sdk\".gcs.collections.update | `gcs.collections.update`}).\n *\n * @see https://docs.globus.org/api/transfer/gcp_management/#update_collection_by_id\n */\nexport const update = function (\n endpoint_xid,\n options?,\n sdkOptions?,\n): Promise<JSONFetchResponse<UpdateResponse>> {\n if (options?.payload) {\n Object.assign(options.payload, { DATA_TYPE: 'endpoint' });\n }\n\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/endpoint/${endpoint_xid}`,\n method: HTTP_METHODS.PUT,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n payload: UpdatePayload;\n query?: never;\n }\n>;\n\nexport type RemoveResponse = {\n DATA_TYPE: 'result';\n code: 'Deleted';\n message: string;\n request_id: string;\n resource: `/endpoint/${string}`;\n};\n/**\n * Delete a Globus Connect Personal entity by its UUID.\n * As of 2024-01-08, this method (and the Transfer API) only supports deleting Globus Connect Personal entities.\n *\n * All GCSv5 endpoints and collections should be deleted (and managed) using Globus Connect Server (i.e. {@link \"@globus/sdk\".gcs.collections.remove | `gcs.collections.remove`}).\n *\n * @see https://docs.globus.org/api/transfer/gcp_management/#delete_endpoint_by_id\n */\nexport const remove = function (\n endpoint_xid,\n options?,\n sdkOptions?,\n): Promise<JSONFetchResponse<RemoveResponse>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/endpoint/${endpoint_xid}`,\n method: HTTP_METHODS.DELETE,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: never;\n payload?: never;\n }\n>;\n", "import { HTTP_METHODS, serviceRequest } from '../../shared.js';\n\nimport { ID, SCOPES } from '../config.js';\n\nimport type {\n ServiceMethod,\n ServiceMethodDynamicSegments,\n JSONFetchResponse,\n} from '../../../services/types.js';\n\nimport type { PaginatedResponse, QueryParameters } from '../types.js';\nimport { PauseRuleDocument } from './endpoint-manager/pause-rule.js';\n\nexport type TaskDocument = {\n DATA_TYPE: 'task';\n task_id: string;\n type: 'TRANSFER' | 'DELETE';\n status: 'ACTIVE' | 'INACTIVE' | 'SUCCEEDED' | 'FAILED';\n fatal_error: object | null;\n label: string | null;\n /**\n * @deprecated use `owner_id` instead.\n */\n username: string;\n owner_id: string;\n request_time: string;\n completion_time: string | null;\n deadline: string | null;\n /**\n * @deprecated use `source_endpoint_id`\n */\n source_endpoint: string;\n source_endpoint_id: string;\n source_endpoint_display_name: string;\n /**\n * @deprecated use `destination_endpoint_id`\n */\n destination_endpoint: string;\n destination_endpoint_id: string | null;\n destination_endpoint_display_name: string;\n sync_level: number | null;\n encrypt_data: boolean;\n verify_checksum: boolean;\n delete_destination_extra: boolean;\n recursive_symlinks: string | null;\n preserve_timestamp: boolean;\n skip_source_errors: boolean;\n fail_on_quota_errors: boolean;\n command: string;\n history_deleted: boolean;\n faults: number;\n files: number;\n directories: number;\n symlinks: number;\n files_skipped: number;\n files_transferred: number;\n subtasks_total: number;\n subtasks_pending: number;\n subtasks_retrying: number;\n subtasks_succeeded: number;\n subtasks_expired: number;\n subtasks_canceled: number;\n subtasks_failed: number;\n subtasks_skipped_errors: number;\n bytes_transferred: number;\n bytes_checksummed: number;\n effective_bytes_per_second: number;\n nice_status: string | null;\n /**\n * @deprecated use `event_list`\n */\n nice_status_details: null;\n nice_status_short_description: string | null;\n nice_status_expires_in: -1 | 0 | string | null;\n canceled_by_admin: 'SOURCE' | 'DESTINATION' | 'BOTH' | null;\n canceled_by_admin_message: string | null;\n is_paused: boolean;\n source_base_path?: string | null;\n destination_base_path?: string | null;\n};\n\nexport type TaskListDocument = {\n DATA_TYPE: 'task_list';\n DATA: TaskDocument[];\n};\n\n/**\n * Get a list of tasks submitted by the current user.\n * @see https://docs.globus.org/api/transfer/task/#get_task_list\n */\nexport const getAll = function (\n options = {},\n sdkOptions?,\n): Promise<JSONFetchResponse<PaginatedResponse<'Offset', TaskListDocument>>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/task_list`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethod<{\n query?: QueryParameters<'Offset'>;\n headers?: Record<string, string>;\n payload?: never;\n}>;\n\n/**\n * Fetch a task by its UUID.\n * @see https://docs.globus.org/api/transfer/task/#get_task_by_id\n */\nexport const get = function (\n task_id,\n options?,\n sdkOptions?,\n): Promise<JSONFetchResponse<TaskDocument>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/task/${task_id}`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: never;\n payload?: never;\n }\n>;\n\n/**\n * @see https://docs.globus.org/api/transfer/task/#update_task_by_id\n */\nexport const update = function (\n task_id,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<{\n DATA_TYPE: 'result';\n code: 'Updated';\n message: string;\n request_id: string;\n resource: `/task/${string}/cancel`;\n }>\n> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/task/${task_id}`,\n method: HTTP_METHODS.PUT,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: never;\n payload: Record<string, string>;\n }\n>;\n\n/**\n * @see https://docs.globus.org/api/transfer/task/#cancel_task_by_id\n */\nexport const cancel = function (\n task_id,\n options?,\n sdkOptions?,\n): Promise<JSONFetchResponse<TaskDocument>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/task/${task_id}/cancel`,\n method: HTTP_METHODS.POST,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: never;\n payload?: never;\n }\n>;\n\n/**\n * @see https://docs.globus.org/api/transfer/task/#remove_task_by_id\n */\nexport const remove = function (\n task_id,\n options?,\n sdkOptions?,\n): Promise<JSONFetchResponse<TaskDocument>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/task/${task_id}/remove`,\n method: HTTP_METHODS.POST,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: never;\n payload?: never;\n }\n>;\n\n/**\n * @see https://docs.globus.org/api/transfer/task/#event_document\n */\nexport type EventDocument = {\n DATA_TYPE: 'event';\n code: string;\n is_error: boolean;\n description: string;\n details: string;\n time: string;\n};\n\nexport type TaskEventListDocument = {\n DATA_TYPE: 'task_event_list';\n DATA: EventDocument[];\n};\n\n/**\n * @see https://docs.globus.org/api/transfer/task/#get_event_list\n */\nexport const getEventList = function (\n task_id,\n options?,\n sdkOptions?,\n): Promise<JSONFetchResponse<PaginatedResponse<'Offset', TaskEventListDocument>>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/task/${task_id}/event_list`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: QueryParameters<'Offset'>;\n headers?: Record<string, string>;\n payload?: never;\n }\n>;\n\n/**\n * `source_path` or `destination_path` will be `null` when the user does not have\n * role permissions for either side of the transfer.\n * @see https://docs.globus.org/api/transfer/task/#successful_transfer_fields\n */\nexport type SuccessfulTransferDocument = {\n DATA_TYPE: 'successful_transfer';\n source_path: string | null;\n destination_path: string | null;\n checksum: string | null;\n checksum_algorithm: string | null;\n dynamic: boolean;\n size: number;\n};\n\nexport type SuccessfulTransfersListDocument = {\n DATA_TYPE: 'successful_transfers';\n marker: number;\n next_marker: null | number;\n DATA: SuccessfulTransferDocument[];\n};\n\n/**\n * @see https://docs.globus.org/api/transfer/task/#get_task_successful_transfers\n */\nexport const getSuccessfulTransfers = function (\n task_id,\n options?,\n sdkOptions?,\n): Promise<JSONFetchResponse<SuccessfulTransfersListDocument>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/task/${task_id}/successful_transfers`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: QueryParameters<'Marker'>;\n headers?: Record<string, string>;\n payload?: never;\n }\n>;\n\n/**\n * `source_path` or `destination_path` will be `null` when the user does not have\n * role permissions for either side of the transfer.\n * @see https://docs.globus.org/api/transfer/task/#skipped_error_fields\n */\nexport type SkippedErrorDocument = {\n DATA_TYPE: 'skipped_error';\n error_code: 'PERMISSION_DENIED' | 'FILE_NOT_FOUND';\n error_details: string;\n error_time: string;\n source_path: string | null;\n destination_path: string | null;\n is_directory: boolean;\n is_symlink: boolean;\n is_delete_destination_extra: boolean;\n external_checksum: string;\n checksum_algorithm: string;\n};\n\nexport type SkippedErrorsListDocument = {\n DATA_TYPE: 'skipped_errors';\n marker: number;\n next_marker: null | number;\n DATA: SkippedErrorDocument[];\n};\n\n/**\n * @see https://docs.globus.org/api/transfer/task/#get_task_skipped_errors\n */\nexport const getSkippedErrors = function (\n task_id,\n options?,\n sdkOptions?,\n): Promise<JSONFetchResponse<PaginatedResponse<'Marker', SkippedErrorsListDocument>>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/task/${task_id}/skipped_errors`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: QueryParameters<'Marker'>;\n headers?: Record<string, string>;\n payload?: never;\n }\n>;\n\n/**\n * @see https://docs.globus.org/api/transfer/task/#limited_pause_rule_document\n */\nexport type PauseRuleLimitedDocument = Omit<\n PauseRuleDocument,\n 'modified_by' | 'modified_by_id' | 'created_by_host_manager' | 'editable' | 'DATA_TYPE'\n> & {\n DATA_TYPE: 'pause_rule_limited';\n};\n/**\n * @see https://docs.globus.org/api/transfer/task/#get_task_pause_info\n */\ntype PauseInfoLimitedDocument = {\n DATA_TYPE: 'pause_info_limited';\n pause_rules: PauseRuleLimitedDocument[];\n source_pause_message: string | null;\n destination_pause_message: string | null;\n source_pause_message_share: string | null;\n destination_pause_message_share: string | null;\n};\n\n/**\n * @see https://docs.globus.org/api/transfer/task/#get_task_pause_info\n */\nexport const getPauseInfo = function (\n task_id,\n options?,\n sdkOptions?,\n): Promise<JSONFetchResponse<PauseInfoLimitedDocument>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/task/${task_id}/pause_info`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: never;\n headers?: Record<string, string>;\n payload?: never;\n }\n>;\n", "import { HTTP_METHODS, serviceRequest } from '../../shared.js';\nimport { ID, SCOPES } from '../config.js';\nimport { QueryParameters } from '../types.js';\n\nimport type { ServiceMethodDynamicSegments, JSONFetchResponse } from '../../../services/types.js';\n\n/**\n * @see https://docs.globus.org/api/transfer/permissions/#permission_document\n */\nexport type AccessDocument = {\n DATA_TYPE: 'access';\n id: null | string;\n role_id: null | string;\n role_type: null | 'administrator' | 'access_manager';\n principal_type: 'identity' | 'group' | 'all_authenticated_users' | 'anonymous';\n principal: '' | string;\n path: string;\n permissions: 'r' | 'rw';\n create_time: null | string;\n expiration_date: null | string;\n notify_email?: null | string;\n notify_message?: null | string;\n};\n\nexport type AccessListDocument = {\n DATA_TYPE: 'access_list';\n DATA: AccessDocument[];\n length: number;\n endpoint: string;\n};\n\n/**\n * @see https://docs.globus.org/api/transfer/permissions/#get_permission_list\n */\nexport const getAll = function (\n endpoint_xid,\n options?,\n sdkOptions?,\n): Promise<JSONFetchResponse<AccessListDocument>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/endpoint/${endpoint_xid}/access_list`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: QueryParameters<'Offset'>;\n payload?: never;\n }\n>;\n\n/**\n * @see https://docs.globus.org/api/transfer/permissions/#create_permission\n */\nexport const create = function (\n endpoint_xid,\n options,\n sdkOptions?,\n): Promise<JSONFetchResponse<AccessDocument>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/endpoint/${endpoint_xid}/access`,\n method: HTTP_METHODS.POST,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n payload: Partial<AccessDocument>;\n }\n>;\n\n/**\n * @see https://docs.globus.org/api/transfer/permissions/#get_permission_by_id\n */\nexport const get = function (\n { endpoint_xid, id },\n options?,\n sdkOptions?,\n): Promise<JSONFetchResponse<AccessDocument>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/endpoint/${endpoint_xid}/access/${id}`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n { endpoint_xid: string; id: string },\n {\n query?: never;\n payload?: never;\n }\n>;\n\n/**\n * @see https://docs.globus.org/api/transfer/permissions/#update_permission\n */\nexport const update = function (\n { endpoint_xid, id },\n options,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<{\n DATA_TYPE: 'result';\n code: 'Updated';\n message: string;\n request_id: string;\n resource: `/endpoint/${string}/access/${string}`;\n }>\n> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/endpoint/${endpoint_xid}/access/${id}`,\n method: HTTP_METHODS.PUT,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n { endpoint_xid: string; id: string },\n {\n query?: never;\n payload: Partial<AccessDocument>;\n }\n>;\n\n/**\n * @see https://docs.globus.org/api/transfer/permissions/#delete_permissoin\n */\nexport const remove = function (\n { endpoint_xid, id },\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<{\n DATA_TYPE: 'result';\n code: 'Deleted';\n message: string;\n request_id: string;\n resource: `/endpoint/${string}/access/${string}`;\n }>\n> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/endpoint/${endpoint_xid}/access/${id}`,\n method: HTTP_METHODS.DELETE,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n { endpoint_xid: string; id: string },\n {\n query?: never;\n payload?: never;\n }\n>;\n", "import { HTTP_METHODS, serviceRequest } from '../../shared.js';\n\nimport { ID, SCOPES } from '../config.js';\n\nimport type { ServiceMethodDynamicSegments, JSONFetchResponse } from '../../../services/types.js';\n\nimport type { EndpointRole } from './endpoint';\n\n/**\n * @see https://docs.globus.org/api/transfer/endpoint_roles/#role_document_fields\n */\nexport type RoleDocument = {\n DATA_TYPE: 'role';\n id: string;\n principal_type: 'identity' | 'group';\n principal: string;\n role: EndpointRole;\n};\n\n/**\n * @see https://docs.globus.org/api/transfer/endpoint_roles/#role_list\n */\nexport type RoleListDocument = {\n DATA_TYPE: 'role_list';\n DATA: RoleDocument[];\n};\n\n/**\n * Get a list of role assignments for an endpoint.\n * @see https://docs.globus.org/api/transfer/roles/#role_list\n */\nexport const getAll = function (\n endpoint_id: string,\n options = {},\n sdkOptions?,\n): Promise<JSONFetchResponse<RoleListDocument>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/endpoint/${endpoint_id}/role_list`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: never;\n payload?: never;\n }\n>;\n\n/**\n * Fetch a role by its UUID.\n * @see https://docs.globus.org/api/transfer/roles/#get_role_by_id\n */\nexport const get = function (\n { endpoint_id, role_id },\n options?,\n sdkOptions?,\n): Promise<JSONFetchResponse<RoleDocument>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/endpoint/${endpoint_id}/role/${role_id}`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n { endpoint_id: string; role_id: string },\n {\n query?: never;\n payload?: never;\n }\n>;\n\n/**\n * Assign a role to an identity or group for a Globus Connect Personal collection.\n * @see https://docs.globus.org/api/transfer/roles/#create_role\n */\nexport const create = function (\n collection_id: string,\n options,\n sdkOptions?,\n): Promise<JSONFetchResponse<RoleDocument>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/endpoint/${collection_id}/role`,\n method: HTTP_METHODS.POST,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n payload: Partial<RoleDocument>;\n }\n>;\n\n/**\n * Delete a single Globus Connect Personal collection role assignment by id.\n * @see https://docs.globus.org/api/transfer/roles/#delete_globus_connect_personal_collection_role_by_id\n */\nexport const remove = function (\n { collection_id, role_id },\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<{\n DATA_TYPE: 'result';\n code: 'Deleted';\n message: string;\n request_id: string;\n resource: `/endpoint/${string}/role/${string}`;\n }>\n> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/endpoint/${collection_id}/role/${role_id}`,\n method: HTTP_METHODS.DELETE,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n { collection_id: string; role_id: string },\n {\n query?: never;\n payload?: never;\n }\n>;\n", "import { HTTP_METHODS, serviceRequest } from '../../shared.js';\nimport { ID, SCOPES } from '../config.js';\n\nimport type {\n ServiceMethodDynamicSegments,\n JSONFetchResponse,\n ServiceMethod,\n} from '../../types.js';\n\n/**\n * @see https://docs.globus.org/api/transfer/collection_bookmarks/#bookmark_document\n */\nexport type BookmarkDocument = {\n DATA_TYPE: 'bookmark';\n id: string;\n name: string;\n endpoint_id: string;\n path: string;\n};\n\nexport type BookmarkListDocument = {\n DATA_TYPE: 'bookmark_list';\n DATA: BookmarkDocument[];\n};\n\n/**\n * @see https://docs.globus.org/api/transfer/collection_bookmarks/#get_list_of_bookmarks\n */\nexport const getAll = function (\n options?,\n sdkOptions?,\n): Promise<JSONFetchResponse<BookmarkListDocument>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/bookmark_list`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethod<{\n query?: never;\n payload?: never;\n}>;\n\n/**\n * @see https://docs.globus.org/api/transfer/collection_bookmarks/#create_bookmark\n */\nexport const create = function (\n options,\n sdkOptions?,\n): Promise<JSONFetchResponse<BookmarkDocument>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/bookmark`,\n method: HTTP_METHODS.POST,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethod<{\n payload: Partial<BookmarkDocument>;\n}>;\n\n/**\n * @see https://docs.globus.org/api/transfer/collection_bookmarks/#get_bookmark_by_id\n */\nexport const get = function (\n bookmark_id,\n options?,\n sdkOptions?,\n): Promise<JSONFetchResponse<BookmarkDocument>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/bookmark/${bookmark_id}`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: never;\n payload?: never;\n }\n>;\n\n/**\n * @see https://docs.globus.org/api/transfer/collection_bookmarks/#update_bookmark\n */\nexport const update = function (\n bookmark_id,\n options,\n sdkOptions?,\n): Promise<JSONFetchResponse<BookmarkDocument>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/bookmark/${bookmark_id}`,\n method: HTTP_METHODS.PUT,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: never;\n payload: Partial<BookmarkDocument> & { name: string };\n }\n>;\n\n/**\n * @see https://docs.globus.org/api/transfer/collection_bookmarks/#delete_bookmark_by_id\n */\nexport const remove = function (\n bookmark_id,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<{\n DATA_TYPE: 'result';\n code: 'Deleted';\n message: string;\n resource: `/bookmark/${string}`;\n request_id: string;\n }>\n> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/bookmark/${bookmark_id}`,\n method: HTTP_METHODS.DELETE,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: never;\n payload?: never;\n }\n>;\n", "import { HTTP_METHODS, serviceRequest } from '../../shared.js';\nimport { ID as service } from '../config.js';\nimport { RESOURCE_SERVERS } from '../../auth/config.js';\n\nimport type {\n ServiceMethod,\n ServiceMethodDynamicSegments,\n JSONFetchResponse,\n} from '../../../services/types.js';\nimport type { operations } from '../../../open-api/types/transfer.js';\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nconst resource_server = RESOURCE_SERVERS[service];\n\ntype GetAllOperation = operations['tunnels_list_tunnels_get'];\n/**\n * Get a list of tunnels.\n */\nexport const getAll = function (\n options?,\n sdkOptions?,\n): Promise<JSONFetchResponse<GetAllOperation['responses']['200']['content']['application/json']>> {\n return serviceRequest(\n {\n service,\n resource_server,\n path: `/v2/tunnels`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethod<{\n query?: GetAllOperation['parameters']['query'];\n payload?: GetAllOperation['requestBody'];\n}>;\n\ntype GetOperation = operations['tunnels_get_tunnels__tunnel_uuid__get'];\n/**\n * Get a tunnel by its UUID.\n */\nexport const get = function (\n tunnel_uuid,\n options?,\n sdkOptions?,\n): Promise<JSONFetchResponse<GetOperation['responses']['200']['content']['application/json']>> {\n return serviceRequest(\n {\n service,\n resource_server,\n path: `/v2/tunnels/${tunnel_uuid}`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: GetOperation['parameters']['query'];\n payload?: GetOperation['requestBody'];\n }\n>;\n\ntype CreateOperation = operations['tunnels_post_tunnels_post'];\n/**\n * Create a new tunnel.\n */\nexport const create = function (\n options,\n sdkOptions?,\n): Promise<JSONFetchResponse<CreateOperation['responses']['201']['content']['application/json']>> {\n return serviceRequest(\n {\n service,\n resource_server,\n path: `/v2/tunnels`,\n method: HTTP_METHODS.POST,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethod<{\n query?: CreateOperation['parameters']['query'];\n payload: CreateOperation['requestBody']['content']['application/json'];\n}>;\n\ntype DeleteOperation = operations['tunnels_delete_tunnels__tunnel_uuid__delete'];\n/**\n * Delete a tunnel by its UUID.\n */\nexport const remove = function (\n tunnel_uuid,\n options?,\n sdkOptions?,\n): Promise<JSONFetchResponse<DeleteOperation['responses']['200']['content']['application/json']>> {\n return serviceRequest(\n {\n service,\n resource_server,\n path: `/v2/tunnels/${tunnel_uuid}`,\n method: HTTP_METHODS.DELETE,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: DeleteOperation['parameters']['query'];\n payload?: DeleteOperation['requestBody'];\n }\n>;\n\ntype PatchOperation = operations['tunnels_patch_tunnels__tunnel_uuid__patch'];\ntype PatchPayload =\n PatchOperation['requestBody']['content']['application/json']['data']['attributes'];\n/**\n * Start a tunnel that's in the `AWAITING_LISTENER` state.\n */\nexport const start = function (\n tunnel_uuid,\n options,\n sdkOptions?,\n): Promise<JSONFetchResponse<PatchOperation['responses']['200']['content']['application/json']>> {\n return serviceRequest(\n {\n service,\n resource_server,\n path: `/v2/tunnels/${tunnel_uuid}`,\n method: HTTP_METHODS.PATCH,\n },\n { payload: { data: { attributes: { ...options } } } },\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: PatchOperation['parameters']['query'];\n payload: NonNullable<Pick<PatchPayload, 'listener_ip_address' | 'listener_port'>> &\n Pick<PatchPayload, 'label'>;\n }\n>;\n\n/**\n * Stop a tunnel that isn't already in the `STOPPED` or `STOPPING` state.\n */\nexport const stop = function (\n tunnel_uuid,\n options = {},\n sdkOptions?,\n): Promise<JSONFetchResponse<PatchOperation['responses']['200']['content']['application/json']>> {\n return serviceRequest(\n {\n service,\n resource_server,\n path: `/v2/tunnels/${tunnel_uuid}`,\n method: HTTP_METHODS.PATCH,\n },\n { payload: { data: { attributes: { ...options, state: 'STOPPING' } } } },\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: PatchOperation['parameters']['query'];\n payload?: Pick<PatchPayload, 'label'>;\n }\n>;\n\ntype GetEventsOperation =\n operations['get_tunnel_events_by_tunnel_uuid_tunnels__tunnel_uuid__events_get'];\n/**\n * Get all events for a given tunnel.\n */\nexport const getEventList = function (\n tunnel_uuid,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<GetEventsOperation['responses']['200']['content']['application/json']>\n> {\n return serviceRequest(\n {\n service,\n resource_server,\n path: `/v2/tunnels/${tunnel_uuid}/events`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: GetEventsOperation['parameters']['query'];\n payload?: GetEventsOperation['requestBody'];\n }\n>;\n", "import { serviceRequest } from '../../shared.js';\nimport { ID as service } from '../config.js';\nimport { RESOURCE_SERVERS } from '../../auth/config.js';\n\nimport type {\n ServiceMethodDynamicSegments,\n JSONFetchResponse,\n ServiceMethod,\n} from '../../../services/types.js';\nimport type { operations } from '../../../open-api/types/transfer.js';\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nconst resource_server = RESOURCE_SERVERS[service];\n\ntype GetAllOperation = operations['stream_access_points_list_stream_access_points_get'];\n/**\n * Get a list of all stream access points.\n */\nexport const getAll = function (\n options?,\n sdkOptions?,\n): Promise<JSONFetchResponse<GetAllOperation['responses']['200']['content']['application/json']>> {\n return serviceRequest(\n {\n service,\n resource_server,\n path: `/v2/stream_access_points`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethod<{\n query?: GetAllOperation['parameters']['query'];\n payload?: GetAllOperation['requestBody'];\n}>;\n\ntype GetOperation =\n operations['stream_access_points_get_stream_access_points__stream_access_point_uuid__get'];\n/**\n * Fetch a stream-access-point by its UUID.\n */\nexport const get = function (\n stream_access_point_uuid,\n options?,\n sdkOptions?,\n): Promise<JSONFetchResponse<GetOperation['responses']['200']['content']['application/json']>> {\n return serviceRequest(\n {\n service,\n resource_server,\n path: `/v2/stream_access_points/${stream_access_point_uuid}`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: GetOperation['parameters']['query'];\n payload?: GetOperation['requestBody'];\n }\n>;\n", "export * as endpoint from './endpoint.js';\nexport * as pauseRule from './pause-rule.js';\nexport * as task from './task.js';\n", "import { serviceRequest } from '../../../shared.js';\nimport { ID, SCOPES } from '../../config.js';\n\nimport type {\n ServiceMethodDynamicSegments,\n JSONFetchResponse,\n ServiceMethod,\n} from '../../../../services/types.js';\nimport type { PaginatedResponse, QueryParameters } from '../../types.js';\nimport type { AccessListDocument } from '../access.js';\nimport { EndpointDocument, EndpointListDocument } from '../endpoint.js';\n\n/**\n * Fetch an endpoint by its UUID as an administrator.\n * @see https://docs.globus.org/api/transfer/advanced_endpoint_management/#mc_get_endpoint\n */\nexport const get = function (\n endpoint_xid,\n options?,\n sdkOptions?,\n): Promise<JSONFetchResponse<EndpointDocument>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/endpoint_manager/endpoint/${endpoint_xid}`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: never;\n payload?: never;\n }\n>;\n\n/**\n * @see https://docs.globus.org/api/transfer/advanced_endpoint_management/#get_hosted_endpoint_list\n */\nexport const getHostedEndpoints = function (\n endpoint_xid,\n options?,\n sdkOptions?,\n): Promise<JSONFetchResponse<PaginatedResponse<'Offset', EndpointListDocument>>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/endpoint_manager/endpoint/${endpoint_xid}/hosted_endpoint_list`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: QueryParameters<'Offset'>;\n payload?: never;\n }\n>;\n\n/**\n * @see https://docs.globus.org/api/transfer/advanced_endpoint_management/#get_task_events\n */\nexport const getAccessList = function (\n endpoint_xid,\n options?,\n sdkOptions?,\n): Promise<JSONFetchResponse<AccessListDocument>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/endpoint_manager/endpoint/${endpoint_xid}/access_list`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: QueryParameters<'Offset'>;\n payload?: never;\n }\n>;\n\n/**\n * @see https://docs.globus.org/api/transfer/advanced_endpoint_management/#get_monitored_endpoints\n */\nexport const getMonitoredEndpoints = function (\n options = {},\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n PaginatedResponse<\n 'Offset',\n Omit<EndpointListDocument, 'DATA_TYPE'> & {\n DATA_TYPE: 'monitored_endpoints';\n }\n >\n >\n> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/endpoint_manager/monitored_endpoints`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethod<{\n query?: QueryParameters<'Offset'>;\n payload?: never;\n}>;\n", "import { HTTP_METHODS, serviceRequest } from '../../../shared.js';\n\nimport { ID, SCOPES } from '../../config.js';\n\nimport type {\n ServiceMethod,\n ServiceMethodDynamicSegments,\n JSONFetchResponse,\n} from '../../../../services/types.js';\n\n/**\n * @see https://docs.globus.org/api/transfer/advanced_collection_management/#pause_rule_document\n */\nexport type PauseRuleDocument = {\n DATA_TYPE: 'pause_rule';\n id: string;\n message: string;\n start_time: string | null;\n endpoint_id: string;\n endpoint_display_name: string;\n identity_id: string;\n modified_by_id: string;\n created_by_host_manager: boolean;\n editable: boolean;\n pause_ls: boolean;\n pause_mkdir: boolean;\n pause_symlink: boolean;\n pause_rename: boolean;\n pause_task_delete: boolean;\n pause_task_transfer_delete: boolean;\n pause_task_transfer_read: boolean;\n};\n\n/**\n * Get a list of pause rules on endpoints that the current user has the \"activity_monitor\" role on.\n * @see https://docs.globus.org/api/transfer/advanced_endpoint_management/#get_pause_rules\n */\nexport const getAll = function (\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<{\n DATA_TYPE: 'pause_rule_list';\n DATA: PauseRuleDocument[];\n }>\n> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/endpoint_manager/pause_rule_list`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethod<{\n query?: { filter_endpoint?: string; filter_host_endpoint?: string };\n payload?: never;\n}>;\n\n/**\n * @see https://docs.globus.org/api/transfer/advanced_endpoint_management/#create_pause_rule\n */\nexport const create = function (\n options,\n sdkOptions?,\n): Promise<JSONFetchResponse<PauseRuleDocument>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/endpoint_manager/pause_rule`,\n method: HTTP_METHODS.POST,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethod<{\n payload: Partial<PauseRuleDocument>;\n}>;\n\n/**\n * Fetch a pause_rule by its UUID.\n * @see https://docs.globus.org/api/transfer/advanced_endpoint_management/#get_pause_rule\n */\nexport const get = function (\n pause_rule_id,\n options?,\n sdkOptions?,\n): Promise<JSONFetchResponse<PauseRuleDocument>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/endpoint_manager/pause_rule/${pause_rule_id}`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: never;\n payload?: never;\n }\n>;\n\n/**\n * @see https://docs.globus.org/api/transfer/advanced_endpoint_management/#update_pause_rule\n */\nexport const update = function (\n pause_rule_id,\n options,\n sdkOptions?,\n): Promise<JSONFetchResponse<PauseRuleDocument>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/endpoint_manager/pause_rule/${pause_rule_id}`,\n method: HTTP_METHODS.PUT,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: never;\n payload: Partial<PauseRuleDocument>;\n }\n>;\n\n/**\n * @see https://docs.globus.org/api/transfer/advanced_endpoint_management/#delete_pause_rule\n */\nexport const remove = function (\n pause_rule_id,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<{\n DATA_TYPE: 'result';\n code: 'Deleted';\n message: string;\n request_id: string;\n resource: string;\n }>\n> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/endpoint_manager/pause_rule/${pause_rule_id}`,\n method: HTTP_METHODS.DELETE,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: never;\n payload?: never;\n }\n>;\n", "import { HTTP_METHODS, serviceRequest } from '../../../shared.js';\nimport { ID, SCOPES } from '../../config.js';\n\nimport type {\n ServiceMethod,\n ServiceMethodDynamicSegments,\n JSONFetchResponse,\n} from '../../../../services/types.js';\n\nimport type { PaginatedResponse, QueryParameters } from '../../types.js';\nimport type {\n SkippedErrorsListDocument,\n SuccessfulTransferDocument,\n TaskDocument,\n TaskEventListDocument,\n} from '../task.js';\nimport { PauseRuleDocument } from './pause-rule.js';\n\ntype LocalUserStatus = 'OK' | 'NO_PERMISSION' | 'NOT_SCANNED' | 'ENDPOINT_ERROR' | 'NO_ENDPOINT';\n\n/**\n * @see https://docs.globus.org/api/transfer/advanced_endpoint_management/#task_document\n */\nexport type EndpointManagerTaskDocument = TaskDocument & {\n source_endpoint_id: string | null;\n source_endpoint_display_name: string | null;\n destination_endpoint_id: string | null;\n destination_endpoint_display_name: string | null;\n /**\n * @deprecated\n */\n source_host_endpoint: string | null;\n source_host_endpoint_id: string | null;\n source_host_endpoint_display_name: string | null;\n source_mapped_collection_id: string | null;\n source_mapped_collection_display_name: string | null;\n /**\n * @deprecated\n */\n destination_host_endpoint: string | null;\n destination_host_endpoint_id: string | null;\n destination_host_endpoint_display_name: string | null;\n destination_mapped_collection_id: string | null;\n destination_mapped_collection_display_name: string | null;\n\n source_host_path: string | null;\n destination_host_path: string | null;\n is_ok: boolean | null;\n source_local_user: null;\n source_local_user_status: LocalUserStatus;\n destination_local_user: string | null;\n destination_local_user_status: LocalUserStatus;\n owner_string: string;\n};\n\n/**\n * @see https://docs.globus.org/api/transfer/advanced_endpoint_management/#get_tasks\n */\nexport const getAll = function (\n options = {},\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n PaginatedResponse<\n 'LastKey',\n {\n DATA_TYPE: 'task_list';\n DATA: EndpointManagerTaskDocument[];\n }\n >\n >\n> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/task_list`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethod<{\n query?: QueryParameters<\n {\n filter_status?: string;\n filter_task_id?: string;\n filter_owner_id?: string;\n filter_endpoint?: string;\n filter_is_paused?: boolean;\n filter_completion_time?: string;\n filter_min_faults?: number;\n filter_local_user?: string;\n },\n 'LastKey'\n >;\n payload?: never;\n}>;\n\n/**\n * @see https://docs.globus.org/api/transfer/advanced_endpoint_management/#get_task\n */\nexport const get = function (\n task_id,\n options?,\n sdkOptions?,\n): Promise<JSONFetchResponse<EndpointManagerTaskDocument>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/endpoint_manager/task/${task_id}`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: never;\n payload?: never;\n }\n>;\n\n/**\n * @see https://docs.globus.org/api/transfer/advanced_collection_management/#admin_cancel_document\n */\nexport type AdminCancelDocument = {\n DATA_TYPE: 'admin_cancel';\n id: number;\n message: string;\n task_id_list: string[];\n done: boolean;\n};\n\n/**\n * @see https://docs.globus.org/api/transfer/advanced_collection_management/#cancel_tasks\n */\nexport const cancel = function (\n options,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<{\n DATA_TYPE: 'admin_cancel';\n readonly id?: AdminCancelDocument['id'];\n readonly done?: AdminCancelDocument['done'];\n }>\n> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/endpoint_manager/admin_cancel`,\n method: HTTP_METHODS.POST,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethod<{\n query?: never;\n payload: {\n DATA_TYPE: AdminCancelDocument['DATA_TYPE'];\n task_id_list: AdminCancelDocument['task_id_list'];\n message: AdminCancelDocument['message'];\n };\n}>;\n\n/**\n * @see https://docs.globus.org/api/transfer/advanced_endpoint_management/#get_cancel_status_by_id\n */\nexport const getAdminCancel = function (\n admin_cancel_id,\n options?,\n sdkOptions?,\n): Promise<JSONFetchResponse<AdminCancelDocument>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/endpoint_manager/admin_cancel/${admin_cancel_id}`,\n method: HTTP_METHODS.POST,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: never;\n payload?: never;\n }\n>;\n\n/**\n * @see https://docs.globus.org/api/transfer/advanced_endpoint_management/#get_task_events\n */\nexport const getEventList = function (\n task_id,\n options?,\n sdkOptions?,\n): Promise<JSONFetchResponse<PaginatedResponse<'Offset', TaskEventListDocument>>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/endpoint_manager/task/${task_id}/event_list`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: QueryParameters<{ filter_is_error?: 1 }, 'Offset'>;\n payload?: never;\n }\n>;\n\n/**\n * @see https://docs.globus.org/api/transfer/advanced_endpoint_management/#get_task_successful_transfers_as_admin\n */\nexport const getSuccessfulTransfers = function (\n task_id,\n options?,\n sdkOptions?,\n): Promise<JSONFetchResponse<PaginatedResponse<'Marker', SuccessfulTransferDocument>>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/endpoint_manager/task/${task_id}/successful_transfers`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: QueryParameters<'Marker'>;\n payload?: never;\n }\n>;\n\n/**\n * @see https://docs.globus.org/api/transfer/advanced_endpoint_management/#get_task_skipped_errors_transfers_as_admin\n */\nexport const getSkippedErrors = function (\n task_id,\n options?,\n sdkOptions?,\n): Promise<JSONFetchResponse<PaginatedResponse<'Marker', SkippedErrorsListDocument>>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/endpoint_manager/task/${task_id}/skipped_errors`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: QueryParameters<'Marker'>;\n payload?: never;\n }\n>;\n\n/**\n * @see https://docs.globus.org/api/transfer/advanced_endpoint_management/#admin_pause_document\n */\nexport type AdminPauseDocument = {\n DATA_TYPE: 'admin_pause';\n task_id_list: string[];\n message: string;\n};\n\n/**\n * @see https://docs.globus.org/api/transfer/advanced_endpoint_management/#pause_tasks_as_admin\n */\nexport const pause = function (\n options,\n sdkOptions?,\n): Promise<JSONFetchResponse<AdminPauseDocument>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/endpoint_manager/admin_pause`,\n method: HTTP_METHODS.POST,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethod<{\n query?: never;\n payload?: Pick<AdminPauseDocument, 'task_id_list' | 'message' | 'DATA_TYPE'>;\n}>;\n\n/**\n * @see https://docs.globus.org/api/transfer/advanced_collection_management/#admin_resume_document\n */\nexport type AdminResumeDocument = {\n task_id_list: string[];\n};\n\n/**\n * @see https://docs.globus.org/api/transfer/advanced_endpoint_management/#resume_tasks_as_admin\n */\nexport const resume = function (\n options,\n sdkOptions?,\n): Promise<JSONFetchResponse<AdminResumeDocument>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/endpoint_manager/admin_resume`,\n method: HTTP_METHODS.POST,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethod<{\n query?: never;\n payload?: AdminResumeDocument;\n}>;\n\n/**\n * @see https://docs.globus.org/api/transfer/advanced_endpoint_management/#get_task_pause_info_as_admin\n */\nexport const getPauseInfo = function (\n task_id,\n options?,\n sdkOptions?,\n): Promise<JSONFetchResponse<PauseRuleDocument>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v0.10/endpoint_manager/task/${task_id}/pause_info`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: never;\n payload?: never;\n }\n>;\n", "import type { FileDocument } from './service/file-operations.js';\n\n/**\n * Determines if the given entry is a Globus Transfer File Document.\n * @see https://docs.globus.org/api/transfer/file_operations/#file_document\n */\nexport function isFileDocument(entry: unknown): entry is FileDocument {\n return (\n typeof entry === 'object' &&\n entry !== null &&\n 'DATA_TYPE' in entry &&\n entry.DATA_TYPE === 'file'\n );\n}\n/**\n * Determines if the given entry is a directory.\n * @see https://docs.globus.org/api/transfer/file_operations/#file_document\n */\nexport function isDirectory(entry: unknown) {\n return isFileDocument(entry) && entry.type === 'dir';\n}\n\nconst KB = 1000;\nconst MB = KB * 1000;\nconst GB = MB * 1000;\nconst TB = GB * 1000;\nconst PB = TB * 1000;\n/**\n * Returns a readable string for the given bytes, **rounded and truncated** to the given number of decimal places.\n * @param bytes The number of bytes to convert to a readable string.\n * @param [truncate=2] The number of decimal places to truncate the result to.\n */\nexport function readableBytes(bytes: number, truncate = 2) {\n let unit = 'B';\n let bytesInUnit = 1;\n if (bytes < KB) {\n return `${bytes} ${unit}`;\n }\n if (bytes < MB) {\n unit = 'KB';\n bytesInUnit = KB;\n } else if (bytes < GB) {\n unit = 'MB';\n bytesInUnit = MB;\n } else if (bytes < TB) {\n unit = 'GB';\n bytesInUnit = GB;\n } else if (bytes < PB) {\n unit = 'TB';\n bytesInUnit = TB;\n } else {\n unit = 'PB';\n bytesInUnit = PB;\n }\n const value = bytes / bytesInUnit;\n const [int, dec] = `${value}`.split('.');\n let rendered = `${int}`;\n if (dec && dec.length) {\n const truncated = dec.slice(0, truncate);\n if (truncated.length) {\n rendered = `${int}.${truncated}`;\n }\n }\n return `${rendered} ${unit}`;\n}\n\n/**\n * Known Globus DNS domains.\n */\nexport const GLOBUS_DNS_DOMAINS = [\n 'dnsteam.globuscs.info',\n 'data.globus.org',\n 'dn.glob.us',\n 'gaccess.io',\n];\n\n/**\n * Check the given hostname to determine if it is one of the known Globus DNS domains.\n * @param hostname The hostname to check.\n * @returns `true` if the hostname is a known Globus DNS domain, `false` otherwise.\n */\nexport function isGlobusHostname(hostname: string): boolean {\n return Boolean(GLOBUS_DNS_DOMAINS.find((d) => hostname.endsWith(`.${d}`)));\n}\n\n/**\n * Returns DNS domain, if any, for a collection or endpoint.\n *\n * - Custom domains will be displayed without any auto-generated wildcard subdomains.\n * - Globus domains will include the auto-generated section to make them identifiable.\n *\n * @param endpoint The endpoint to extract the domain from. While any object will be parsed, this function is intended for use with [Globus Transfer Endpoint or Collection Documents](https://docs.globus.org/api/transfer/endpoints_and_collections/#endpoint_or_collection_document).\n * @see https://docs.globus.org/globus-connect-server/v5.4/domain-guide/#custom_domains_new_in_v_5_4_13\n */\nexport function getDomainFromEndpoint(endpoint: Record<string, unknown>) {\n const { tlsftp_server: tls } = endpoint;\n if (!tls || typeof tls !== 'string') {\n return null;\n }\n /**\n * Swap the protocol to `https` so we can use the URL API to extract the hostname.\n */\n const { hostname } = new URL(tls.replace('tlsftp', 'https'));\n const hasCustomDomain = !isGlobusHostname(hostname);\n const customDomain =\n hasCustomDomain && /(?:[gm]-\\w{6}.)?([\\w-]+(\\.[\\w-]+)+)$/.exec(hostname)?.[1];\n\n return customDomain || hostname || null;\n}\n", "/**\n * @description A wrapper around the Globus Search service.\n * @group Service\n * @see [Globus Search API Documentation](https://docs.globus.org/api/search/reference/)\n * @module\n */\nimport * as SEARCH from './config.js';\n\n/**\n * @private\n * @internal\n */\nexport const CONFIG = SEARCH;\n\nexport type * as OpenAPI from '../../open-api/types/search.js';\nexport type * from './types.js';\n\nexport * as query from './service/query.js';\nexport * as subject from './service/subject.js';\nexport * as entry from './service/entry.js';\nexport * as index from './service/search-index.js';\n", "import { HTTP_METHODS, serviceRequest } from '../../shared.js';\nimport { ID, SCOPES } from '../config.js';\n\nimport type { JSONFetchResponse, SDKOptions } from '../../types.js';\nimport type { OpenAPI } from '../index.js';\nimport type { ResultFormatVersion } from '../types.js';\n\ntype Content = NonNullable<OpenAPI.components['schemas']['ResultEntry']['content']>;\nexport type MatchedPrincipalSets =\n OpenAPI.components['schemas']['ResultEntry']['matched_principal_sets'];\n/**\n * @see https://docs.globus.org/api/search/reference/post_query/#gmetaresult\n */\nexport type GMetaResult<C extends Content = Content> = Omit<\n OpenAPI.components['schemas']['GMetaResult'],\n 'entries'\n> & {\n entries: (Omit<OpenAPI.components['schemas']['ResultEntry'], 'content'> & { content: C })[];\n};\n\n/**\n * @see https://docs.globus.org/api/search/reference/post_query/#gfacetresult\n */\nexport type GFacetResult = {\n name: string;\n value?: string;\n buckets?: GBucket[];\n};\n\n/**\n * @see https://docs.globus.org/api/search/reference/post_query/#gbucket\n */\nexport type GBucket = {\n value: string | GFilter;\n count: number;\n};\n\n/**\n * @see https://docs.globus.org/api/search/reference/post_query/#gsearchresult\n */\nexport type GSearchResult<C extends Content = Content> = {\n gmeta: GMetaResult<C>[];\n facet_results?: GFacetResult[];\n offset: number;\n count: number;\n total: number;\n has_next_page: boolean;\n};\n\n/**\n * @param index_id The UUID of the index to query.\n *\n * @see https://docs.globus.org/api/search/reference/get_query/\n */\nexport const get = function <C extends Content = Content>(\n index_id: string,\n options?: {\n /**\n * @see https://docs.globus.org/api/search/reference/get_query/#parameters\n */\n query?: {\n q: string;\n offset?: `${number}` | number;\n limit?: `${number}` | number;\n advanced?: 'true' | 'false';\n bypass_visible_to?: 'true' | 'false';\n result_format_version?: string;\n filter_principal_sets?: string;\n };\n },\n sdkOptions?: SDKOptions,\n): Promise<JSONFetchResponse<GSearchResult<C>>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.SEARCH,\n path: `/v1/index/${index_id}/search`,\n },\n options,\n sdkOptions,\n );\n};\n\n/**\n * @see https://docs.globus.org/api/search/reference/post_query/#gsearchrequest\n */\nexport type GSearchRequest = {\n q: string;\n offset?: number;\n limit?: number;\n advanced?: boolean;\n bypass_visible_to?: boolean;\n result_format_version?: ResultFormatVersion;\n filter_principal_sets?: string[];\n filters?: GFilter[];\n facets?: GFacet[];\n boosts?: GBoost[];\n sort?: GSort[];\n};\n\n/**\n * @param index_id The UUID of the index to query.\n *\n * @see https://docs.globus.org/api/search/reference/post_query/\n */\nexport const post = function <C extends Content = Content>(\n index_id: string,\n options: {\n payload: GSearchRequest;\n },\n sdkOptions?: SDKOptions,\n): Promise<JSONFetchResponse<GSearchResult<C>>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.SEARCH,\n path: `/v1/index/${index_id}/search`,\n method: HTTP_METHODS.POST,\n },\n options,\n sdkOptions,\n );\n};\n\n/**\n * @see https://docs.globus.org/api/search/reference/post_query/#gfilter\n */\nexport type GFilter = GFilterMatch | GFilterRange | GFilterExists | GFilterNot;\n\ntype GFilterTypeMatch = 'match_any' | 'match_all';\ntype GFilterTypeRange = 'range';\n\ntype GFilterMatch = {\n type: GFilterTypeMatch;\n field_name: string;\n values: Array<string>;\n};\ntype GFilterRange = {\n type: GFilterTypeRange;\n field_name: string;\n values: Array<{ from: string; to: string }>;\n};\ntype GFilterExists = {\n type: 'exists';\n field_name: string;\n};\ntype GFilterNot = {\n type: 'not';\n filter: GFilter;\n};\n\ntype HistogramRange = { low: number | string; high: number | string };\n\n/**\n * @see https://docs.globus.org/api/search/reference/post_query/#gfacet\n */\nexport type GFacet = {\n name?: string;\n field_name: string;\n} & (\n | {\n type: 'terms';\n size?: number;\n }\n | {\n type: 'sum' | 'avg';\n missing?: number;\n }\n | {\n type: 'date_histogram';\n date_interval: DateInterval;\n histogram_range?: HistogramRange;\n }\n | {\n type: 'numeric_histogram';\n size: string;\n histogram_range: HistogramRange;\n }\n);\n\ntype DateInterval = 'year' | 'quarter' | 'month' | 'week' | 'day' | 'hour' | 'minute' | 'second';\n\n/**\n * @see https://docs.globus.org/api/search/reference/post_query/#gboost\n */\nexport type GBoost = {\n field_name: string;\n factor: number;\n};\n\n/**\n * @see https://docs.globus.org/api/search/reference/post_query/#gsort\n */\nexport type GSort = {\n field_name: string;\n order: 'asc' | 'desc';\n};\n", "import { serviceRequest } from '../../shared.js';\nimport { ID, SCOPES } from '../config.js';\n\nimport type { ServiceMethodDynamicSegments } from '../../types.js';\nimport type { ResultFormatVersion } from '../types.js';\n\n/**\n * Lookup a single Subject in a Search Index.\n * @param index_id The UUID of the Search index where the lookup will be performed.\n *\n * @see https://docs.globus.org/api/search/reference/get_subject/\n */\nexport const get = function (index_id, options?, sdkOptions?) {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.SEARCH,\n path: `/v1/index/${index_id}/subject`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n /**\n * @see https://docs.globus.org/api/search/reference/get_subject/#parameters\n */\n query: {\n subject: string;\n result_format_version?: ResultFormatVersion | string;\n bypass_visible_to?: 'true' | 'false';\n };\n }\n>;\n", "import { serviceRequest } from '../../shared.js';\nimport { ID, SCOPES } from '../config.js';\n\nimport type { ResultFormatVersion } from '../types.js';\nimport type { ServiceMethodDynamicSegments } from '../../types.js';\n\n/**\n * Lookup a single Entry in a Search Index.\n * @param index_id The UUID of the Search index where the lookup will be performed.\n *\n * @see https://docs.globus.org/api/search/reference/get_entry/\n */\nexport const get = function (index_id, options?, sdkOptions?) {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.SEARCH,\n path: `/v1/index/${index_id}/entry`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n /**\n * @see https://docs.globus.org/api/search/reference/get_entry/#parameters\n */\n query: {\n subject: string;\n entry_id?: string;\n result_format_version?: ResultFormatVersion | string;\n bypass_visible_to?: 'true' | 'false';\n };\n }\n>;\n", "import { HTTP_METHODS, serviceRequest } from '../../shared.js';\nimport { ID, SCOPES } from '../config.js';\n\nimport type {\n JSONFetchResponse,\n ServiceMethod,\n ServiceMethodDynamicSegments,\n} from '../../types.js';\n\nexport * as roles from './roles.js';\n\n/**\n * @see https://docs.globus.org/api/search/reference/index_list/#indexwithpermissions\n */\nexport type IndexWithPermissions = GSearchIndex & {\n permissions: string[];\n};\n\nexport type GSearchIndex = {\n display_name: string;\n id: string;\n description: string;\n creation_date: string;\n is_trial: boolean;\n subscription_id: string;\n max_size_in_mb: number;\n size_in_mb: number;\n num_subjects: number;\n num_entries: number;\n status: 'open' | 'delete-pending' | string;\n};\n\n/**\n * @see https://docs.globus.org/api/search/reference/index_list/#indexlist\n */\nexport type IndexList = {\n index_list: IndexWithPermissions[];\n};\n\n/**\n * `permissions` is included in the response as a convenience to\n * the client, but it is not a field in GSearchIndex itself.\n *\n * @see https://docs.globus.org/api/search/reference/index_show/\n */\nexport const get = function (\n index_id,\n options?,\n sdkOptions?,\n): Promise<JSONFetchResponse<IndexWithPermissions>> {\n return serviceRequest(\n {\n service: ID,\n // scope: SCOPES.ALL,\n path: `/v1/index/${index_id}`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<string, {}>;\n\n/**\n * @see https://docs.globus.org/api/search/reference/index_list/\n */\nexport const getAll = function (options?, sdkOptions?): Promise<JSONFetchResponse<IndexList>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v1/index_list`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethod<{}>;\n\ntype IndexCreate = {\n display_name: string;\n description: string;\n};\n\n/**\n * @see https://docs.globus.org/api/search/reference/index_create/\n */\nexport const create = function (options, sdkOptions?): Promise<JSONFetchResponse<GSearchIndex>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v1/index`,\n method: HTTP_METHODS.POST,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethod<{\n payload: IndexCreate;\n}>;\n\ntype IndexDeleteResponse = {\n index_id: string;\n acknowledged: boolean;\n};\n\n/**\n * @see https://docs.globus.org/api/search/reference/index_delete/\n */\nexport const remove = function (\n index_id,\n options?,\n sdkOptions?,\n): Promise<JSONFetchResponse<IndexDeleteResponse>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v1/index/${index_id}`,\n method: HTTP_METHODS.DELETE,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: never;\n payload?: never;\n }\n>;\n\ntype IndexReopenResponse = {\n index_id: string;\n acknowledged: boolean;\n};\n\n/**\n * @see https://docs.globus.org/api/search/reference/index_reopen/\n */\nexport const reopen = function (\n index_id,\n options?,\n sdkOptions?,\n): Promise<JSONFetchResponse<IndexReopenResponse>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v1/index/${index_id}/reopen`,\n method: HTTP_METHODS.POST,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: never;\n payload?: never;\n }\n>;\n\ntype IngestResponse = {\n task_id: string;\n as_identity: string;\n success: boolean;\n num_documents_ingested: number;\n};\n\n/**\n * A mapping from field names (dotted) to the types for those fields. Currently only supports `geo_point` and `geo_shape` as types.\n */\ntype FieldMapping = Record<string, 'geo_point' | 'geo_shape' | string>;\n\n/**\n * A `GIngest` document is a wrapper around a {@link GMetaList} or {@link GMetaEntry} which supplies attributes relevant to the ingest and indexing of metadata into the Globus Search service.\n * @see https://docs.globus.org/api/search/reference/ingest/#gingest\n */\nexport type GIngest =\n | {\n ingest_type: string;\n ingest_data: Record<string, unknown>;\n field_mapping?: FieldMapping;\n }\n | {\n ingest_type: 'GMetaList';\n ingest_data: GMetaList;\n field_mapping?: FieldMapping;\n }\n | {\n ingest_type: 'GMetaEntry';\n ingest_data: GMetaEntry;\n field_mapping?: FieldMapping;\n };\n\n/**\n * A GMetaList is a collection of {@link GMetaEntry} documents.\n * @see https://docs.globus.org/api/search/reference/ingest/#gmetalist\n */\nexport type GMetaList = {\n gmeta: GMetaEntry[];\n};\n\n/**\n * A GMetaEntry is a single block of data pertaining to a given subject.\n * @see https://docs.globus.org/api/search/reference/ingest/#gmetaentry\n */\nexport type GMetaEntry = {\n id?: string;\n subject: string;\n visible_to: 'public' | 'all_authenticated_users' | string;\n principal_sets: Record<string, unknown>;\n content: Record<string, unknown>;\n};\n\nexport const ingest = function (\n index_id,\n options?,\n sdkOptions?,\n): Promise<JSONFetchResponse<IngestResponse>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v1/index/${index_id}/ingest`,\n method: HTTP_METHODS.POST,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n payload: GIngest;\n }\n>;\n", "import { HTTP_METHODS, serviceRequest } from '../../shared.js';\nimport { ID, SCOPES } from '../config.js';\n\nimport type { JSONFetchResponse, ServiceMethodDynamicSegments } from '../../types.js';\n\n/**\n * Search Index Role document\n *\n * @see https://docs.globus.org/api/search/reference/role_list/#role\n */\nexport type IndexRole = {\n id: string;\n creation_date: string;\n role_name: string;\n index_id: string;\n principal: string;\n principal_type: string;\n};\n\n/**\n * Search Index Role List document\n *\n * @see https://docs.globus.org/api/search/reference/role_list/#rolelist\n */\nexport type IndexRoleListResponse = {\n role_list: IndexRole[];\n};\n\n/**\n * Get role list for a search index as owner or admin only\n *\n * @see https://docs.globus.org/api/search/reference/role_list/\n */\nexport const getAll = function (\n index_id,\n options?,\n sdkOptions?,\n): Promise<JSONFetchResponse<IndexRoleListResponse>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v1/index/${index_id}/role_list`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<string, {}>;\n\nexport type SearchIndexRoleCreate = Pick<IndexRole, 'role_name' | 'principal'>;\n\n/**\n * Create a new role for a search index as owner or admin only\n *\n * @see https://docs.globus.org/api/search/reference/role_create/\n */\nexport const create = function (\n index_id,\n options,\n sdkOptions?,\n): Promise<JSONFetchResponse<IndexRole>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v1/index/${index_id}/role`,\n method: HTTP_METHODS.POST,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n payload: SearchIndexRoleCreate;\n },\n JSONFetchResponse<IndexRole>\n>;\n\nexport type SearchIndexRoleDeleted = {\n success: true;\n deleted: IndexRole;\n};\n\n/**\n * Delete a role for a search index as owner or admin only\n *\n * @see https://docs.globus.org/api/search/reference/role_delete/\n */\nexport const remove = function (\n { index_id, role_id },\n options?,\n sdkOptions?,\n): Promise<JSONFetchResponse<SearchIndexRoleDeleted>> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v1/index/${index_id}/role/${role_id}`,\n method: HTTP_METHODS.DELETE,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n { index_id: string; role_id: string },\n {\n query?: never;\n payload?: never;\n }\n>;\n", "/**\n * @description A wrapper around the Groups API.\n * @group Service\n * @see [Groups API Documentation](https://docs.globus.org/api/groups/)\n * @module\n */\n\nimport * as GROUPS from './config.js';\n\nexport type * as OpenAPI from '../../open-api/types/groups.js';\n\n/**\n * @private\n * @internal\n */\nexport const CONFIG = GROUPS;\n\n/**\n * Service methods for the Groups API.\n */\nexport * as groups from './service/groups.js';\nexport * as policies from './service/policies.js';\nexport * as membership from './service/membership.js';\n", "import { ID } from '../config.js';\nimport { RESOURCE_SERVERS } from '../../auth/config.js';\nimport { HTTP_METHODS, serviceRequest } from '../../shared.js';\n\nimport type { OpenAPI } from '../index.js';\n\nimport type {\n JSONFetchResponse,\n ServiceMethod,\n ServiceMethodDynamicSegments,\n} from '../../types.js';\n\n/**\n * @see https://groups.api.globus.org/redoc#tag/groups/operation/get_my_groups_and_memberships_v2_groups_my_groups_get\n */\nexport const getMyGroups = function (\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['get_my_groups_and_memberships_v2_groups_my_groups_get']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: ID,\n resource_server: RESOURCE_SERVERS.GROUPS,\n path: `/v2/groups/my_groups`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethod<{\n query?: {\n /**\n * @todo This should probably be replaced with a more specific type for the method's accepted query parameters once available.\n */\n statuses?: OpenAPI.components['schemas']['StatusEnum'][];\n };\n}>;\n\n/**\n * @see https://groups.api.globus.org/redoc#tag/groups/operation/get_group_v2_groups__group_id__get\n */\nexport const get = function (\n group_id,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['get_group_v2_groups__group_id__get']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: ID,\n resource_server: RESOURCE_SERVERS.GROUPS,\n path: `/v2/groups/${group_id}`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n OpenAPI.operations['get_group_v2_groups__group_id__get']['parameters']['path']['group_id'],\n {\n query?: OpenAPI.operations['get_group_v2_groups__group_id__get']['parameters']['query'];\n }\n>;\n\n/**\n * Create a new group.\n * @see https://groups.api.globus.org/redoc#tag/groups/operation/create_group_v2_groups_post\n */\nexport const create = function (\n options,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['create_group_v2_groups_post']['responses']['201']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: ID,\n resource_server: RESOURCE_SERVERS.GROUPS,\n path: '/v2/groups',\n method: HTTP_METHODS.POST,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethod<{\n query?: never;\n payload: OpenAPI.operations['create_group_v2_groups_post']['requestBody']['content']['application/json'];\n}>;\n\n/**\n * Delete a group.\n * @see https://groups.api.globus.org/redoc#tag/groups/operation/delete_group_v2_groups__group_id__delete\n */\nexport const remove = function (\n group_id,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['delete_group_v2_groups__group_id__delete']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: ID,\n resource_server: RESOURCE_SERVERS.GROUPS,\n path: `/v2/groups/${group_id}`,\n method: HTTP_METHODS.DELETE,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n OpenAPI.operations['delete_group_v2_groups__group_id__delete']['parameters']['path']['group_id'],\n { query?: never; payload?: never }\n>;\n\n/**\n * Update a group's information.\n * @see https://groups.api.globus.org/redoc#tag/groups/operation/update_group_v2_groups__group_id__put\n * */\nexport const update = function (\n group_id,\n options,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['update_group_v2_groups__group_id__put']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: ID,\n resource_server: RESOURCE_SERVERS.GROUPS,\n path: `/v2/groups/${group_id}`,\n method: HTTP_METHODS.PUT,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n OpenAPI.operations['update_group_v2_groups__group_id__put']['parameters']['path']['group_id'],\n {\n query?: never;\n payload: OpenAPI.operations['update_group_v2_groups__group_id__put']['requestBody']['content']['application/json'];\n }\n>;\n\n/**\n * Get the status counts of memberships for each group you are an admin or manager of.\n * @see https://groups.api.globus.org/redoc#tag/groups/operation/get_statuses_v2_groups_statuses_get\n */\nexport const getStatuses = function (\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['get_statuses_v2_groups_statuses_get']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: ID,\n resource_server: RESOURCE_SERVERS.GROUPS,\n path: `/v2/groups/statuses`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethod<{\n query?: never;\n payload?: never;\n}>;\n", "import { ID } from '../config.js';\nimport { HTTP_METHODS, serviceRequest } from '../../shared.js';\nimport { RESOURCE_SERVERS } from '../../auth/config.js';\n\nimport type { OpenAPI } from '../index.js';\nimport type { JSONFetchResponse, ServiceMethodDynamicSegments } from '../../types.js';\n\n/**\n * Get the policies for the group.\n * @see https://groups.api.globus.org/redoc#tag/groups/operation/get_policies_v2_groups__group_id__policies_get\n */\nexport const get = function (\n group_id,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['get_policies_v2_groups__group_id__policies_get']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: ID,\n resource_server: RESOURCE_SERVERS.GROUPS,\n path: `/v2/groups/${group_id}/policies`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n OpenAPI.operations['get_policies_v2_groups__group_id__policies_get']['parameters']['path']['group_id'],\n {\n query?: never;\n payload?: never;\n }\n>;\n\n/**\n * Update the policies for the group.\n * @see https://groups.api.globus.org/redoc#tag/groups/operation/update_policies_v2_groups__group_id__policies_put\n */\nexport const update = function (\n group_id,\n options,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['update_policies_v2_groups__group_id__policies_put']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: ID,\n resource_server: RESOURCE_SERVERS.GROUPS,\n path: `/v2/groups/${group_id}/policies`,\n method: HTTP_METHODS.PUT,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n OpenAPI.operations['update_policies_v2_groups__group_id__policies_put']['parameters']['path']['group_id'],\n {\n query?: never;\n payload: OpenAPI.operations['update_policies_v2_groups__group_id__policies_put']['requestBody']['content']['application/json'];\n }\n>;\n", "import { ID } from '../config.js';\nimport { HTTP_METHODS, serviceRequest } from '../../shared.js';\nimport { RESOURCE_SERVERS } from '../../auth/config.js';\n\nimport type { OpenAPI } from '../index.js';\nimport type { JSONFetchResponse, ServiceMethodDynamicSegments } from '../../types.js';\n\n/**\n * Perform actions on members of the group.\n * @see https://groups.api.globus.org/redoc#tag/groups/operation/group_membership_post_actions_v2_groups__group_id__post\n */\nexport const act = function (\n group_id,\n options,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['group_membership_post_actions_v2_groups__group_id__post']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: ID,\n resource_server: RESOURCE_SERVERS.GROUPS,\n path: `/v2/groups/${group_id}`,\n method: HTTP_METHODS.POST,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n OpenAPI.operations['update_group_v2_groups__group_id__put']['parameters']['path']['group_id'],\n {\n query?: never;\n payload: OpenAPI.operations['group_membership_post_actions_v2_groups__group_id__post']['requestBody']['content']['application/json'];\n }\n>;\n", "/**\n * @description A wrapper around the Globus Flows service.\n * @group Service\n * @see [Globus Flows API Documentation](https://docs.globus.org/api/flows/)\n * @module\n */\nimport * as FLOWS from './config.js';\n\nexport type * as OpenAPI from '../../open-api/types/flows.js';\n\n/**\n * @private\n * @internal\n */\nexport const CONFIG = FLOWS;\n\nexport * as flows from './service/flows.js';\nexport * as runs from './service/runs.js';\n", "import { ID, SCOPES } from '../config.js';\nimport { HTTP_METHODS, serviceRequest } from '../../../services/shared.js';\n\nimport type { OpenAPI } from '../index.js';\n\nimport type {\n JSONFetchResponse,\n ServiceMethod,\n ServiceMethodDynamicSegments,\n} from '../../types.js';\n\n/**\n * @see https://globusonline.github.io/globus-flows/#tag/Flows/paths/~1flows/get\n */\nexport const getAll = function (\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.paths['/flows']['get']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.VIEW_FLOWS,\n path: `/flows`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethod<{\n query?: OpenAPI.paths['/flows']['get']['parameters']['query'];\n}>;\n\n/**\n * @see https://globusonline.github.io/globus-flows/#tag/Flows/paths/~1flows~1{flow_id}/get\n */\nexport const get = function (\n flow_id,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.paths['/flows/{flow_id}']['get']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.VIEW_FLOWS,\n path: `/flows/${flow_id}`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: OpenAPI.paths['/flows/{flow_id}']['get']['parameters']['query'];\n }\n>;\n\n/**\n * @see https://globusonline.github.io/globus-flows/#tag/Flows/paths/~1flows~1{flow_id}/delete\n */\nexport const remove = function (\n flow_id,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.paths['/flows/{flow_id}']['delete']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n scope: SCOPES.MANAGE_FLOWS,\n service: ID,\n path: `/flows/${flow_id}`,\n method: HTTP_METHODS.DELETE,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: never;\n payload?: never;\n }\n>;\n\n/**\n * Run an instance of a particular Flow.\n * @see https://globusonline.github.io/globus-flows/#tag/Runs/paths/~1flows~1%7Bflow_id%7D~1run/post\n */\nexport const run = function (\n flow_id,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.paths['/flows/{flow_id}/run']['post']['responses']['201']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.VIEW_FLOWS,\n path: `/flows/${flow_id}/run`,\n method: HTTP_METHODS.POST,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: never;\n payload: OpenAPI.paths['/flows/{flow_id}/run']['post']['requestBody']['content']['application/json'];\n }\n>;\n\n/**\n * An error that was generated during validation that includes the location of the error.\n */\nexport type ValidationLocationError = OpenAPI.components['schemas']['LocationErrorList'][number];\n\n/**\n * Validate a flow definition and its schema.\n * @see https://globusonline.github.io/globus-flows/#tag/Flows/paths/~1flows~1validate/post\n */\nexport const validate = function (\n options,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n | OpenAPI.paths['/flows/validate']['post']['responses']['200']['content']['application/json']\n | OpenAPI.paths['/flows/validate']['post']['responses']['422']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.MANAGE_FLOWS,\n path: `/flows/validate`,\n method: HTTP_METHODS.POST,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethod<{\n query?: never;\n payload: OpenAPI.paths['/flows/validate']['post']['requestBody']['content']['application/json'];\n}>;\n\n/**\n * Create a Flow\n * @see https://globusonline.github.io/globus-flows/#tag/Flows/paths/~1flows/post\n */\nexport const create = function (\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.paths['/flows']['post']['responses']['201']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.MANAGE_FLOWS,\n path: `/flows`,\n method: HTTP_METHODS.POST,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethod<{\n query?: never;\n payload: OpenAPI.paths['/flows']['post']['requestBody']['content']['application/json'];\n}>;\n\n/**\n * An alias for `create` to match the API documentation.\n */\nexport const deploy = create;\n\n/**\n * Update a Flow\n * @see https://globusonline.github.io/globus-flows/#tag/Flows/paths/~1flows~1{flow_id}/put\n */\nexport const update = function (\n flow_id,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.paths['/flows/{flow_id}']['put']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.MANAGE_FLOWS,\n path: `/flows/${flow_id}`,\n method: HTTP_METHODS.PUT,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: never;\n payload: OpenAPI.paths['/flows/{flow_id}']['put']['requestBody']['content']['application/json'];\n }\n>;\n", "import { ID, SCOPES } from '../config.js';\nimport { HTTP_METHODS, serviceRequest } from '../../shared.js';\n\nimport type {\n ServiceMethod,\n ServiceMethodDynamicSegments,\n JSONFetchResponse,\n} from '../../../services/types.js';\n\nimport type { OpenAPI } from '../index.js';\n\n/**\n * @see https://globusonline.github.io/globus-flows/#tag/Runs/paths/~1runs/get\n */\nexport const getAll = function (\n options = {},\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.paths['/runs']['get']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.RUN_MANAGE,\n path: `/runs`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethod<{\n query?: OpenAPI.paths['/runs']['get']['parameters']['query'];\n payload?: never;\n}>;\n\n/**\n * Get details about a run\n * @see https://globusonline.github.io/globus-flows/#tag/Runs/paths/~1runs~1{run_id}/get\n */\nexport const get = function (\n run_id,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.paths['/runs/{run_id}']['get']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.RUN_MANAGE,\n path: `/runs/${run_id}`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: OpenAPI.paths['/runs/{run_id}']['get']['parameters']['query'];\n payload?: never;\n }\n>;\n\n/**\n * Cancel the execution for a particular Run of a Flow.\n * https://globusonline.github.io/globus-flows/#tag/Runs/paths/~1runs~1%7Brun_id%7D~1cancel/post\n */\nexport const cancel = function (\n run_id,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.paths['/runs/{run_id}/cancel']['post']['responses']['202']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.RUN_MANAGE,\n path: `/runs/${run_id}/cancel`,\n method: HTTP_METHODS.POST,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: never;\n payload?: never;\n }\n>;\n\n/**\n * Retrieve detailed execution information for a particular Flow Run.\n * @see https://globusonline.github.io/globus-flows/#tag/Runs/paths/~1runs~1%7Baction_id%7D~1log/get\n */\nexport const getLog = function (\n run_id,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.paths['/runs/{run_id}/log']['get']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.RUN_MANAGE,\n path: `/runs/${run_id}/log`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: OpenAPI.paths['/runs/{run_id}/log']['get']['parameters']['query'];\n }\n>;\n\n/**\n * Update a Run's metadata.\n *\n * @see https://globusonline.github.io/globus-flows/#tag/Runs/paths/~1runs~1{run_id}/put\n */\nexport const update = function (\n run_id,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.paths['/runs/{run_id}']['put']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.RUN_MANAGE,\n path: `/runs/${run_id}`,\n method: HTTP_METHODS.PUT,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: never;\n payload?: OpenAPI.paths['/runs/{run_id}']['put']['requestBody']['content']['application/json'];\n }\n>;\n\n/**\n * Remove a Run.\n *\n * @see https://globusonline.github.io/globus-flows/#tag/Runs/paths/~1runs~1{run_id}~1release/post\n */\nexport const remove = function (\n run_id,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.paths['/runs/{run_id}/release']['post']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.RUN_MANAGE,\n path: `/runs/${run_id}/release`,\n method: HTTP_METHODS.POST,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: never;\n payload?: never;\n }\n>;\n\n/**\n * Get the Flow definition and input schema that were used to start a Run\n *\n * @see https://globusonline.github.io/globus-flows/#tag/Runs/paths/~1runs~1{run_id}~1definition/get\n */\nexport const getDefinition = function (\n run_id,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.paths['/runs/{run_id}/definition']['get']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.RUN_MANAGE,\n path: `/runs/${run_id}/definition`,\n method: HTTP_METHODS.GET,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: never;\n payload?: never;\n }\n>;\n", "/**\n * @description A wrapper around the Globus Connect Server Manager API.\n * @group Service\n * @see [Globus Connect Server Manager API Documentation](https://docs.globus.org/globus-connect-server/v5.4/api/)\n * @module\n */\nimport type {\n Segment,\n ServiceMethodOptions,\n SDKOptions,\n ServiceMethod,\n ServiceMethodDynamicSegments,\n BaseServiceMethodOptions,\n} from '../types.js';\n\nexport type * as OpenAPI from '../../open-api/types/gcs/v5.4.js';\n\n/**\n * Service methods for the Globus Connect Server Manager API.\n */\nexport * as collections from './service/collections.js';\nexport * as endpoint from './service/endpoint.js';\nexport * as https from './service/https.js';\nexport * as nodes from './service/nodes.js';\nexport * as roles from './service/roles.js';\nexport * as storageGateways from './service/storage-gateways.js';\nexport * as userCredentials from './service/user-credentials.js';\nexport * as versioning from './service/versioning.js';\n\nexport * as utils from './utils.js';\n\nconst SCOPES = {\n HIGH_ASSURANCE: 'urn:globus:auth:scope:<ENDPOINT_ID>:manage_collections',\n NON_HIGH_ASSURANCE:\n 'urn:globus:auth:scope:<ENDPOINT_ID>:manage_collections[*https://auth.globus.org/scopes/<MAPPED_COLLECTION_ID>/data_access]',\n};\n\nexport function getScopes(configuration: GCSConfiguration, scope?: keyof typeof SCOPES) {\n const { endpoint_id: id } = configuration;\n if (!id) {\n throw new Error(`An 'endpoint_id' is required to determine the required scopes`);\n }\n /**\n * If a specific scope is requested, return the scope with the `<ENDPOINT_ID>` placeholder replaced\n */\n if (scope) {\n return SCOPES[scope].replace('<ENDPOINT_ID>', id);\n }\n /**\n * Otherwise, return all scopes with the `<ENDPOINT_ID>` placeholder replaced.\n */\n return Object.entries(SCOPES).reduce(\n (reduc, [key, value]) => ({\n ...reduc,\n [key]: value.replace('<ENDPOINT_ID>', id),\n }),\n {},\n );\n}\n\n/**\n * The configuration object used by all Globus Connect Server Manager API methods.\n */\nexport type GCSConfiguration = {\n /**\n * The host (base URL) for the Globus Connect Server Manager API.\n * @example https://fa5e.bd7c.data.globus.org\n */\n host: string;\n /**\n * The UUID of the endpoint the GCS API is associated with.\n */\n endpoint_id: string;\n};\n\n/**\n * In the case of a resource that allows unauthenticated access, the only property required is the `host`.\n */\nexport type UnauthenticatedGCSConfiguration = Pick<GCSConfiguration, 'host'>;\n\n/**\n * The GCSServiceMethod type is similar to the core ServiceMethod type, but\n * the first parameter is always a GCSConfiguration object.\n */\nexport type GCSServiceMethod<\n O extends ServiceMethodOptions,\n R extends Response = Response,\n /**\n * If `true`, the service method allows unauthenticated access (will not attempt to send an `Authorization` header).\n */\n AllowUnauthenticated extends Boolean = false,\n> = (\n configuration: AllowUnauthenticated extends false\n ? GCSConfiguration\n : UnauthenticatedGCSConfiguration,\n methodOptions?: O & {\n query?: BaseServiceMethodOptions['query'];\n headers?: BaseServiceMethodOptions['headers'];\n },\n sdkOptions?: SDKOptions,\n) => ReturnType<ServiceMethod<O, R>>;\n\n/**\n * The GCSServiceMethodDynamicSegments type is similar to the core ServiceMethodDynamicSegments type, but\n * the first parameter is always a GCSConfiguration object.\n */\nexport type GCSServiceMethodDynamicSegments<\n S extends Segment,\n O extends ServiceMethodOptions,\n R extends Response = Response,\n> = (\n configuration: GCSConfiguration,\n segments: S,\n methodOptions?: O & {\n query?: BaseServiceMethodOptions['query'];\n headers?: BaseServiceMethodOptions['headers'];\n },\n sdkOptions?: SDKOptions,\n) => ReturnType<ServiceMethodDynamicSegments<S, O, R>>;\n", "import { HTTP_METHODS, serviceRequest } from '../../shared.js';\n\nimport type { OpenAPI, GCSServiceMethod, GCSServiceMethodDynamicSegments } from '../index.js';\n\nimport type { JSONFetchResponse } from '../../types.js';\n\n/**\n * @see https://docs.globus.org/globus-connect-server/v5.4/api/openapi_Collections/#listCollections\n */\nexport const getAll = function (\n configuration,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['listCollections']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: configuration,\n resource_server: configuration.endpoint_id,\n path: `/api/collections`,\n },\n options,\n sdkOptions,\n );\n} satisfies GCSServiceMethod<{\n query?: OpenAPI.operations['listCollections']['parameters']['query'];\n}>;\n\n/**\n * @see https://docs.globus.org/globus-connect-server/v5.4/api/openapi_Collections/#getCollection\n */\nexport const get = function (\n configuration,\n collection_id,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['getCollection']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: configuration,\n resource_server: configuration.endpoint_id,\n path: `/api/collections/${collection_id}`,\n },\n options,\n sdkOptions,\n );\n} satisfies GCSServiceMethodDynamicSegments<\n OpenAPI.operations['getCollection']['parameters']['path']['collection_id'],\n {\n query?: OpenAPI.operations['getCollection']['parameters']['query'];\n }\n>;\n\n/**\n * @see https://docs.globus.org/globus-connect-server/v5.4/api/openapi_Collections/#deleteCollection\n */\nexport const remove = function (\n configuration,\n collection_id,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['deleteCollection']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: configuration,\n resource_server: configuration.endpoint_id,\n path: `/api/collections/${collection_id}`,\n method: HTTP_METHODS.DELETE,\n },\n options,\n sdkOptions,\n );\n} satisfies GCSServiceMethodDynamicSegments<\n OpenAPI.operations['deleteCollection']['parameters']['path']['collection_id'],\n {\n query?: never;\n payload?: never;\n }\n>;\n\n/**\n * @see https://docs.globus.org/globus-connect-server/v5.4/api/openapi_Collections/#postCollection\n */\nexport const create = function (\n configuration,\n options,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['postCollection']['responses']['201']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: configuration,\n resource_server: configuration.endpoint_id,\n path: `/api/collections`,\n method: HTTP_METHODS.POST,\n },\n options,\n sdkOptions,\n );\n} satisfies GCSServiceMethod<{\n payload: OpenAPI.operations['postCollection']['requestBody']['content']['application/json'];\n}>;\n\n/**\n * @see https://docs.globus.org/globus-connect-server/v5.4/api/openapi_Collections/#putCollection\n */\nexport const update = function (\n configuration,\n collection_id,\n options,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['putCollection']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: configuration,\n resource_server: configuration.endpoint_id,\n path: `/api/collections/${collection_id}`,\n method: HTTP_METHODS.PUT,\n },\n options,\n sdkOptions,\n );\n} satisfies GCSServiceMethodDynamicSegments<\n OpenAPI.operations['putCollection']['parameters']['path']['collection_id'],\n {\n payload: OpenAPI.operations['putCollection']['requestBody']['content']['application/json'];\n }\n>;\n\n/**\n * @see https://docs.globus.org/globus-connect-server/v5.4/api/openapi_Collections/#patchCollection\n */\nexport const patch = function (\n configuration,\n collection_id,\n options,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['patchCollection']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: configuration,\n resource_server: configuration.endpoint_id,\n path: `/api/collections/${collection_id}`,\n method: HTTP_METHODS.PATCH,\n },\n options,\n sdkOptions,\n );\n} satisfies GCSServiceMethodDynamicSegments<\n OpenAPI.operations['patchCollection']['parameters']['path']['collection_id'],\n {\n payload: Partial<\n OpenAPI.operations['patchCollection']['requestBody']['content']['application/json']\n >;\n }\n>;\n\n/**\n * @see https://docs.globus.org/globus-connect-server/v5.4/api/openapi_Collections/#putCollectionOwnerString\n */\nexport const updateOwnerString = function (\n configuration,\n collection_id,\n options,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['putCollectionOwnerString']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: configuration,\n resource_server: configuration.endpoint_id,\n path: `/api/collections/${collection_id}/owner_string`,\n method: HTTP_METHODS.PUT,\n },\n options,\n sdkOptions,\n );\n} satisfies GCSServiceMethodDynamicSegments<\n OpenAPI.operations['putCollectionOwnerString']['parameters']['path']['collection_id'],\n {\n payload: Partial<\n OpenAPI.operations['putCollectionOwnerString']['requestBody']['content']['application/json']\n >;\n }\n>;\n\n/**\n * @see https://docs.globus.org/globus-connect-server/v5.4/api/openapi_Collections/#deleteCollectionOwnerString\n */\nexport const resetOwnerString = function (\n configuration,\n collection_id,\n options,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['deleteCollectionOwnerString']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: configuration,\n resource_server: configuration.endpoint_id,\n path: `/api/collections/${collection_id}/owner_string`,\n method: HTTP_METHODS.DELETE,\n },\n options,\n sdkOptions,\n );\n} satisfies GCSServiceMethodDynamicSegments<\n OpenAPI.operations['deleteCollectionOwnerString']['parameters']['path']['collection_id'],\n {}\n>;\n", "import { HTTP_METHODS, serviceRequest } from '../../shared.js';\n\nimport type { OpenAPI, GCSServiceMethod } from '../index.js';\nimport type { JSONFetchResponse } from '../../types.js';\n\n/**\n * @see https://docs.globus.org/globus-connect-server/v5.4/api/openapi_Endpoint/#getEndpoint\n */\nexport const get = function (\n configuration,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['getEndpoint']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: configuration,\n resource_server: configuration.endpoint_id,\n path: `/api/endpoint`,\n },\n options,\n sdkOptions,\n );\n} satisfies GCSServiceMethod<{\n query?: never;\n payload?: never;\n}>;\n\n/**\n * @see https://docs.globus.org/globus-connect-server/v5.4/api/openapi_Endpoint/#putEndpoint\n */\nexport const update = function (\n configuration,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['putEndpoint']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: configuration,\n resource_server: configuration.endpoint_id,\n path: `/api/endpoint`,\n method: HTTP_METHODS.PUT,\n },\n options,\n sdkOptions,\n );\n} satisfies GCSServiceMethod<{\n payload: Partial<OpenAPI.operations['putEndpoint']['requestBody']['content']['application/json']>;\n}>;\n\n/**\n * @see https://docs.globus.org/globus-connect-server/v5.4/api/openapi_Endpoint/#patchEndpoint\n */\nexport const patch = function (\n configuration,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['patchEndpoint']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: configuration,\n resource_server: configuration.endpoint_id,\n path: `/api/endpoint`,\n method: HTTP_METHODS.PATCH,\n },\n options,\n sdkOptions,\n );\n} satisfies GCSServiceMethod<{\n /**\n * @todo The generated PATCH type is resolving to the Endpoint document, which\n * has some properties that are required (i.e. `display_name`). For now, we're\n * just allowing unknown properties to be passed in, but we should fix this\n * when the auotgenerated types are corrected.\n */\n payload:\n | OpenAPI.operations['patchEndpoint']['requestBody']['content']['application/json']\n | Record<string, unknown>;\n}>;\n\n/**\n * @see https://docs.globus.org/globus-connect-server/v5.4/api/openapi_Endpoint/#putEndpointSubscriptionId\n */\nexport const updateSubscriptionId = function (\n configuration,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['putEndpointSubscriptionId']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: configuration,\n resource_server: configuration.endpoint_id,\n path: `/api/endpoint/subscription_id`,\n method: HTTP_METHODS.PUT,\n },\n options,\n sdkOptions,\n );\n} satisfies GCSServiceMethod<{\n payload: OpenAPI.operations['putEndpointSubscriptionId']['requestBody']['content']['application/json'];\n}>;\n\n/**\n * @see https://docs.globus.org/globus-connect-server/v5.4/api/openapi_Endpoint/#putEndpointOwner\n */\nexport const updateOwner = function (\n configuration,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['putEndpointOwner']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: configuration,\n resource_server: configuration.endpoint_id,\n path: `/api/endpoint/owner`,\n method: HTTP_METHODS.PUT,\n },\n options,\n sdkOptions,\n );\n} satisfies GCSServiceMethod<{\n payload: OpenAPI.operations['putEndpointOwner']['requestBody']['content']['application/json'];\n}>;\n\n/**\n * @see https://docs.globus.org/globus-connect-server/v5.4/api/openapi_Endpoint/#putEndpointOwnerString\n */\nexport const updateOwnerString = function (\n configuration,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['putEndpointOwnerString']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: configuration,\n resource_server: configuration.endpoint_id,\n path: `/api/endpoint/owner_string`,\n method: HTTP_METHODS.PUT,\n },\n options,\n sdkOptions,\n );\n} satisfies GCSServiceMethod<{\n payload: OpenAPI.operations['putEndpointOwnerString']['requestBody']['content']['application/json'];\n}>;\n\n/**\n * @see https://docs.globus.org/globus-connect-server/v5.4/api/openapi_Endpoint/#deleteEndpointOwnerString\n */\nexport const resetOwnerString = function (\n configuration,\n options,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['deleteEndpointOwnerString']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: configuration,\n resource_server: configuration.endpoint_id,\n path: `/api/endpoint/owner_string`,\n method: HTTP_METHODS.DELETE,\n },\n options,\n sdkOptions,\n );\n} satisfies GCSServiceMethod<{}>;\n", "import { HTTP_METHODS, serviceRequest } from '../../shared.js';\n\nimport type { GCSServiceMethodDynamicSegments } from '../index.js';\n\n/**\n * @see https://docs.globus.org/globus-connect-server/v5.4/https-access-collections/\n */\nexport const get = function (configuration, path, options?, sdkOptions?): Promise<Response> {\n return serviceRequest(\n {\n service: configuration,\n resource_server: configuration.endpoint_id,\n path,\n },\n options,\n sdkOptions,\n );\n} satisfies GCSServiceMethodDynamicSegments<\n string,\n {\n query?: {\n /**\n * @see https://docs.globus.org/globus-connect-server/v5.4/https-access-collections/#request_a_browser_download\n */\n download?: boolean;\n };\n }\n>;\n\n/**\n * @see https://docs.globus.org/globus-connect-server/v5.4/https-access-collections/\n */\nexport const remove = function (configuration, path, options?, sdkOptions?): Promise<Response> {\n return serviceRequest(\n {\n service: configuration,\n resource_server: configuration.endpoint_id,\n path,\n method: HTTP_METHODS.DELETE,\n },\n options,\n sdkOptions,\n );\n} satisfies GCSServiceMethodDynamicSegments<\n string,\n {\n query?: never;\n payload?: never;\n }\n>;\n\n/**\n * @see https://docs.globus.org/globus-connect-server/v5.4/https-access-collections/\n */\nexport const update = function (configuration, path, options, sdkOptions?): Promise<Response> {\n return serviceRequest(\n {\n service: configuration,\n resource_server: configuration.endpoint_id,\n path,\n method: HTTP_METHODS.PUT,\n },\n options,\n sdkOptions,\n );\n} satisfies GCSServiceMethodDynamicSegments<\n string,\n {\n query?: never;\n payload?: never;\n }\n>;\n", "import { HTTP_METHODS, serviceRequest } from '../../../services/shared.js';\n\nimport type { OpenAPI, GCSServiceMethod, GCSServiceMethodDynamicSegments } from '../index.js';\n\nimport type { JSONFetchResponse } from '../../types.js';\n\n/**\n * @see https://docs.globus.org/globus-connect-server/v5.4/api/openapi_Nodes/#listNodes\n */\nexport const getAll = function (\n configuration,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['listNodes']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: configuration,\n resource_server: configuration.endpoint_id,\n path: `/api/nodes`,\n },\n options,\n sdkOptions,\n );\n} satisfies GCSServiceMethod<{\n query?: OpenAPI.operations['listNodes']['parameters']['query'];\n}>;\n\n/**\n * @see https://docs.globus.org/globus-connect-server/v5.4/api/openapi_Nodes/#getNode\n */\nexport const get = function (\n configuration,\n node_id,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['getNode']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: configuration,\n resource_server: configuration.endpoint_id,\n path: `/api/nodes/${node_id}`,\n },\n options,\n sdkOptions,\n );\n} satisfies GCSServiceMethodDynamicSegments<\n OpenAPI.operations['getNode']['parameters']['path']['node_id'],\n {\n query?: never;\n payload?: never;\n }\n>;\n\n/**\n * @see https://docs.globus.org/globus-connect-server/v5.4/api/openapi_Nodes/#deleteNode\n */\nexport const remove = function (\n configuration,\n node_id,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['deleteNode']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: configuration,\n resource_server: configuration.endpoint_id,\n path: `/api/nodes/${node_id}`,\n method: HTTP_METHODS.DELETE,\n },\n options,\n sdkOptions,\n );\n} satisfies GCSServiceMethodDynamicSegments<\n OpenAPI.operations['deleteNode']['parameters']['path']['node_id'],\n {\n query?: never;\n payload?: never;\n }\n>;\n\n/**\n * @see https://docs.globus.org/globus-connect-server/v5.4/api/openapi_Nodes/#postNodes\n */\nexport const create = function (\n configuration,\n options,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['postNode']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: configuration,\n resource_server: configuration.endpoint_id,\n path: `/api/nodes`,\n method: HTTP_METHODS.POST,\n },\n options,\n sdkOptions,\n );\n} satisfies GCSServiceMethod<{\n payload: OpenAPI.operations['postNode']['requestBody']['content']['application/json'];\n}>;\n\n/**\n * @see https://docs.globus.org/globus-connect-server/v5.4/api/openapi_Nodes/#putNode\n */\nexport const update = function (\n configuration,\n node_id,\n options,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['putNode']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: configuration,\n resource_server: configuration.endpoint_id,\n path: `/api/nodes/${node_id}`,\n method: HTTP_METHODS.PUT,\n },\n options,\n sdkOptions,\n );\n} satisfies GCSServiceMethodDynamicSegments<\n OpenAPI.operations['putNode']['parameters']['path']['node_id'],\n {\n payload: OpenAPI.operations['putNode']['requestBody']['content']['application/json'];\n }\n>;\n\n/**\n * @see https://docs.globus.org/globus-connect-server/v5.4/api/openapi_Nodes/#patchNode\n */\nexport const patch = function (\n configuration,\n node_id,\n options,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['patchNode']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: configuration,\n resource_server: configuration.endpoint_id,\n path: `/api/nodes/${node_id}`,\n method: HTTP_METHODS.PATCH,\n },\n options,\n sdkOptions,\n );\n} satisfies GCSServiceMethodDynamicSegments<\n OpenAPI.operations['patchNode']['parameters']['path']['node_id'],\n {\n payload: Partial<OpenAPI.operations['patchNode']['requestBody']['content']['application/json']>;\n }\n>;\n", "import { HTTP_METHODS, serviceRequest } from '../../../services/shared.js';\n\nimport type { OpenAPI, GCSServiceMethod, GCSServiceMethodDynamicSegments } from '../index.js';\n\nimport type { JSONFetchResponse } from '../../types.js';\n/**\n * @see https://docs.globus.org/globus-connect-server/v5.4/api/openapi_Roles/#listRoles\n */\nexport const getAll = function (\n configuration,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['listRoles']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: configuration,\n resource_server: configuration.endpoint_id,\n path: `/api/roles`,\n },\n options,\n sdkOptions,\n );\n} satisfies GCSServiceMethod<{\n query?: OpenAPI.operations['listRoles']['parameters']['query'];\n}>;\n\n/**\n * @see https://docs.globus.org/globus-connect-server/v5.4/api/openapi_Roles/#getRole\n */\nexport const get = function (\n configuration,\n role_id,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['getRole']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: configuration,\n resource_server: configuration.endpoint_id,\n path: `/api/roles/${role_id}`,\n },\n options,\n sdkOptions,\n );\n} satisfies GCSServiceMethodDynamicSegments<\n OpenAPI.operations['getRole']['parameters']['path']['role_id'],\n {\n query?: never;\n payload?: never;\n }\n>;\n\n/**\n * @see https://docs.globus.org/globus-connect-server/v5.4/api/openapi_Roles/#deleteRole\n */\nexport const remove = function (\n configuration,\n role_id,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['deleteRole']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: configuration,\n resource_server: configuration.endpoint_id,\n path: `/api/roles/${role_id}`,\n method: HTTP_METHODS.DELETE,\n },\n options,\n sdkOptions,\n );\n} satisfies GCSServiceMethodDynamicSegments<\n OpenAPI.operations['deleteRole']['parameters']['path']['role_id'],\n {\n query?: never;\n payload?: never;\n }\n>;\n\n/**\n * @see https://docs.globus.org/globus-connect-server/v5.4/api/openapi_Roles/#postRoles\n */\nexport const create = function (\n configuration,\n options,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['postRoles']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: configuration,\n resource_server: configuration.endpoint_id,\n path: `/api/roles`,\n method: HTTP_METHODS.POST,\n },\n options,\n sdkOptions,\n );\n} satisfies GCSServiceMethod<{\n payload: OpenAPI.operations['postRoles']['requestBody']['content']['application/json'];\n}>;\n", "import { HTTP_METHODS, serviceRequest } from '../../../services/shared.js';\n\nimport type { OpenAPI, GCSServiceMethod, GCSServiceMethodDynamicSegments } from '../index.js';\n\nimport type { JSONFetchResponse } from '../../types.js';\n/**\n * @see https://docs.globus.org/globus-connect-server/v5.4/api/openapi_Storage_Gateways/#listStorageGateways\n */\nexport const getAll = function (\n configuration,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['listStorageGateways']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: configuration,\n resource_server: configuration.endpoint_id,\n path: `/api/storage_gateways`,\n },\n options,\n sdkOptions,\n );\n} satisfies GCSServiceMethod<{\n query?: OpenAPI.operations['listStorageGateways']['parameters']['query'];\n}>;\n\n/**\n * @see https://docs.globus.org/globus-connect-server/v5.4/api/openapi_Storage_Gateways/#getStorageGateway\n */\nexport const get = function (\n configuration,\n storage_gateway_id,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['getStorageGateway']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: configuration,\n resource_server: configuration.endpoint_id,\n path: `/api/storage_gateways/${storage_gateway_id}`,\n },\n options,\n sdkOptions,\n );\n} satisfies GCSServiceMethodDynamicSegments<\n OpenAPI.operations['getStorageGateway']['parameters']['path']['storage_gateway_id'],\n {\n query?: OpenAPI.operations['getStorageGateway']['parameters']['query'];\n }\n>;\n\n/**\n * @see https://docs.globus.org/globus-connect-server/v5.4/api/openapi_Storage_Gateways/#deleteStorageGateway\n */\nexport const remove = function (\n configuration,\n storage_gateway_id,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['deleteStorageGateway']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: configuration,\n resource_server: configuration.endpoint_id,\n path: `/api/storage_gateways/${storage_gateway_id}`,\n method: HTTP_METHODS.DELETE,\n },\n options,\n sdkOptions,\n );\n} satisfies GCSServiceMethodDynamicSegments<\n OpenAPI.operations['deleteStorageGateway']['parameters']['path']['storage_gateway_id'],\n {\n query?: never;\n payload?: never;\n }\n>;\n\n/**\n * @see https://docs.globus.org/globus-connect-server/v5.4/api/openapi_Storage_Gateways/#postStorageGateway\n */\nexport const create = function (\n configuration,\n options,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['postStorageGateway']['responses']['201']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: configuration,\n resource_server: configuration.endpoint_id,\n path: `/api/storage_gateways`,\n method: HTTP_METHODS.POST,\n },\n options,\n sdkOptions,\n );\n} satisfies GCSServiceMethod<{\n payload: OpenAPI.operations['postStorageGateway']['requestBody']['content']['application/json'];\n}>;\n\n/**\n * @see https://docs.globus.org/globus-connect-server/v5.4/api/openapi_Storage_Gateways/#putStorageGateway\n */\nexport const update = function (\n configuration,\n storage_gateway_id,\n options,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['putStorageGateway']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: configuration,\n resource_server: configuration.endpoint_id,\n path: `/api/storage_gateways/${storage_gateway_id}`,\n method: HTTP_METHODS.PUT,\n },\n options,\n sdkOptions,\n );\n} satisfies GCSServiceMethodDynamicSegments<\n OpenAPI.operations['putStorageGateway']['parameters']['path']['storage_gateway_id'],\n {\n payload: OpenAPI.operations['putStorageGateway']['requestBody']['content']['application/json'];\n }\n>;\n\n/**\n * @see https://docs.globus.org/globus-connect-server/v5.4/api/openapi_Storage_Gateways/#patchStorageGateway\n */\nexport const patch = function (\n configuration,\n storage_gateway_id,\n options,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['patchStorageGateway']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: configuration,\n resource_server: configuration.endpoint_id,\n path: `/api/storage_gateways/${storage_gateway_id}`,\n method: HTTP_METHODS.PATCH,\n },\n options,\n sdkOptions,\n );\n} satisfies GCSServiceMethodDynamicSegments<\n OpenAPI.operations['patchStorageGateway']['parameters']['path']['storage_gateway_id'],\n {\n payload: Partial<\n OpenAPI.operations['patchStorageGateway']['requestBody']['content']['application/json']\n >;\n }\n>;\n", "import { HTTP_METHODS, serviceRequest } from '../../../services/shared.js';\n\nimport type { OpenAPI, GCSServiceMethod, GCSServiceMethodDynamicSegments } from '../index.js';\n\nimport type { JSONFetchResponse } from '../../types.js';\n/**\n * @see https://docs.globus.org/globus-connect-server/v5.4/api/openapi_User_Credentials/#listUserCredentials\n */\nexport const getAll = function (\n configuration,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['listUserCredentials']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: configuration,\n resource_server: configuration.endpoint_id,\n path: `/api/user_credentials`,\n },\n options,\n sdkOptions,\n );\n} satisfies GCSServiceMethod<{\n query?: OpenAPI.operations['listUserCredentials']['parameters']['query'];\n}>;\n\n/**\n * @see https://docs.globus.org/globus-connect-server/v5.4/api/openapi_User_Credentials/#getUserCredential\n */\nexport const get = function (\n configuration,\n user_credential_id,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['getCollection']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: configuration,\n resource_server: configuration.endpoint_id,\n path: `/api/user_credentials/${user_credential_id}`,\n },\n options,\n sdkOptions,\n );\n} satisfies GCSServiceMethodDynamicSegments<\n OpenAPI.operations['getUserCredential']['parameters']['path']['user_credential_id'],\n {\n query?: never;\n payload?: never;\n }\n>;\n\n/**\n * @see https://docs.globus.org/globus-connect-server/v5.4/api/openapi_User_Credentials/#deleteUserCredential\n */\nexport const remove = function (\n configuration,\n user_credential_id,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['deleteUserCredential']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: configuration,\n resource_server: configuration.endpoint_id,\n path: `/api/user_credentials/${user_credential_id}`,\n method: HTTP_METHODS.DELETE,\n },\n options,\n sdkOptions,\n );\n} satisfies GCSServiceMethodDynamicSegments<\n OpenAPI.operations['deleteUserCredential']['parameters']['path']['user_credential_id'],\n {\n query?: never;\n payload?: never;\n }\n>;\n\n/**\n * @see https://docs.globus.org/globus-connect-server/v5.4/api/openapi_User_Credentials/#postUserCredential\n */\nexport const create = function (\n configuration,\n options,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['postUserCredential']['responses']['201']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: configuration,\n resource_server: configuration.endpoint_id,\n path: `/api/user_credentials`,\n method: HTTP_METHODS.POST,\n },\n options,\n sdkOptions,\n );\n} satisfies GCSServiceMethod<{\n payload: OpenAPI.operations['postUserCredential']['requestBody']['content']['application/json'];\n}>;\n\n/**\n * @see https://docs.globus.org/globus-connect-server/v5.4/api/openapi_User_Credentials/#putUserCredential\n */\nexport const update = function (\n configuration,\n user_credential_id,\n options,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['putUserCredential']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: configuration,\n resource_server: configuration.endpoint_id,\n path: `/api/user_credentials/${user_credential_id}`,\n method: HTTP_METHODS.PUT,\n },\n options,\n sdkOptions,\n );\n} satisfies GCSServiceMethodDynamicSegments<\n OpenAPI.operations['putUserCredential']['parameters']['path']['user_credential_id'],\n {\n payload: OpenAPI.operations['putUserCredential']['requestBody']['content']['application/json'];\n }\n>;\n\n/**\n * @see https://docs.globus.org/globus-connect-server/v5.4/api/openapi_User_Credentials/#patchUserCredential\n */\nexport const patch = function (\n configuration,\n user_credential_id,\n options,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['patchUserCredential']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: configuration,\n resource_server: configuration.endpoint_id,\n path: `/api/user_credentials/${user_credential_id}`,\n method: HTTP_METHODS.PATCH,\n },\n options,\n sdkOptions,\n );\n} satisfies GCSServiceMethodDynamicSegments<\n OpenAPI.operations['patchUserCredential']['parameters']['path']['user_credential_id'],\n {\n payload: Partial<\n OpenAPI.operations['patchUserCredential']['requestBody']['content']['application/json']\n >;\n }\n>;\n", "import { serviceRequest } from '../../../services/shared.js';\n\nimport type { OpenAPI, GCSServiceMethod } from '../index.js';\nimport type { JSONFetchResponse } from '../../types.js';\n\n/**\n * **This operation can be performed without an `Authorization` header.**\n * @see https://docs.globus.org/globus-connect-server/v5.4/api/openapi_Versioning/#getInfo\n */\nexport const info = function (\n configuration,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['getInfo']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: configuration,\n path: `/api/info`,\n },\n options,\n sdkOptions,\n );\n} satisfies GCSServiceMethod<\n {\n query?: never;\n payload?: never;\n },\n Response,\n true\n>;\n", "import { info } from './service/versioning.js';\n\n/**\n * The default domain for a Globus Connect Server instance.\n * @see https://docs.globus.org/globus-connect-server/v5.4/domain-guide/#default_domain_names\n */\nconst GCS_DEFAULT_DOMAIN = 'data.globus.org';\n\nexport function getGCSDomainFromURL(url: string | URL) {\n const { host } = typeof url === 'string' ? new URL(url) : url;\n if (!host.endsWith(GCS_DEFAULT_DOMAIN)) {\n /**\n * If the host does not end with the default domain, it is a custom domain and we'll return it as is.\n */\n return host;\n }\n const [subdomain] = host.split(`.${GCS_DEFAULT_DOMAIN}`);\n const parts = subdomain.split('.');\n /**\n * If the subdomain only has two parts, it is the domain of the endpoint.\n * Otherwise it is a subdomain on the endpoint domain (a collection label) we'll drop that part.\n */\n return (\n parts.length === 2 ? [...parts, GCS_DEFAULT_DOMAIN] : [parts[1], parts[2], GCS_DEFAULT_DOMAIN]\n ).join('.');\n}\n\n/**\n * Derive the Globus Connect Server Endpoint ID (UUID) from a URL.\n * This method can be useful for determining the `endpoint_id` when only an HTTPS asset URL is known.\n *\n * @todo This method will only return an `endpoint_id` for URLs that **do not** use a custom domain.\n * @param url The URL the endpoint will be attempted to be derived from.\n * @returns The Globus Connect Server Endpoint ID (UUID) or `null` if the endpoint could not be derived.\n */\nexport async function getEndpointIdFromURL(url: string | URL) {\n const u = typeof url === 'string' ? new URL(url) : url;\n const isCustomDomain = !u.host.endsWith(GCS_DEFAULT_DOMAIN);\n if (isCustomDomain) {\n /**\n * @todo This can likely be implemented by querying the TXT record of the domain to obtain the `client_id` of\n * the endpoint (which happens to be be the GCS Endpoint UUID).\n * @see https://docs.globus.org/globus-connect-server/v5.4/domain-guide/#dns_configuration\n */\n return null;\n }\n\n const res = await (\n await info({\n host: `https://${getGCSDomainFromURL(u)}`,\n })\n ).json();\n const i = res.data?.filter((d) => d.DATA_TYPE.startsWith('info#'))[0];\n return i && 'endpoint_id' in i ? i.endpoint_id : null;\n}\n", "/**\n * @description A wrapper around the Globus Timers service.\n * @group Service\n * @see [Globus Timers API Documentation](https://timer.automate.globus.org/docs#/)\n * @module\n */\nimport * as TIMERS from './config.js';\n\nexport type * as OpenAPI from '../../open-api/types/timers.js';\n\n/**\n * @private\n * @internal\n */\nexport const CONFIG = TIMERS;\n\nexport * as timer from './service/timer.js';\nexport * as jobs from './service/jobs/index.js';\n", "import { HTTP_METHODS, serviceRequest } from '../../shared.js';\nimport { ID } from '../config.js';\n\nimport type { OpenAPI } from '../index.js';\nimport type { ServiceMethod } from '../../types.js';\nimport { RESOURCE_SERVERS } from '../../auth/config.js';\n\n/**\n * The Timer OpenAPI definitions include default vaules which will present as **required** in\n * the creation context. We're overriding the generated types to make these fields optional.\n */\ntype OpenAPITimer = OpenAPI.components['schemas']['V2TransferTimerCreate'];\ntype OpenAPITransferTaskDocument = OpenAPI.components['schemas']['TransferTaskDocument'];\n\ntype TransferTaskDocument = Omit<\n OpenAPITransferTaskDocument,\n | 'DATA_TYPE'\n | 'delete_destination_extra'\n | 'encrypt_data'\n | 'fail_on_quota_errors'\n | 'notify_on_failed'\n | 'notify_on_inactive'\n | 'notify_on_succeeded'\n | 'preserve_timestamp'\n | 'skip_source_errors'\n | 'store_base_path_info'\n | 'verify_checksum'\n> & {\n DATA_TYPE?: OpenAPITransferTaskDocument['DATA_TYPE'];\n delete_destination_extra?: OpenAPITransferTaskDocument['delete_destination_extra'];\n encrypt_data?: OpenAPITransferTaskDocument['encrypt_data'];\n fail_on_quota_errors?: OpenAPITransferTaskDocument['fail_on_quota_errors'];\n notify_on_failed?: OpenAPITransferTaskDocument['notify_on_failed'];\n notify_on_inactive?: OpenAPITransferTaskDocument['notify_on_inactive'];\n notify_on_succeeded?: OpenAPITransferTaskDocument['notify_on_succeeded'];\n preserve_timestamp?: OpenAPITransferTaskDocument['preserve_timestamp'];\n skip_source_errors?: OpenAPITransferTaskDocument['skip_source_errors'];\n store_base_path_info?: OpenAPITransferTaskDocument['store_base_path_info'];\n verify_checksum?: OpenAPITransferTaskDocument['verify_checksum'];\n};\n\ntype TimerCreatePayload = {\n timer: Omit<OpenAPITimer, 'resource_server' | 'body'> & {\n resource_server?: OpenAPITimer['resource_server'];\n body: TransferTaskDocument;\n };\n};\n\nexport const create = function (options, sdkOptions?) {\n return serviceRequest(\n {\n service: ID,\n resource_server: RESOURCE_SERVERS.TIMERS,\n path: '/v2/timer',\n method: HTTP_METHODS.POST,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethod<{\n payload: TimerCreatePayload;\n}>;\n", "import { HTTP_METHODS, serviceRequest } from '../../../shared.js';\nimport { ID } from '../../config.js';\nimport { RESOURCE_SERVERS } from '../../../auth/config.js';\n\nimport type { OpenAPI } from '../../index.js';\nimport type {\n ServiceMethod,\n ServiceMethodDynamicSegments,\n JSONFetchResponse,\n} from '../../../types.js';\n\n/**\n * @see https://timer.automate.globus.org/redoc#tag/jobs/operation/list_jobs_jobs__get\n */\nexport const getAll = function (\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['list_jobs_jobs__get']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: ID,\n resource_server: RESOURCE_SERVERS[ID],\n path: '/jobs',\n method: HTTP_METHODS.GET,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethod<{\n query?: OpenAPI.operations['list_jobs_jobs__get']['parameters']['query'];\n payload?: never;\n}>;\n\n/**\n * @see https://timer.automate.globus.org/redoc#tag/jobs/operation/read_job_jobs__job_id__get\n */\nexport const get = function (\n job_id,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['read_job_jobs__job_id__get']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: ID,\n resource_server: RESOURCE_SERVERS[ID],\n path: `/jobs/${job_id}`,\n method: HTTP_METHODS.GET,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n query?: OpenAPI.operations['read_job_jobs__job_id__get']['parameters']['query'];\n payload?: never;\n }\n>;\n\n/**\n * @see https://timer.automate.globus.org/redoc#tag/jobs/operation/update_job_jobs__job_id__patch\n */\nexport const patch = function (\n job_id,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['update_job_jobs__job_id__patch']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: ID,\n resource_server: RESOURCE_SERVERS[ID],\n path: `/jobs/${job_id}`,\n method: HTTP_METHODS.PATCH,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n payload: OpenAPI.operations['update_job_jobs__job_id__patch']['requestBody']['content']['application/json'];\n }\n>;\n\n/**\n * @see https://timer.automate.globus.org/redoc#tag/jobs/operation/pause_job_jobs__job_id__pause_post\n */\nexport const pause = function (\n job_id,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['pause_job_jobs__job_id__pause_post']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: ID,\n resource_server: RESOURCE_SERVERS[ID],\n path: `/jobs/${job_id}/pause`,\n method: HTTP_METHODS.POST,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n payload?: never;\n body?: never;\n query?: never;\n }\n>;\n\n/**\n * @see https://timer.automate.globus.org/redoc#tag/jobs/operation/resume_job_jobs__job_id__resume_post\n */\nexport const resume = function (\n job_id,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['resume_job_jobs__job_id__resume_post']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: ID,\n resource_server: RESOURCE_SERVERS[ID],\n path: `/jobs/${job_id}/resume`,\n method: HTTP_METHODS.POST,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n payload?: never;\n body?: never;\n query?: OpenAPI.operations['resume_job_jobs__job_id__resume_post']['parameters']['query'];\n }\n>;\n\n/**\n * @see https://timer.automate.globus.org/redoc#tag/jobs/operation/delete_timer_jobs__timer_id__delete\n */\nexport const remove = function (\n job_id,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['delete_timer_jobs__timer_id__delete']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: ID,\n resource_server: RESOURCE_SERVERS[ID],\n path: `/jobs/${job_id}`,\n method: HTTP_METHODS.DELETE,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n string,\n {\n payload?: never;\n body?: never;\n query?: never;\n }\n>;\n", "/**\n * @description A wrapper around the Globus Compute service.\n * @group Service\n * @see [Globus Compute API Documentation](https://compute.api.globus.org/redoc)\n * @module\n */\nimport * as COMPUTE from './config.js';\n\nexport type * as OpenAPI from '../../open-api/types/compute.js';\n\n/**\n * @private\n * @internal\n */\nexport const CONFIG = COMPUTE;\n\nexport * as endpoints from './service/endpoints.js';\n", "import { HTTP_METHODS, serviceRequest } from '../../shared.js';\nimport { ID, SCOPES } from '../config.js';\n\nimport type {\n ServiceMethod,\n ServiceMethodDynamicSegments,\n JSONFetchResponse,\n} from '../../types.js';\n\nimport type { OpenAPI } from '../index.js';\n\n/**\n * @see https://compute.api.globus.org/redoc#tag/Endpoints/operation/get_endpoints_v2_endpoints_get\n */\nexport const getAll = function (\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['get_endpoints_v2_endpoints_get']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: '/v2/endpoints',\n method: HTTP_METHODS.GET,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethod<{\n query: OpenAPI.operations['get_endpoints_v2_endpoints_get']['parameters']['query'];\n}>;\n\n/**\n * @see https://compute.api.globus.org/redoc#tag/Endpoints/operation/get_endpoint_v2_endpoints__endpoint_uuid__get\n */\nexport const get = function (\n endpoint_uuid,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['get_endpoint_v2_endpoints__endpoint_uuid__get']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v2/endpoints/${endpoint_uuid}`,\n method: HTTP_METHODS.GET,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n OpenAPI.operations['get_endpoint_v2_endpoints__endpoint_uuid__get']['parameters']['path']['endpoint_uuid'],\n {\n query?: never;\n payload?: never;\n }\n>;\n\n/**\n * @see https://compute.api.globus.org/redoc#tag/Endpoints/operation/get_endpoint_status_v2_endpoints__endpoint_uuid__status_get\n */\nexport const getStatus = function (\n endpoint_uuid,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['get_endpoint_status_v2_endpoints__endpoint_uuid__status_get']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v2/endpoints/${endpoint_uuid}/status`,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n OpenAPI.operations['get_endpoint_status_v2_endpoints__endpoint_uuid__status_get']['parameters']['path']['endpoint_uuid'],\n {\n query?: never;\n payload?: never;\n }\n>;\n\n/**\n * @see https://compute.api.globus.org/redoc#tag/Endpoints/operation/update_endpoint_v3_endpoints__endpoint_uuid__put\n */\nexport const update = function (\n endpoint_uuid,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['update_endpoint_v3_endpoints__endpoint_uuid__put']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v3/endpoints/${endpoint_uuid}`,\n method: HTTP_METHODS.PUT,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n OpenAPI.operations['update_endpoint_v3_endpoints__endpoint_uuid__put']['parameters']['path']['endpoint_uuid'],\n {\n query?: never;\n payload: Partial<\n OpenAPI.operations['update_endpoint_v3_endpoints__endpoint_uuid__put']['requestBody']['content']['application/json']\n >;\n }\n>;\n\n/**\n * @see https://compute.api.globus.org/redoc#tag/Endpoints/operation/delete_endpoint_v2_endpoints__endpoint_uuid__delete\n */\nexport const remove = function (\n endpoint_uuid,\n options?,\n sdkOptions?,\n): Promise<\n JSONFetchResponse<\n OpenAPI.operations['delete_endpoint_v2_endpoints__endpoint_uuid__delete']['responses']['200']['content']['application/json']\n >\n> {\n return serviceRequest(\n {\n service: ID,\n scope: SCOPES.ALL,\n path: `/v2/endpoints/${endpoint_uuid}`,\n method: HTTP_METHODS.DELETE,\n },\n options,\n sdkOptions,\n );\n} satisfies ServiceMethodDynamicSegments<\n OpenAPI.operations['delete_endpoint_v2_endpoints__endpoint_uuid__delete']['parameters']['path']['endpoint_uuid'],\n {\n query?: never;\n payload?: never;\n }\n>;\n", "/**\n * Utilities and methods related to the Globus Web App.\n * @see https://app.globus.org/\n */\n\nimport { getEnvironment, type Environment } from '../core/global.js';\nimport type { SDKOptions } from '../services/types.js';\n\n/**\n * The hostnames for the Globus Web App in each environment.\n */\nexport const HOSTS: Record<Environment, string> = {\n integration: 'app.integration.globuscs.info',\n sandbox: 'app.sandbox.globuscs.info',\n test: 'app.test.globuscs.info',\n staging: 'app.staging.globuscs.info',\n preview: 'app.preview.globus.org',\n production: 'app.globus.org',\n};\n\n/**\n * Return the hostname for the Globus Web App in the given environment.\n */\nexport function host(env: Environment = getEnvironment()) {\n return HOSTS[env];\n}\n\n/**\n * Return a URL for the Globus Web App.\n */\nexport function url(path?: string, sdkOptions?: SDKOptions) {\n return new URL(path || '', `https://${host(sdkOptions?.environment)}`);\n}\n\ntype WebAppURLIdentifier = 'TASK' | 'COLLECTION' | 'ENDPOINT';\n\nconst WEBAPP_URLS: Record<WebAppURLIdentifier, string> = {\n TASK: '/activity/%s/overview',\n COLLECTION: '/file-manager/collections/%s/overview',\n ENDPOINT: '/file-manager/collections/%s/overview',\n};\n\n/**\n * Obtain a URL for a specific page in the Globus Web App.\n * @example\n * ```typescript\n * const url = urlFor('TASK', ['example-uuid']);\n * ```\n */\nexport function urlFor(\n identifier: WebAppURLIdentifier,\n segments?: string[],\n sdkOptions?: SDKOptions,\n) {\n const path = WEBAPP_URLS[identifier].replace(/%s/g, segments?.join('/') || '');\n return url(path, sdkOptions);\n}\n"],
|
|
5
|
+
"mappings": "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CACF,EAWaM,GAAS,SACpBD,EACAN,EACAC,EASA,CACA,OAAOC,EACL,CACE,QAASC,EACT,MAAOC,EAAO,IACd,KAAM,eAAeE,CAAO,GAC5B,YACF,EACAN,EACAC,CACF,CACF,EAWaO,GAAS,SACpBF,EACAN,EACAC,EAC0C,CAC1C,OAAOC,EACL,CACE,QAASC,EACT,MAAOC,EAAO,IACd,KAAM,eAAeE,CAAO,UAC5B,aACF,EACAN,EACAC,CACF,CACF,EAWaQ,GAAS,SACpBH,EACAN,EACAC,EAC0C,CAC1C,OAAOC,EACL,CACE,QAASC,EACT,MAAOC,EAAO,IACd,KAAM,eAAeE,CAAO,UAC5B,aACF,EACAN,EACAC,CACF,CACF,EA4BaS,GAAe,SAC1BJ,EACAN,EACAC,EACgF,CAChF,OAAOC,EACL,CACE,QAASC,EACT,MAAOC,EAAO,IACd,KAAM,eAAeE,CAAO,aAC9B,EACAN,EACAC,CACF,CACF,EAkCaU,GAAyB,SACpCL,EACAN,EACAC,EAC6D,CAC7D,OAAOC,EACL,CACE,QAASC,EACT,MAAOC,EAAO,IACd,KAAM,eAAeE,CAAO,uBAC9B,EACAN,EACAC,CACF,CACF,EAsCaW,GAAmB,SAC9BN,EACAN,EACAC,EACoF,CACpF,OAAOC,EACL,CACE,QAASC,EACT,MAAOC,EAAO,IACd,KAAM,eAAeE,CAAO,iBAC9B,EACAN,EACAC,CACF,CACF,EAiCaY,GAAe,SAC1BP,EACAN,EACAC,EACsD,CACtD,OAAOC,EACL,CACE,QAASC,EACT,MAAOC,EAAO,IACd,KAAM,eAAeE,CAAO,aAC9B,EACAN,EACAC,CACF,CACF,EClZA,IAAAa,GAAA,GAAAC,EAAAD,GAAA,YAAAE,GAAA,QAAAC,GAAA,WAAAC,GAAA,WAAAC,GAAA,WAAAC,KAkCO,IAAMC,GAAS,SACpBC,EACAC,EACAC,EACgD,CAChD,OAAOC,EACL,CACE,QAASC,EACT,MAAOC,EAAO,IACd,KAAM,mBAAmBL,CAAY,cACvC,EACAC,EACAC,CACF,CACF,EAWaI,GAAS,SACpBN,EACAC,EACAC,EAC4C,CAC5C,OAAOC,EA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,0BAAAC,KAgBO,IAAMC,GAAM,SACjBC,EACAC,EACAC,EAC8C,CAC9C,OAAOC,EACL,CACE,QAASC,EACT,MAAOC,EAAO,IACd,KAAM,oCAAoCL,CAAY,EACxD,EACAC,EACAC,CACF,CACF,EAWaI,GAAqB,SAChCN,EACAC,EACAC,EAC+E,CAC/E,OAAOC,EACL,CACE,QAASC,EACT,MAAOC,EAAO,IACd,KAAM,oCAAoCL,CAAY,uBACxD,EACAC,EACAC,CACF,CACF,EAWaK,GAAgB,SAC3BP,EACAC,EACAC,EACgD,CAChD,OAAOC,EACL,CACE,QAASC,EACT,MAAOC,EAAO,IACd,KAAM,oCAAoCL,CAAY,cACxD,EACAC,EACAC,CACF,CACF,EAWaM,GAAwB,SACnCP,EAAU,CAAC,EACXC,EAUA,CACA,OAAOC,EACL,CACE,QAASC,EACT,MAAOC,EAAO,IACd,KAAM,6CACR,EACAJ,EACAC,CACF,CACF,ECjHA,IAAAO,GAAA,GAAAC,EAAAD,GAAA,YAAAE,GAAA,QAAAC,GAAA,WAAAC,GAAA,WAAAC,GAAA,WAAAC,KAqCO,IAAMC,GAAS,SACpBC,EACAC,EAMA,CACA,OAAOC,EACL,CACE,QAASC,EACT,MAAOC,EAAO,IACd,KAAM,yCACR,EACAJ,EACAC,CACF,CACF,EAQaI,GAAS,SACpBL,EACAC,EAC+C,CAC/C,OAAOC,EACL,CACE,QAASC,EACT,MAAOC,EAAO,IACd,KAAM,qCACN,aACF,EACAJ,EACAC,CACF,CACF,EAQaK,GAAM,SACjBC,EACAP,EACAC,EAC+C,CAC/C,OAAOC,EACL,CACE,QAASC,EACT,MAAOC,EAAO,IACd,KAAM,sCAAsCG,CAAa,EAC3D,EACAP,EACAC,CACF,CACF,EAWaO,GAAS,SACpBD,EACAP,EACAC,EAC+C,CAC/C,OAAOC,EACL,CACE,QAASC,EACT,MAAOC,EAAO,IACd,KAAM,sCAAsCG,CAAa,GACzD,YACF,EACAP,EACAC,CACF,CACF,EAWaQ,GAAS,SACpBF,EACAP,EACAC,EASA,CACA,OAAOC,EACL,CACE,QAASC,EACT,MAAOC,EAAO,IACd,KA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O,aACd,KAAM,SACN,aACF,EACAJ,EACAC,CACF,CACF,EAQaU,GAASD,GAMTE,GAAS,SACpBN,EACAN,EACAC,EAKA,CACA,OAAOC,EACL,CACE,QAASC,EACT,MAAOC,EAAO,aACd,KAAM,UAAUE,CAAO,GACvB,YACF,EACAN,EACAC,CACF,CACF,ECpNA,IAAAY,GAAA,GAAAC,EAAAD,GAAA,YAAAE,GAAA,QAAAC,GAAA,WAAAC,GAAA,kBAAAC,GAAA,WAAAC,GAAA,WAAAC,GAAA,WAAAC,KAcO,IAAMC,GAAS,SACpBC,EAAU,CAAC,EACXC,EAKA,CACA,OAAOC,EACL,CACE,QAASC,EACT,MAAOC,EAAO,WACd,KAAM,OACR,EACAJ,EACAC,CACF,CACF,EASaI,GAAM,SACjBC,EACAN,EACAC,EAKA,CACA,OAAOC,EACL,CACE,QAASC,EACT,MAAOC,EAAO,WACd,KAAM,SAASE,CAAM,EACvB,EACAN,EACAC,CACF,CACF,EAYaM,GAAS,SACpBD,EACAN,EACAC,EAKA,CACA,OAAOC,EACL,CACE,QAASC,EACT,MAAOC,EAAO,WACd,KAAM,SAASE,CAAM,UACrB,aACF,EACAN,EACAC,CACF,CACF,EAYaO,GAAS,SACpBF,EACAN,EACAC,EAKA,CACA,OAAOC,EACL,CACE,QAASC,EACT,MAAOC,EAAO,WACd,KAAM,SAASE,CAAM,MACvB,EACAN,EACAC,CACF,CACF,EAYaQ,GAAS,SACpBH,EACAN,EACAC,EAKA,CACA,OAAOC,EACL,CACE,QAASC,EACT,MAAOC,EAAO,WACd,KAAM,SAASE,CAAM,GACrB,YACF,EACAN,EACAC,CACF,CACF,EAaaS,GAAS,SACpBJ,EACAN,EACAC,EAKA,CACA,OAAOC,EACL,CACE,QAASC,EACT,MAAOC,EAAO,WACd,KAAM,SAASE,CAAM,WACrB,aACF,EACAN,EACAC,CACF,CACF,EAaaU,GAAgB,SAC3BL,EACAN,EACAC,EAKA,CACA,OAAOC,EACL,CACE,QAASC,EACT,MAAOC,EAAO,WACd,KAAM,SAASE,CAAM,cACrB,YACF,EACAN,EACAC,CACF,CAC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",
|
|
6
|
+
"names": ["require_browser_ponyfill", "__commonJSMin", "exports", "module", "__global__", "__globalThis__", "F", "globalThis", "irrelevant", "g", "support", "isDataView", "obj", "viewClasses", "isArrayBufferView", "normalizeName", "name", "normalizeValue", "value", "iteratorFor", "items", "iterator", "Headers", "headers", "header", "oldValue", "callback", "thisArg", "consumed", "body", "fileReaderReady", "reader", "resolve", "reject", "readBlobAsArrayBuffer", "blob", "promise", "readBlobAsText", "match", "encoding", "readArrayBufferAsText", "buf", "view", "chars", "i", "bufferClone", "Body", "rejected", "isConsumed", "decode", "methods", "normalizeMethod", "method", "upcased", "Request", "input", "options", "ctrl", "reParamSearch", "reQueryString", "form", "bytes", "split", "parseHeaders", "rawHeaders", "preProcessedHeaders", "line", "parts", "key", "error", "Response", "bodyInit", "response", "redirectStatuses", "url", "status", "message", "fetch", "init", "request", "xhr", "abortXhr", "fixUrl", "names", "ctx", "src_exports", "__export", "auth_exports", "authorization_exports", "compute_exports", "errors_exports", "flows_exports", "globus_connect_server_exports", "groups_exports", "info_exports", "logger_exports", "serviceRequest", "search_exports", "timers_exports", "transfer_exports", "web_exports", "info_exports", "__export", "CLIENT_INFO", "VERSION", "addClientInfo", "getClientInfo", "getClientInfoRequestHeaders", "CLIENT_INFO_HEADER", "ENABLED", "isEnabled", "ENABLED", "INFOS_SEPERATOR", "INFO_ITEM_SEPARATOR", "toString", "info", "i", "key", "value", "VERSION", "VERSION", "CLIENT_INFO", "INFOS", "addClientInfo", "info", "getClientInfo", "toString", "getClientInfoRequestHeaders", "isEnabled", "CLIENT_INFO_HEADER", "logger_exports", "__export", "log", "setLogLevel", "setLogger", "LOG_LEVELS", "logger", "level", "logMechanism", "severity", "args", "authorization_exports", "__export", "AuthorizationManager", "create", "InvalidTokenError", "b64DecodeUnicode", "str", "m", "p", "code", "base64UrlDecode", "output", "jwtDecode", "token", "options", "pos", "part", "decoded", "e", "auth_exports", "__export", "CONFIG", "getAuthorizationEndpoint", "getTokenEndpoint", "identities_exports", "isGlobusAuthTokenResponse", "isRefreshToken", "isToken", "oauth2_exports", "utils_exports", "config_exports", "__export", "HOSTS", "ID", "RESOURCE_SERVERS", "SCOPES", "config_exports", "__export", "HOSTS", "ID", "SCOPES", "config_exports", "__export", "HOSTS", "ID", "SCOPES", "config_exports", "__export", "HOSTS", "ID", "config_exports", "__export", "HOSTS", "ID", "SCOPES", "config_exports", "__export", "HOSTS", "ID", "SCOPES", "config_exports", "__export", "HOSTS", "ID", "SCOPES", "ID", "HOSTS", "SCOPES", "RESOURCE_SERVERS", "errors_exports", "__export", "EnvironmentConfigurationError", "isAuthorizationRequirementsError", "isConsentRequiredError", "isErrorWellFormed", "toAuthorizationQueryParams", "variable", "value", "test", "NO_OP_KEYS", "error", "mapped", "acc", "key", "v", "getRuntime", "isBrowser", "runtime", "env", "key", "fallback", "envConfiguration", "ENVIRONMENTS", "SERVICES", "ID", "SERVICE_HOSTS", "HOSTS", "getSDKOptions", "options", "globalOptions", "getEnvironment", "environment", "log", "EnvironmentConfigurationError", "getServiceHost", "service", "environment", "getEnvironment", "SERVICE_HOSTS", "getServiceBaseUrl", "host", "env", "stringifyParameters", "parameters", "search", "key", "value", "getServiceURL", "service", "path", "environment", "getEnvironment", "base", "getServiceBaseUrl", "build", "serviceOrConfiguration", "options", "sdkOptions", "url", "identities_exports", "__export", "consents_exports", "get", "getAll", "import_cross_fetch", "serviceRequest", "config", "options", "passedSdkOptions", "sdkOptions", "getSDKOptions", "injectedFetchOptions", "headers", "getClientInfoRequestHeaders", "manager", "token", "resourceServer", "RESOURCE_SERVERS", "body", "url", "build", "init", "handler", "_fetch", "isRefreshToken", "initialResponse", "hasAuthorizationRequirements", "isAuthorizationRequirementsError", "newToken", "consents_exports", "__export", "getAll", "getAll", "identity_id", "options", "sdkOptions", "serviceRequest", "ID", "SCOPES", "get", "identity_id", "options", "sdkOptions", "serviceRequest", "ID", "SCOPES", "getAll", "oauth2_exports", "__export", "token_exports", "userinfo", "token_exports", "__export", "exchange", "introspect", "refresh", "revoke", "token", "validate", "serialize", "payload", "injectServiceOptions", "options", "token", "sdkOptions", "serviceRequest", "ID", "exchange", "introspect", "revoke", "refresh", "validate", "userinfo", "options", "sdkOptions", "serviceRequest", "ID", "utils_exports", "__export", "hasConsentForScope", "splitScopeString", "toScopeTree", "scope", "scopes", "currentScope", "openBrackets", "char", "i", "parseScope", "s", "parsedScope", "revocable", "children", "firstBracket", "topLevelScope", "dependentScope", "consents", "tree", "hasConsentEntry", "leaf", "path", "entry", "c", "l", "CONFIG", "config_exports", "getAuthorizationEndpoint", "build", "ID", "getTokenEndpoint", "isToken", "check", "isRefreshToken", "isGlobusAuthTokenResponse", "Event", "name", "#callbacks", "callback", "cb", "payload", "isSupported", "getCrypto", "encode", "value", "sha256", "input", "hashBuffer", "CHARSET", "PKCE_SAFE_CHARSET", "generateCodeVerifier", "v", "generateCodeChallenge", "verifier", "hashed", "generateState", "KEYS", "store", "key", "entry", "RedirectTransport", "_RedirectTransport", "#options", "options", "isSupported", "verifier", "generateCodeVerifier", "challenge", "generateCodeChallenge", "state", "generateState", "store", "params", "url", "getAuthorizationEndpoint", "code", "payload", "response", "oauth2_exports", "TokenManager", "#manager", "options", "#getTokenFromStorage", "key", "raw", "token", "parsed", "isToken", "#getTokenForService", "service", "resourceServer", "CONFIG", "SERVICES", "endpoint", "acc", "created", "expires", "t", "augment", "MemoryStorage", "#storage", "key", "value", "index", "MESSAGE_SOURCE", "PopupTransport", "_PopupTransport", "#options", "#window", "options", "isSupported", "verifier", "generateCodeVerifier", "challenge", "generateCodeChallenge", "state", "generateState", "store", "params", "url", "getAuthorizationEndpoint", "promise", "resolve", "e", "data", "response", "#getToken", "href", "code", "payload", "oauth2_exports", "TRANSPORTS", "RedirectTransport", "PopupTransport", "DEFAULT_CONFIGURATION", "DEFAULT_HANDLE_ERROR_OPTIONS", "AuthorizationManager", "#transport", "#authenticated", "value", "#emitAuthenticatedState", "Event", "configuration", "scopes", "s", "MemoryStorage", "name", "callback", "TokenManager", "#checkAuthorizationState", "token", "jwtDecode", "log", "tokens", "isRefreshToken", "response", "oauth2_exports", "isGlobusAuthTokenResponse", "entry", "RESOURCE_SERVERS", "isAuthenticated", "key", "#withOfflineAccess", "#buildTransport", "options", "overrides", "TransportFactory", "scopesToRequest", "result", "opts", "handler", "isAuthorizationRequirementsError", "isConsentRequiredError", "toAuthorizationQueryParams", "revocation", "#revokeToken", "create", "configuration", "AuthorizationManager", "transfer_exports", "__export", "CONFIG", "access_exports", "collection_bookmarks_exports", "endpoint_exports", "endpoint_manager_exports", "endpointSearch", "file_operations_exports", "roles_exports", "stream_access_point_exports", "task_exports", "task_submission_exports", "tunnel_exports", "utils_exports", "endpointSearch", "options", "sdkOptions", "serviceRequestOptions", "serviceRequest", "ID", "SCOPES", "file_operations_exports", "__export", "ls", "mkdir", "rename", "stat", "symlink", "getHeadersForService", "method", "ls", "endpoint_xid", "options", "sdkOptions", "serviceRequest", "ID", "SCOPES", "mkdir", "serviceRequestOptions", "getHeadersForService", "rename", "symlink", "stat", "task_submission_exports", "__export", "submissionId", "submitDelete", "submitTransfer", "submitDelete", "options", "sdkOptions", "serviceRequestOptions", "getHeadersForService", "serviceRequest", "ID", "SCOPES", "submitTransfer", "submissionId", "endpoint_exports", "__export", "create", "get", "remove", "update", "get", "endpoint_xid", "options", "sdkOptions", "serviceRequest", "ID", "SCOPES", "create", "update", "remove", "task_exports", "__export", "cancel", "get", "getAll", "getEventList", "getPauseInfo", "getSkippedErrors", "getSuccessfulTransfers", "remove", "update", "getAll", "options", "sdkOptions", "serviceRequest", "ID", "SCOPES", "get", "task_id", "update", "cancel", "remove", "getEventList", "getSuccessfulTransfers", "getSkippedErrors", "getPauseInfo", "access_exports", "__export", "create", "get", "getAll", "remove", "update", "getAll", "endpoint_xid", "options", "sdkOptions", "serviceRequest", "ID", "SCOPES", "create", "get", "id", "update", "remove", "roles_exports", "__export", "create", "get", "getAll", "remove", "getAll", "endpoint_id", "options", "sdkOptions", "serviceRequest", "ID", "SCOPES", "get", "role_id", "create", "collection_id", "remove", "collection_bookmarks_exports", "__export", "create", "get", "getAll", "remove", "update", "getAll", "options", "sdkOptions", "serviceRequest", "ID", "SCOPES", "create", "get", "bookmark_id", "update", "remove", "tunnel_exports", "__export", "create", "get", "getAll", "getEventList", "remove", "start", "stop", "resource_server", "RESOURCE_SERVERS", "ID", "getAll", "options", "sdkOptions", "serviceRequest", "get", "tunnel_uuid", "create", "remove", "start", "stop", "getEventList", "stream_access_point_exports", "__export", "get", "getAll", "resource_server", "RESOURCE_SERVERS", "ID", "getAll", "options", "sdkOptions", "serviceRequest", "get", "stream_access_point_uuid", "endpoint_manager_exports", "__export", "endpoint_exports", "pause_rule_exports", "task_exports", "endpoint_exports", "__export", "get", "getAccessList", "getHostedEndpoints", "getMonitoredEndpoints", "get", "endpoint_xid", "options", "sdkOptions", "serviceRequest", "ID", "SCOPES", "getHostedEndpoints", "getAccessList", "getMonitoredEndpoints", "pause_rule_exports", "__export", "create", "get", "getAll", "remove", "update", "getAll", "options", "sdkOptions", "serviceRequest", "ID", "SCOPES", "create", "get", "pause_rule_id", "update", "remove", "task_exports", "__export", "cancel", "get", "getAdminCancel", "getAll", "getEventList", "getPauseInfo", "getSkippedErrors", "getSuccessfulTransfers", "pause", "resume", "getAll", "options", "sdkOptions", "serviceRequest", "ID", "SCOPES", "get", "task_id", "cancel", "getAdminCancel", "admin_cancel_id", "getEventList", "getSuccessfulTransfers", "getSkippedErrors", "pause", "resume", "getPauseInfo", "utils_exports", "__export", "GLOBUS_DNS_DOMAINS", "getDomainFromEndpoint", "isDirectory", "isFileDocument", "isGlobusHostname", "readableBytes", "entry", "KB", "MB", "GB", "TB", "PB", "bytes", "truncate", "unit", "bytesInUnit", "value", "int", "dec", "rendered", "truncated", "hostname", "d", "endpoint", "tls", "CONFIG", "config_exports", "search_exports", "__export", "CONFIG", "entry_exports", "search_index_exports", "query_exports", "subject_exports", "query_exports", "__export", "get", "post", "get", "index_id", "options", "sdkOptions", "serviceRequest", "ID", "SCOPES", "post", "subject_exports", "__export", "get", "get", "index_id", "options", "sdkOptions", "serviceRequest", "ID", "SCOPES", "entry_exports", "__export", "get", "get", "index_id", "options", "sdkOptions", "serviceRequest", "ID", "SCOPES", "search_index_exports", "__export", "create", "get", "getAll", "ingest", "remove", "reopen", "roles_exports", "roles_exports", "__export", "create", "getAll", "remove", "getAll", "index_id", "options", "sdkOptions", "serviceRequest", "ID", "SCOPES", "create", "remove", "role_id", "get", "index_id", "options", "sdkOptions", "serviceRequest", "ID", "getAll", "SCOPES", "create", "remove", "reopen", "ingest", "CONFIG", "config_exports", "groups_exports", "__export", "CONFIG", "membership_exports", "policies_exports", "groups_exports", "__export", "create", "get", "getMyGroups", "getStatuses", "remove", "update", "getMyGroups", "options", "sdkOptions", "serviceRequest", "ID", "RESOURCE_SERVERS", "get", "group_id", "create", "remove", "update", "getStatuses", "policies_exports", "__export", "get", "update", "get", "group_id", "options", "sdkOptions", "serviceRequest", "ID", "RESOURCE_SERVERS", "update", "membership_exports", "__export", "act", "act", "group_id", "options", "sdkOptions", "serviceRequest", "ID", "RESOURCE_SERVERS", "CONFIG", "config_exports", "flows_exports", "__export", "CONFIG", "runs_exports", "flows_exports", "__export", "create", "deploy", "get", "getAll", "remove", "run", "update", "validate", "getAll", "options", "sdkOptions", "serviceRequest", "ID", "SCOPES", "get", "flow_id", "remove", "run", "validate", "create", "deploy", "update", "runs_exports", "__export", "cancel", "get", "getAll", "getDefinition", "getLog", "remove", "update", "getAll", "options", "sdkOptions", "serviceRequest", "ID", "SCOPES", "get", "run_id", "cancel", "getLog", "update", "remove", "getDefinition", "CONFIG", "config_exports", "globus_connect_server_exports", "__export", "collections_exports", "endpoint_exports", "getScopes", "https_exports", "nodes_exports", "roles_exports", "storage_gateways_exports", "user_credentials_exports", "utils_exports", "versioning_exports", "collections_exports", "__export", "create", "get", "getAll", "patch", "remove", "resetOwnerString", "update", "updateOwnerString", "getAll", "configuration", "options", "sdkOptions", "serviceRequest", "get", "collection_id", "remove", "create", "update", "patch", "updateOwnerString", "resetOwnerString", "endpoint_exports", "__export", "get", "patch", "resetOwnerString", "update", "updateOwner", "updateOwnerString", "updateSubscriptionId", "get", "configuration", "options", "sdkOptions", "serviceRequest", "update", "patch", "updateSubscriptionId", "updateOwner", "updateOwnerString", "resetOwnerString", "https_exports", "__export", "get", "remove", "update", "get", "configuration", "path", "options", "sdkOptions", "serviceRequest", "remove", "update", "nodes_exports", "__export", "create", "get", "getAll", "patch", "remove", "update", "getAll", "configuration", "options", "sdkOptions", "serviceRequest", "get", "node_id", "remove", "create", "update", "patch", "roles_exports", "__export", "create", "get", "getAll", "remove", "getAll", "configuration", "options", "sdkOptions", "serviceRequest", "get", "role_id", "remove", "create", "storage_gateways_exports", "__export", "create", "get", "getAll", "patch", "remove", "update", "getAll", "configuration", "options", "sdkOptions", "serviceRequest", "get", "storage_gateway_id", "remove", "create", "update", "patch", "user_credentials_exports", "__export", "create", "get", "getAll", "patch", "remove", "update", "getAll", "configuration", "options", "sdkOptions", "serviceRequest", "get", "user_credential_id", "remove", "create", "update", "patch", "versioning_exports", "__export", "info", "info", "configuration", "options", "sdkOptions", "serviceRequest", "utils_exports", "__export", "getEndpointIdFromURL", "getGCSDomainFromURL", "GCS_DEFAULT_DOMAIN", "getGCSDomainFromURL", "url", "host", "subdomain", "parts", "getEndpointIdFromURL", "u", "info", "SCOPES", "getScopes", "configuration", "scope", "id", "reduc", "key", "value", "timers_exports", "__export", "CONFIG", "jobs_exports", "timer_exports", "timer_exports", "__export", "create", "create", "options", "sdkOptions", "serviceRequest", "ID", "RESOURCE_SERVERS", "jobs_exports", "__export", "get", "getAll", "patch", "pause", "remove", "resume", "getAll", "options", "sdkOptions", "serviceRequest", "ID", "RESOURCE_SERVERS", "get", "job_id", "patch", "pause", "resume", "remove", "CONFIG", "config_exports", "compute_exports", "__export", "CONFIG", "endpoints_exports", "endpoints_exports", "__export", "get", "getAll", "getStatus", "remove", "update", "getAll", "options", "sdkOptions", "serviceRequest", "ID", "SCOPES", "get", "endpoint_uuid", "getStatus", "update", "remove", "CONFIG", "config_exports", "web_exports", "__export", "HOSTS", "host", "url", "urlFor", "HOSTS", "host", "env", "getEnvironment", "url", "path", "sdkOptions", "WEBAPP_URLS", "urlFor", "identifier", "segments"]
|
|
7
7
|
}
|