Skip to main content

vscode Submodule

Constructs

DevContainer

A development environment running VSCode in a container;

used by GitHub codespaces.

Initializers

import { vscode } from 'projen'

new vscode.DevContainer(project: Project, options?: DevContainerOptions)
NameTypeDescription
project
projen.ProjectNo description.
options
DevContainerOptions
No description.

projectRequired
  • Type: projen.Project

optionsOptional

Methods

NameDescription
toString
Returns a string representation of this construct.
postSynthesize
Called after synthesis.
preSynthesize
Called before synthesis.
synthesize
Synthesizes files to the project output directory.
addDockerImage
Add a custom Docker image or Dockerfile for the container.
addFeatures
Adds a list of VSCode features that should be automatically installed in the container.
addPorts
Adds ports that should be exposed (forwarded) from the container.
addTasks
Adds tasks to run when the container starts.
addVscodeExtensions
Adds a list of VSCode extensions that should be automatically installed in the container.

toString
public toString(): string

Returns a string representation of this construct.

postSynthesize
public postSynthesize(): void

Called after synthesis.

Order is not guaranteed.

preSynthesize
public preSynthesize(): void

Called before synthesis.

synthesize
public synthesize(): void

Synthesizes files to the project output directory.

addDockerImage
public addDockerImage(image: DevEnvironmentDockerImage): void

Add a custom Docker image or Dockerfile for the container.

imageRequired
  • Type: projen.DevEnvironmentDockerImage

addFeatures
public addFeatures(features: DevContainerFeature): void

Adds a list of VSCode features that should be automatically installed in the container.

featuresRequired

featureName and version(optional default: latest).


addPorts
public addPorts(ports: string): void

Adds ports that should be exposed (forwarded) from the container.

portsRequired
  • Type: string

The new ports.


addTasks
public addTasks(tasks: Task): void

Adds tasks to run when the container starts.

Tasks will be run in sequence.

tasksRequired
  • Type: projen.Task

The new tasks.


addVscodeExtensions
public addVscodeExtensions(extensions: string): void

Adds a list of VSCode extensions that should be automatically installed in the container.

extensionsRequired
  • Type: string

The extension IDs.


Static Functions

NameDescription
isConstruct
Checks if x is a construct.
isComponent
Test whether the given construct is a component.

isConstruct
import { vscode } from 'projen'

vscode.DevContainer.isConstruct(x: any)

Checks if x is a construct.

Use this method instead of instanceof to properly detect Construct instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the constructs library on disk are seen as independent, completely different libraries. As a consequence, the class Construct in each copy of the constructs library is seen as a different class, and an instance of one class will not test as instanceof the other class. npm install will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the constructs library can be accidentally installed, and instanceof will behave unpredictably. It is safest to avoid using instanceof, and using this type-testing method instead.

xRequired
  • Type: any

Any object.


isComponent
import { vscode } from 'projen'

vscode.DevContainer.isComponent(x: any)

Test whether the given construct is a component.

xRequired
  • Type: any

Properties

NameTypeDescription
node
constructs.NodeThe tree node.
project
projen.ProjectNo description.
config
anyDirect access to the devcontainer configuration (escape hatch).

nodeRequired
public readonly node: Node;
  • Type: constructs.Node

The tree node.


projectRequired
public readonly project: Project;
  • Type: projen.Project

configRequired
public readonly config: any;
  • Type: any

Direct access to the devcontainer configuration (escape hatch).


VsCode

Initializers

import { vscode } from 'projen'

new vscode.VsCode(project: Project)
NameTypeDescription
project
projen.ProjectNo description.

projectRequired
  • Type: projen.Project

Methods

NameDescription
toString
Returns a string representation of this construct.
postSynthesize
Called after synthesis.
preSynthesize
Called before synthesis.
synthesize
Synthesizes files to the project output directory.

toString
public toString(): string

Returns a string representation of this construct.

postSynthesize
public postSynthesize(): void

Called after synthesis.

Order is not guaranteed.

preSynthesize
public preSynthesize(): void

Called before synthesis.

synthesize
public synthesize(): void

Synthesizes files to the project output directory.

Static Functions

