From ace16efd93628c100e887f34a87557c56fcf89b2 Mon Sep 17 00:00:00 2001 From: Mihajlo Medjedovic Date: Wed, 23 Dec 2020 14:23:44 +0100 Subject: [PATCH] docs: generated --- ...ction-830.reflection-222.fileuploader.html | 231 +++ ...tion-830.reflection-222.sas9apiclient.html | 312 +++ .../reflection-830.reflection-222.sasjs.html | 1721 +++++++++++++++++ ...n-830.reflection-222.sasviyaapiclient.html | 1528 +++++++++++++++ ...ion-830.reflection-222.sessionmanager.html | 360 ++++ docs/classes/types.errorresponse.html | 2 +- docs/classes/types.sasjsconfig.html | 2 +- docs/enums/types.servertype.html | 2 +- docs/index.html | 2 +- docs/interfaces/types.context.html | 2 +- .../types.contextallattributes.html | 2 +- docs/interfaces/types.csrftoken.html | 2 +- docs/interfaces/types.editcontextinput.html | 2 +- docs/interfaces/types.folder.html | 2 +- docs/interfaces/types.job.html | 2 +- docs/interfaces/types.jobdefinition.html | 2 +- docs/interfaces/types.jobresult.html | 2 +- docs/interfaces/types.link.html | 2 +- docs/interfaces/types.polloptions.html | 2 +- docs/interfaces/types.sasjsrequest.html | 2 +- .../interfaces/types.sasjswaitingrequest.html | 2 +- docs/interfaces/types.session.html | 2 +- docs/interfaces/types.sessionvariable.html | 2 +- docs/interfaces/types.uploadfile.html | 2 +- docs/modules/reflection-830.html | 106 + .../reflection-830.reflection-222.html | 128 ++ docs/modules/types.html | 2 +- docs/modules/utils.html | 2 +- 28 files changed, 4407 insertions(+), 21 deletions(-) create mode 100644 docs/classes/reflection-830.reflection-222.fileuploader.html create mode 100644 docs/classes/reflection-830.reflection-222.sas9apiclient.html create mode 100644 docs/classes/reflection-830.reflection-222.sasjs.html create mode 100644 docs/classes/reflection-830.reflection-222.sasviyaapiclient.html create mode 100644 docs/classes/reflection-830.reflection-222.sessionmanager.html create mode 100644 docs/modules/reflection-830.html create mode 100644 docs/modules/reflection-830.reflection-222.html diff --git a/docs/classes/reflection-830.reflection-222.fileuploader.html b/docs/classes/reflection-830.reflection-222.fileuploader.html new file mode 100644 index 0000000..9375c4e --- /dev/null +++ b/docs/classes/reflection-830.reflection-222.fileuploader.html @@ -0,0 +1,231 @@ + + + + + + FileUploader | @sasjs/adapter + + + + + +
+
+
+
+ +
+
+ Options +
+
+ All +
    +
  • Public
  • +
  • Public/Protected
  • +
  • All
  • +
+
+ + +
+
+ Menu +
+
+
+
+
+
+ +
+
+
+
+
+ +
+

Class FileUploader

+
+

Hierarchy

+
    +
  • + FileUploader +
  • +
+
+
+
+
+
+

Constructors

+ +
+
+

Methods

+ +
+
+
+
+
+

Constructors

+
+ +

constructor

+
    +
  • new FileUploader(appLoc: string, serverUrl: string, jobsPath: string, setCsrfTokenWeb: any, csrfToken?: CsrfToken | null): FileUploader
  • +
+
    +
  • + +

    Parameters

    +
      +
    • +
      appLoc: string
      +
    • +
    • +
      serverUrl: string
      +
    • +
    • +
      jobsPath: string
      +
    • +
    • +
      setCsrfTokenWeb: any
      +
    • +
    • +
      Default value csrfToken: CsrfToken | null = null
      +
    • +
    +

    Returns FileUploader

    +
  • +
+
+
+
+

Methods

+
+ +

uploadFile

+
    +
  • uploadFile(sasJob: string, files: UploadFile[], params: any): Promise<unknown>
  • +
+ +
+
+ +
+
+ +
+
+
+ +
+

Generated using TypeDoc

+
+
+ + + \ No newline at end of file diff --git a/docs/classes/reflection-830.reflection-222.sas9apiclient.html b/docs/classes/reflection-830.reflection-222.sas9apiclient.html new file mode 100644 index 0000000..de54af9 --- /dev/null +++ b/docs/classes/reflection-830.reflection-222.sas9apiclient.html @@ -0,0 +1,312 @@ + + + + + + SAS9ApiClient | @sasjs/adapter + + + + + +
+
+
+
+ +
+
+ Options +
+
+ All +
    +
  • Public
  • +
  • Public/Protected
  • +
  • All
  • +
+
+ + +
+
+ Menu +
+
+
+
+
+
+ +
+
+
+
+
+ +
+

Class SAS9ApiClient

+
+
+

A client for interfacing with the SAS9 REST API.

+
+
+
+

Hierarchy

+
    +
  • + SAS9ApiClient +
  • +
+
+
+
+
+
+

Constructors

+ +
+
+

Methods

+ +
+
+
+
+
+

Constructors

+
+ +

constructor

+ + +
+
+
+

Methods

+
+ +

executeScript

+
    +
  • executeScript(linesOfCode: string[], serverName: string, repositoryName: string): Promise<string>
  • +
+
    +
  • + +
    +
    +

    Executes code on a SAS9 server.

    +
    +
    +

    Parameters

    +
      +
    • +
      linesOfCode: string[]
      +
      +

      an array of code lines to execute.

      +
      +
    • +
    • +
      serverName: string
      +
      +

      the server to execute the code on.

      +
      +
    • +
    • +
      repositoryName: string
      +
      +

      the repository to execute the code in.

      +
      +
    • +
    +

    Returns Promise<string>

    +
  • +
+
+
+ +

getConfig

+
    +
  • getConfig(): object
  • +
+
    +
  • + +
    +
    +

    Returns an object containing server URL.

    +
    +
    +

    Returns object

    +
      +
    • +
      serverUrl: string
      +
    • +
    +
  • +
+
+
+ +

setConfig

+
    +
  • setConfig(serverUrl: string): void
  • +
