zrok/sdk/node/sdk_ts/dist/index.mjs.map
2023-11-16 10:25:52 -06:00

1 line
118 KiB
Plaintext

{"version":3,"sources":["../src/zrok/api/runtime.ts","../src/zrok/api/models/AccessRequest.ts","../src/zrok/api/models/AccessResponse.ts","../src/zrok/api/models/AuthUser.ts","../src/zrok/api/models/SparkDataSample.ts","../src/zrok/api/models/Environment.ts","../src/zrok/api/models/Frontend.ts","../src/zrok/api/models/Share.ts","../src/zrok/api/models/EnvironmentAndResources.ts","../src/zrok/api/models/MetricsSample.ts","../src/zrok/api/models/Metrics.ts","../src/zrok/api/models/PasswordRequirements.ts","../src/zrok/api/models/ModelConfiguration.ts","../src/zrok/api/models/Overview.ts","../src/zrok/api/models/ShareRequest.ts","../src/zrok/api/models/ShareResponse.ts","../src/zrok/api/models/UnaccessRequest.ts","../src/zrok/api/models/UnshareRequest.ts","../src/zrok/api/models/UpdateShareRequest.ts","../src/zrok/api/apis/MetadataApi.ts","../src/zrok/api/apis/ShareApi.ts","../src/zrok/model.ts","../src/zrok/share.ts","../src/environment/dirs.ts","../src/environment/root.ts"],"sourcesContent":["/* tslint:disable */\n/* eslint-disable */\n/**\n * zrok\n * zrok client access\n *\n * The version of the OpenAPI document: 0.3.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nexport const BASE_PATH = \"/api/v1\".replace(/\\/+$/, \"\");\n\nexport interface ConfigurationParameters {\n basePath?: string; // override base path\n fetchApi?: FetchAPI; // override for fetch implementation\n middleware?: Middleware[]; // middleware to apply before/after fetch requests\n queryParamsStringify?: (params: HTTPQuery) => string; // stringify function for query strings\n username?: string; // parameter for basic security\n password?: string; // parameter for basic security\n apiKey?: string | ((name: string) => string); // parameter for apiKey security\n accessToken?: string | Promise<string> | ((name?: string, scopes?: string[]) => string | Promise<string>); // parameter for oauth2 security\n headers?: HTTPHeaders; //header params we want to use on every request\n credentials?: RequestCredentials; //value for the credentials param we want to use on each request\n}\n\nexport class Configuration {\n constructor(private configuration: ConfigurationParameters = {}) {}\n\n set config(configuration: Configuration) {\n this.configuration = configuration;\n }\n\n get basePath(): string {\n return this.configuration.basePath != null ? this.configuration.basePath : BASE_PATH;\n }\n\n get fetchApi(): FetchAPI | undefined {\n return this.configuration.fetchApi;\n }\n\n get middleware(): Middleware[] {\n return this.configuration.middleware || [];\n }\n\n get queryParamsStringify(): (params: HTTPQuery) => string {\n return this.configuration.queryParamsStringify || querystring;\n }\n\n get username(): string | undefined {\n return this.configuration.username;\n }\n\n get password(): string | undefined {\n return this.configuration.password;\n }\n\n get apiKey(): ((name: string) => string) | undefined {\n const apiKey = this.configuration.apiKey;\n if (apiKey) {\n return typeof apiKey === 'function' ? apiKey : () => apiKey;\n }\n return undefined;\n }\n\n get accessToken(): ((name?: string, scopes?: string[]) => string | Promise<string>) | undefined {\n const accessToken = this.configuration.accessToken;\n if (accessToken) {\n return typeof accessToken === 'function' ? accessToken : async () => accessToken;\n }\n return undefined;\n }\n\n get headers(): HTTPHeaders | undefined {\n return this.configuration.headers;\n }\n\n get credentials(): RequestCredentials | undefined {\n return this.configuration.credentials;\n }\n}\n\nexport const DefaultConfig = new Configuration();\n\n/**\n * This is the base class for all generated API classes.\n */\nexport class BaseAPI {\n\n\t private static readonly jsonRegex = new RegExp('^(:?application\\/json|[^;/ \\t]+\\/[^;/ \\t]+[+]json)[ \\t]*(:?;.*)?$', 'i');\n private middleware: Middleware[];\n\n constructor(protected configuration = DefaultConfig) {\n this.middleware = configuration.middleware;\n }\n\n withMiddleware<T extends BaseAPI>(this: T, ...middlewares: Middleware[]) {\n const next = this.clone<T>();\n next.middleware = next.middleware.concat(...middlewares);\n return next;\n }\n\n withPreMiddleware<T extends BaseAPI>(this: T, ...preMiddlewares: Array<Middleware['pre']>) {\n const middlewares = preMiddlewares.map((pre) => ({ pre }));\n return this.withMiddleware<T>(...middlewares);\n }\n\n withPostMiddleware<T extends BaseAPI>(this: T, ...postMiddlewares: Array<Middleware['post']>) {\n const middlewares = postMiddlewares.map((post) => ({ post }));\n return this.withMiddleware<T>(...middlewares);\n }\n\n /**\n * Check if the given MIME is a JSON MIME.\n * JSON MIME examples:\n * application/json\n * application/json; charset=UTF8\n * APPLICATION/JSON\n * application/vnd.company+json\n * @param mime - MIME (Multipurpose Internet Mail Extensions)\n * @return True if the given MIME is JSON, false otherwise.\n */\n protected isJsonMime(mime: string | null | undefined): boolean {\n if (!mime) {\n return false;\n }\n return BaseAPI.jsonRegex.test(mime);\n }\n\n protected async request(context: RequestOpts, initOverrides?: RequestInit | InitOverrideFunction): Promise<Response> {\n const { url, init } = await this.createFetchParams(context, initOverrides);\n const response = await this.fetchApi(url, init);\n if (response && (response.status >= 200 && response.status < 300)) {\n return response;\n }\n throw new ResponseError(response, 'Response returned an error code');\n }\n\n private async createFetchParams(context: RequestOpts, initOverrides?: RequestInit | InitOverrideFunction) {\n let url = this.configuration.basePath + context.path;\n if (context.query !== undefined && Object.keys(context.query).length !== 0) {\n // only add the querystring to the URL if there are query parameters.\n // this is done to avoid urls ending with a \"?\" character which buggy webservers\n // do not handle correctly sometimes.\n url += '?' + this.configuration.queryParamsStringify(context.query);\n }\n\n const headers = Object.assign({}, this.configuration.headers, context.headers);\n Object.keys(headers).forEach(key => headers[key] === undefined ? delete headers[key] : {});\n\n const initOverrideFn =\n typeof initOverrides === \"function\"\n ? initOverrides\n : async () => initOverrides;\n\n const initParams = {\n method: context.method,\n headers,\n body: context.body,\n credentials: this.configuration.credentials,\n };\n\n const overriddenInit: RequestInit = {\n ...initParams,\n ...(await initOverrideFn({\n init: initParams,\n context,\n }))\n };\n\n let body: any;\n if (isFormData(overriddenInit.body)\n || (overriddenInit.body instanceof URLSearchParams)\n || isBlob(overriddenInit.body)) {\n body = overriddenInit.body;\n } else if (this.isJsonMime(headers['Content-Type'])) {\n body = JSON.stringify(overriddenInit.body);\n } else {\n body = overriddenInit.body;\n }\n\n const init: RequestInit = {\n ...overriddenInit,\n body\n };\n\n return { url, init };\n }\n\n private fetchApi = async (url: string, init: RequestInit) => {\n let fetchParams = { url, init };\n for (const middleware of this.middleware) {\n if (middleware.pre) {\n fetchParams = await middleware.pre({\n fetch: this.fetchApi,\n ...fetchParams,\n }) || fetchParams;\n }\n }\n let response: Response | undefined = undefined;\n try {\n response = await (this.configuration.fetchApi || fetch)(fetchParams.url, fetchParams.init);\n } catch (e) {\n for (const middleware of this.middleware) {\n if (middleware.onError) {\n response = await middleware.onError({\n fetch: this.fetchApi,\n url: fetchParams.url,\n init: fetchParams.init,\n error: e,\n response: response ? response.clone() : undefined,\n }) || response;\n }\n }\n if (response === undefined) {\n if (e instanceof Error) {\n throw new FetchError(e, 'The request failed and the interceptors did not return an alternative response');\n } else {\n throw e;\n }\n }\n }\n for (const middleware of this.middleware) {\n if (middleware.post) {\n response = await middleware.post({\n fetch: this.fetchApi,\n url: fetchParams.url,\n init: fetchParams.init,\n response: response.clone(),\n }) || response;\n }\n }\n return response;\n }\n\n /**\n * Create a shallow clone of `this` by constructing a new instance\n * and then shallow cloning data members.\n */\n private clone<T extends BaseAPI>(this: T): T {\n const constructor = this.constructor as any;\n const next = new constructor(this.configuration);\n next.middleware = this.middleware.slice();\n return next;\n }\n};\n\nfunction isBlob(value: any): value is Blob {\n return typeof Blob !== 'undefined' && value instanceof Blob;\n}\n\nfunction isFormData(value: any): value is FormData {\n return typeof FormData !== \"undefined\" && value instanceof FormData;\n}\n\nexport class ResponseError extends Error {\n override name: \"ResponseError\" = \"ResponseError\";\n constructor(public response: Response, msg?: string) {\n super(msg);\n }\n}\n\nexport class FetchError extends Error {\n override name: \"FetchError\" = \"FetchError\";\n constructor(public cause: Error, msg?: string) {\n super(msg);\n }\n}\n\nexport class RequiredError extends Error {\n override name: \"RequiredError\" = \"RequiredError\";\n constructor(public field: string, msg?: string) {\n super(msg);\n }\n}\n\nexport const COLLECTION_FORMATS = {\n csv: \",\",\n ssv: \" \",\n tsv: \"\\t\",\n pipes: \"|\",\n};\n\nexport type FetchAPI = WindowOrWorkerGlobalScope['fetch'];\n\nexport type Json = any;\nexport type HTTPMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'OPTIONS' | 'HEAD';\nexport type HTTPHeaders = { [key: string]: string };\nexport type HTTPQuery = { [key: string]: string | number | null | boolean | Array<string | number | null | boolean> | Set<string | number | null | boolean> | HTTPQuery };\nexport type HTTPBody = Json | FormData | URLSearchParams;\nexport type HTTPRequestInit = { headers?: HTTPHeaders; method: HTTPMethod; credentials?: RequestCredentials; body?: HTTPBody };\nexport type ModelPropertyNaming = 'camelCase' | 'snake_case' | 'PascalCase' | 'original';\n\nexport type InitOverrideFunction = (requestContext: { init: HTTPRequestInit, context: RequestOpts }) => Promise<RequestInit>\n\nexport interface FetchParams {\n url: string;\n init: RequestInit;\n}\n\nexport interface RequestOpts {\n path: string;\n method: HTTPMethod;\n headers: HTTPHeaders;\n query?: HTTPQuery;\n body?: HTTPBody;\n}\n\nexport function exists(json: any, key: string) {\n const value = json[key];\n return value !== null && value !== undefined;\n}\n\nexport function querystring(params: HTTPQuery, prefix: string = ''): string {\n return Object.keys(params)\n .map(key => querystringSingleKey(key, params[key], prefix))\n .filter(part => part.length > 0)\n .join('&');\n}\n\nfunction querystringSingleKey(key: string, value: string | number | null | undefined | boolean | Array<string | number | null | boolean> | Set<string | number | null | boolean> | HTTPQuery, keyPrefix: string = ''): string {\n const fullKey = keyPrefix + (keyPrefix.length ? `[${key}]` : key);\n if (value instanceof Array) {\n const multiValue = value.map(singleValue => encodeURIComponent(String(singleValue)))\n .join(`&${encodeURIComponent(fullKey)}=`);\n return `${encodeURIComponent(fullKey)}=${multiValue}`;\n }\n if (value instanceof Set) {\n const valueAsArray = Array.from(value);\n return querystringSingleKey(key, valueAsArray, keyPrefix);\n }\n if (value instanceof Date) {\n return `${encodeURIComponent(fullKey)}=${encodeURIComponent(value.toISOString())}`;\n }\n if (value instanceof Object) {\n return querystring(value as HTTPQuery, fullKey);\n }\n return `${encodeURIComponent(fullKey)}=${encodeURIComponent(String(value))}`;\n}\n\nexport function mapValues(data: any, fn: (item: any) => any) {\n return Object.keys(data).reduce(\n (acc, key) => ({ ...acc, [key]: fn(data[key]) }),\n {}\n );\n}\n\nexport function canConsumeForm(consumes: Consume[]): boolean {\n for (const consume of consumes) {\n if ('multipart/form-data' === consume.contentType) {\n return true;\n }\n }\n return false;\n}\n\nexport interface Consume {\n contentType: string;\n}\n\nexport interface RequestContext {\n fetch: FetchAPI;\n url: string;\n init: RequestInit;\n}\n\nexport interface ResponseContext {\n fetch: FetchAPI;\n url: string;\n init: RequestInit;\n response: Response;\n}\n\nexport interface ErrorContext {\n fetch: FetchAPI;\n url: string;\n init: RequestInit;\n error: unknown;\n response?: Response;\n}\n\nexport interface Middleware {\n pre?(context: RequestContext): Promise<FetchParams | void>;\n post?(context: ResponseContext): Promise<Response | void>;\n onError?(context: ErrorContext): Promise<Response | void>;\n}\n\nexport interface ApiResponse<T> {\n raw: Response;\n value(): Promise<T>;\n}\n\nexport interface ResponseTransformer<T> {\n (json: any): T;\n}\n\nexport class JSONApiResponse<T> {\n constructor(public raw: Response, private transformer: ResponseTransformer<T> = (jsonValue: any) => jsonValue) {}\n\n async value(): Promise<T> {\n return this.transformer(await this.raw.json());\n }\n}\n\nexport class VoidApiResponse {\n constructor(public raw: Response) {}\n\n async value(): Promise<void> {\n return undefined;\n }\n}\n\nexport class BlobApiResponse {\n constructor(public raw: Response) {}\n\n async value(): Promise<Blob> {\n return await this.raw.blob();\n };\n}\n\nexport class TextApiResponse {\n constructor(public raw: Response) {}\n\n async value(): Promise<string> {\n return await this.raw.text();\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * zrok\n * zrok client access\n *\n * The version of the OpenAPI document: 0.3.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface AccessRequest\n */\nexport interface AccessRequest {\n /**\n * \n * @type {string}\n * @memberof AccessRequest\n */\n envZId?: string;\n /**\n * \n * @type {string}\n * @memberof AccessRequest\n */\n shrToken?: string;\n}\n\n/**\n * Check if a given object implements the AccessRequest interface.\n */\nexport function instanceOfAccessRequest(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function AccessRequestFromJSON(json: any): AccessRequest {\n return AccessRequestFromJSONTyped(json, false);\n}\n\nexport function AccessRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): AccessRequest {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'envZId': !exists(json, 'envZId') ? undefined : json['envZId'],\n 'shrToken': !exists(json, 'shrToken') ? undefined : json['shrToken'],\n };\n}\n\nexport function AccessRequestToJSON(value?: AccessRequest | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'envZId': value.envZId,\n 'shrToken': value.shrToken,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * zrok\n * zrok client access\n *\n * The version of the OpenAPI document: 0.3.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface AccessResponse\n */\nexport interface AccessResponse {\n /**\n * \n * @type {string}\n * @memberof AccessResponse\n */\n frontendToken?: string;\n /**\n * \n * @type {string}\n * @memberof AccessResponse\n */\n backendMode?: string;\n}\n\n/**\n * Check if a given object implements the AccessResponse interface.\n */\nexport function instanceOfAccessResponse(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function AccessResponseFromJSON(json: any): AccessResponse {\n return AccessResponseFromJSONTyped(json, false);\n}\n\nexport function AccessResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): AccessResponse {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'frontendToken': !exists(json, 'frontendToken') ? undefined : json['frontendToken'],\n 'backendMode': !exists(json, 'backendMode') ? undefined : json['backendMode'],\n };\n}\n\nexport function AccessResponseToJSON(value?: AccessResponse | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'frontendToken': value.frontendToken,\n 'backendMode': value.backendMode,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * zrok\n * zrok client access\n *\n * The version of the OpenAPI document: 0.3.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface AuthUser\n */\nexport interface AuthUser {\n /**\n * \n * @type {string}\n * @memberof AuthUser\n */\n username?: string;\n /**\n * \n * @type {string}\n * @memberof AuthUser\n */\n password?: string;\n}\n\n/**\n * Check if a given object implements the AuthUser interface.\n */\nexport function instanceOfAuthUser(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function AuthUserFromJSON(json: any): AuthUser {\n return AuthUserFromJSONTyped(json, false);\n}\n\nexport function AuthUserFromJSONTyped(json: any, ignoreDiscriminator: boolean): AuthUser {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'username': !exists(json, 'username') ? undefined : json['username'],\n 'password': !exists(json, 'password') ? undefined : json['password'],\n };\n}\n\nexport function AuthUserToJSON(value?: AuthUser | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'username': value.username,\n 'password': value.password,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * zrok\n * zrok client access\n *\n * The version of the OpenAPI document: 0.3.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface SparkDataSample\n */\nexport interface SparkDataSample {\n /**\n * \n * @type {number}\n * @memberof SparkDataSample\n */\n rx?: number;\n /**\n * \n * @type {number}\n * @memberof SparkDataSample\n */\n tx?: number;\n}\n\n/**\n * Check if a given object implements the SparkDataSample interface.\n */\nexport function instanceOfSparkDataSample(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function SparkDataSampleFromJSON(json: any): SparkDataSample {\n return SparkDataSampleFromJSONTyped(json, false);\n}\n\nexport function SparkDataSampleFromJSONTyped(json: any, ignoreDiscriminator: boolean): SparkDataSample {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'rx': !exists(json, 'rx') ? undefined : json['rx'],\n 'tx': !exists(json, 'tx') ? undefined : json['tx'],\n };\n}\n\nexport function SparkDataSampleToJSON(value?: SparkDataSample | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'rx': value.rx,\n 'tx': value.tx,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * zrok\n * zrok client access\n *\n * The version of the OpenAPI document: 0.3.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { SparkDataSample } from './SparkDataSample';\nimport {\n SparkDataSampleFromJSON,\n SparkDataSampleFromJSONTyped,\n SparkDataSampleToJSON,\n} from './SparkDataSample';\n\n/**\n * \n * @export\n * @interface Environment\n */\nexport interface Environment {\n /**\n * \n * @type {string}\n * @memberof Environment\n */\n description?: string;\n /**\n * \n * @type {string}\n * @memberof Environment\n */\n host?: string;\n /**\n * \n * @type {string}\n * @memberof Environment\n */\n address?: string;\n /**\n * \n * @type {string}\n * @memberof Environment\n */\n zId?: string;\n /**\n * \n * @type {Array<SparkDataSample>}\n * @memberof Environment\n */\n activity?: Array<SparkDataSample>;\n /**\n * \n * @type {boolean}\n * @memberof Environment\n */\n limited?: boolean;\n /**\n * \n * @type {number}\n * @memberof Environment\n */\n createdAt?: number;\n /**\n * \n * @type {number}\n * @memberof Environment\n */\n updatedAt?: number;\n}\n\n/**\n * Check if a given object implements the Environment interface.\n */\nexport function instanceOfEnvironment(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function EnvironmentFromJSON(json: any): Environment {\n return EnvironmentFromJSONTyped(json, false);\n}\n\nexport function EnvironmentFromJSONTyped(json: any, ignoreDiscriminator: boolean): Environment {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'description': !exists(json, 'description') ? undefined : json['description'],\n 'host': !exists(json, 'host') ? undefined : json['host'],\n 'address': !exists(json, 'address') ? undefined : json['address'],\n 'zId': !exists(json, 'zId') ? undefined : json['zId'],\n 'activity': !exists(json, 'activity') ? undefined : ((json['activity'] as Array<any>).map(SparkDataSampleFromJSON)),\n 'limited': !exists(json, 'limited') ? undefined : json['limited'],\n 'createdAt': !exists(json, 'createdAt') ? undefined : json['createdAt'],\n 'updatedAt': !exists(json, 'updatedAt') ? undefined : json['updatedAt'],\n };\n}\n\nexport function EnvironmentToJSON(value?: Environment | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'description': value.description,\n 'host': value.host,\n 'address': value.address,\n 'zId': value.zId,\n 'activity': value.activity === undefined ? undefined : ((value.activity as Array<any>).map(SparkDataSampleToJSON)),\n 'limited': value.limited,\n 'createdAt': value.createdAt,\n 'updatedAt': value.updatedAt,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * zrok\n * zrok client access\n *\n * The version of the OpenAPI document: 0.3.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface Frontend\n */\nexport interface Frontend {\n /**\n * \n * @type {number}\n * @memberof Frontend\n */\n id?: number;\n /**\n * \n * @type {string}\n * @memberof Frontend\n */\n shrToken?: string;\n /**\n * \n * @type {string}\n * @memberof Frontend\n */\n zId?: string;\n /**\n * \n * @type {number}\n * @memberof Frontend\n */\n createdAt?: number;\n /**\n * \n * @type {number}\n * @memberof Frontend\n */\n updatedAt?: number;\n}\n\n/**\n * Check if a given object implements the Frontend interface.\n */\nexport function instanceOfFrontend(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function FrontendFromJSON(json: any): Frontend {\n return FrontendFromJSONTyped(json, false);\n}\n\nexport function FrontendFromJSONTyped(json: any, ignoreDiscriminator: boolean): Frontend {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'id': !exists(json, 'id') ? undefined : json['id'],\n 'shrToken': !exists(json, 'shrToken') ? undefined : json['shrToken'],\n 'zId': !exists(json, 'zId') ? undefined : json['zId'],\n 'createdAt': !exists(json, 'createdAt') ? undefined : json['createdAt'],\n 'updatedAt': !exists(json, 'updatedAt') ? undefined : json['updatedAt'],\n };\n}\n\nexport function FrontendToJSON(value?: Frontend | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'id': value.id,\n 'shrToken': value.shrToken,\n 'zId': value.zId,\n 'createdAt': value.createdAt,\n 'updatedAt': value.updatedAt,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * zrok\n * zrok client access\n *\n * The version of the OpenAPI document: 0.3.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { SparkDataSample } from './SparkDataSample';\nimport {\n SparkDataSampleFromJSON,\n SparkDataSampleFromJSONTyped,\n SparkDataSampleToJSON,\n} from './SparkDataSample';\n\n/**\n * \n * @export\n * @interface Share\n */\nexport interface Share {\n /**\n * \n * @type {string}\n * @memberof Share\n */\n token?: string;\n /**\n * \n * @type {string}\n * @memberof Share\n */\n zId?: string;\n /**\n * \n * @type {string}\n * @memberof Share\n */\n shareMode?: string;\n /**\n * \n * @type {string}\n * @memberof Share\n */\n backendMode?: string;\n /**\n * \n * @type {string}\n * @memberof Share\n */\n frontendSelection?: string;\n /**\n * \n * @type {string}\n * @memberof Share\n */\n frontendEndpoint?: string;\n /**\n * \n * @type {string}\n * @memberof Share\n */\n backendProxyEndpoint?: string;\n /**\n * \n * @type {boolean}\n * @memberof Share\n */\n reserved?: boolean;\n /**\n * \n * @type {Array<SparkDataSample>}\n * @memberof Share\n */\n activity?: Array<SparkDataSample>;\n /**\n * \n * @type {boolean}\n * @memberof Share\n */\n limited?: boolean;\n /**\n * \n * @type {number}\n * @memberof Share\n */\n createdAt?: number;\n /**\n * \n * @type {number}\n * @memberof Share\n */\n updatedAt?: number;\n}\n\n/**\n * Check if a given object implements the Share interface.\n */\nexport function instanceOfShare(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ShareFromJSON(json: any): Share {\n return ShareFromJSONTyped(json, false);\n}\n\nexport function ShareFromJSONTyped(json: any, ignoreDiscriminator: boolean): Share {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'token': !exists(json, 'token') ? undefined : json['token'],\n 'zId': !exists(json, 'zId') ? undefined : json['zId'],\n 'shareMode': !exists(json, 'shareMode') ? undefined : json['shareMode'],\n 'backendMode': !exists(json, 'backendMode') ? undefined : json['backendMode'],\n 'frontendSelection': !exists(json, 'frontendSelection') ? undefined : json['frontendSelection'],\n 'frontendEndpoint': !exists(json, 'frontendEndpoint') ? undefined : json['frontendEndpoint'],\n 'backendProxyEndpoint': !exists(json, 'backendProxyEndpoint') ? undefined : json['backendProxyEndpoint'],\n 'reserved': !exists(json, 'reserved') ? undefined : json['reserved'],\n 'activity': !exists(json, 'activity') ? undefined : ((json['activity'] as Array<any>).map(SparkDataSampleFromJSON)),\n 'limited': !exists(json, 'limited') ? undefined : json['limited'],\n 'createdAt': !exists(json, 'createdAt') ? undefined : json['createdAt'],\n 'updatedAt': !exists(json, 'updatedAt') ? undefined : json['updatedAt'],\n };\n}\n\nexport function ShareToJSON(value?: Share | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'token': value.token,\n 'zId': value.zId,\n 'shareMode': value.shareMode,\n 'backendMode': value.backendMode,\n 'frontendSelection': value.frontendSelection,\n 'frontendEndpoint': value.frontendEndpoint,\n 'backendProxyEndpoint': value.backendProxyEndpoint,\n 'reserved': value.reserved,\n 'activity': value.activity === undefined ? undefined : ((value.activity as Array<any>).map(SparkDataSampleToJSON)),\n 'limited': value.limited,\n 'createdAt': value.createdAt,\n 'updatedAt': value.updatedAt,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * zrok\n * zrok client access\n *\n * The version of the OpenAPI document: 0.3.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { Environment } from './Environment';\nimport {\n EnvironmentFromJSON,\n EnvironmentFromJSONTyped,\n EnvironmentToJSON,\n} from './Environment';\nimport type { Frontend } from './Frontend';\nimport {\n FrontendFromJSON,\n FrontendFromJSONTyped,\n FrontendToJSON,\n} from './Frontend';\nimport type { Share } from './Share';\nimport {\n ShareFromJSON,\n ShareFromJSONTyped,\n ShareToJSON,\n} from './Share';\n\n/**\n * \n * @export\n * @interface EnvironmentAndResources\n */\nexport interface EnvironmentAndResources {\n /**\n * \n * @type {Environment}\n * @memberof EnvironmentAndResources\n */\n environment?: Environment;\n /**\n * \n * @type {Array<Frontend>}\n * @memberof EnvironmentAndResources\n */\n frontends?: Array<Frontend>;\n /**\n * \n * @type {Array<Share>}\n * @memberof EnvironmentAndResources\n */\n shares?: Array<Share>;\n}\n\n/**\n * Check if a given object implements the EnvironmentAndResources interface.\n */\nexport function instanceOfEnvironmentAndResources(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function EnvironmentAndResourcesFromJSON(json: any): EnvironmentAndResources {\n return EnvironmentAndResourcesFromJSONTyped(json, false);\n}\n\nexport function EnvironmentAndResourcesFromJSONTyped(json: any, ignoreDiscriminator: boolean): EnvironmentAndResources {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'environment': !exists(json, 'environment') ? undefined : EnvironmentFromJSON(json['environment']),\n 'frontends': !exists(json, 'frontends') ? undefined : ((json['frontends'] as Array<any>).map(FrontendFromJSON)),\n 'shares': !exists(json, 'shares') ? undefined : ((json['shares'] as Array<any>).map(ShareFromJSON)),\n };\n}\n\nexport function EnvironmentAndResourcesToJSON(value?: EnvironmentAndResources | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'environment': EnvironmentToJSON(value.environment),\n 'frontends': value.frontends === undefined ? undefined : ((value.frontends as Array<any>).map(FrontendToJSON)),\n 'shares': value.shares === undefined ? undefined : ((value.shares as Array<any>).map(ShareToJSON)),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * zrok\n * zrok client access\n *\n * The version of the OpenAPI document: 0.3.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface MetricsSample\n */\nexport interface MetricsSample {\n /**\n * \n * @type {number}\n * @memberof MetricsSample\n */\n rx?: number;\n /**\n * \n * @type {number}\n * @memberof MetricsSample\n */\n tx?: number;\n /**\n * \n * @type {number}\n * @memberof MetricsSample\n */\n timestamp?: number;\n}\n\n/**\n * Check if a given object implements the MetricsSample interface.\n */\nexport function instanceOfMetricsSample(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function MetricsSampleFromJSON(json: any): MetricsSample {\n return MetricsSampleFromJSONTyped(json, false);\n}\n\nexport function MetricsSampleFromJSONTyped(json: any, ignoreDiscriminator: boolean): MetricsSample {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'rx': !exists(json, 'rx') ? undefined : json['rx'],\n 'tx': !exists(json, 'tx') ? undefined : json['tx'],\n 'timestamp': !exists(json, 'timestamp') ? undefined : json['timestamp'],\n };\n}\n\nexport function MetricsSampleToJSON(value?: MetricsSample | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'rx': value.rx,\n 'tx': value.tx,\n 'timestamp': value.timestamp,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * zrok\n * zrok client access\n *\n * The version of the OpenAPI document: 0.3.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { MetricsSample } from './MetricsSample';\nimport {\n MetricsSampleFromJSON,\n MetricsSampleFromJSONTyped,\n MetricsSampleToJSON,\n} from './MetricsSample';\n\n/**\n * \n * @export\n * @interface Metrics\n */\nexport interface Metrics {\n /**\n * \n * @type {string}\n * @memberof Metrics\n */\n scope?: string;\n /**\n * \n * @type {string}\n * @memberof Metrics\n */\n id?: string;\n /**\n * \n * @type {number}\n * @memberof Metrics\n */\n period?: number;\n /**\n * \n * @type {Array<MetricsSample>}\n * @memberof Metrics\n */\n samples?: Array<MetricsSample>;\n}\n\n/**\n * Check if a given object implements the Metrics interface.\n */\nexport function instanceOfMetrics(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function MetricsFromJSON(json: any): Metrics {\n return MetricsFromJSONTyped(json, false);\n}\n\nexport function MetricsFromJSONTyped(json: any, ignoreDiscriminator: boolean): Metrics {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'scope': !exists(json, 'scope') ? undefined : json['scope'],\n 'id': !exists(json, 'id') ? undefined : json['id'],\n 'period': !exists(json, 'period') ? undefined : json['period'],\n 'samples': !exists(json, 'samples') ? undefined : ((json['samples'] as Array<any>).map(MetricsSampleFromJSON)),\n };\n}\n\nexport function MetricsToJSON(value?: Metrics | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'scope': value.scope,\n 'id': value.id,\n 'period': value.period,\n 'samples': value.samples === undefined ? undefined : ((value.samples as Array<any>).map(MetricsSampleToJSON)),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * zrok\n * zrok client access\n *\n * The version of the OpenAPI document: 0.3.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface PasswordRequirements\n */\nexport interface PasswordRequirements {\n /**\n * \n * @type {number}\n * @memberof PasswordRequirements\n */\n length?: number;\n /**\n * \n * @type {boolean}\n * @memberof PasswordRequirements\n */\n requireCapital?: boolean;\n /**\n * \n * @type {boolean}\n * @memberof PasswordRequirements\n */\n requireNumeric?: boolean;\n /**\n * \n * @type {boolean}\n * @memberof PasswordRequirements\n */\n requireSpecial?: boolean;\n /**\n * \n * @type {string}\n * @memberof PasswordRequirements\n */\n validSpecialCharacters?: string;\n}\n\n/**\n * Check if a given object implements the PasswordRequirements interface.\n */\nexport function instanceOfPasswordRequirements(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function PasswordRequirementsFromJSON(json: any): PasswordRequirements {\n return PasswordRequirementsFromJSONTyped(json, false);\n}\n\nexport function PasswordRequirementsFromJSONTyped(json: any, ignoreDiscriminator: boolean): PasswordRequirements {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'length': !exists(json, 'length') ? undefined : json['length'],\n 'requireCapital': !exists(json, 'requireCapital') ? undefined : json['requireCapital'],\n 'requireNumeric': !exists(json, 'requireNumeric') ? undefined : json['requireNumeric'],\n 'requireSpecial': !exists(json, 'requireSpecial') ? undefined : json['requireSpecial'],\n 'validSpecialCharacters': !exists(json, 'validSpecialCharacters') ? undefined : json['validSpecialCharacters'],\n };\n}\n\nexport function PasswordRequirementsToJSON(value?: PasswordRequirements | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'length': value.length,\n 'requireCapital': value.requireCapital,\n 'requireNumeric': value.requireNumeric,\n 'requireSpecial': value.requireSpecial,\n 'validSpecialCharacters': value.validSpecialCharacters,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * zrok\n * zrok client access\n *\n * The version of the OpenAPI document: 0.3.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { PasswordRequirements } from './PasswordRequirements';\nimport {\n PasswordRequirementsFromJSON,\n PasswordRequirementsFromJSONTyped,\n PasswordRequirementsToJSON,\n} from './PasswordRequirements';\n\n/**\n * \n * @export\n * @interface ModelConfiguration\n */\nexport interface ModelConfiguration {\n /**\n * \n * @type {string}\n * @memberof ModelConfiguration\n */\n version?: string;\n /**\n * \n * @type {string}\n * @memberof ModelConfiguration\n */\n touLink?: string;\n /**\n * \n * @type {boolean}\n * @memberof ModelConfiguration\n */\n invitesOpen?: boolean;\n /**\n * \n * @type {boolean}\n * @memberof ModelConfiguration\n */\n requiresInviteToken?: boolean;\n /**\n * \n * @type {string}\n * @memberof ModelConfiguration\n */\n inviteTokenContact?: string;\n /**\n * \n * @type {PasswordRequirements}\n * @memberof ModelConfiguration\n */\n passwordRequirements?: PasswordRequirements;\n}\n\n/**\n * Check if a given object implements the ModelConfiguration interface.\n */\nexport function instanceOfModelConfiguration(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ModelConfigurationFromJSON(json: any): ModelConfiguration {\n return ModelConfigurationFromJSONTyped(json, false);\n}\n\nexport function ModelConfigurationFromJSONTyped(json: any, ignoreDiscriminator: boolean): ModelConfiguration {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'version': !exists(json, 'version') ? undefined : json['version'],\n 'touLink': !exists(json, 'touLink') ? undefined : json['touLink'],\n 'invitesOpen': !exists(json, 'invitesOpen') ? undefined : json['invitesOpen'],\n 'requiresInviteToken': !exists(json, 'requiresInviteToken') ? undefined : json['requiresInviteToken'],\n 'inviteTokenContact': !exists(json, 'inviteTokenContact') ? undefined : json['inviteTokenContact'],\n 'passwordRequirements': !exists(json, 'passwordRequirements') ? undefined : PasswordRequirementsFromJSON(json['passwordRequirements']),\n };\n}\n\nexport function ModelConfigurationToJSON(value?: ModelConfiguration | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'version': value.version,\n 'touLink': value.touLink,\n 'invitesOpen': value.invitesOpen,\n 'requiresInviteToken': value.requiresInviteToken,\n 'inviteTokenContact': value.inviteTokenContact,\n 'passwordRequirements': PasswordRequirementsToJSON(value.passwordRequirements),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * zrok\n * zrok client access\n *\n * The version of the OpenAPI document: 0.3.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { EnvironmentAndResources } from './EnvironmentAndResources';\nimport {\n EnvironmentAndResourcesFromJSON,\n EnvironmentAndResourcesFromJSONTyped,\n EnvironmentAndResourcesToJSON,\n} from './EnvironmentAndResources';\n\n/**\n * \n * @export\n * @interface Overview\n */\nexport interface Overview {\n /**\n * \n * @type {boolean}\n * @memberof Overview\n */\n accountLimited?: boolean;\n /**\n * \n * @type {Array<EnvironmentAndResources>}\n * @memberof Overview\n */\n environments?: Array<EnvironmentAndResources>;\n}\n\n/**\n * Check if a given object implements the Overview interface.\n */\nexport function instanceOfOverview(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function OverviewFromJSON(json: any): Overview {\n return OverviewFromJSONTyped(json, false);\n}\n\nexport function OverviewFromJSONTyped(json: any, ignoreDiscriminator: boolean): Overview {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'accountLimited': !exists(json, 'accountLimited') ? undefined : json['accountLimited'],\n 'environments': !exists(json, 'environments') ? undefined : ((json['environments'] as Array<any>).map(EnvironmentAndResourcesFromJSON)),\n };\n}\n\nexport function OverviewToJSON(value?: Overview | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'accountLimited': value.accountLimited,\n 'environments': value.environments === undefined ? undefined : ((value.environments as Array<any>).map(EnvironmentAndResourcesToJSON)),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * zrok\n * zrok client access\n *\n * The version of the OpenAPI document: 0.3.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { AuthUser } from './AuthUser';\nimport {\n AuthUserFromJSON,\n AuthUserFromJSONTyped,\n AuthUserToJSON,\n} from './AuthUser';\n\n/**\n * \n * @export\n * @interface ShareRequest\n */\nexport interface ShareRequest {\n /**\n * \n * @type {string}\n * @memberof ShareRequest\n */\n envZId?: string;\n /**\n * \n * @type {string}\n * @memberof ShareRequest\n */\n shareMode?: ShareRequestShareModeEnum;\n /**\n * \n * @type {Array<string>}\n * @memberof ShareRequest\n */\n frontendSelection?: Array<string>;\n /**\n * \n * @type {string}\n * @memberof ShareRequest\n */\n backendMode?: ShareRequestBackendModeEnum;\n /**\n * \n * @type {string}\n * @memberof ShareRequest\n */\n backendProxyEndpoint?: string;\n /**\n * \n * @type {string}\n * @memberof ShareRequest\n */\n authScheme?: string;\n /**\n * \n * @type {Array<AuthUser>}\n * @memberof ShareRequest\n */\n authUsers?: Array<AuthUser>;\n /**\n * \n * @type {string}\n * @memberof ShareRequest\n */\n oauthProvider?: ShareRequestOauthProviderEnum;\n /**\n * \n * @type {Array<string>}\n * @memberof ShareRequest\n */\n oauthEmailDomains?: Array<string>;\n /**\n * \n * @type {string}\n * @memberof ShareRequest\n */\n oauthAuthorizationCheckInterval?: string;\n /**\n * \n * @type {boolean}\n * @memberof ShareRequest\n */\n reserved?: boolean;\n}\n\n\n/**\n * @export\n */\nexport const ShareRequestShareModeEnum = {\n Public: 'public',\n Private: 'private'\n} as const;\nexport type ShareRequestShareModeEnum = typeof ShareRequestShareModeEnum[keyof typeof ShareRequestShareModeEnum];\n\n/**\n * @export\n */\nexport const ShareRequestBackendModeEnum = {\n Proxy: 'proxy',\n Web: 'web',\n TcpTunnel: 'tcpTunnel',\n UdpTunnel: 'udpTunnel',\n Caddy: 'caddy'\n} as const;\nexport type ShareRequestBackendModeEnum = typeof ShareRequestBackendModeEnum[keyof typeof ShareRequestBackendModeEnum];\n\n/**\n * @export\n */\nexport const ShareRequestOauthProviderEnum = {\n Github: 'github',\n Google: 'google'\n} as const;\nexport type ShareRequestOauthProviderEnum = typeof ShareRequestOauthProviderEnum[keyof typeof ShareRequestOauthProviderEnum];\n\n\n/**\n * Check if a given object implements the ShareRequest interface.\n */\nexport function instanceOfShareRequest(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ShareRequestFromJSON(json: any): ShareRequest {\n return ShareRequestFromJSONTyped(json, false);\n}\n\nexport function ShareRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): ShareRequest {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'envZId': !exists(json, 'envZId') ? undefined : json['envZId'],\n 'shareMode': !exists(json, 'shareMode') ? undefined : json['shareMode'],\n 'frontendSelection': !exists(json, 'frontendSelection') ? undefined : json['frontendSelection'],\n 'backendMode': !exists(json, 'backendMode') ? undefined : json['backendMode'],\n 'backendProxyEndpoint': !exists(json, 'backendProxyEndpoint') ? undefined : json['backendProxyEndpoint'],\n 'authScheme': !exists(json, 'authScheme') ? undefined : json['authScheme'],\n 'authUsers': !exists(json, 'authUsers') ? undefined : ((json['authUsers'] as Array<any>).map(AuthUserFromJSON)),\n 'oauthProvider': !exists(json, 'oauthProvider') ? undefined : json['oauthProvider'],\n 'oauthEmailDomains': !exists(json, 'oauthEmailDomains') ? undefined : json['oauthEmailDomains'],\n 'oauthAuthorizationCheckInterval': !exists(json, 'oauthAuthorizationCheckInterval') ? undefined : json['oauthAuthorizationCheckInterval'],\n 'reserved': !exists(json, 'reserved') ? undefined : json['reserved'],\n };\n}\n\nexport function ShareRequestToJSON(value?: ShareRequest | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'envZId': value.envZId,\n 'shareMode': value.shareMode,\n 'frontendSelection': value.frontendSelection,\n 'backendMode': value.backendMode,\n 'backendProxyEndpoint': value.backendProxyEndpoint,\n 'authScheme': value.authScheme,\n 'authUsers': value.authUsers === undefined ? undefined : ((value.authUsers as Array<any>).map(AuthUserToJSON)),\n 'oauthProvider': value.oauthProvider,\n 'oauthEmailDomains': value.oauthEmailDomains,\n 'oauthAuthorizationCheckInterval': value.oauthAuthorizationCheckInterval,\n 'reserved': value.reserved,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * zrok\n * zrok client access\n *\n * The version of the OpenAPI document: 0.3.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface ShareResponse\n */\nexport interface ShareResponse {\n /**\n * \n * @type {Array<string>}\n * @memberof ShareResponse\n */\n frontendProxyEndpoints?: Array<string>;\n /**\n * \n * @type {string}\n * @memberof ShareResponse\n */\n shrToken?: string;\n}\n\n/**\n * Check if a given object implements the ShareResponse interface.\n */\nexport function instanceOfShareResponse(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function ShareResponseFromJSON(json: any): ShareResponse {\n return ShareResponseFromJSONTyped(json, false);\n}\n\nexport function ShareResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ShareResponse {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'frontendProxyEndpoints': !exists(json, 'frontendProxyEndpoints') ? undefined : json['frontendProxyEndpoints'],\n 'shrToken': !exists(json, 'shrToken') ? undefined : json['shrToken'],\n };\n}\n\nexport function ShareResponseToJSON(value?: ShareResponse | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'frontendProxyEndpoints': value.frontendProxyEndpoints,\n 'shrToken': value.shrToken,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * zrok\n * zrok client access\n *\n * The version of the OpenAPI document: 0.3.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface UnaccessRequest\n */\nexport interface UnaccessRequest {\n /**\n * \n * @type {string}\n * @memberof UnaccessRequest\n */\n frontendToken?: string;\n /**\n * \n * @type {string}\n * @memberof UnaccessRequest\n */\n envZId?: string;\n /**\n * \n * @type {string}\n * @memberof UnaccessRequest\n */\n shrToken?: string;\n}\n\n/**\n * Check if a given object implements the UnaccessRequest interface.\n */\nexport function instanceOfUnaccessRequest(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function UnaccessRequestFromJSON(json: any): UnaccessRequest {\n return UnaccessRequestFromJSONTyped(json, false);\n}\n\nexport function UnaccessRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): UnaccessRequest {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'frontendToken': !exists(json, 'frontendToken') ? undefined : json['frontendToken'],\n 'envZId': !exists(json, 'envZId') ? undefined : json['envZId'],\n 'shrToken': !exists(json, 'shrToken') ? undefined : json['shrToken'],\n };\n}\n\nexport function UnaccessRequestToJSON(value?: UnaccessRequest | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'frontendToken': value.frontendToken,\n 'envZId': value.envZId,\n 'shrToken': value.shrToken,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * zrok\n * zrok client access\n *\n * The version of the OpenAPI document: 0.3.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface UnshareRequest\n */\nexport interface UnshareRequest {\n /**\n * \n * @type {string}\n * @memberof UnshareRequest\n */\n envZId?: string;\n /**\n * \n * @type {string}\n * @memberof UnshareRequest\n */\n shrToken?: string;\n /**\n * \n * @type {boolean}\n * @memberof UnshareRequest\n */\n reserved?: boolean;\n}\n\n/**\n * Check if a given object implements the UnshareRequest interface.\n */\nexport function instanceOfUnshareRequest(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function UnshareRequestFromJSON(json: any): UnshareRequest {\n return UnshareRequestFromJSONTyped(json, false);\n}\n\nexport function UnshareRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): UnshareRequest {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'envZId': !exists(json, 'envZId') ? undefined : json['envZId'],\n 'shrToken': !exists(json, 'shrToken') ? undefined : json['shrToken'],\n 'reserved': !exists(json, 'reserved') ? undefined : json['reserved'],\n };\n}\n\nexport function UnshareRequestToJSON(value?: UnshareRequest | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'envZId': value.envZId,\n 'shrToken': value.shrToken,\n 'reserved': value.reserved,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * zrok\n * zrok client access\n *\n * The version of the OpenAPI document: 0.3.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface UpdateShareRequest\n */\nexport interface UpdateShareRequest {\n /**\n * \n * @type {string}\n * @memberof UpdateShareRequest\n */\n shrToken?: string;\n /**\n * \n * @type {string}\n * @memberof UpdateShareRequest\n */\n backendProxyEndpoint?: string;\n}\n\n/**\n * Check if a given object implements the UpdateShareRequest interface.\n */\nexport function instanceOfUpdateShareRequest(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function UpdateShareRequestFromJSON(json: any): UpdateShareRequest {\n return UpdateShareRequestFromJSONTyped(json, false);\n}\n\nexport function UpdateShareRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): UpdateShareRequest {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'shrToken': !exists(json, 'shrToken') ? undefined : json['shrToken'],\n 'backendProxyEndpoint': !exists(json, 'backendProxyEndpoint') ? undefined : json['backendProxyEndpoint'],\n };\n}\n\nexport function UpdateShareRequestToJSON(value?: UpdateShareRequest | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'shrToken': value.shrToken,\n 'backendProxyEndpoint': value.backendProxyEndpoint,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * zrok\n * zrok client access\n *\n * The version of the OpenAPI document: 0.3.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n Environment,\n EnvironmentAndResources,\n Frontend,\n Metrics,\n ModelConfiguration,\n Overview,\n Share,\n} from '../models/index';\nimport {\n EnvironmentFromJSON,\n EnvironmentToJSON,\n EnvironmentAndResourcesFromJSON,\n EnvironmentAndResourcesToJSON,\n FrontendFromJSON,\n FrontendToJSON,\n MetricsFromJSON,\n MetricsToJSON,\n ModelConfigurationFromJSON,\n ModelConfigurationToJSON,\n OverviewFromJSON,\n OverviewToJSON,\n ShareFromJSON,\n ShareToJSON,\n} from '../models/index';\n\nexport interface GetAccountMetricsRequest {\n duration?: string;\n}\n\nexport interface GetEnvironmentDetailRequest {\n envZId: string;\n}\n\nexport interface GetEnvironmentMetricsRequest {\n envId: string;\n duration?: string;\n}\n\nexport interface GetFrontendDetailRequest {\n feId: number;\n}\n\nexport interface GetShareDetailRequest {\n shrToken: string;\n}\n\nexport interface GetShareMetricsRequest {\n shrToken: string;\n duration?: string;\n}\n\n/**\n * \n */\nexport class MetadataApi extends runtime.BaseAPI {\n\n /**\n */\n async _configurationRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<ModelConfiguration>> {\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/configuration`,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => ModelConfigurationFromJSON(jsonValue));\n }\n\n /**\n */\n async _configuration(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<ModelConfiguration> {\n const response = await this._configurationRaw(initOverrides);\n return await response.value();\n }\n\n /**\n */\n async getAccountDetailRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<Environment>>> {\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.apiKey) {\n headerParameters[\"x-token\"] = this.configuration.apiKey(\"x-token\"); // key authentication\n }\n\n const response = await this.request({\n path: `/detail/account`,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(EnvironmentFromJSON));\n }\n\n /**\n */\n async getAccountDetail(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<Environment>> {\n const response = await this.getAccountDetailRaw(initOverrides);\n return await response.value();\n }\n\n /**\n */\n async getAccountMetricsRaw(requestParameters: GetAccountMetricsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Metrics>> {\n const queryParameters: any = {};\n\n if (requestParameters.duration !== undefined) {\n queryParameters['duration'] = requestParameters.duration;\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.apiKey) {\n headerParameters[\"x-token\"] = this.configuration.apiKey(\"x-token\"); // key authentication\n }\n\n const response = await this.request({\n path: `/metrics/account`,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => MetricsFromJSON(jsonValue));\n }\n\n /**\n */\n async getAccountMetrics(requestParameters: GetAccountMetricsRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Metrics> {\n const response = await this.getAccountMetricsRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n */\n async getEnvironmentDetailRaw(requestParameters: GetEnvironmentDetailRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<EnvironmentAndResources>> {\n if (requestParameters.envZId === null || requestParameters.envZId === undefined) {\n throw new runtime.RequiredError('envZId','Required parameter requestParameters.envZId was null or undefined when calling getEnvironmentDetail.');\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.apiKey) {\n headerParameters[\"x-token\"] = this.configuration.apiKey(\"x-token\"); // key authentication\n }\n\n const response = await this.request({\n path: `/detail/environment/{envZId}`.replace(`{${\"envZId\"}}`, encodeURIComponent(String(requestParameters.envZId))),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => EnvironmentAndResourcesFromJSON(jsonValue));\n }\n\n /**\n */\n async getEnvironmentDetail(requestParameters: GetEnvironmentDetailRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<EnvironmentAndResources> {\n const response = await this.getEnvironmentDetailRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n */\n async getEnvironmentMetricsRaw(requestParameters: GetEnvironmentMetricsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Metrics>> {\n if (requestParameters.envId === null || requestParameters.envId === undefined) {\n throw new runtime.RequiredError('envId','Required parameter requestParameters.envId was null or undefined when calling getEnvironmentMetrics.');\n }\n\n const queryParameters: any = {};\n\n if (requestParameters.duration !== undefined) {\n queryParameters['duration'] = requestParameters.duration;\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.apiKey) {\n headerParameters[\"x-token\"] = this.configuration.apiKey(\"x-token\"); // key authentication\n }\n\n const response = await this.request({\n path: `/metrics/environment/{envId}`.replace(`{${\"envId\"}}`, encodeURIComponent(String(requestParameters.envId))),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => MetricsFromJSON(jsonValue));\n }\n\n /**\n */\n async getEnvironmentMetrics(requestParameters: GetEnvironmentMetricsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Metrics> {\n const response = await this.getEnvironmentMetricsRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n */\n async getFrontendDetailRaw(requestParameters: GetFrontendDetailRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Frontend>> {\n if (requestParameters.feId === null || requestParameters.feId === undefined) {\n throw new runtime.RequiredError('feId','Required parameter requestParameters.feId was null or undefined when calling getFrontendDetail.');\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.apiKey) {\n headerParameters[\"x-token\"] = this.configuration.apiKey(\"x-token\"); // key authentication\n }\n\n const response = await this.request({\n path: `/detail/frontend/{feId}`.replace(`{${\"feId\"}}`, encodeURIComponent(String(requestParameters.feId))),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => FrontendFromJSON(jsonValue));\n }\n\n /**\n */\n async getFrontendDetail(requestParameters: GetFrontendDetailRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Frontend> {\n const response = await this.getFrontendDetailRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n */\n async getShareDetailRaw(requestParameters: GetShareDetailRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Share>> {\n if (requestParameters.shrToken === null || requestParameters.shrToken === undefined) {\n throw new runtime.RequiredError('shrToken','Required parameter requestParameters.shrToken was null or undefined when calling getShareDetail.');\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.apiKey) {\n headerParameters[\"x-token\"] = this.configuration.apiKey(\"x-token\"); // key authentication\n }\n\n const response = await this.request({\n path: `/detail/share/{shrToken}`.replace(`{${\"shrToken\"}}`, encodeURIComponent(String(requestParameters.shrToken))),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => ShareFromJSON(jsonValue));\n }\n\n /**\n */\n async getShareDetail(requestParameters: GetShareDetailRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Share> {\n const response = await this.getShareDetailRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n */\n async getShareMetricsRaw(requestParameters: GetShareMetricsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Metrics>> {\n if (requestParameters.shrToken === null || requestParameters.shrToken === undefined) {\n throw new runtime.RequiredError('shrToken','Required parameter requestParameters.shrToken was null or undefined when calling getShareMetrics.');\n }\n\n const queryParameters: any = {};\n\n if (requestParameters.duration !== undefined) {\n queryParameters['duration'] = requestParameters.duration;\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.apiKey) {\n headerParameters[\"x-token\"] = this.configuration.apiKey(\"x-token\"); // key authentication\n }\n\n const response = await this.request({\n path: `/metrics/share/{shrToken}`.replace(`{${\"shrToken\"}}`, encodeURIComponent(String(requestParameters.shrToken))),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => MetricsFromJSON(jsonValue));\n }\n\n /**\n */\n async getShareMetrics(requestParameters: GetShareMetricsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Metrics> {\n const response = await this.getShareMetricsRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n */\n async overviewRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Overview>> {\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.apiKey) {\n headerParameters[\"x-token\"] = this.configuration.apiKey(\"x-token\"); // key authentication\n }\n\n const response = await this.request({\n path: `/overview`,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => OverviewFromJSON(jsonValue));\n }\n\n /**\n */\n async overview(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Overview> {\n const response = await this.overviewRaw(initOverrides);\n return await response.value();\n }\n\n /**\n */\n async versionRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<string>> {\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/version`,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n if (this.isJsonMime(response.headers.get('content-type'))) {\n return new runtime.JSONApiResponse<string>(response);\n } else {\n return new runtime.TextApiResponse(response) as any;\n }\n }\n\n /**\n */\n async version(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<string> {\n const response = await this.versionRaw(initOverrides);\n return await response.value();\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * zrok\n * zrok client access\n *\n * The version of the OpenAPI document: 0.3.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n AccessRequest,\n AccessResponse,\n ShareRequest,\n ShareResponse,\n UnaccessRequest,\n UnshareRequest,\n UpdateShareRequest,\n} from '../models/index';\nimport {\n AccessRequestFromJSON,\n AccessRequestToJSON,\n AccessResponseFromJSON,\n AccessResponseToJSON,\n ShareRequestFromJSON,\n ShareRequestToJSON,\n ShareResponseFromJSON,\n ShareResponseToJSON,\n UnaccessRequestFromJSON,\n UnaccessRequestToJSON,\n UnshareRequestFromJSON,\n UnshareRequestToJSON,\n UpdateShareRequestFromJSON,\n UpdateShareRequestToJSON,\n} from '../models/index';\n\nexport interface AccessOperationRequest {\n body?: AccessRequest;\n}\n\nexport interface ShareOperationRequest {\n body?: ShareRequest;\n}\n\nexport interface UnaccessOperationRequest {\n body?: UnaccessRequest;\n}\n\nexport interface UnshareOperationRequest {\n body?: UnshareRequest;\n}\n\nexport interface UpdateShareOperationRequest {\n body?: UpdateShareRequest;\n}\n\n/**\n * \n */\nexport class ShareApi extends runtime.BaseAPI {\n\n /**\n */\n async accessRaw(requestParameters: AccessOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<AccessResponse>> {\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/zrok.v1+json';\n\n if (this.configuration && this.configuration.apiKey) {\n headerParameters[\"x-token\"] = this.configuration.apiKey(\"x-token\"); // key authentication\n }\n\n const response = await this.request({\n path: `/access`,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: AccessRequestToJSON(requestParameters.body),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => AccessResponseFromJSON(jsonValue));\n }\n\n /**\n */\n async access(requestParameters: AccessOperationRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<AccessResponse> {\n const response = await this.accessRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n */\n async shareRaw(requestParameters: ShareOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<ShareResponse>> {\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/zrok.v1+json';\n\n if (this.configuration && this.configuration.apiKey) {\n headerParameters[\"x-token\"] = this.configuration.apiKey(\"x-token\"); // key authentication\n }\n\n const response = await this.request({\n path: `/share`,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: ShareRequestToJSON(requestParameters.body),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => ShareResponseFromJSON(jsonValue));\n }\n\n /**\n */\n async share(requestParameters: ShareOperationRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<ShareResponse> {\n const response = await this.shareRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n */\n async unaccessRaw(requestParameters: UnaccessOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<void>> {\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/zrok.v1+json';\n\n if (this.configuration && this.configuration.apiKey) {\n headerParameters[\"x-token\"] = this.configuration.apiKey(\"x-token\"); // key authentication\n }\n\n const response = await this.request({\n path: `/unaccess`,\n method: 'DELETE',\n headers: headerParameters,\n query: queryParameters,\n body: UnaccessRequestToJSON(requestParameters.body),\n }, initOverrides);\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n */\n async unaccess(requestParameters: UnaccessOperationRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<void> {\n await this.unaccessRaw(requestParameters, initOverrides);\n }\n\n /**\n */\n async unshareRaw(requestParameters: UnshareOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<void>> {\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/zrok.v1+json';\n\n if (this.configuration && this.configuration.apiKey) {\n headerParameters[\"x-token\"] = this.configuration.apiKey(\"x-token\"); // key authentication\n }\n\n const response = await this.request({\n path: `/unshare`,\n method: 'DELETE',\n headers: headerParameters,\n query: queryParameters,\n body: UnshareRequestToJSON(requestParameters.body),\n }, initOverrides);\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n */\n async unshare(requestParameters: UnshareOperationRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<void> {\n await this.unshareRaw(requestParameters, initOverrides);\n }\n\n /**\n */\n async updateShareRaw(requestParameters: UpdateShareOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<void>> {\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/zrok.v1+json';\n\n if (this.configuration && this.configuration.apiKey) {\n headerParameters[\"x-token\"] = this.configuration.apiKey(\"x-token\"); // key authentication\n }\n\n const response = await this.request({\n path: `/share`,\n method: 'PATCH',\n headers: headerParameters,\n query: queryParameters,\n body: UpdateShareRequestToJSON(requestParameters.body),\n }, initOverrides);\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n */\n async updateShare(requestParameters: UpdateShareOperationRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<void> {\n await this.updateShareRaw(requestParameters, initOverrides);\n }\n\n}\n","import {ShareRequestBackendModeEnum, ShareRequestShareModeEnum, ShareRequestOauthProviderEnum} from \"./api\"\n\nexport type BackendMode = string\n\nexport const PROXY_BACKEND_MODE: BackendMode = \"proxy\"\nexport const WEB_BACKEND_MODE: BackendMode = \"web\"\nexport const TCP_TUNNEL_BACKEND_MODE: BackendMode = \"tcpTunnel\"\nexport const UDP_TUNNEL_BACKEND_MODE: BackendMode = \"udpTunnel\"\nexport const CADDY_BACKEND_MODE: BackendMode = \"caddy\"\n\nexport type ShareMode = string\n\nexport const PRIVATE_SHARE_MODE: ShareMode = \"private\"\nexport const PUBLIC_SHARE_MODE: ShareMode = \"public\"\n\nexport class ShareRequest {\n BackendMode: BackendMode\n ShareMode: ShareMode\n Target: string\n Frontends: string[]\n BasicAuth: string[]\n OauthProvider: string\n OauthEmailDomains: string[]\n OauthAuthorizationCheckInterval: string\n\n constructor(backendMode: BackendMode,\n shareMode: ShareMode,\n target: string,\n frontends: string[] = [],\n basicAuth: string[] = [],\n oauthProvider: string = \"\",\n oauthEmailDomains: string[] = [],\n oauthAuthorizationCheckInterval: string = \"\") {\n this.BackendMode = backendMode\n this.ShareMode = shareMode\n this.Target = target\n this.Frontends = frontends\n this.BasicAuth = basicAuth\n this.OauthProvider = oauthProvider\n this.OauthEmailDomains = oauthEmailDomains\n this.OauthAuthorizationCheckInterval = oauthAuthorizationCheckInterval\n }\n}\n\nexport class Share {\n Token: string\n FrontendEndpoints: string[]\n\n constructor(Token: string, FrontendEndpoints: string[]) {\n this.Token = Token\n this.FrontendEndpoints = FrontendEndpoints\n }\n}\n\nexport class AccessRequest {\n ShareToken: string\n\n constructor(ShareToken: string) {\n this.ShareToken = ShareToken\n }\n}\n\nexport class Access {\n Token: string\n ShareToken: string\n BackendMode: BackendMode\n\n constructor(Token: string, ShareToken: string, BackendMode: BackendMode) {\n this.Token = Token\n this.ShareToken = ShareToken\n this.BackendMode = BackendMode\n }\n}\n\nexport class SessionMetrics {\n BytesRead: number\n BytesWritten: number\n LastUpdate: number\n\n constructor(BytesRead: number, BytesWrittern: number, LastUpdate: number) {\n this.BytesRead = BytesRead\n this.BytesWritten = BytesWrittern\n this.LastUpdate = LastUpdate\n }\n}\n\nexport class Metrics {\n Namespace: string\n Sessions: Record<string, SessionMetrics>\n\n constructor(Namespace: string, Sessions: Record<string, SessionMetrics>) {\n this.Namespace = Namespace\n this.Sessions = Sessions\n }\n}\n\nexport type AuthScheme = string\n\nexport const AUTH_SCHEME_NONE: AuthScheme = \"none\"\nexport const AUTH_SCHEME_BASIC: AuthScheme = \"basic\"\nexport const AUTH_SCHEME_OAUTH: AuthScheme = \"oauth\"\n\nexport function zrokBackendModeToOpenApi(z: BackendMode): ShareRequestBackendModeEnum | undefined{\n switch(z){\n case PROXY_BACKEND_MODE:\n return ShareRequestBackendModeEnum.Proxy\n case WEB_BACKEND_MODE:\n return ShareRequestBackendModeEnum.Web\n case TCP_TUNNEL_BACKEND_MODE:\n return ShareRequestBackendModeEnum.TcpTunnel\n case UDP_TUNNEL_BACKEND_MODE:\n return ShareRequestBackendModeEnum.UdpTunnel\n case CADDY_BACKEND_MODE:\n return ShareRequestBackendModeEnum.Caddy\n default:\n return undefined\n }\n}\n\nexport function zrokShareModeToOpenApi(z: ShareMode): ShareRequestShareModeEnum | undefined {\n switch(z) {\n case PRIVATE_SHARE_MODE:\n return ShareRequestShareModeEnum.Private\n case PUBLIC_SHARE_MODE:\n return ShareRequestShareModeEnum.Public\n default:\n return undefined\n }\n}\n\nexport function zrokOauthProviderToOpenApi(z: string): ShareRequestOauthProviderEnum | undefined {\n switch(z.toLowerCase()){\n case ShareRequestOauthProviderEnum.Github.toString().toLowerCase():\n return ShareRequestOauthProviderEnum.Github\n case ShareRequestOauthProviderEnum.Google.toString().toLowerCase():\n return ShareRequestOauthProviderEnum.Google \n default:\n return undefined \n }\n}","import {Root} from \"../environment/root\"\nimport {\n Share,\n ShareApi,\n ShareRequest,\n ShareResponse,\n AuthUser,\n ShareRequestOauthProviderEnum,\n ShareRequestShareModeEnum,\n UnshareRequest} from \"./api\"\nimport * as model from \"./model\"\n\nexport function CreateShare(root: Root, request: model.ShareRequest): model.Share | null | undefined {\n if (!root.IsEnabled()){\n throw new Error(\"environment is not enabled; enable with 'zrok enable' first!\")\n }\n let out: ShareRequest\n\n switch(request.ShareMode) {\n case ShareRequestShareModeEnum.Private:\n out = newPrivateShare(root, request)\n break\n case ShareRequestShareModeEnum.Public:\n out = newPublicShare(root, request)\n break\n default:\n throw new Error(\"unknown share mode \" + request.ShareMode)\n }\n\n if (request.BasicAuth.length > 0) {\n out.authScheme = model.AUTH_SCHEME_BASIC\n for(let pair in request.BasicAuth) {\n let tokens = pair.split(\":\")\n if (tokens.length === 2) {\n if (out.authUsers === undefined) {\n out.authUsers = new Array<AuthUser>\n }\n out.authUsers.push({username: tokens[0].trim(), password: tokens[1].trim()})\n }\n else {\n throw new Error(\"invalid username:password pair: \" + pair)\n }\n }\n }\n\n if (request.OauthProvider !== undefined) {\n out.authScheme = model.AUTH_SCHEME_OAUTH\n }\n\n let client = new ShareApi(root.Client())\n let shr: model.Share | null = null\n client.share({body: out})\n .then(resp => {\n console.log(\"creating shr ret\")\n shr = new model.Share(resp.shrToken||\"\", resp.frontendProxyEndpoints||[])\n console.log(shr)\n })\n .catch(resp => {\n console.log(\"unable to create share\")\n throw new Error(\"unable to create share \" + resp)\n })\n console.log(\"wat\")\n console.log(shr)\n return shr\n}\n\nfunction newPrivateShare(root: Root, request: model.ShareRequest): ShareRequest {\n return {envZId: root.env.ZitiIdentity,\n shareMode: model.zrokShareModeToOpenApi(request.ShareMode),\n backendMode: model.zrokBackendModeToOpenApi(request.BackendMode),\n backendProxyEndpoint: request.Target,\n authScheme: model.AUTH_SCHEME_NONE}\n}\n\nfunction newPublicShare(root: Root, request: model.ShareRequest): ShareRequest {\n return {envZId: root.env.ZitiIdentity,\n shareMode: model.zrokShareModeToOpenApi(request.ShareMode),\n backendMode: model.zrokBackendModeToOpenApi(request.BackendMode),\n backendProxyEndpoint: request.Target,\n authScheme: model.AUTH_SCHEME_NONE,\n oauthProvider: model.zrokOauthProviderToOpenApi(request.OauthProvider),\n oauthEmailDomains: request.OauthEmailDomains,\n oauthAuthorizationCheckInterval: request.OauthAuthorizationCheckInterval}\n}\n\nexport function DeleteShare(root: Root, shr: model.Share) {\n let client = new ShareApi(root.Client())\n let req: UnshareRequest = {\n envZId: root.env.ZitiIdentity,\n shrToken: shr.Token,\n }\n req.envZId = root.env.ZitiIdentity\n client.unshare({body: {}})\n .catch(resp => {\n throw new Error(\"error deleting share \" + resp)\n })\n}","import { homedir } from \"os\"\nimport { join } from \"node:path\"\n\nexport function rootDir(): string {\n return join(homedir(), \".zrok\")\n}\n\nexport function metadataFile(): string {\n return join(rootDir(), \"metadata.json\")\n}\n\nexport function configFile(): string {\n return join(rootDir(), \"config.json\")\n}\n\nexport function environmentFile(): string {\n return join(rootDir(), \"environment.json\")\n}\n\nexport function identitiesDir(): string {\n return join(rootDir(), \"identities\")\n}\n\nexport function identityFile(name: string): string {\n return join(identitiesDir(), name + \".json\")\n}","import { configFile, environmentFile, identityFile, metadataFile, rootDir } from \"./dirs\";\nimport fs from \"node:fs\"\nimport { Configuration, MetadataApi } from \"../zrok/api\"\n\nconst V = \"v0.4\"\n\nexport class Metadata {\n V: string;\n RootPath: string;\n\n constructor(V: string, RootPath: string = \"\") {\n this.V = V\n this.RootPath = RootPath\n }\n}\n\nexport class ApiEndpoint {\n endpoint: string\n frm: string\n\n constructor(endpoint: string, frm: string) {\n this.endpoint = endpoint\n this.frm = frm\n }\n}\n\nexport class Config {\n ApiEndpoint: string\n\n constructor(ApiEndpoint: string) {\n this.ApiEndpoint = ApiEndpoint\n }\n}\n\nexport class Environment {\n Token: string\n ZitiIdentity: string\n ApiEndpoint: string\n\n constructor(Token: string, ZitiIdentity: string, ApiEndpoint: string) {\n this.Token = Token\n this.ZitiIdentity = ZitiIdentity\n this.ApiEndpoint = ApiEndpoint\n }\n}\n\nexport class Root {\n meta: Metadata\n cfg: Config\n env: Environment\n\n constructor(meta: Metadata = new Metadata(V, rootDir()), cfg: Config, env: Environment) {\n this.meta = meta\n this.cfg = cfg\n this.env = env\n }\n\n public HasConfig(): boolean {\n return this.cfg !== undefined && Object.keys(this.cfg).length === 0\n }\n\n public Client(): Configuration {\n let apiEndpoint = this.ApiEndpoint()\n\n let conf = new Configuration({\n basePath: apiEndpoint.endpoint + '/api/v1',\n accessToken: this.env.Token,\n })\n\n let mapi = new MetadataApi(conf)\n let ver: Promise<string> = mapi.version()\n\n const regex : RegExp = new RegExp(\"^(refs/(heads|tags)/)?\" + V);\n ver.then(v => {\n console.log(\"got version \" + v)\n if(!regex.test(v)) {\n throw new Error(\"Expected a '\" + V + \"' version, received: '\" + v+ \"'\")\n }\n })\n\n return conf\n }\n\n private ApiEndpoint(): ApiEndpoint {\n let apiEndpoint = \"https://api.zrok.io\"\n let frm = \"binary\"\n\n if (this.cfg.ApiEndpoint != \"\") {\n apiEndpoint = this.cfg.ApiEndpoint\n frm = \"config\"\n }\n\n let env = process.env.ZROK_API_ENDPOINT\n if (env != null) {\n apiEndpoint = env\n frm = \"ZROK_API_ENDPOINT\"\n }\n\n if (this.IsEnabled()) {\n apiEndpoint = this.env.ApiEndpoint\n frm = \"env\"\n }\n\n return new ApiEndpoint(apiEndpoint.replace(/\\/+$/, \"\"), frm)\n }\n\n public IsEnabled(): boolean {\n return this.env !== undefined && Object.keys(this.env).length > 0\n }\n\n private PublicIdentityName(): string {\n return \"public\"\n }\n\n private EnvironmentIdentityName(): string {\n return \"environment\"\n }\n\n private ZitiIdentityName(name: string): string {\n return identityFile(name)\n }\n}\n\nexport function Assert(): boolean {\n if (rootExists()) {\n let meta = loadMetadata()\n return meta.V == V\n }\n return false\n}\n\nexport function Load(): Root {\n if (rootExists()) {\n return new Root(loadMetadata(), loadConfig(), loadEnvironment())\n }\n throw new Error(\"unable to load root. Does not exist\")\n}\n\nfunction rootExists(): boolean {\n return fs.existsSync(metadataFile())\n}\n\nfunction loadMetadata(): Metadata {\n let mf = metadataFile()\n let data = fs.readFileSync(mf)\n let serial = JSON.parse(data.toString())\n return new Metadata(serial.v)\n}\n\nfunction loadConfig(): Config {\n let cf = configFile()\n let data = fs.readFileSync(cf)\n let serial = JSON.parse(data.toString())\n return new Config(serial.api_endpoint)\n}\n\nfunction loadEnvironment(): Environment {\n let ef = environmentFile()\n let data = fs.readFileSync(ef)\n let serial = JSON.parse(data.toString())\n return new Environment(serial.zrok_token, serial.ziti_identity, serial.api_endpoint)\n}"],"mappings":"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","names":["V","ApiEndpoint"]}