NameDescription
isConstruct
Checks if x is a construct.
isComponent
Test whether the given construct is a component.

isConstruct
import { vscode } from 'projen'

vscode.VsCode.isConstruct(x: any)

Checks if x is a construct.

Use this method instead of instanceof to properly detect Construct instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the constructs library on disk are seen as independent, completely different libraries. As a consequence, the class Construct in each copy of the constructs library is seen as a different class, and an instance of one class will not test as instanceof the other class. npm install will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the constructs library can be accidentally installed, and instanceof will behave unpredictably. It is safest to avoid using instanceof, and using this type-testing method instead.

xRequired
  • Type: any

Any object.


isComponent
import { vscode } from 'projen'

vscode.VsCode.isComponent(x: any)

Test whether the given construct is a component.

xRequired
  • Type: any

Properties

NameTypeDescription
node
constructs.NodeThe tree node.
project
projen.ProjectNo description.
extensions
VsCodeRecommendedExtensions
No description.
launchConfiguration
VsCodeLaunchConfig
No description.
settings
VsCodeSettings
No description.

nodeRequired
public readonly node: Node;
  • Type: constructs.Node

The tree node.


projectRequired
public readonly project: Project;
  • Type: projen.Project

extensionsRequired
public readonly extensions: VsCodeRecommendedExtensions;

launchConfigurationRequired
public readonly launchConfiguration: VsCodeLaunchConfig;

settingsRequired
public readonly settings: VsCodeSettings;

VsCodeLaunchConfig

VSCode launch configuration file (launch.json), useful for enabling in-editor debugger.

Initializers

import { vscode } from 'projen'

new vscode.VsCodeLaunchConfig(vscode: VsCode)
NameTypeDescription
vscode
VsCode
No description.

vscodeRequired

Methods

NameDescription
toString
Returns a string representation of this construct.
postSynthesize
Called after synthesis.
preSynthesize
Called before synthesis.
synthesize
Synthesizes files to the project output directory.
addCommandInput
Adds an input variable with type command to .vscode/launch.json.
addConfiguration
Adds a VsCodeLaunchConfigurationEntry (e.g. a node.js debugger) to `.vscode/launch.json. Each configuration entry has following mandatory fields: type, request and name. See https://code.visualstudio.com/docs/editor/debugging#_launchjson-attributes for details.
addPickStringInput
Adds an input variable with type pickString to .vscode/launch.json.
addPromptStringInput
Adds an input variable with type promptString to .vscode/launch.json.

toString
public toString(): string

Returns a string representation of this construct.

postSynthesize
public postSynthesize(): void

Called after synthesis.

Order is not guaranteed.

preSynthesize
public preSynthesize(): void

Called before synthesis.

synthesize
public synthesize(): void

Synthesizes files to the project output directory.

addCommandInput
public addCommandInput(cfg: VsCodeLaunchCommandInputEntry): void

Adds an input variable with type command to .vscode/launch.json.

See https://code.visualstudio.com/docs/editor/variables-reference#_input-variables for details.

cfgRequired

VsCodeLaunchCommandInputEntry.


addConfiguration
public addConfiguration(cfg: VsCodeLaunchConfigurationEntry): void

Adds a VsCodeLaunchConfigurationEntry (e.g. a node.js debugger) to `.vscode/launch.json. Each configuration entry has following mandatory fields: type, request and name. See https://code.visualstudio.com/docs/editor/debugging#_launchjson-attributes for details.

cfgRequired

VsCodeLaunchConfigurationEntry.


addPickStringInput
public addPickStringInput(cfg: VsCodeLaunchPickStringInputEntry): void

Adds an input variable with type pickString to .vscode/launch.json.

See https://code.visualstudio.com/docs/editor/variables-reference#_input-variables for details.

cfgRequired

VsCodeLaunchPickStringInputEntry.


addPromptStringInput
public addPromptStringInput(cfg: VsCodeLaunchPromptStringInputEntry): void

Adds an input variable with type promptString to .vscode/launch.json.

See https://code.visualstudio.com/docs/editor/variables-reference#_input-variables for details.

cfgRequired

VsCodeLaunchPromptStringInputEntry.


Static Functions