+
    +
  • + +
    +
    +

    Updates server URL which is not null.

    +
    +
    +

    Parameters

    +
      +
    • +
      serverUrl: string
      +
      +

      URL of the server to be set.

      +
      +
    • +
    +

    Returns void

    +
  • +
+
+
+ +
+
+ +
+
+
+ +
+

Generated using TypeDoc

+
+
+ + + \ No newline at end of file diff --git a/docs/classes/reflection-830.reflection-222.sasjs.html b/docs/classes/reflection-830.reflection-222.sasjs.html new file mode 100644 index 0000000..24dca0c --- /dev/null +++ b/docs/classes/reflection-830.reflection-222.sasjs.html @@ -0,0 +1,1721 @@ + + + + + + SASjs | @sasjs/adapter + + + + + +
+
+
+
+ +
+
+ Options +
+
+ All +
    +
  • Public
  • +
  • Public/Protected
  • +
  • All
  • +
+
+ + +
+
+ Menu +
+
+
+
+
+
+
    +
  • + +
  • +
  • + +
  • +
  • + SASjs +
  • +
+
+
+
+
+
+ +
+

Class SASjs

+
+
+

SASjs is a JavaScript adapter for SAS.

+
+
+
+

Hierarchy

+
    +
  • + SASjs +
  • +
+
+
+
+ +
+
+
+

Constructors

+
+ +

constructor

+
    +
  • new SASjs(config?: any): SASjs
  • +
+ +
+
+
+

Methods

+
+ +

checkSession

+
    +
  • checkSession(): Promise<object>
  • +
+
    +
  • + +
    +
    +

    Checks whether a session is active, or login is required.

    +
    +
    +

    Returns Promise<object>

    +
      +
    • a promise which resolves with an object containing two values - a boolean isLoggedIn, and a string userName.
    • +
    +
  • +
+
+
+ +

clearSasRequests

+
    +
  • clearSasRequests(): void
  • +
+ +
+
+ +

createContext

+
    +
  • createContext(contextName: string, launchContextName: string, sharedAccountId: string, autoExecLines: string[], accessToken: string, authorizedUsers?: string[]): Promise<Context>
  • +
+
    +
  • + +
    +
    +

    Creates a compute context on the given server.

    +
    +
    +

    Parameters

    +
      +
    • +
      contextName: string
      +
      +

      the name of the context to be created.

      +
      +
    • +
    • +
      launchContextName: string
      +
      +

      the name of the launcher context used by the compute service.

      +
      +
    • +
    • +
      sharedAccountId: string
      +
      +

      the ID of the account to run the servers for this context as.

      +
      +
    • +
    • +
      autoExecLines: string[]
      +
      +

      the lines of code to execute during session initialization.

      +
      +
    • +
    • +
      accessToken: string
      +
      +

      an access token for an authorized user.

      +
      +
    • +
    • +
      Optional authorizedUsers: string[]
      +
      +

      an optional list of authorized user IDs.

      +
      +
    • +
    +

    Returns Promise<Context>

    +
  • +
+
+
+ +

createFolder

+
    +
  • createFolder(folderName: string, parentFolderPath: string, parentFolderUri?: undefined | string, accessToken?: undefined | string, sasApiClient?: SASViyaApiClient, isForced?: undefined | false | true): Promise<Folder>
  • +
+
    +
  • + +
    +
    +

    Creates a folder at SAS file system.

    +
    +
    +

    Parameters

    +
      +
    • +
      folderName: string
      +
      +

      name of the folder to be created.

      +
      +
    • +
    • +
      parentFolderPath: string
      +
      +

      the full path (eg /Public/example/myFolder) of the parent folder.

      +
      +
    • +
    • +
      Optional parentFolderUri: undefined | string
      +
      +

      the URI of the parent folder.

      +
      +
    • +
    • +
      Optional accessToken: undefined | string
      +
      +

      the access token to authorizing the request.

      +
      +
    • +
    • +
      Optional sasApiClient: SASViyaApiClient
      +
      +

      a client for interfacing with SAS API.

      +
      +
    • +
    • +
      Optional isForced: undefined | false | true
      +
      +

      flag that indicates if target folder already exists, it and all subfolders have to be deleted. Applicable for SAS VIYA only.

      +
      +
    • +
    +

    Returns Promise<Folder>

    +
  • +
+
+
+ +

createJobDefinition

+
    +
  • createJobDefinition(jobName: string, code: string, parentFolderPath?: undefined | string, parentFolderUri?: undefined | string, accessToken?: undefined | string, sasApiClient?: SASViyaApiClient): Promise<object>
  • +
+
    +
  • + +

    Parameters

    +
      +
    • +
      jobName: string
      +
    • +
    • +
      code: string
      +
    • +
    • +
      Optional parentFolderPath: undefined | string
      +
    • +
    • +
      Optional parentFolderUri: undefined | string
      +
    • +
    • +
      Optional accessToken: undefined | string
      +
    • +
    • +
      Optional sasApiClient: SASViyaApiClient
      +
    • +
    +

    Returns Promise<object>

    +
  • +
+
+
+ +

createSession

+
    +
  • createSession(contextName: string, accessToken: string): Promise<Session>
  • +
+
    +
  • + +

    Parameters

    +
      +
    • +
      contextName: string
      +
    • +
    • +
      accessToken: string
      +
    • +
    +

    Returns Promise<Session>

    +
  • +
+
+
+ +

deleteClient

+
    +
  • deleteClient(clientId: string, accessToken: string): Promise<object>
  • +
+
    +
  • + +

    Parameters

    +
      +
    • +
      clientId: string
      +
    • +
    • +
      accessToken: string
      +
    • +
    +

    Returns Promise<object>

    +
  • +
+
+
+ +

deleteContext

+
    +
  • deleteContext(contextName: string, accessToken?: undefined | string): Promise<object>
  • +
+
    +
  • + +
    +
    +

    Deletes a compute context on the given server.

    +
    +
    +

    Parameters

    +
      +
    • +
      contextName: string
      +
      +

      the name of the context to be deleted.

      +
      +
    • +
    • +
      Optional accessToken: undefined | string
      +
      +

      an access token for an authorized user.

      +
      +
    • +
    +

    Returns Promise<object>

    +
  • +
+
+
+ +

deleteFolder

+
    +
  • deleteFolder(folderPath: string, accessToken: string): Promise<undefined | Folder>
  • +
