{
  "for range": {
    "prefix": "for",
    "body": [
      "for (let ${1:i} = 0; ${1:i} ${2:< expr}; ${1:i}++) {",
      "\t$3",
      "}"
    ],
    "description": "for range"
  },
  "for of": {
    "prefix": "forof",
    "body": [
      "for (const $1 of $2) {",
      "\t$3",
      "}"
    ],
    "description": "for of"
  },
  "console.log": {
    "prefix": [
      "log",
      "echo",
      "console.log"
    ],
    "body": [
      "console.log(${1:object})"
    ],
    "description": "console.log"
  },
  "if": {
    "prefix": "if",
    "body": [
      "if (${1:condition}) {",
      "\t$2",
      "}"
    ],
    "description": "if statement"
  },
  "arrow function": {
    "prefix": [
      "arrow",
      "lambda"
    ],
    "body": [
      "(${1:arg}) => {$1$2}"
    ],
    "description": "arrow function"
  },
  "async function": {
    "prefix": "async",
    "body": [
      "async function ${1:name}(${2:args}): Promise<${3:return}> {",
      "\t${4:body}",
      "}"
    ],
    "description": "async function"
  },
  "test": {
    "prefix": "test",
    "body": [
      "Deno.test({",
      "\tname: ${1:name},",
      "\tfn: () => {",
      "\t\t$2",
      "\t}",
      "})"
    ],
    "description": "Deno.test"
  },
  "typedoc": {
    "prefix": ["typedoc", "jsdoc"],
    "body": [
      "/**",
      " * $1",
      " *",
      " * @param${2: }",
      " * @return${3: }",
      " * @example",
      " * ```ts",
      " * ```",
      " */"
    ],
    "description": "typedoc template"
  },
  "enum": {
    "prefix": "enum",
    "body": [
      "const ${1:name} = {",
      "",
      "} as const",
      "type ${1:name} = typeof ${1:name}[keyof typeof ${1:name}]"
    ],
    "description": "enum template"
  },
  "enumkey": {
    "prefix": "ekey",
    "body": [
      "${1}: \"${1}\","
    ],
    "description": "enumkey shorthand"
  },
  "promise": {
    "prefix": "promise",
    "body": [
      "Promise<${1:T}>"
    ],
    "description": "promise snip"
  }
}