NameDescription
isConstruct
Checks if x is a construct.
isComponent
Test whether the given construct is a component.

isConstruct
import { vscode } from 'projen'

vscode.VsCodeLaunchConfig.isConstruct(x: any)

Checks if x is a construct.

Use this method instead of instanceof to properly detect Construct instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the constructs library on disk are seen as independent, completely different libraries. As a consequence, the class Construct in each copy of the constructs library is seen as a different class, and an instance of one class will not test as instanceof the other class. npm install will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the constructs library can be accidentally installed, and instanceof will behave unpredictably. It is safest to avoid using instanceof, and using this type-testing method instead.

xRequired
  • Type: any

Any object.


isComponent
import { vscode } from 'projen'

vscode.VsCodeLaunchConfig.isComponent(x: any)

Test whether the given construct is a component.

xRequired
  • Type: any

Properties

NameTypeDescription
node
constructs.NodeThe tree node.
project
projen.ProjectNo description.
file
projen.JsonFileNo description.

nodeRequired
public readonly node: Node;
  • Type: constructs.Node

The tree node.


projectRequired
public readonly project: Project;
  • Type: projen.Project

fileRequired
public readonly file: JsonFile;
  • Type: projen.JsonFile

VsCodeRecommendedExtensions

VS Code Workspace recommended extensions Source: https://code.visualstudio.com/docs/editor/extension-marketplace#_workspace-recommended-extensions.

Initializers

import { vscode } from 'projen'

new vscode.VsCodeRecommendedExtensions(vscode: VsCode)
NameTypeDescription
vscode
VsCode
No description.

vscodeRequired

Methods

NameDescription
toString
Returns a string representation of this construct.
postSynthesize
Called after synthesis.
preSynthesize
Called before synthesis.
synthesize
Synthesizes files to the project output directory.
addRecommendations
Adds a list of VS Code extensions as recommendations for this workspace.
addUnwantedRecommendations
Marks a list of VS Code extensions as unwanted recommendations for this workspace.

toString
public toString(): string

Returns a string representation of this construct.

postSynthesize
public postSynthesize(): void

Called after synthesis.

Order is not guaranteed.

preSynthesize
public preSynthesize(): void

Called before synthesis.

synthesize
public synthesize(): void

Synthesizes files to the project output directory.

addRecommendations
public addRecommendations(extensions: string): void

Adds a list of VS Code extensions as recommendations for this workspace.

extensionsRequired
  • Type: string

The extension IDs.


addUnwantedRecommendations
public addUnwantedRecommendations(extensions: string): void

Marks a list of VS Code extensions as unwanted recommendations for this workspace.

VS Code should not be recommend these extensions for users of this workspace.

extensionsRequired
  • Type: string

The extension IDs.


Static Functions

NameDescription
isConstruct
Checks if x is a construct.
isComponent
Test whether the given construct is a component.

isConstruct
import { vscode } from 'projen'

vscode.VsCodeRecommendedExtensions.isConstruct(x: any)

Checks if x is a construct.

Use this method instead of instanceof to properly detect Construct instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the constructs library on disk are seen as independent, completely different libraries. As a consequence, the class Construct in each copy of the constructs library is seen as a different class, and an instance of one class will not test as instanceof the other class. npm install will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the constructs library can be accidentally installed, and instanceof will behave unpredictably. It is safest to avoid using instanceof, and using this type-testing method instead.

xRequired
  • Type: any

Any object.


isComponent
import { vscode } from 'projen'

vscode.VsCodeRecommendedExtensions.isComponent(x: any)

Test whether the given construct is a component.

xRequired
  • Type: any

Properties

NameTypeDescription
node
constructs.NodeThe tree node.
project
projen.ProjectNo description.
file
projen.JsonFileNo description.

nodeRequired
public readonly node: Node;
  • Type: constructs.Node

The tree node.


projectRequired
public readonly project: Project;
  • Type: projen.Project

fileRequired
public readonly file: JsonFile;
  • Type: projen.JsonFile

VsCodeSettings

VS Code Workspace settings Source: https://code.visualstudio.com/docs/getstarted/settings#_workspace-settings.

Initializers