+
    +
  • + +
    +
    +

    For performance (and in case of accidental error) the deleteFolder function does not actually delete the folder (and all its content and subfolder content). Instead the folder is simply moved to the recycle bin. Deletion time will be added to the folder name.

    +
    +
    +

    Parameters

    +
      +
    • +
      folderPath: string
      +
      +

      the full path (eg /Public/example/deleteThis) of the folder to be deleted.

      +
      +
    • +
    • +
      accessToken: string
      +
      +

      an access token for authorizing the request.

      +
      +
    • +
    +

    Returns Promise<undefined | Folder>

    +
  • +
+
+
+ +

deployServicePack

+
    +
  • deployServicePack(serviceJson: any, appLoc?: undefined | string, serverUrl?: undefined | string, accessToken?: undefined | string, isForced?: boolean): Promise<void>
  • +
+
    +
  • + +
    +
    +

    Creates the folders and services at the given location appLoc on the given server serverUrl.

    +
    +
    +

    Parameters

    +
      +
    • +
      serviceJson: any
      +
      +

      the JSON specifying the folders and services to be created.

      +
      +
    • +
    • +
      Optional appLoc: undefined | string
      +
      +

      the base folder in which to create the new folders and + services. If not provided, is taken from SASjsConfig.

      +
      +
    • +
    • +
      Optional serverUrl: undefined | string
      +
      +

      the server on which to deploy the folders and services. + If not provided, is taken from SASjsConfig.

      +
      +
    • +
    • +
      Optional accessToken: undefined | string
      +
      +

      an optional access token to be passed in when + using this function from the command line.

      +
      +
    • +
    • +
      Default value isForced: boolean = false
      +
      +

      flag that indicates if target folder already exists, it and all subfolders have to be deleted.

      +
      +
    • +
    +

    Returns Promise<void>

    +
  • +
+
+
+ +

editContext

+
    +
  • editContext(contextName: string, editedContext: EditContextInput, accessToken?: undefined | string): Promise<object>
  • +
+
    +
  • + +
    +
    +

    Updates a compute context on the given server.

    +
    +
    +

    Parameters

    +
      +
    • +
      contextName: string
      +
      +

      the original name of the context to be deleted.

      +
      +
    • +
    • +
      editedContext: EditContextInput
      +
      +

      an object with the properties to be updated.

      +
      +
    • +
    • +
      Optional accessToken: undefined | string
      +
      +

      an access token for an authorized user.

      +
      +
    • +
    +

    Returns Promise<object>

    +
  • +
+
+
+ +

executeScriptSAS9

+
    +
  • executeScriptSAS9(linesOfCode: string[], serverName: string, repositoryName: string): Promise<undefined | string>
  • +
+
    +
  • + +

    Parameters

    +
      +
    • +
      linesOfCode: string[]
      +
    • +
    • +
      serverName: string
      +
    • +
    • +
      repositoryName: string
      +
    • +
    +

    Returns Promise<undefined | string>

    +
  • +
+
+
+ +

executeScriptSASViya

+
    +
  • executeScriptSASViya(fileName: string, linesOfCode: string[], contextName: string, accessToken?: undefined | string, debug?: undefined | false | true): Promise<any>
  • +
+
    +
  • + +
    +
    +

    Executes the sas code against given sas server

    +
    +
    +

    Parameters

    +
      +
    • +
      fileName: string
      +
      +

      name of the file to run. It will be converted to path to the file being submitted for execution.

      +
      +
    • +
    • +
      linesOfCode: string[]
      +
      +

      lines of sas code from the file to run.

      +
      +
    • +
    • +
      contextName: string
      +
      +

      context name on which code will be run on the server.

      +
      +
    • +
    • +
      Optional accessToken: undefined | string
      +
      +

      (optional) the access token for authorizing the request.

      +
      +
    • +
    • +
      Optional debug: undefined | false | true
      +
      +

      (optional) if true, global debug config will be overriden

      +
      +
    • +
    +

    Returns Promise<any>

    +
  • +
+
+
+ +

fetchLogFileContent

+
    +
  • fetchLogFileContent(logLink: string, accessToken?: undefined | string): Promise<unknown>
  • +
+
    +
  • + +
    +
    +

    Fetches content of the log file

    +
    +
    +

    Parameters

    +
      +
    • +
      logLink: string
      +
      +

      url of the log file.

      +
      +
    • +
    • +
      Optional accessToken: undefined | string
      +
      +

      an access token for an authorized user.

      +
      +
    • +
    +

    Returns Promise<unknown>

    +
  • +
+
+
+ +

getAccessToken

+
    +
  • getAccessToken(clientId: string, clientSecret: string, authCode: string): Promise<any>
  • +
+
    +
  • + +

    Parameters

    +
      +
    • +
      clientId: string
      +
    • +
    • +
      clientSecret: string
      +
    • +
    • +
      authCode: string
      +
    • +
    +

    Returns Promise<any>

    +
  • +
+
+
+ +

getAllContexts

+
    +
  • getAllContexts(accessToken: string): Promise<object[]>
  • +
+
    +
  • + +

    Parameters

    +
      +
    • +
      accessToken: string
      +
    • +
    +

    Returns Promise<object[]>

    +
  • +
+
+
+ +

getAuthCode

+
    +
  • getAuthCode(clientId: string): Promise<null | string>
  • +
+
    +
  • + +

    Parameters

    +
      +
    • +
      clientId: string
      +
    • +
    +

    Returns Promise<null | string>

    +
  • +
+
+
+ +

getComputeContextById

+
    +
  • getComputeContextById(contextId: string, accessToken?: undefined | string): Promise<ContextAllAttributes>
  • +
+
    +
  • + +
    +
    +

    Returns a JSON representation of a compute context.

    +
    +
    +

    Parameters

    +
      +
    • +
      contextId: string
      +
      +

      an id of the context to return.

      +
      +
    • +
    • +
      Optional accessToken: undefined | string
      +
      +

      an access token for an authorized user.

      +
      +
    • +
    +

    Returns Promise<ContextAllAttributes>

    +
  • +
+
+
+ +

getComputeContextByName

+
    +
  • getComputeContextByName(contextName: string, accessToken?: undefined | string): Promise<Context>
  • +
+
    +
  • + +
    +
    +

    Returns a JSON representation of a compute context.

    +
    +
    +
    example:
    +

    { "createdBy": "admin", "links": [...], "id": "ID", "version": 2, "name": "context1" }

    +
    +
    +

    Parameters

    +
      +
    • +
      contextName: string
      +
      +

      the name of the context to return.

      +
      +
    • +
    • +
      Optional accessToken: undefined | string
      +
      +

      an access token for an authorized user.

      +
      +
    • +
    +

    Returns Promise<Context>

    +
  • +
