sandboxjs
Version:
Sandbox node.js code
407 lines (358 loc) • 9.62 kB
TypeScript
interface SandboxOptions {
/**
* A token derived from your master token or a JWT token accepted by Extend server if you are using Security V2.
*/
token: string,
/**
* The container with which this Sandbox instance should be associated.
*/
container: string,
/**
* [optional] The URL of the webtask cluster. Defaults to the public 'sandbox.auth0-extend.com' cluster.
*/
url?: string
}
interface SandboxMethodOptions {
/**
* The name of the webtask.
*/
name: string,
/**
* [optional] Set the webtask container. Defaults to the profile's container.
*/
container?: string
}
interface GetWebtaskOptions extends SandboxMethodOptions {
/**
* [optional] Decrypt the webtask's secrets.
*/
decrypt?: boolean,
/**
* [optional] Fetch the code associated with the webtask.
*/
fetch_code?: boolean
}
interface CreateWebtaskOptions extends SandboxMethodOptions {
/**
* Set the webtask secrets.
*/
secrets: object,
/**
* Set the webtask metadata.
*/
meta: object,
/**
* Set the webtask hostname.
*/
host: string
}
interface RemoveWebtaskOptions extends SandboxMethodOptions { }
interface ListWebtasksOptions {
/**
* [optional] Set the webtask container. Defaults to the profile's container.
*/
container?: string,
/**
* [optional] Metadata describing the webtask. This is a set of string key value pairs. Only webtasks with matching metadata will be returned.
*/
meta?: object,
/**
* [optional] Skip this many named webtasks
*/
offset?: number,
/**
* [optional] Limit the results to this many named webtasks.
*/
limit?: number
}
interface CreateCronJobOptions extends SandboxMethodOptions {
/**
* The name of the cron job.
*/
name: string,
/**
* [optional] The webtask token that will be used to run the job.
*/
token?: string,
/**
* The cron schedule that will be used to determine when the job will be run. For example: '5 4 * * *'.
*/
schedule: string,
/**
* The cron timezone (IANA timezone).
*/
tz: string,
/**
* The cron metadata (set of string key value pairs).
*/
meta: string
}
interface RemoveCronJobOptions extends SandboxMethodOptions {
/**
* The name of the cron job.
*/
name: string
}
interface SetCronJobStateOptions extends SandboxMethodOptions {
/**
* The name of the cron job.
*/
name: string,
/**
* The new state of the cron job (active/inactive).
*/
state: string
}
interface ListCronJobsOptions {
/**
* [optional] Set the webtask container. Defaults to the profile's container.
*/
container?: string
}
interface GetCronJobOptions extends SandboxMethodOptions {
/**
* The name of the cron job.
*/
name: string,
}
interface GetCronJobHistoryOptions extends SandboxMethodOptions {
/**
* The name of the cron job.
*/
name: string,
/**
* [optional] The offset to use when paging through results.
*/
offset?: number,
/**
* [optional] The limit to use when paging through results.
*/
limit?: number
}
interface RevokeTokenOptions {
/**
* The token that should be revoked
*/
token: string
}
interface ListNodeModuleVersionsOptions {
/**
* Name of the node module
*/
name: string
}
interface EnsureNodeModulesOptions {
/**
* Array of { name, version } pairs
*/
modules: object[],
/**
* Trigger a rebuild of the modules (Requires administrative token)
*/
reset: boolean
}
interface WebtaskStorage {
/**
* The data to be stored
*/
data: object,
/**
* [optional] Pass in an optional string to be used for optimistic concurrency control to prevent simultaneous updates of the same data.
*/
etag?: number
}
interface UpdateStorageOptions extends SandboxMethodOptions {
storage: WebtaskStorage
}
interface GetStorageOptions extends SandboxMethodOptions { }
interface CreateLogStreamOptions {
/**
* Define if the data will shown as JSON or not.
*/
json: boolean
}
interface SandboxResponseClaims {
/**
* The name of the webtask
*/
jtn: string,
/**
* The container name
*/
ten: string
}
interface GetWebtaskResponse {
/**
* The claims which are part of the webtask
*/
claims: SandboxResponseClaims,
/**
* The meta associated to the webtask
*/
meta: object,
/**
* The secrets associated to the webtask (only if `decrypt: true`)
*/
secrets: object,
/**
* The code of the webtask (only if `fetch_code: true`)
*/
code: string,
/**
* The container name
*/
container: string,
/**
* The URL to execute the webtask
*/
url: string
}
interface CreateWebtaskResponse {
/**
* The claims which are part of the webtask
*/
claims: SandboxResponseClaims,
/**
* The meta associated to the webtask
*/
meta: object,
/**
* The secrets associated to the webtask (only if `decrypt: true`)
*/
container: string,
/**
* The URL to execute the webtask
*/
url: string
}
interface ModuleResponse {
/**
* The name of the module
*/
name: string,
/**
* The version of the module
*/
version: string,
/**
* The state of the module (available, queued or failed)
*/
state: string
// "name": "express",
// "version": "4.12.4",
// "state": "available"
}
interface SandboxProfile {
/**
* [deprecated] Use 'createWebtask'.
*/
create(options: object) : Promise<any>,
/**
* [deprecated] Use 'createWebtask'.
*/
createRaw(options: object) : Promise<any>,
/**
* [deprecated] Use 'createWebtask'.
*/
createUrl(options: object) : Promise<any>,
/**
* [deprecated] Use 'createWebtask'.
*/
createTokenRaw(options: object) : Promise<any>,
/**
* Create a stream of logs from the webtask container
*
* Note that the logs will include messages from our infrastructure.
*/
createLogStream(options: CreateLogStreamOptions) : any,
/**
* Read a named webtask
*/
getWebtask(options: GetWebtaskOptions) : Promise<GetWebtaskResponse>,
/**
* Create a named webtask
*/
createWebtask(options: CreateWebtaskOptions) : Promise<CreateWebtaskResponse>,
/**
* Remove a named webtask from the webtask container
*/
removeWebtask(options: RemoveWebtaskOptions) : Promise<boolean>,
/**
* [deprecated] Update an existing webtask's code, secrets or other claims
*
* Note that this method should be used with caution as there is the potential for a race condition where another agent updates the webtask between the time that the webtask details and claims are resolved and when the webtask update is issued.
*/
updateWebtask(options: object) : Promise<any>,
/**
* List named webtasks from the webtask container
*/
listWebtasks(options: ListWebtasksOptions) : Promise<GetWebtaskResponse[]>,
/**
* Create a cron job from an already-existing webtask
*/
createCronJob(options: CreateCronJobOptions) : Promise<any>,
/**
* Remove an existing cron job
*/
removeCronJob(options: RemoveCronJobOptions) : Promise<any>,
/**
* Set an existing cron job's state
*/
setCronJobState(options: SetCronJobStateOptions) : Promise<any>,
/**
* List cron jobs associated with this profile
*/
listCronJobs(options: ListCronJobsOptions) : Promise<any>,
/**
* Get a CronJob instance associated with an existing cron job
*/
getCronJob(options: GetCronJobOptions) : Promise<any>,
/**
* Get the historical results of executions of an existing cron job.
*/
getCronJobHistory(options, GetCronJobHistoryOptions) : Promise<any>,
/**
* [deprecated] Use 'getWebtask'.
*/
inspectToken(options: object) : Promise<any>,
/**
* [deprecated] Use 'getWebtask'.
*/
inspectWebtask(options: object) : Promise<any>,
/**
* Revoke a webtask token
*/
revokeToken(options: RevokeTokenOptions) : Promise<any>,
/**
* List versions of a given node module that are available on the platform
*/
listNodeModuleVersions(options: ListNodeModuleVersionsOptions) : Promise<ModuleResponse[]>,
/**
* Ensure that a set of modules are available on the platform
*/
ensureNodeModules(options: EnsureNodeModulesOptions) : Promise<ModuleResponse[]>,
/**
* Update the storage associated to the a webtask
*/
updateStorage(options: UpdateStorageOptions) : Promise<any>,
/**
* Read the storage associated to the a webtask
*/
getStorage(options: GetStorageOptions) : Promise<any>
}
declare var Sandbox: SandboxJS.SandboxStatic;
declare module SandboxJS {
interface SandboxStatic {
/**
* Create a Sandbox instance
*/
init (options: SandboxOptions) : SandboxProfile,
/**
* [deprecated] Create a Sandbox instance from a webtask token
*/
fromToken (token, options: SandboxOptions)
}
}
declare module "sandboxjs" {
export = Sandbox;
}