import { vscode } from 'projen'

new vscode.VsCodeSettings(vscode: VsCode)
NameTypeDescription
vscode
VsCode
No description.

vscodeRequired

Methods

NameDescription
toString
Returns a string representation of this construct.
postSynthesize
Called after synthesis.
preSynthesize
Called before synthesis.
synthesize
Synthesizes files to the project output directory.
addSetting
Adds a workspace setting.
addSettings
Adds a workspace setting.

toString
public toString(): string

Returns a string representation of this construct.

postSynthesize
public postSynthesize(): void

Called after synthesis.

Order is not guaranteed.

preSynthesize
public preSynthesize(): void

Called before synthesis.

synthesize
public synthesize(): void

Synthesizes files to the project output directory.

addSetting
public addSetting(setting: string, value: any, language?: string): void

Adds a workspace setting.

settingRequired
  • Type: string

The setting ID.


valueRequired
  • Type: any

The value of the setting.


languageOptional
  • Type: string

Scope the setting to a specific language.


addSettings
public addSettings(settings: {[ key: string ]: any}, languages?: string | string[]): void

Adds a workspace setting.

settingsRequired
  • Type: {[ key: string ]: any}

Array structure: [setting: string, value: any, languages?: string[]].


languagesOptional
  • Type: string | string[]

Static Functions

NameDescription
isConstruct
Checks if x is a construct.
isComponent
Test whether the given construct is a component.

isConstruct
import { vscode } from 'projen'

vscode.VsCodeSettings.isConstruct(x: any)

Checks if x is a construct.

Use this method instead of instanceof to properly detect Construct instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the constructs library on disk are seen as independent, completely different libraries. As a consequence, the class Construct in each copy of the constructs library is seen as a different class, and an instance of one class will not test as instanceof the other class. npm install will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the constructs library can be accidentally installed, and instanceof will behave unpredictably. It is safest to avoid using instanceof, and using this type-testing method instead.

xRequired
  • Type: any

Any object.


isComponent
import { vscode } from 'projen'

vscode.VsCodeSettings.isComponent(x: any)

Test whether the given construct is a component.

xRequired
  • Type: any

Properties

NameTypeDescription
node
constructs.NodeThe tree node.
project
projen.ProjectNo description.
file
projen.JsonFileNo description.

nodeRequired
public readonly node: Node;
  • Type: constructs.Node

The tree node.


projectRequired
public readonly project: Project;
  • Type: projen.Project

fileRequired
public readonly file: JsonFile;
  • Type: projen.JsonFile

Structs

DevContainerFeature

devcontainer features options.

https://containers.dev/implementors/features/#devcontainer-json-properties

Initializer

import { vscode } from 'projen'

const devContainerFeature: vscode.DevContainerFeature = { ... }

Properties

NameTypeDescription
name
stringfeature name.
version
stringfeature version.

nameRequired
public readonly name: string;
  • Type: string

feature name.


versionOptional
public readonly version: string;
  • Type: string
  • Default: latest

feature version.


DevContainerOptions

Constructor options for the DevContainer component.

The default docker image used for GitHub Codespaces is defined here:

https://github.com/microsoft/vscode-dev-containers/tree/master/containers/codespaces-linux

Initializer

import { vscode } from 'projen'

const devContainerOptions: vscode.DevContainerOptions = { ... }

Properties

NameTypeDescription
dockerImage
projen.DevEnvironmentDockerImageA Docker image or Dockerfile for the container.
ports
string[]An array of ports that should be exposed from the container.
tasks
projen.Task[]An array of tasks that should be run when the container starts.
vscodeExtensions
string[]An array of extension IDs that specify the extensions that should be installed inside the container when it is created.
features
DevContainerFeature[]
An array of VSCode features that specify the features that should be installed inside the container when it is created.

dockerImageOptional
public readonly dockerImage: DevEnvironmentDockerImage;
  • Type: projen.DevEnvironmentDockerImage

A Docker image or Dockerfile for the container.


portsOptional
public readonly ports: string[];
  • Type: string[]

An array of ports that should be exposed from the container.


tasksOptional
public readonly tasks: Task[];
  • Type: projen.Task[]

