{
  "name": "beanfmt",
  "displayName": "Beanfmt",
  "description": "Fast beancount file formatter with CJK support",
  "version": "0.6.2",
  "engines": {
    "vscode": "^1.75.0"
  },
  "publisher": "cyrus-x",
  "license": "MIT",
  "repository": {
    "type": "git",
    "url": "https://github.com/Xm798/beanfmt"
  },
  "categories": [
    "Formatters",
    "Programming Languages"
  ],
  "activationEvents": [
    "onLanguage:beancount"
  ],
  "main": "./out/extension.js",
  "contributes": {
    "configuration": {
      "title": "Beanfmt",
      "properties": {
        "beanfmt.indent": {
          "type": "number",
          "default": 4,
          "minimum": 1,
          "maximum": 20,
          "description": "Number of spaces for indentation."
        },
        "beanfmt.currencyColumn": {
          "type": "number",
          "default": 70,
          "minimum": 1,
          "maximum": 200,
          "description": "Column to align currencies to."
        },
        "beanfmt.costColumn": {
          "type": "number",
          "default": 75,
          "minimum": 1,
          "maximum": 200,
          "description": "Column to align costs/prices to."
        },
        "beanfmt.thousandsSeparator": {
          "type": "string",
          "enum": [
            "keep",
            "add",
            "remove"
          ],
          "default": "keep",
          "description": "Thousands separator handling: keep as-is, add commas, or remove them."
        },
        "beanfmt.spacesInBraces": {
          "type": "boolean",
          "default": false,
          "description": "Add spaces inside cost braces, e.g. { 100 USD } instead of {100 USD}."
        },
        "beanfmt.fixedCJKWidth": {
          "type": "boolean",
          "default": true,
          "description": "Treat CJK (East Asian) characters as double-width for alignment."
        },
        "beanfmt.sort": {
          "type": "string",
          "enum": ["off", "asc", "desc"],
          "default": "off",
          "description": "Sort entries by date: off (no sorting), asc (ascending), or desc (descending)."
        },
        "beanfmt.sortTimeless": {
          "type": "string",
          "enum": ["begin", "end", "keep"],
          "default": "keep",
          "description": "Where to place entries without time metadata within a day: begin (before timed entries), end (after timed entries), or keep (preserve original order)."
        },
        "beanfmt.sortExclude": {
          "type": "array",
          "items": {
            "type": "string",
            "enum": ["transaction", "balance", "open", "close", "price", "pad", "note", "document", "event", "custom", "query", "commodity"]
          },
          "default": [],
          "description": "Directive types to exclude from sorting. Excluded directives act as sort barriers."
        }
      }
    },
    "languages": [
      {
        "id": "beancount",
        "aliases": [
          "Beancount",
          "beancount"
        ],
        "extensions": [
          ".bean",
          ".beancount"
        ]
      }
    ]
  },
  "scripts": {
    "vscode:prepublish": "bun run build:wasm && bun run compile",
    "compile": "esbuild ./src/extension.ts --bundle --outfile=out/extension.js --external:vscode --format=cjs --platform=node --sourcemap",
    "watch": "esbuild ./src/extension.ts --bundle --outfile=out/extension.js --external:vscode --format=cjs --platform=node --sourcemap --watch",
    "build:wasm": "cd ../.. && wasm-pack build --target nodejs --out-dir editors/code/wasm --features wasm --no-default-features",
    "package": "bunx @vscode/vsce package"
  },
  "devDependencies": {
    "@types/node": "^20.0.0",
    "@types/vscode": "^1.75.0",
    "@vscode/vsce": "^3.0.0",
    "esbuild": "^0.27.4",
    "typescript": "^5.0.0"
  },
  "dependencies": {
    "@iarna/toml": "^2.2.5"
  }
}