+
+
+ +

getCsrfApi

+
    +
  • getCsrfApi(): undefined | string
  • +
+
    +
  • + +
    +
    +

    Returns the _csrf token of the current session for the API approach.

    +
    +
    +

    Returns undefined + | + string +

    +
  • +
+
+
+ +

getCsrfWeb

+
    +
  • getCsrfWeb(): undefined | string
  • +
+
    +
  • + +
    +
    +

    Returns the _csrf token of the current session for the WEB approach.

    +
    +
    +

    Returns undefined + | + string +

    +
  • +
+
+
+ +

getExecutableContexts

+
    +
  • getExecutableContexts(accessToken: string): Promise<any[]>
  • +
+
    +
  • + +

    Parameters

    +
      +
    • +
      accessToken: string
      +
    • +
    +

    Returns Promise<any[]>

    +
  • +
+
+
+ +

getSasRequests

+ + +
+
+ +

getSasjsConfig

+ + +
+
+ +

getUserName

+
    +
  • getUserName(): string
  • +
+
    +
  • + +
    +
    +

    Returns the username of the user currently logged in.

    +
    +
    +

    Returns string

    +
  • +
+
+
+ +

listFolder

+
    +
  • listFolder(sourceFolder: string, accessToken?: undefined | string): Promise<undefined | any[]>
  • +
+
    +
  • + +
    +
    +

    Lists a children folders for given Viya folder.

    +
    +
    +

    Parameters

    +
      +
    • +
      sourceFolder: string
      +
      +

      the full path (eg /Public/example/myFolder) or URI of the source folder listed. Providing URI instead of path will save one extra request.

      +
      +
    • +
    • +
      Optional accessToken: undefined | string
      +
      +

      an access token for authorizing the request.

      +
      +
    • +
    +

    Returns Promise<undefined | any[]>

    +
  • +
+
+
+ +

logIn

+
    +
  • logIn(username: string, password: string): Promise<object>
  • +
+
    +
  • + +
    +
    +

    Logs into the SAS server with the supplied credentials.

    +
    +
    +

    Parameters

    +
      +
    • +
      username: string
      +
      +

      a string representing the username.

      +
      +
    • +
    • +
      password: string
      +
      +

      a string representing the password.

      +
      +
    • +
    +

    Returns Promise<object>

    +
  • +
+
+
+ +

logOut

+
    +
  • logOut(): Promise<unknown>
  • +
+
    +
  • + +
    +
    +

    Logs out of the configured SAS server.

    +
    +
    +

    Returns Promise<unknown>

    +
  • +
+
+
+ +

moveFolder

+
    +
  • moveFolder(sourceFolder: string, targetParentFolder: string, targetFolderName: string, accessToken: string): Promise<undefined | Folder>
  • +
+
    +
  • + +
    +
    +

    Moves folder to a new location. The folder may be renamed at the same time.

    +
    +
    +

    Parameters

    +
      +
    • +
      sourceFolder: string
      +
      +

      the full path (eg /Public/example/myFolder) or URI of the source folder to be moved. Providing URI instead of path will save one extra request.

      +
      +
    • +
    • +
      targetParentFolder: string
      +
      +

      the full path or URI of the parent folder to which the sourceFolder will be moved (eg /Public/newDestination). To move a folder, a user has to have write permissions in targetParentFolder. Providing URI instead of path will save one extra request.

      +
      +
    • +
    • +
      targetFolderName: string
      +
      +

      the name of the "moved" folder. If left blank, the original folder name will be used (eg myFolder in /Public/newDestination/myFolder for the example above). Optional field.

      +
      +
    • +
    • +
      accessToken: string
      +
      +

      an access token for authorizing the request.

      +
      +
    • +
    +

    Returns Promise<undefined | Folder>

    +
  • +
+
+
+ +

refreshTokens

+
    +
  • refreshTokens(clientId: string, clientSecret: string, refreshToken: string): Promise<any>
  • +
+
    +
  • + +

    Parameters

    +
      +
    • +
      clientId: string
      +
    • +
    • +
      clientSecret: string
      +
    • +
    • +
      refreshToken: string
      +
    • +
    +

    Returns Promise<any>

    +
  • +
+
+
+ +

request

+
    +
  • request(sasJob: string, data: any, config?: any, loginRequiredCallback?: any, accessToken?: undefined | string): Promise<any>
  • +
+
    +
  • + +
    +
    +

    Makes a request to the SAS Service specified in SASjob. The response + object will always contain table names in lowercase, and column names in + uppercase. Values are returned formatted by default, unformatted + values can be configured as an option in the %webout macro.

    +
    +
    +

    Parameters

    +
      +
    • +
      sasJob: string
      +
      +

      the path to the SAS program (ultimately resolves to + the SAS _program parameter to run a Job Definition or SAS 9 Stored + Process). Is prepended at runtime with the value of appLoc.

      +
      +
    • +
    • +
      data: any
      +
      +

      a JSON object containing one or more tables to be sent to + SAS. Can be null if no inputs required.

      +
      +
    • +
    • +
      Default value config: any = {}
      +
      +

      provide any changes to the config here, for instance to + enable/disable debug. Any change provided will override the global config, + for that particular function call.

      +
      +
    • +
    • +
      Optional loginRequiredCallback: any
      +
      +

      provide a function here to be called if the + user is not logged in (eg to display a login form). The request will be + resubmitted after logon.

      +
      +
    • +
    • +
      Optional accessToken: undefined | string
      +
    • +
    +

    Returns Promise<any>

    +
  • +
+
+
+ +

setDebugState

+
    +
  • setDebugState(value: boolean): void
  • +
+
    +
  • + +
    +
    +

    Sets the debug state. Turning this on will enable additional logging in the adapter.

    +
    +
    +

    Parameters

    +
      +
    • +
      value: boolean
      +
      +

      boolean indicating debug state (on/off).

      +
      +
    • +
    +

    Returns void

    +
  • +
+
+
+ +

setSASjsConfig

+
    +
  • setSASjsConfig(config: SASjsConfig): Promise<void>
  • +
