SYMBOL INDEX (377 symbols across 40 files) FILE: action/deps.js function assertPath (line 5) | function assertPath(path) { constant CHAR_FORWARD_SLASH (line 10) | const CHAR_FORWARD_SLASH = 47; function isPathSeparator (line 11) | function isPathSeparator(code) { function isWindowsDeviceRoot (line 14) | function isWindowsDeviceRoot(code) { function assertArg (line 17) | function assertArg(url) { function fromFileUrl (line 24) | function fromFileUrl(url) { function isAbsolute (line 32) | function isAbsolute(path) { class AssertionError (line 46) | class AssertionError extends Error { method constructor (line 47) | constructor(message){ function assert (line 52) | function assert(expr, msg = "") { function assertArg1 (line 57) | function assertArg1(path) { function normalizeString (line 61) | function normalizeString(path, allowAboveRoot, separator, isPathSeparato... function normalize (line 114) | function normalize(path) { function join (line 195) | function join(...paths) { function resolve (line 234) | function resolve(...pathSegments) { constant WHITESPACE_ENCODINGS (line 327) | const WHITESPACE_ENCODINGS = { function encodeWhitespace (line 335) | function encodeWhitespace(string) { function toFileUrl (line 340) | function toFileUrl(path) { function _globToRegExp (line 376) | function _globToRegExp(c, glob, { extended = true, globstar: globstarOpt... function globToRegExp (line 573) | function globToRegExp(glob, options = {}) { function isGlob (line 576) | function isGlob(str) { function isPosixPathSeparator (line 602) | function isPosixPathSeparator(code) { function fromFileUrl1 (line 605) | function fromFileUrl1(url) { function isAbsolute1 (line 609) | function isAbsolute1(path) { function normalize1 (line 613) | function normalize1(path) { function join1 (line 623) | function join1(...paths) { function resolve1 (line 637) | function resolve1(...pathSegments) { function toFileUrl1 (line 664) | function toFileUrl1(path) { function globToRegExp1 (line 682) | function globToRegExp1(glob, options = {}) { function fromFileUrl2 (line 697) | function fromFileUrl2(url) { function join2 (line 700) | function join2(...paths) { function normalize2 (line 703) | function normalize2(path) { function resolve2 (line 706) | function resolve2(...pathSegments) { function toFileUrl2 (line 709) | function toFileUrl2(path) { function globToRegExp2 (line 712) | function globToRegExp2(glob, options = {}) { constant DEFAULT_STRINGIFY_OPTIONS (line 721) | const DEFAULT_STRINGIFY_OPTIONS = { function stringify (line 724) | function stringify(err, options) { function stringifyErrorShort (line 741) | function stringifyErrorShort(err) { function stringifyErrorLong (line 744) | function stringifyErrorLong(err) { function parseEntrypoint (line 753) | async function parseEntrypoint(entrypoint, root, diagnosticName = "entry... function isURL (line 773) | function isURL(entrypoint) { function delay (line 776) | function delay(ms, options = {}) { class TextLineStream (line 804) | class TextLineStream extends TransformStream { method constructor (line 806) | constructor(options = { constant VERSION (line 835) | const VERSION = "1.13.0"; function code (line 839) | function code(open, close) { function run (line 846) | function run(str, code) { function black (line 849) | function black(str) { function red (line 854) | function red(str) { function green (line 859) | function green(str) { function yellow (line 864) | function yellow(str) { function blue (line 869) | function blue(str) { function magenta (line 874) | function magenta(str) { function cyan (line 879) | function cyan(str) { function white (line 884) | function white(str) { function gray (line 889) | function gray(str) { function brightBlack (line 892) | function brightBlack(str) { function encode (line 902) | function encode(input) { function wcswidth (line 1475) | function wcswidth(str, { nul = 0, control = 0 } = {}) { function wcwidth (line 1489) | function wcwidth(ucs, { nul = 0, control = 0 } = {}) { function bisearch (line 1495) | function bisearch(ucs) { function ansiRegex (line 1508) | function ansiRegex({ onlyFirst = false } = {}) { function isInteractive (line 1515) | function isInteractive(stream) { function writeSync (line 1521) | function writeSync(str, writer) { function stripAnsi (line 1524) | function stripAnsi(dirty) { constant ESC (line 1527) | const ESC = "\u001B["; constant HIDE (line 1528) | const HIDE = "?25l"; constant SHOW (line 1529) | const SHOW = "?25h"; constant RIGHT (line 1531) | const RIGHT = "C"; constant CLEAR_LINE (line 1532) | const CLEAR_LINE = "2K"; function cursorSync (line 1533) | function cursorSync(action, writer = Deno.stdout) { function hideCursorSync (line 1536) | function hideCursorSync(writer = Deno.stdout) { function showCursorSync (line 1539) | function showCursorSync(writer = Deno.stdout) { function clearLineSync (line 1542) | function clearLineSync(writer = Deno.stdout) { function goUpSync (line 1545) | function goUpSync(y = 1, writer = Deno.stdout) { function goRightSync (line 1548) | function goRightSync(x = 1, writer = Deno.stdout) { function wait (line 2864) | function wait(opts) { class Spinner (line 2884) | class Spinner { method constructor (line 2895) | constructor(opts){ method #interceptConsole (line 2922) | #interceptConsole() { method spinner (line 2961) | set spinner(spin) { method spinner (line 2966) | get spinner() { method color (line 2969) | set color(color) { method color (line 2973) | get color() { method text (line 2976) | set text(value) { method text (line 2980) | get text() { method prefix (line 2983) | set prefix(value) { method prefix (line 2987) | get prefix() { method #write (line 2990) | #write(data) { method start (line 2993) | start() { method render (line 3009) | render() { method frame (line 3015) | frame() { method clear (line 3024) | clear() { method updateLines (line 3033) | updateLines() { method stop (line 3043) | stop() { method stopAndPersist (line 3054) | stopAndPersist(options = {}) { method succeed (line 3062) | succeed(text) { method fail (line 3068) | fail(text) { method warn (line 3074) | warn(text) { method info (line 3080) | info(text) { function wait1 (line 3088) | function wait1(param) { function interruptSpinner (line 3101) | function interruptSpinner() { class Interrupt (line 3107) | class Interrupt { method constructor (line 3109) | constructor(spinner){ method resume (line 3112) | resume() { constant USER_AGENT (line 3117) | const USER_AGENT = `DeployCTL/${VERSION} (${Deno.build.os} ${Deno.osRele... class APIError (line 3118) | class APIError extends Error { method constructor (line 3122) | constructor(code, message, xDenoRay){ method toString (line 3127) | toString() { function endpoint (line 3136) | function endpoint() { class API (line 3139) | class API { method constructor (line 3143) | constructor(authorization, endpoint, config){ method fromToken (line 3160) | static fromToken(token) { method withTokenProvisioner (line 3163) | static withTokenProvisioner(provisioner) { method request (line 3166) | async request(path, opts = {}) { method #requestJson (line 3201) | async #requestJson(path, opts) { method #requestStream (line 3214) | async #requestStream(path, opts) { method #requestJsonStream (line 3232) | async #requestJsonStream(path, opts) { method getOrganizationByName (line 3240) | async getOrganizationByName(name) { method getOrganizationById (line 3248) | async getOrganizationById(id) { method createOrganization (line 3251) | async createOrganization(name) { method listOrganizations (line 3260) | async listOrganizations() { method getProject (line 3263) | async getProject(id) { method createProject (line 3273) | async createProject(name, organizationId, envs) { method renameProject (line 3284) | async renameProject(id, newName) { method deleteProject (line 3293) | async deleteProject(id) { method listProjects (line 3306) | async listProjects(orgId) { method getDomains (line 3310) | async getDomains(projectId) { method listDeployments (line 3313) | async listDeployments(projectId, page, limit) { method listAllDeployments (line 3334) | async *listAllDeployments(projectId) { method getDeployment (line 3346) | async getDeployment(deploymentId) { method deleteDeployment (line 3356) | async deleteDeployment(deploymentId) { method redeployDeployment (line 3369) | async redeployDeployment(deploymentId, redeployParams) { method getLogs (line 3382) | getLogs(projectId, deploymentId) { method queryLogs (line 3387) | async queryLogs(projectId, deploymentId, params) { method projectNegotiateAssets (line 3393) | async projectNegotiateAssets(id, manifest) { method pushDeploy (line 3399) | pushDeploy(projectId, request, files) { method gitHubActionsDeploy (line 3412) | gitHubActionsDeploy(projectId, request, files) { method getMetadata (line 3425) | getMetadata() { method streamMetering (line 3428) | async streamMetering(project) { method getProjectDatabases (line 3450) | async getProjectDatabases(project) { method getDeploymentCrons (line 3460) | async getDeploymentCrons(projectId, deploymentId) { method getProjectCrons (line 3463) | async getProjectCrons(projectId) { function calculateGitSha1 (line 3474) | async function calculateGitSha1(bytes) { function include (line 3484) | function include(path, include, exclude) { function walk (line 3493) | async function walk(cwd, dir, options) { function walkInner (line 3501) | async function walkInner(cwd, dir, hashPathMap, options) { function convertPatternToRegExp (line 3538) | function convertPatternToRegExp(pattern) { FILE: action/index.js constant ORIGIN (line 16) | const ORIGIN = process.env.DEPLOY_API_ENDPOINT ?? "https://dash.deno.com"; function main (line 18) | async function main() { FILE: action/shim.js function fetch (line 7) | function fetch(url, init) { FILE: action/tests/hello.ts function handler (line 3) | async function handler(_req: Request) { FILE: deployctl.ts function setDefaultsFromConfigFile (line 145) | async function setDefaultsFromConfigFile(args: Args) { function setColoring (line 165) | function setColoring(args: Args) { function setAutoColoring (line 184) | function setAutoColoring() { FILE: examples/fresh/components/Button.tsx function Button (line 4) | function Button(props: JSX.HTMLAttributes) { FILE: examples/fresh/islands/Counter.tsx type CounterProps (line 4) | interface CounterProps { function Counter (line 8) | function Counter(props: CounterProps) { FILE: examples/fresh/routes/_404.tsx function Error404 (line 3) | function Error404() { FILE: examples/fresh/routes/_app.tsx function App (line 3) | function App({ Component }: AppProps) { FILE: examples/fresh/routes/api/joke.ts constant JOKES (line 4) | const JOKES = [ FILE: examples/fresh/routes/greet/[name].tsx function Greet (line 3) | function Greet(props: PageProps) { FILE: examples/fresh/routes/index.tsx function Home (line 4) | function Home() { FILE: src/args.ts function parseArgs (line 5) | function parseArgs(args: string[]) { type Args (line 72) | type Args = ReturnType; FILE: src/config_file.ts constant DEFAULT_FILENAME (line 10) | const DEFAULT_FILENAME = "deno.json"; constant CANDIDATE_FILENAMES (line 11) | const CANDIDATE_FILENAMES = [DEFAULT_FILENAME, "deno.jsonc"]; type ConfigArgs (line 14) | interface ConfigArgs { class ConfigFile (line 21) | class ConfigFile { method constructor (line 25) | constructor(path: string, content: { deploy?: ConfigArgs }) { method create (line 38) | static create(path: string, args: ConfigArgs) { method override (line 50) | override(args: ConfigArgs) { method useAsDefaultFor (line 59) | useAsDefaultFor(args: ConfigArgs) { method diff (line 79) | diff(args: ConfigArgs): Change[] { method normalize (line 102) | normalize(args: ConfigArgs): ConfigArgs { method hasDeployConfig (line 117) | hasDeployConfig() { method fromFileContent (line 121) | static fromFileContent(filepath: string, content: string) { method toFileContent (line 138) | toFileContent() { method path (line 154) | path() { method args (line 158) | args() { method read (line 165) | async read( function formatChanges (line 274) | function formatChanges( type Change (line 299) | interface Change { FILE: src/config_inference.ts constant NONAMES (line 11) | const NONAMES = ["src", "lib", "code", "dist", "build", "shared", "publi... type InferredArgs (line 14) | interface InferredArgs { function inferProject (line 29) | async function inferProject(api: API, dryRun: boolean, orgName?: string) { function inferProjectFromOriginUrl (line 106) | async function inferProjectFromOriginUrl() { function inferProjectFromCWD (line 122) | function inferProjectFromCWD() { function getOriginUrlUsingGitCmd (line 134) | async function getOriginUrlUsingGitCmd(): Promise { function getOriginUrlUsingFS (line 148) | async function getOriginUrlUsingFS(): Promise { constant ENTRYPOINT_PATHS (line 166) | const ENTRYPOINT_PATHS = ["main", "index", "src/main", "src/index"]; constant ENTRYPOINT_EXTENSIONS (line 167) | const ENTRYPOINT_EXTENSIONS = ["ts", "js", "tsx", "jsx"]; function inferEntrypoint (line 179) | async function inferEntrypoint() { function present (line 196) | async function present(path: string): Promise { function inferConfig (line 205) | async function inferConfig( FILE: src/error.ts function error (line 5) | function error(err: unknown): never { type StringifyOptions (line 11) | type StringifyOptions = { constant DEFAULT_STRINGIFY_OPTIONS (line 15) | const DEFAULT_STRINGIFY_OPTIONS: StringifyOptions = { function stringify (line 19) | function stringify( function stringifyErrorShort (line 42) | function stringifyErrorShort(err: Error): string { function stringifyErrorLong (line 46) | function stringifyErrorLong(err: Error): string { FILE: src/subcommands/deploy.ts type Args (line 95) | interface Args { type DeployOpts (line 175) | interface DeployOpts { function deploy (line 191) | async function deploy(opts: DeployOpts): Promise { FILE: src/subcommands/deployments.ts function listDeployments (line 168) | async function listDeployments(args: Args): Promise { function showDeployment (line 262) | async function showDeployment(args: Args): Promise { function deleteDeployment (line 361) | async function deleteDeployment(args: Args): Promise { function redeployDeployment (line 390) | async function redeployDeployment(args: Args): Promise { function searchRelativeDeployment (line 538) | async function searchRelativeDeployment( function renderShowOverview (line 566) | function renderShowOverview( function renderShowJson (line 652) | function renderShowJson( function renderListOverview (line 664) | async function renderListOverview( function isCurrentProd (line 746) | function isCurrentProd(project: Project, build: Build): boolean { function deploymentError (line 750) | function deploymentError(build: Build): DeploymentProgressError | undefi... function deploymentStatus (line 756) | function deploymentStatus( function isReady (line 773) | function isReady(status: DeploymentStatus): boolean { function deploymentDatabase (line 777) | function deploymentDatabase( function deploymentLocaleDate (line 786) | function deploymentLocaleDate(build: Build): string { function deploymentRelativeDate (line 792) | function deploymentRelativeDate(build: Build): string { function deploymentEntrypoint (line 797) | function deploymentEntrypoint(build: Build): string { function deploymentDatabaseEnv (line 805) | function deploymentDatabaseEnv( function renderTable (line 814) | function renderTable(table: Record[]) { function resolveDeploymentId (line 854) | async function resolveDeploymentId( function resolveDatabase (line 979) | function resolveDatabase( function greenProd (line 1026) | function greenProd(s: "Production" | string): string { type DeploymentStatus (line 1030) | type DeploymentStatus = "Failed" | "Pending" | "Production" | "Preview"; type DatabaseEnv (line 1031) | type DatabaseEnv = "Production" | "Preview"; type DeploymentId (line 1032) | type DeploymentId = string; type ProjectId (line 1033) | type ProjectId = string; FILE: src/subcommands/logs.ts type LogSubcommandArgs (line 51) | interface LogSubcommandArgs { type LogOptsBase (line 65) | type LogOptsBase = { type LiveLogOpts (line 73) | type LiveLogOpts = LogOptsBase; type QueryLogOpts (line 74) | type QueryLogOpts = LogOptsBase & { function getInvalidRegions (line 149) | function getInvalidRegions( function invalidRegionError (line 162) | function invalidRegionError( function parseArgsForLogSubcommand (line 175) | function parseArgsForLogSubcommand(args: Args): LogSubcommandArgs { function fetchProjectInfo (line 229) | async function fetchProjectInfo( function liveLogs (line 247) | async function liveLogs(api: API, opts: LiveLogOpts): Promise { function queryLogs (line 299) | async function queryLogs(api: API, opts: QueryLogOpts): Promise { function printLog (line 348) | function printLog( function getLogColor (line 363) | function getLogColor(logLevel: string) { FILE: src/subcommands/projects.ts function listProjects (line 66) | async function listProjects(args: Args): Promise { function showProject (line 97) | async function showProject(args: Args): Promise { function deleteProject (line 197) | async function deleteProject(args: Args): Promise { function createProject (line 241) | async function createProject(args: Args): Promise { function renameProject (line 275) | async function renameProject(args: Args): Promise { FILE: src/subcommands/top.ts function topSubcommand (line 47) | async function topSubcommand(args: Args) { function tabbed (line 116) | async function tabbed(stats: AsyncGenerator) { function json (line 207) | async function json(stats: AsyncGenerator) { FILE: src/subcommands/upgrade.ts type Args (line 32) | interface Args { function getVersions (line 89) | async function getVersions(): Promise< FILE: src/utils/access_token.ts method provision (line 11) | async provision() { function provision (line 24) | async function provision(): Promise { FILE: src/utils/api.ts constant USER_AGENT (line 27) | const USER_AGENT = type RequestOptions (line 30) | interface RequestOptions { class APIError (line 36) | class APIError extends Error { method constructor (line 42) | constructor(code: string, message: string, xDenoRay: string | null) { method toString (line 48) | override toString() { function endpoint (line 59) | function endpoint(): string { type TokenProvisioner (line 63) | interface TokenProvisioner { type Logger (line 79) | interface Logger { type APIConfig (line 87) | interface APIConfig { class API (line 99) | class API { method constructor (line 104) | constructor( method fromToken (line 129) | static fromToken(token: string) { method withTokenProvisioner (line 133) | static withTokenProvisioner(provisioner: TokenProvisioner) { method request (line 137) | async request(path: string, opts: RequestOptions = {}): Promise(path: string, opts?: RequestOptions): Promise { method #requestStream (line 188) | async #requestStream( method #requestJsonStream (line 213) | async #requestJsonStream( method getOrganizationByName (line 225) | async getOrganizationByName(name: string): Promise { method createOrganization (line 240) | async createOrganization(name: string): Promise { method listOrganizations (line 248) | async listOrganizations(): Promise { method getProject (line 252) | async getProject(id: string): Promise { method createProject (line 263) | async createProject( method renameProject (line 272) | async renameProject( method deleteProject (line 280) | async deleteProject( method listProjects (line 294) | async listProjects( method getDomains (line 303) | async getDomains(projectId: string): Promise { method listDeployments (line 307) | async listDeployments( method listAllDeployments (line 332) | async *listAllDeployments( method getDeployment (line 350) | async getDeployment( method deleteDeployment (line 363) | async deleteDeployment( method redeployDeployment (line 379) | async redeployDeployment( method getLogs (line 403) | getLogs( method queryLogs (line 415) | async queryLogs( method projectNegotiateAssets (line 428) | async projectNegotiateAssets( method pushDeploy (line 438) | pushDeploy( method gitHubActionsDeploy (line 454) | gitHubActionsDeploy( method getMetadata (line 470) | getMetadata(): Promise { method streamMetering (line 474) | async streamMetering( method getProjectDatabases (line 502) | async getProjectDatabases(project: string): Promise { method getDeploymentCrons (line 513) | async getDeploymentCrons( method getProjectCrons (line 522) | async getProjectCrons( FILE: src/utils/api_types.ts type DomainMapping (line 1) | interface DomainMapping { type Build (line 7) | interface Build { type Deployment (line 25) | interface Deployment { type DeploymentV1 (line 38) | type DeploymentV1 = { type BuildsPage (line 49) | interface BuildsPage { type Project (line 54) | interface Project { type Organization (line 71) | type Organization = UserOrganization | NormalOrganization; type UserOrganization (line 73) | type UserOrganization = CommonOrganization & { type NormalOrganization (line 77) | type NormalOrganization = CommonOrganization & { type CommonOrganization (line 81) | interface CommonOrganization { type OrganizationMember (line 86) | interface OrganizationMember { type User (line 90) | interface User { type PagingInfo (line 94) | interface PagingInfo { type ManifestEntryFile (line 102) | interface ManifestEntryFile { type ManifestEntryDirectory (line 108) | interface ManifestEntryDirectory { type ManifestEntrySymlink (line 113) | interface ManifestEntrySymlink { type ManifestEntry (line 118) | type ManifestEntry = type PushDeploymentRequest (line 123) | interface PushDeploymentRequest { type GitHubActionsDeploymentRequest (line 130) | interface GitHubActionsDeploymentRequest { type DeploymentProgress (line 137) | type DeploymentProgress = type DeploymentProgressStaticFile (line 144) | interface DeploymentProgressStaticFile { type DeploymentProgressLoad (line 150) | interface DeploymentProgressLoad { type DeploymentProgressUploadComplete (line 157) | interface DeploymentProgressUploadComplete { type DeploymentProgressSuccess (line 161) | interface DeploymentProgressSuccess extends Deployment { type DeploymentProgressError (line 165) | interface DeploymentProgressError { type LiveLogReady (line 171) | interface LiveLogReady { type LiveLogPing (line 175) | interface LiveLogPing { type LiveLogMessage (line 179) | interface LiveLogMessage { type LiveLog (line 187) | type LiveLog = type LogQueryRequestParams (line 192) | interface LogQueryRequestParams { type PersistedLog (line 203) | interface PersistedLog { type Metadata (line 213) | interface Metadata { type Domain (line 217) | interface Domain { type ProjectStats (line 222) | interface ProjectStats { type Database (line 240) | interface Database { type Cron (line 251) | interface Cron { type CronExecutionRetry (line 261) | interface CronExecutionRetry { type CronStatus (line 269) | type CronStatus = FILE: src/utils/crons.ts function renderCron (line 4) | function renderCron(cron: Cron): string { function renderCronStatus (line 10) | function renderCronStatus(cron: Cron): string { function renderLastCronExecution (line 42) | function renderLastCronExecution(execution: CronExecutionRetry): string { FILE: src/utils/entrypoint.ts function parseEntrypoint (line 8) | async function parseEntrypoint( function isURL (line 39) | function isURL(entrypoint: string): boolean { FILE: src/utils/env_vars.ts function envVarsFromArgs (line 10) | async function envVarsFromArgs( FILE: src/utils/hashing_encoding.ts function base64url (line 1) | function base64url(binary: Uint8Array): string { function sha256 (line 12) | async function sha256(randomString: string): Promise { FILE: src/utils/info.ts function getConfigPaths (line 4) | function getConfigPaths() { function fetchReleases (line 17) | async function fetchReleases() { FILE: src/utils/manifest.ts function calculateGitSha1 (line 5) | async function calculateGitSha1(bytes: Uint8Array) { function include (line 18) | function include( function walk (line 38) | async function walk( function walkInner (line 56) | async function walkInner( function convertPatternToRegExp (line 113) | function convertPatternToRegExp(pattern: string): RegExp { function containsEntryInManifest (line 127) | function containsEntryInManifest( FILE: src/utils/manifest_test.ts type Test (line 23) | type Test = { FILE: src/utils/spinner.ts function wait (line 9) | function wait(param: string | SpinnerOptions) { function interruptSpinner (line 18) | function interruptSpinner(): Interrupt { class Interrupt (line 25) | class Interrupt { method constructor (line 27) | constructor(spinner: Spinner | null) { method resume (line 30) | resume() { FILE: src/utils/time.ts function renderTimeDelta (line 3) | function renderTimeDelta(delta: number, language?: string): string { FILE: src/utils/token_storage.ts type TokenStorage (line 3) | interface TokenStorage { function defaultOnError (line 55) | function defaultOnError< FILE: src/utils/token_storage/darwin.ts constant KEYCHAIN_CREDS (line 3) | const KEYCHAIN_CREDS = { account: "Deno Deploy", service: "DeployCTL" }; function getFromKeychain (line 5) | function getFromKeychain(): Promise { function storeInKeyChain (line 20) | function storeInKeyChain(token: string): Promise { function removeFromKeyChain (line 35) | function removeFromKeyChain(): Promise { type KeychainError (line 47) | interface KeychainError { FILE: src/utils/token_storage/fs.ts function get (line 3) | async function get(): Promise { function store (line 29) | async function store(token: string): Promise { function remove (line 40) | async function remove(): Promise { FILE: src/utils/token_storage/memory.ts constant TOKEN (line 1) | let TOKEN: string | null; function get (line 3) | function get(): Promise { function store (line 7) | function store(token: string): Promise { function remove (line 12) | function remove(): Promise { FILE: src/version.ts constant VERSION (line 1) | const VERSION = "1.13.1"; constant MINIMUM_DENO_VERSION (line 5) | const MINIMUM_DENO_VERSION = "1.46.0"; FILE: tests/utils.ts type Permissions (line 5) | interface Permissions { function deployctl (line 14) | function deployctl( type TestOptions (line 65) | interface TestOptions { function test (line 71) | function test( function output (line 82) | async function output(