An array of tasks that should be run when the container starts.


vscodeExtensionsOptional
public readonly vscodeExtensions: string[];
  • Type: string[]

An array of extension IDs that specify the extensions that should be installed inside the container when it is created.


featuresOptional
public readonly features: DevContainerFeature[];

An array of VSCode features that specify the features that should be installed inside the container when it is created.


Presentation

VSCode launch configuration Presentation interface "using the order, group, and hidden attributes in the presentation object you can sort, group, and hide configurations and compounds in the Debug configuration dropdown and in the Debug quick pick." Source: https://code.visualstudio.com/docs/editor/debugging#_launchjson-attributes.

Initializer

import { vscode } from 'projen'

const presentation: vscode.Presentation = { ... }

Properties

NameTypeDescription
group
stringNo description.
hidden
booleanNo description.
order
numberNo description.

groupRequired
public readonly group: string;
  • Type: string

hiddenRequired
public readonly hidden: boolean;
  • Type: boolean

orderRequired
public readonly order: number;
  • Type: number

ServerReadyAction

VSCode launch configuration ServerReadyAction interface "if you want to open a URL in a web browser whenever the program under debugging outputs a specific message to the debug console or integrated terminal." Source: https://code.visualstudio.com/docs/editor/debugging#_launchjson-attributes.

Initializer

import { vscode } from 'projen'

const serverReadyAction: vscode.ServerReadyAction = { ... }

Properties

NameTypeDescription
action
stringNo description.
pattern
stringNo description.
uriFormat
stringNo description.

actionRequired
public readonly action: string;
  • Type: string

patternOptional
public readonly pattern: string;
  • Type: string

uriFormatOptional
public readonly uriFormat: string;
  • Type: string

VsCodeLaunchCommandInputEntry

Options for a 'VsCodeLaunchCommandInputEntry' Source: https://code.visualstudio.com/docs/editor/variables-reference#_input-variables.

Initializer

import { vscode } from 'projen'

const vsCodeLaunchCommandInputEntry: vscode.VsCodeLaunchCommandInputEntry = { ... }

Properties

NameTypeDescription
id
stringNo description.
command
stringNo description.
args
anyNo description.

idRequired
public readonly id: string;
  • Type: string

commandRequired
public readonly command: string;
  • Type: string

argsOptional
public readonly args: any;
  • Type: any

VsCodeLaunchConfigurationEntry

Options for a 'VsCodeLaunchConfigurationEntry' Source: https://code.visualstudio.com/docs/editor/debugging#_launchjson-attributes.

Initializer

import { vscode } from 'projen'

const vsCodeLaunchConfigurationEntry: vscode.VsCodeLaunchConfigurationEntry = { ... }

Properties

NameTypeDescription
name
stringNo description.
request
stringNo description.
type
stringNo description.
args
string[]No description.
console
Console
No description.
cwd
stringNo description.
debugServer
numberNo description.
disableOptimisticBPs
booleanNo description.
env
{[ key: string ]: string | boolean}Set value to false to unset an existing environment variable.
envFile
stringNo description.
internalConsoleOptions
InternalConsoleOptions
No description.
outFiles
string[]No description.
port
numberNo description.
postDebugTask
stringNo description.
preLaunchTask
stringNo description.
presentation
Presentation
No description.
program
stringNo description.
runtimeArgs
string[]No description.
serverReadyAction
ServerReadyAction
No description.
skipFiles
string[]No description.
stopOnEntry
booleanNo description.
url
stringNo description.
webRoot
stringNo description.

nameRequired
public readonly name: string;
  • Type: string

requestRequired
public readonly request: string;
  • Type: string

typeRequired
public readonly type: string;
  • Type: string

argsOptional
public readonly args: string[];
  • Type: string[]

consoleOptional
public readonly console: Console;

cwdOptional
public readonly cwd: string;
  • Type: string

debugServerOptional
public readonly debugServer: number;
  • Type: number

disableOptimisticBPsOptional
public readonly disableOptimisticBPs: boolean;
  • Type: boolean

envOptional
public readonly env: {[ key: string ]: string | boolean};
  • Type: {[ key: string ]: string | boolean}