+
    +
  • + +
    +
    +

    Sets the SASjs configuration.

    +
    +
    +

    Parameters

    +
      +
    • +
      config: SASjsConfig
      +
      +

      SASjs configuration.

      +
      +
    • +
    +

    Returns Promise<void>

    +
  • +
+
+
+ +

startComputeJob

+
    +
  • startComputeJob(sasJob: string, data: any, config?: any, accessToken?: undefined | string, waitForResult?: undefined | false | true, pollOptions?: PollOptions, printPid?: boolean): Promise<any>
  • +
+
    +
  • + +
    +
    +

    Kicks off execution of the given job via the compute API.

    +
    +
    +

    Parameters

    +
      +
    • +
      sasJob: string
      +
      +

      the path to the SAS program (ultimately resolves to + the SAS _program parameter to run a Job Definition or SAS 9 Stored + Process). Is prepended at runtime with the value of appLoc.

      +
      +
    • +
    • +
      data: any
      +
      +

      a JSON object containing one or more tables to be sent to + SAS. Can be null if no inputs required.

      +
      +
    • +
    • +
      Default value config: any = {}
      +
      +

      provide any changes to the config here, for instance to + enable/disable debug. Any change provided will override the global config, + for that particular function call.

      +
      +
    • +
    • +
      Optional accessToken: undefined | string
      +
      +

      a valid access token that is authorised to execute compute jobs. + The access token is not required when the user is authenticated via the browser.

      +
      +
    • +
    • +
      Optional waitForResult: undefined | false | true
      +
      +

      a boolean that indicates whether the function needs to wait for execution to complete.

      +
      +
    • +
    • +
      Optional pollOptions: PollOptions
      +
      +

      an object that represents poll interval(milliseconds) and maximum amount of attempts. Object example: { MAX_POLL_COUNT: 24 * 60 * 60, POLL_INTERVAL: 1000 }.

      +
      +
    • +
    • +
      Default value printPid: boolean = false
      +
      +

      a boolean that indicates whether the function should print (PID) of the started job.

      +
      +
    • +
    +

    Returns Promise<any>

    +

    an object representing the compute session created for the given job.

    +
  • +
+
+
+ +

uploadFile

+
    +
  • uploadFile(sasJob: string, files: UploadFile[], params: any): Promise<unknown>
  • +
+
    +
  • + +
    +
    +

    Uploads a file to the given service.

    +
    +
    +

    Parameters

    +
      +
    • +
      sasJob: string
      +
      +

      the path to the SAS program (ultimately resolves to + the SAS _program parameter to run a Job Definition or SAS 9 Stored + Process). Is prepended at runtime with the value of appLoc.

      +
      +
    • +
    • +
      files: UploadFile[]
      +
      +

      array of files to be uploaded, including File object and file name.

      +
      +
    • +
    • +
      params: any
      +
      +

      request URL parameters.

      +
      +
    • +
    +

    Returns Promise<unknown>

    +
  • +
+
+
+ +
+ +
+
+ +
+

Generated using TypeDoc

+
+
+ + + \ No newline at end of file diff --git a/docs/classes/reflection-830.reflection-222.sasviyaapiclient.html b/docs/classes/reflection-830.reflection-222.sasviyaapiclient.html new file mode 100644 index 0000000..6b5cf1c --- /dev/null +++ b/docs/classes/reflection-830.reflection-222.sasviyaapiclient.html @@ -0,0 +1,1528 @@ + + + + + + SASViyaApiClient | @sasjs/adapter + + + + + +
+
+
+
+ +
+
+ Options +
+
+ All +
    +
  • Public
  • +
  • Public/Protected
  • +
  • All
  • +
+
+ + +
+
+ Menu +
+
+
+
+
+
+ +
+
+
+
+
+ +
+

Class SASViyaApiClient

+
+
+

A client for interfacing with the SAS Viya REST API.

+
+
+
+

Hierarchy

+
    +
  • + SASViyaApiClient +
  • +
+
+
+
+ +
+
+
+

Constructors

+
+ +

constructor

+
    +
  • new SASViyaApiClient(serverUrl: string, rootFolderName: string, contextName: string, setCsrfToken: function): SASViyaApiClient
  • +
+
    +
  • + +

    Parameters

    +
      +
    • +
      serverUrl: string
      +
    • +
    • +
      rootFolderName: string
      +
    • +
    • +
      contextName: string
      +
    • +
    • +
      setCsrfToken: function
      +
        +
      • + +
          +
        • +

          Parameters

          + +

          Returns void

          +
        • +
        +
      • +
      +
    • +
    +

    Returns SASViyaApiClient

    +
  • +
+
+
+
+

Accessors

+
+ +

debug

+
    +
  • get debug(): boolean
  • +
  • set debug(value: boolean): void
  • +
+ +
+
+
+

Methods

+
+ +

createContext

+
    +
  • createContext(contextName: string, launchContextName: string, sharedAccountId: string, autoExecLines: string[], accessToken?: undefined | string, authorizedUsers?: string[]): Promise<Context>
  • +
+
    +
  • + +
    +
    +

    Creates a compute context on the given server.

    +
    +
    +

    Parameters

    +
      +
    • +
      contextName: string
      +
      +

      the name of the context to be created.

      +
      +
    • +
    • +
      launchContextName: string
      +
      +

      the name of the launcher context used by the compute service.

      +
      +
    • +
    • +
      sharedAccountId: string
      +
      +

      the ID of the account to run the servers for this context.

      +
      +
    • +
    • +
      autoExecLines: string[]
      +
      +

      the lines of code to execute during session initialization.

      +
      +
    • +
    • +
      Optional accessToken: undefined | string
      +
      +

      an access token for an authorized user.

      +
      +
    • +
    • +
      Optional authorizedUsers: string[]
      +
      +

      an optional list of authorized user IDs.

      +
      +
    • +
    +

    Returns Promise<Context>

    +
  • +
+
+
+ +

createFolder

+
    +
  • createFolder(folderName: string, parentFolderPath?: undefined | string, parentFolderUri?: undefined | string, accessToken?: undefined | string, isForced?: undefined | false | true): Promise<Folder>
  • +
