{
	// Place your Bitburner workspace snippets here. Each snippet is defined under a snippet name and has a scope, prefix, body and 
	// description. Add comma separated ids of the languages where the snippet is applicable in the scope field. If scope 
	// is left empty or omitted, the snippet gets applied to all languages. The prefix is what is 
	// used to trigger the snippet and the body will be expanded and inserted. Possible variables are: 
	// $1, $2 for tab stops, $0 for the final cursor position, and ${1:label}, ${2:another} for placeholders. 
	// Placeholders with the same ids are connected.
	// Example:
	// "Print to console": {
	// 	"scope": "javascript,typescript",
	// 	"prefix": "log",
	// 	"body": [
	// 		"console.log('$1');",
	// 		"$2"
	// 	],
	// 	"description": "Log output to console"
	// }
	//,
	// "": {
	// 	"scope": "",
	// 	"prefix": "",
	// 	"body": [
	// 		""
	// 	],
	// 	"description": ""
	// }
	"initmain": {
		"scope": "",
		"prefix": "initmain",
		"body": [
			"/** @param {import(\".\").NS } ns */",
			"export async function main(ns) {",
			"    // ns.disableLog('ALL');",
			"    ",
			"    $2",
			"}"
		],
		"description": "New file template for Bitburner."
	},
	"print": {
		"scope": "",
		"prefix": "print",
		"body": [
			"ns.print(`$1`);",
			"$2"
		],
		"description": "NS print"
	},
	"tprint": {
		"scope": "",
		"prefix": "tprint",
		"body": [
			"ns.tprint(`$1`);",
			"$2"
		],
		"description": "NS terminal print"
	},
	"writelog": {
		"scope": "",
		"prefix": "writelog",
		"body": [
			"async function writeLog(type, obj) {",
			"    let timeNow = new Date();",
			"    let year = timeNow.getFullYear().toString().substring(2);",
			"    let month = (timeNow.getMonth() < 9 ? '0' : '') + (timeNow.getMonth() + 1);",
			"    let day = (timeNow.getDate() < 10 ? '0' : '') + timeNow.getDate();",
			"    let hour = (timeNow.getHours() < 10 ? '0' : '') + timeNow.getHours();",
			"    let minute = (timeNow.getMinutes() < 10 ? '0' : '') + timeNow.getMinutes();",
			"    let second = (timeNow.getSeconds() < 10 ? '0' : '') + timeNow.getSeconds();",
			"    let timestamp = `\\${year}\\${month}\\${day}_\\${hour}\\${minute}\\${second}`;",
			"    await ns.tryWritePort($1, `t\\${timestamp}_\\${type} = \\${obj};\\n`);",
			"    ",
			"    if (['ERROR', 'TERMINAL'].indexOf(type) != -1) ns.tprint(`\\${timestamp} \\${type} = \\${obj}`);",
			"}"
		],
		"description": "writelog function definition"
	},
	"log": {
		"scope": "",
		"prefix": "log",
		"body": [
			"writeLog(`$1`);",
			"$2"
		],
		"description": "write log to port"
	}
}