{
	"rulesDirectory": [
		"build/lib/tslint"
	],
	"rules": {
		"no-string-throw": true,
		"no-unused-expression": true,
		"no-duplicate-variable": true,
		// "no-unused-variable": true, // requires type information in tslint > v4
		"curly": true,
		"class-name": true,
		"semicolon": [
			true,
			"always"
		],
		"triple-equals": true,
		"no-unexternalized-strings": [
			true,
			{
				"signatures": [
					"localize",
					"nls.localize"
				],
				"keyIndex": 0,
				"messageIndex": 1
			}
		],
		"layering": [
			true,
			{
				"common": [],
				"node": [
					"common"
				],
				"browser": [
					"common"
				],
				"electron-main": [
					"common",
					"node"
				],
				"electron-browser": [
					"common",
					"browser",
					"node"
				]
			}
		],
		"import-patterns": [
			true,
			// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
			// !!! Do not relax these rules !!!
			// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
			{
				// vs/base/common cannot depend on anything else
				"target": "**/vs/base/common/**",
				"restrictions": [
					"vs/nls",
					"**/vs/base/common/**"
				]
			},
			{
				// vs/base/test/common contains tests for vs/base/common
				"target": "**/vs/base/test/common/**",
				"restrictions": [
					"assert",
					"vs/nls",
					"**/vs/base/common/**",
					"**/vs/base/test/common/**"
				]
			},
			{
				// vs/base/browser can only depend on vs/base/common
				"target": "**/vs/base/browser/**",
				"restrictions": [
					"vs/nls",
					"vs/css!./**/*",
					"**/vs/base/{common,browser}/**"
				]
			},
			{
				// vs/base/test/browser contains tests for vs/base/browser
				"target": "**/vs/base/test/browser/**",
				"restrictions": [
					"assert",
					"vs/nls",
					"**/vs/base/{common,browser}/**",
					"**/vs/base/test/{common,browser}/**"
				]
			},
			{
				"target": "**/vs/base/parts/*/common/**",
				"restrictions": [
					"vs/nls",
					"**/vs/base/common/**",
					"**/vs/base/parts/*/common/**"
				]
			},
			{
				"target": "**/vs/base/parts/*/browser/**",
				"restrictions": [
					"vs/nls",
					"vs/css!./**/*",
					"**/vs/base/{common,browser}/**",
					"**/vs/base/parts/*/{common,browser}/**"
				]
			},
			{
				"target": "**/vs/platform/*/common/**",
				"restrictions": [
					"vs/nls",
					"**/vs/base/common/**",
					"**/vs/base/parts/*/common/**",
					"**/vs/platform/*/common/**"
				]
			},
			{
				"target": "**/vs/platform/*/test/common/**",
				"restrictions": [
					"assert",
					"sinon",
					"vs/nls",
					"**/vs/base/common/**",
					"**/vs/platform/*/common/**",
					"**/vs/platform/*/test/common/**"
				]
			},
			{
				"target": "**/vs/platform/*/browser/**",
				"restrictions": [
					"vs/nls",
					"vs/css!./**/*",
					"**/vs/base/{common,browser}/**",
					"**/vs/base/parts/*/{common,browser}/**",
					"**/vs/platform/*/{common,browser}/**"
				]
			},
			{
				"target": "**/vs/platform/*/test/browser/**",
				"restrictions": [
					"assert",
					"sinon",
					"vs/nls",
					"**/vs/base/{common,browser}/**",
					"**/vs/platform/*/{common,browser}/**",
					"**/vs/platform/*/test/{common,browser}/**"
				]
			},
			{
				"target": "**/vs/editor/common/**",
				"restrictions": [
					"vs/nls",
					"**/vs/base/common/**",
					"**/vs/base/worker/**",
					"**/vs/platform/*/common/**",
					"**/vs/editor/common/**"
				]
			},
			{
				"target": "**/vs/editor/test/common/**",
				"restrictions": [
					"assert",
					"vs/nls",
					"**/vs/base/common/**",
					"**/vs/platform/*/common/**",
					"**/vs/platform/*/test/common/**",
					"**/vs/editor/common/**",
					"**/vs/editor/test/common/**"
				]
			},
			{
				"target": "**/vs/editor/browser/**",
				"restrictions": [
					"vs/nls",
					"vs/css!./**/*",
					"**/vs/base/{common,browser}/**",
					"**/vs/platform/*/{common,browser}/**",
					"**/vs/editor/{common,browser}/**"
				]
			},
			{
				"target": "**/vs/editor/test/browser/**",
				"restrictions": [
					"assert",
					"vs/nls",
					"**/vs/base/{common,browser}/**",
					"**/vs/platform/*/{common,browser}/**",
					"**/vs/platform/*/test/{common,browser}/**",
					"**/vs/editor/{common,browser}/**",
					"**/vs/editor/test/{common,browser}/**"
				]
			},
			{
				"target": "**/vs/editor/standalone/common/**",
				"restrictions": [
					"vs/nls",
					"**/vs/base/common/**",
					"**/vs/platform/*/common/**",
					"**/vs/editor/common/**",
					"**/vs/editor/standalone/common/**"
				]
			},
			{
				"target": "**/vs/editor/standalone/test/common/**",
				"restrictions": [
					"assert",
					"vs/nls",
					"**/vs/base/common/**",
					"**/vs/platform/*/common/**",
					"**/vs/platform/*/test/common/**",
					"**/vs/editor/common/**",
					"**/vs/editor/test/common/**"
				]
			},
			{
				"target": "**/vs/editor/standalone/browser/**",
				"restrictions": [
					"vs/nls",
					"vs/css!./**/*",
					"**/vs/base/{common,browser}/**",
					"**/vs/base/parts/*/{common,browser}/**",
					"**/vs/platform/*/{common,browser}/**",
					"**/vs/editor/{common,browser}/**",
					"**/vs/editor/contrib/**",
					"**/vs/editor/standalone/{common,browser}/**"
				]
			},
			{
				"target": "**/vs/editor/standalone/test/browser/**",
				"restrictions": [
					"assert",
					"vs/nls",
					"**/vs/base/{common,browser}/**",
					"**/vs/platform/*/{common,browser}/**",
					"**/vs/platform/*/test/{common,browser}/**",
					"**/vs/editor/{common,browser}/**",
					"**/vs/editor/standalone/{common,browser}/**",
					"**/vs/editor/test/{common,browser}/**"
				]
			},
			{
				"target": "**/vs/editor/contrib/*/test/**",
				"restrictions": [
					"assert",
					"vs/nls",
					"**/vs/base/{common,browser}/**",
					"**/vs/base/test/{common,browser}/**",
					"**/vs/base/parts/*/{common,browser}/**",
					"**/vs/platform/*/{common,browser}/**",
					"**/vs/platform/*/test/{common,browser}/**",
					"**/vs/editor/{common,browser}/**",
					"**/vs/editor/test/{common,browser}/**",
					"**/vs/editor/contrib/**"
				]
			},
			{
				"target": "**/vs/editor/contrib/**",
				"restrictions": [
					"vs/nls",
					"vs/css!./**/*",
					"**/vs/base/{common,browser}/**",
					"**/vs/base/parts/*/{common,browser}/**",
					"**/vs/platform/*/{common,browser}/**",
					"**/vs/editor/{common,browser}/**",
					"**/vs/editor/contrib/**"
				]
			},
			{
				"target": "**/vs/workbench/common/**",
				"restrictions": [
					"vs/nls",
					"vs/css!./**/*",
					"**/vs/base/common/**",
					"**/vs/base/parts/*/common/**",
					"**/vs/platform/*/common/**",
					"**/vs/editor/common/**",
					"**/vs/editor/contrib/*/common/**",
					"**/vs/workbench/common/**",
					"**/vs/workbench/services/*/common/**",
					"assert"
				]
			},
			{
				"target": "**/vs/workbench/browser/**",
				"restrictions": [
					"vs/nls",
					"vs/css!./**/*",
					"**/vs/base/{common,browser}/**",
					"**/vs/base/parts/*/{common,browser}/**",
					"**/vs/platform/*/{common,browser}/**",
					"**/vs/editor/{common,browser}/**",
					"**/vs/editor/contrib/**", // editor/contrib is equivalent to /browser/ by convention
					"**/vs/workbench/{common,browser}/**",
					"**/vs/workbench/services/*/{common,browser}/**",
					"assert"
				]
			},
			{
				"target": "**/vs/workbench/workbench.main.ts",
				"restrictions": [
					"**"
				]
			},
			{
				"target": "**/vs/workbench/electron-browser/**",
				"restrictions": [
					"vs/nls",
					"vs/css!./**/*",
					"**/vs/base/{common,browser,node,electron-browser}/**",
					"**/vs/base/parts/*/{common,browser,node,electron-browser}/**",
					"**/vs/platform/node/**",
					"**/vs/platform/*/{common,browser,node,electron-browser}/**",
					"**/vs/editor/{common,browser,node,electron-browser}/**",
					"**/vs/editor/contrib/**", // editor/contrib is equivalent to /browser/ by convention
					"**/vs/workbench/{common,browser,node,electron-browser,api}/**",
					"**/vs/workbench/services/*/{common,browser,node,electron-browser}/**",
					"*" // node modules
				]
			},
			{
				"target": "**/vs/workbench/node/**",
				"restrictions": [
					"vs/nls",
					"vs/css!./**/*",
					"**/vs/base/{common,node}/**",
					"**/vs/base/parts/*/{common,node}/**",
					"**/vs/platform/node/**",
					"**/vs/platform/*/{common,node}/**",
					"**/vs/editor/{common,node}/**",
					"**/vs/editor/contrib/*/{common,node}/**",
					"**/vs/workbench/{common,node,api}/**",
					"**/vs/workbench/services/*/{common,node}/**",
					"*" // node modules
				]
			},
			{
				"target": "**/vs/workbench/services/**/test/**",
				"restrictions": [
					"vs/nls",
					"vs/css!./**/*",
					"**/vs/base/**",
					"**/vs/platform/**",
					"**/vs/editor/**",
					"**/vs/workbench/{common,browser,node,electron-browser}/**",
					"vs/workbench/parts/files/common/editors/fileEditorInput",
					"**/vs/workbench/services/**",
					"**/vs/workbench/test/**",
					"*" // node modules
				]
			},
			{
				"target": "**/vs/workbench/services/**/common/**",
				"restrictions": [
					"vs/nls",
					"vs/css!./**/*",
					"**/vs/base/**/common/**",
					"**/vs/platform/**/common/**",
					"**/vs/editor/common/**",
					"**/vs/workbench/common/**",
					"**/vs/workbench/services/**/common/**"
				]
			},
			{
				"target": "**/vs/workbench/services/**/browser/**",
				"restrictions": [
					"vs/nls",
					"vs/css!./**/*",
					"**/vs/base/**/{common,browser}/**",
					"**/vs/platform/**/{common,browser}/**",
					"**/vs/editor/{common,browser}/**",
					"**/vs/workbench/{common,browser}/**",
					"**/vs/workbench/services/**/{common,browser}/**"
				]
			},
			{
				"target": "**/vs/workbench/services/**/node/**",
				"restrictions": [
					"vs/nls",
					"vs/css!./**/*",
					"**/vs/base/**/{common,node}/**",
					"**/vs/platform/**/{common,node}/**",
					"**/vs/editor/{common,node}/**",
					"**/vs/workbench/{common,node}/**",
					"**/vs/workbench/services/**/{common,node}/**",
					"*" // node modules
				]
			},
			{
				"target": "**/vs/workbench/services/**/electron-browser/**",
				"restrictions": [
					"vs/nls",
					"vs/css!./**/*",
					"**/vs/base/**/{common,browser,node,electron-browser}/**",
					"**/vs/platform/**/{common,browser,node,electron-browser}/**",
					"**/vs/editor/**",
					"**/vs/workbench/{common,browser,node,electron-browser,api}/**",
					"**/vs/workbench/services/**/{common,browser,node,electron-browser}/**",
					"*" // node modules
				]
			},
			{
				"target": "**/vs/code/**",
				"restrictions": [
					"vs/nls",
					"**/vs/base/**",
					"**/vs/platform/**",
					"**/vs/code/**",
					"*" // node modules
				]
			},
			{
				"target": "**/{node,electron-browser,electron-main,extensions}/**",
				"restrictions": "**/*"
			},
			{
				"target": "**/test/smoke/**",
				"restrictions": [
					"**/test/smoke/**",
					"*"
				]
			},
			{
				"target": "{**/**.test.ts,**/test/**}",
				"restrictions": "{**/vs/**,assert,sinon,crypto}"
			},
			{
				"target": "**/{common,browser,workbench}/**",
				"restrictions": "**/vs/**"
			}
		],
		"duplicate-imports": true,
		"translation-remind": true
	},
	"defaultSeverity": "warning"
}