Set value to false to unset an existing environment variable.


envFileOptional
public readonly envFile: string;
  • Type: string

internalConsoleOptionsOptional
public readonly internalConsoleOptions: InternalConsoleOptions;

outFilesOptional
public readonly outFiles: string[];
  • Type: string[]

portOptional
public readonly port: number;
  • Type: number

postDebugTaskOptional
public readonly postDebugTask: string;
  • Type: string

preLaunchTaskOptional
public readonly preLaunchTask: string;
  • Type: string

presentationOptional
public readonly presentation: Presentation;

programOptional
public readonly program: string;
  • Type: string

runtimeArgsOptional
public readonly runtimeArgs: string[];
  • Type: string[]

serverReadyActionOptional
public readonly serverReadyAction: ServerReadyAction;

skipFilesOptional
public readonly skipFiles: string[];
  • Type: string[]

stopOnEntryOptional
public readonly stopOnEntry: boolean;
  • Type: boolean

urlOptional
public readonly url: string;
  • Type: string

webRootOptional
public readonly webRoot: string;
  • Type: string

VsCodeLaunchInputEntry

Base options for a 'VsCodeLaunchInputEntry' Source: https://code.visualstudio.com/docs/editor/variables-reference#_input-variables.

Initializer

import { vscode } from 'projen'

const vsCodeLaunchInputEntry: vscode.VsCodeLaunchInputEntry = { ... }

Properties

NameTypeDescription
id
stringNo description.

idRequired
public readonly id: string;
  • Type: string

VsCodeLaunchPickStringInputEntry

Options for a 'VsCodeLaunchPickStringInputEntry' Source: https://code.visualstudio.com/docs/editor/variables-reference#_input-variables.

Initializer

import { vscode } from 'projen'

const vsCodeLaunchPickStringInputEntry: vscode.VsCodeLaunchPickStringInputEntry = { ... }

Properties

NameTypeDescription
id
stringNo description.
description
stringNo description.
options
string[]No description.
default
stringNo description.

idRequired
public readonly id: string;
  • Type: string

descriptionRequired
public readonly description: string;
  • Type: string

optionsRequired
public readonly options: string[];
  • Type: string[]

defaultOptional
public readonly default: string;
  • Type: string

VsCodeLaunchPromptStringInputEntry

Options for a 'VsCodeLaunchPromptStringInputEntry' Source: https://code.visualstudio.com/docs/editor/variables-reference#_input-variables.

Initializer

import { vscode } from 'projen'

const vsCodeLaunchPromptStringInputEntry: vscode.VsCodeLaunchPromptStringInputEntry = { ... }

Properties

NameTypeDescription
id
stringNo description.
description
stringNo description.
default
stringNo description.
password
booleanNo description.

idRequired
public readonly id: string;
  • Type: string

descriptionRequired
public readonly description: string;
  • Type: string

defaultOptional
public readonly default: string;
  • Type: string

passwordOptional
public readonly password: boolean;
  • Type: boolean

Protocols

IDevContainerEnvironment

Methods

NameDescription
addFeatures
Adds a list of VSCode features that should be automatically installed in the container.

addFeatures
public addFeatures(features: DevContainerFeature): void

Adds a list of VSCode features that should be automatically installed in the container.

featuresRequired

featureName and version(optional default: latest).


Enums

Console

Controls where to launch the debug target Source: https://code.visualstudio.com/docs/editor/debugging#_launchjson-attributes.

Members

NameDescription
INTERNAL_CONSOLE
No description.
INTEGRATED_TERMINAL
No description.
EXTERNAL_TERMINAL
No description.

INTERNAL_CONSOLE

INTEGRATED_TERMINAL

EXTERNAL_TERMINAL

InternalConsoleOptions

Controls the visibility of the VSCode Debug Console panel during a debugging session Source: https://code.visualstudio.com/docs/editor/debugging#_launchjson-attributes.

Members

NameDescription
NEVER_OPEN
No description.
OPEN_ON_FIRST_SESSION_START
No description.
OPEN_ON_SESSION_START
No description.

NEVER_OPEN

OPEN_ON_FIRST_SESSION_START

OPEN_ON_SESSION_START