+
    +
  • + +
    +
    +

    Creates a folder. Path to or URI of the parent folder is required.

    +
    +
    +

    Parameters

    +
      +
    • +
      folderName: string
      +
      +

      the name of the new folder.

      +
      +
    • +
    • +
      Optional parentFolderPath: undefined | string
      +
      +

      the full path to the parent folder. If not + provided, the parentFolderUri must be provided.

      +
      +
    • +
    • +
      Optional parentFolderUri: undefined | string
      +
      +

      the URI (eg /folders/folders/UUID) of the parent + folder. If not provided, the parentFolderPath must be provided.

      +
      +
    • +
    • +
      Optional accessToken: undefined | string
      +
      +

      an access token for authorizing the request.

      +
      +
    • +
    • +
      Optional isForced: undefined | false | true
      +
      +

      flag that indicates if target folder already exists, it and all subfolders have to be deleted.

      +
      +
    • +
    +

    Returns Promise<Folder>

    +
  • +
+
+
+ +

createJobDefinition

+
    +
  • createJobDefinition(jobName: string, code: string, parentFolderPath?: undefined | string, parentFolderUri?: undefined | string, accessToken?: undefined | string): Promise<object>
  • +
+
    +
  • + +
    +
    +

    Creates a Job in the specified folder (or folder uri).

    +
    +
    +

    Parameters

    +
      +
    • +
      jobName: string
      +
      +

      the name of the new job to be created.

      +
      +
    • +
    • +
      code: string
      +
      +

      the SAS code for the new job.

      +
      +
    • +
    • +
      Optional parentFolderPath: undefined | string
      +
      +

      the location of the new job.

      +
      +
    • +
    • +
      Optional parentFolderUri: undefined | string
      +
      +

      the URI location of the new job. The function is a + little faster if the folder URI is supplied instead of the path.

      +
      +
    • +
    • +
      Optional accessToken: undefined | string
      +
    • +
    +

    Returns Promise<object>

    +
  • +
+
+
+ +

createSession

+
    +
  • createSession(contextName: string, accessToken?: undefined | string): Promise<Session>
  • +
+
    +
  • + +
    +
    +

    Creates a session on the given context.

    +
    +
    +

    Parameters

    +
      +
    • +
      contextName: string
      +
      +

      the name of the context to create a session on.

      +
      +
    • +
    • +
      Optional accessToken: undefined | string
      +
      +

      an access token for an authorized user.

      +
      +
    • +
    +

    Returns Promise<Session>

    +
  • +
+
+
+ +

deleteClient

+
    +
  • deleteClient(clientId: string, accessToken?: undefined | string): Promise<object>
  • +
+
    +
  • + +
    +
    +

    Deletes the client representing the supplied ID.

    +
    +
    +

    Parameters

    +
      +
    • +
      clientId: string
      +
      +

      the client ID to authenticate with.

      +
      +
    • +
    • +
      Optional accessToken: undefined | string
      +
      +

      an access token for authorizing the request.

      +
      +
    • +
    +

    Returns Promise<object>

    +
  • +
+
+
+ +

deleteContext

+
    +
  • deleteContext(contextName: string, accessToken?: undefined | string): Promise<object>
  • +
+
    +
  • + +
    +
    +

    Deletes a compute context on the given server.

    +
    +
    +

    Parameters

    +
      +
    • +
      contextName: string
      +
      +

      the name of the context to be deleted.

      +
      +
    • +
    • +
      Optional accessToken: undefined | string
      +
      +

      an access token for an authorized user.

      +
      +
    • +
    +

    Returns Promise<object>

    +
  • +
+
+
+ +

deleteFolder

+
    +
  • deleteFolder(folderPath: string, accessToken: string): Promise<undefined | Folder>
  • +
+
    +
  • + +
    +
    +

    For performance (and in case of accidental error) the deleteFolder function does not actually delete the folder (and all its content and subfolder content). Instead the folder is simply moved to the recycle bin. Deletion time will be added to the folder name.

    +
    +
    +

    Parameters

    +
      +
    • +
      folderPath: string
      +
      +

      the full path (eg /Public/example/deleteThis) of the folder to be deleted.

      +
      +
    • +
    • +
      accessToken: string
      +
      +

      an access token for authorizing the request.

      +
      +
    • +
    +

    Returns Promise<undefined | Folder>

    +
  • +
+
+
+ +

editContext

+
    +
  • editContext(contextName: string, editedContext: EditContextInput, accessToken?: undefined | string): Promise<object>
  • +
+
    +
  • + +
    +
    +

    Updates a compute context on the given server.

    +
    +
    +

    Parameters

    +
      +
    • +
      contextName: string
      +
      +

      the original name of the context to be updated.

      +
      +
    • +
    • +
      editedContext: EditContextInput
      +
      +

      an object with the properties to be updated.

      +
      +
    • +
    • +
      Optional accessToken: undefined | string
      +
      +

      an access token for an authorized user.

      +
      +
    • +
    +

    Returns Promise<object>

    +
  • +
+
+
+ +

executeComputeJob

+
    +
  • executeComputeJob(sasJob: string, contextName: string, debug?: undefined | false | true, data?: any, accessToken?: undefined | string, waitForResult?: boolean, expectWebout?: boolean, pollOptions?: PollOptions, printPid?: boolean): Promise<any>
  • +
+
    +
  • + +
    +
    +

    Executes a job via the SAS Viya Compute API.

    +
    +
    +

    Parameters

    +
      +
    • +
      sasJob: string
      +
      +

      the relative path to the job.

      +
      +
    • +
    • +
      contextName: string
      +
      +

      the name of the context where the job is to be executed.

      +
      +
    • +
    • +
      Optional debug: undefined | false | true
      +
      +

      sets the _debug flag in the job arguments.

      +
      +
    • +
    • +
      Optional data: any
      +
      +

      any data to be passed in as input to the job.

      +
      +
    • +
    • +
      Optional accessToken: undefined | string
      +
      +

      an optional access token for an authorized user.

      +
      +
    • +
    • +
      Default value waitForResult: boolean = true
      +
      +

      a boolean indicating if the function should wait for a result.

      +
      +
    • +
    • +
      Default value expectWebout: boolean = false
      +
      +

      a boolean indicating whether to expect a _webout response.

      +
      +
    • +
    • +
      Optional pollOptions: PollOptions
      +
      +

      an object that represents poll interval(milliseconds) and maximum amount of attempts. Object example: { MAX_POLL_COUNT: 24 * 60 * 60, POLL_INTERVAL: 1000 }.

      +
      +
    • +
    • +
      Default value printPid: boolean = false
      +
      +

      a boolean that indicates whether the function should print (PID) of the started job.

      +
      +
    • +
    +

    Returns Promise<any>

    +
  • +
+
+
+ +

executeJob

+
    +
  • executeJob(sasJob: string, contextName: string, debug: boolean, data?: any, accessToken?: undefined | string): Promise<object>
  • +
+
    +
  • + +
    +
    +

    Executes a job via the SAS Viya Job Execution API

    +
    +
    +

    Parameters

    +
      +
    • +
      sasJob: string
      +
      +

      the relative or absolute path to the job.

      +
      +
    • +
    • +
      contextName: string
      +
      +

      the name of the context where the job is to be executed.

      +
      +
    • +
    • +
      debug: boolean
      +
      +

      sets the _debug flag in the job arguments.

      +
      +
    • +
    • +
      Optional data: any
      +
      +

      any data to be passed in as input to the job.

      +
      +
    • +
    • +
      Optional accessToken: undefined | string
      +
      +

      an optional access token for an authorized user.

      +
      +
    • +
    +

    Returns Promise<object>

    +
  • +
+
+
+ +

executeScript

+
    +
  • executeScript(jobPath: string, linesOfCode: string[], contextName: string, accessToken?: undefined | string, data?: null, debug?: boolean, expectWebout?: boolean, waitForResult?: boolean, pollOptions?: PollOptions, printPid?: boolean): Promise<any>
  • +
+
    +
  • + +
    +
    +

    Executes code on the current SAS Viya server.

    +
    +
    +

    Parameters

    +
      +
    • +
      jobPath: string
      +
      +

      the path to the file being submitted for execution.

      +
      +
    • +
    • +
      linesOfCode: string[]
      +
      +

      an array of code lines to execute.

      +
      +
    • +
    • +
      contextName: string
      +
      +

      the context to execute the code in.

      +
      +
    • +
    • +
      Optional accessToken: undefined | string
      +
      +

      an access token for an authorized user.

      +
      +
    • +
    • +
      Default value data: null = null
      +
      +

      execution data.

      +
      +
    • +
    • +
      Default value debug: boolean = false
      +
      +

      when set to true, the log will be returned.

      +
      +
    • +
    • +
      Default value expectWebout: boolean = false
      +
      +

      when set to true, the automatic _webout fileref will be checked for content, and that content returned. This fileref is used when the Job contains a SASjs web request (as opposed to executing arbitrary SAS code).

      +
      +
    • +
    • +
      Default value waitForResult: boolean = true
      +
      +

      when set to true, function will return the session

      +
      +
    • +
    • +
      Optional pollOptions: PollOptions
      +
      +

      an object that represents poll interval(milliseconds) and maximum amount of attempts. Object example: { MAX_POLL_COUNT: 24 * 60 * 60, POLL_INTERVAL: 1000 }.

      +
      +
    • +
    • +
      Default value printPid: boolean = false
      +
      +

      a boolean that indicates whether the function should print (PID) of the started job.

      +
      +
    • +
    +

    Returns Promise<any>

    +
  • +
+
+
+ +

getAccessToken

+
    +
  • getAccessToken(clientId: string, clientSecret: string, authCode: string): Promise<any>
  • +
+
    +
  • + +
    +
    +

    Exchanges the auth code for an access token for the given client.

    +
    +
    +

    Parameters

    +
      +
    • +
      clientId: string
      +
      +

      the client ID to authenticate with.

      +
      +
    • +
    • +
      clientSecret: string
      +
      +

      the client secret to authenticate with.

      +
      +
    • +
    • +
      authCode: string
      +
      +

      the auth code received from the server.

      +
      +
    • +
    +

    Returns Promise<any>

    +
  • +
+
+
+ +

getAllContexts

+
    +
  • getAllContexts(accessToken?: undefined | string): Promise<object[]>
  • +
+
    +
  • + +
    +
    +

    Returns all available compute contexts on this server.

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional accessToken: undefined | string
      +
      +

      an access token for an authorized user.

      +
      +
    • +
    +

    Returns Promise<object[]>

    +
  • +
+
+
+ +

getAuthCode

+
    +
  • getAuthCode(clientId: string): Promise<null | string>
  • +
+
    +
  • + +
    +
    +

    Performs a login redirect and returns an auth code for the given client.

    +
    +
    +

    Parameters

    +
      +
    • +
      clientId: string
      +
      +

      the client ID to authenticate with.

      +
      +
    • +
    +

    Returns Promise<null | string>

    +
  • +
+
+
+ +

getComputeContextById

+
    +
  • getComputeContextById(contextId: string, accessToken?: undefined | string): Promise<ContextAllAttributes>
  • +
+
    +
  • + +
    +
    +

    Returns a JSON representation of a compute context.

    +
    +
    +

    Parameters

    +
      +
    • +
      contextId: string
      +
      +

      an id of the context to return.

      +
      +
    • +
    • +
      Optional accessToken: undefined | string
      +
      +

      an access token for an authorized user.

      +
      +
    • +
    +

    Returns Promise<ContextAllAttributes>

    +
  • +
+
+
+ +

getComputeContextByName

+
    +
  • getComputeContextByName(contextName: string, accessToken?: undefined | string): Promise<Context>
  • +
+
    +
  • + +
    +
    +

    Returns a JSON representation of a compute context.

    +
    +
    +
    example:
    +

    { "createdBy": "admin", "links": [...], "id": "ID", "version": 2, "name": "context1" }

    +
    +
    +

    Parameters

    +
      +
    • +
      contextName: string
      +
      +

      the name of the context to return.

      +
      +
    • +
    • +
      Optional accessToken: undefined | string
      +
      +

      an access token for an authorized user.

      +
      +
    • +
    +

    Returns Promise<Context>

    +
  • +
+
+
+ +

getConfig

+
    +
  • getConfig(): object
  • +
+
    +
  • + +
    +
    +

    Returns an object containing the server URL and root folder name.

    +
    +
    +

    Returns object

    +
      +
    • +
      rootFolderName: string
      +
    • +
    • +
      serverUrl: string
      +
    • +
    +
  • +
+
+
+ +

getExecutableContexts

+
    +
  • getExecutableContexts(accessToken?: undefined | string): Promise<any[]>
  • +
+
    +
  • + +
    +
    +

    Returns all compute contexts on this server that the user has access to.

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional accessToken: undefined | string
      +
      +

      an access token for an authorized user.

      +
      +
    • +
    +

    Returns Promise<any[]>

    +
  • +
+
+
+ +

getJobsInFolder

+
    +
  • getJobsInFolder(folderPath: string): Promise<undefined | Job[]>
  • +
+
    +
  • + +
    +
    +

    Returns a list of jobs in the currently set root folder.

    +
    +
    +

    Parameters

    +
      +
    • +
      folderPath: string
      +
    • +
    +

    Returns Promise<undefined | Job[]>

    +
  • +
+
+
+ +

listFolder

+
    +
  • listFolder(sourceFolder: string, accessToken?: undefined | string): Promise<any[]>
  • +
+
    +
  • + +
    +
    +

    Lists a children folders for given Viya folder.

    +
    +
    +

    Parameters

    +
      +
    • +
      sourceFolder: string
      +
      +

      the full path (eg /Public/example/myFolder) or URI of the source folder listed. Providing URI instead of path will save one extra request.

      +
      +
    • +
    • +
      Optional accessToken: undefined | string
      +
      +

      an access token for authorizing the request.

      +
      +
    • +
    +

    Returns Promise<any[]>

    +
  • +
+
+
+ +

moveFolder

+
    +
  • moveFolder(sourceFolder: string, targetParentFolder: string, targetFolderName: string, accessToken: string): Promise<undefined | Folder>
  • +
+
    +
  • + +
    +
    +

    Moves a Viya folder to a new location. The folder may be renamed at the same time.

    +
    +
    +

    Parameters

    +
      +
    • +
      sourceFolder: string
      +
      +

      the full path (eg /Public/example/myFolder) or URI of the source folder to be moved. Providing URI instead of path will save one extra request.

      +
      +
    • +
    • +
      targetParentFolder: string
      +
      +

      the full path or URI of the parent folder to which the sourceFolder will be moved (eg /Public/newDestination). To move a folder, a user has to have write permissions in targetParentFolder. Providing URI instead of path will save one extra request.

      +
      +
    • +
    • +
      targetFolderName: string
      +
      +

      the name of the "moved" folder. If left blank, the original folder name will be used (eg myFolder in /Public/newDestination/myFolder for the example above). Optional field.

      +
      +
    • +
    • +
      accessToken: string
      +
      +

      an access token for authorizing the request.

      +
      +
    • +
    +

    Returns Promise<undefined | Folder>

    +
  • +
+
+
+ +

refreshTokens

+
    +
  • refreshTokens(clientId: string, clientSecret: string, refreshToken: string): Promise<any>
  • +
+
    +
  • + +
    +
    +

    Exchanges the refresh token for an access token for the given client.

    +
    +
    +

    Parameters

    +
      +
    • +
      clientId: string
      +
      +

      the client ID to authenticate with.

      +
      +
    • +
    • +
      clientSecret: string
      +
      +

      the client secret to authenticate with.

      +
      +
    • +
    • +
      refreshToken: string
      +
    • +
    +

    Returns Promise<any>

    +
  • +
+
+
+ +

setConfig

+
    +
  • setConfig(serverUrl: string, rootFolderName: string): void
  • +
+
    +
  • + +
    +
    +

    Updates server URL and root folder name, if it was not set.

    +
    +
    +

    Parameters

    +
      +
    • +
      serverUrl: string
      +
      +

      the URL of the server.

      +
      +
    • +
    • +
      rootFolderName: string
      +
      +

      the name for root folder.

      +
      +
    • +
    +

    Returns void

    +
  • +
+
+
+ +

setCsrfTokenLocal

+
    +
  • setCsrfTokenLocal(csrfToken: CsrfToken): void
  • +
+ +
+
+ +

setFileUploadCsrfToken

+
    +
  • setFileUploadCsrfToken(csrfToken: CsrfToken): void
  • +
+ +
+
+ +
+ +
+
+ +
+

Generated using TypeDoc

+
+
+ + + \ No newline at end of file diff --git a/docs/classes/reflection-830.reflection-222.sessionmanager.html b/docs/classes/reflection-830.reflection-222.sessionmanager.html new file mode 100644 index 0000000..e698701 --- /dev/null +++ b/docs/classes/reflection-830.reflection-222.sessionmanager.html @@ -0,0 +1,360 @@ + + + + + + SessionManager | @sasjs/adapter + + + + + +
+
+
+
+ +
+
+ Options +
+
+ All +
    +
  • Public
  • +
  • Public/Protected
  • +
  • All
  • +
+
+ + +
+
+ Menu +
+
+
+
+
+
+ +
+
+
+
+
+ +
+

Class SessionManager

+
+

Hierarchy

+
    +
  • + SessionManager +
  • +
+
+
+
+
+
+

Constructors

+ +
+
+

Accessors

+ +
+
+

Methods

+ +
+
+
+
+
+

Constructors

+
+ +

constructor

+
    +
  • new SessionManager(serverUrl: string, contextName: string, setCsrfToken: function): SessionManager
  • +
+ +
+
+
+

Accessors

+
+ +

debug

+
    +
  • get debug(): boolean
  • +
  • set debug(value: boolean): void
  • +
+ +
+
+
+

Methods

+
+ +

clearSession

+
    +
  • clearSession(id: string, accessToken?: undefined | string): Promise<void>
  • +
+
    +
  • + +

    Parameters

    +
      +
    • +
      id: string
      +
    • +
    • +
      Optional accessToken: undefined | string
      +
    • +
    +

    Returns Promise<void>

    +
  • +
+
+
+ +

getSession

+
    +
  • getSession(accessToken?: undefined | string): Promise<undefined | Session>
  • +
+ +
+
+ +

getVariable

+
    +
  • getVariable(sessionId: string, variable: string, accessToken?: undefined | string): Promise<object>
  • +
+
    +
  • + +

    Parameters

    +
      +
    • +
      sessionId: string
      +
    • +
    • +
      variable: string
      +
    • +
    • +
      Optional accessToken: undefined | string
      +
    • +
    +

    Returns Promise<object>

    +
  • +
+
+
+ +
+
+ +
+
+
+ +
+

Generated using TypeDoc

+
+
+ + + \ No newline at end of file diff --git a/docs/classes/types.errorresponse.html b/docs/classes/types.errorresponse.html index 0c289f7..ff1b26e 100644 --- a/docs/classes/types.errorresponse.html +++ b/docs/classes/types.errorresponse.html @@ -155,7 +155,7 @@ - +
- +
- +
- +
- +