From cef2f0a6ac876d9d93dc377cf1cb55ea8437c6a5 Mon Sep 17 00:00:00 2001 From: Brian Cooper Date: Mon, 17 Nov 2025 21:13:19 -0800 Subject: [PATCH 01/26] feature: add base files --- .gitignore | 2 + bun.lock | 231 +++++++++++++++++++++++++++++++++++++++++++++++++ bunfig.toml | 2 + package.json | 30 +++++++ src/emitter.ts | 16 ++++ src/index.ts | 2 + src/lib.ts | 11 +++ tsconfig.json | 18 ++++ 8 files changed, 312 insertions(+) create mode 100644 .gitignore create mode 100644 bun.lock create mode 100644 bunfig.toml create mode 100644 package.json create mode 100644 src/emitter.ts create mode 100644 src/index.ts create mode 100644 src/lib.ts create mode 100644 tsconfig.json diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b38db2f --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +node_modules/ +build/ diff --git a/bun.lock b/bun.lock new file mode 100644 index 0000000..e05b200 --- /dev/null +++ b/bun.lock @@ -0,0 +1,231 @@ +{ + "lockfileVersion": 1, + "configVersion": 1, + "workspaces": { + "": { + "name": "@omnidotdev/typespec-drizzle-emitter", + "devDependencies": { + "@types/bun": "^1.3.2", + "@types/node": "^24.10.1", + "@typespec/compiler": "^1.6.0", + "typescript": "5.9", + }, + "peerDependencies": { + "@typespec/compiler": "^1.6.0", + }, + }, + }, + "packages": { + "@babel/code-frame": ["@babel/code-frame@7.27.1", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg=="], + + "@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.28.5", "", {}, "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q=="], + + "@inquirer/ansi": ["@inquirer/ansi@1.0.2", "", {}, "sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ=="], + + "@inquirer/checkbox": ["@inquirer/checkbox@4.3.2", "", { "dependencies": { "@inquirer/ansi": "^1.0.2", "@inquirer/core": "^10.3.2", "@inquirer/figures": "^1.0.15", "@inquirer/type": "^3.0.10", "yoctocolors-cjs": "^2.1.3" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-VXukHf0RR1doGe6Sm4F0Em7SWYLTHSsbGfJdS9Ja2bX5/D5uwVOEjr07cncLROdBvmnvCATYEWlHqYmXv2IlQA=="], + + "@inquirer/confirm": ["@inquirer/confirm@5.1.21", "", { "dependencies": { "@inquirer/core": "^10.3.2", "@inquirer/type": "^3.0.10" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-KR8edRkIsUayMXV+o3Gv+q4jlhENF9nMYUZs9PA2HzrXeHI8M5uDag70U7RJn9yyiMZSbtF5/UexBtAVtZGSbQ=="], + + "@inquirer/core": ["@inquirer/core@10.3.2", "", { "dependencies": { "@inquirer/ansi": "^1.0.2", "@inquirer/figures": "^1.0.15", "@inquirer/type": "^3.0.10", "cli-width": "^4.1.0", "mute-stream": "^2.0.0", "signal-exit": "^4.1.0", "wrap-ansi": "^6.2.0", "yoctocolors-cjs": "^2.1.3" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A=="], + + "@inquirer/editor": ["@inquirer/editor@4.2.23", "", { "dependencies": { "@inquirer/core": "^10.3.2", "@inquirer/external-editor": "^1.0.3", "@inquirer/type": "^3.0.10" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-aLSROkEwirotxZ1pBaP8tugXRFCxW94gwrQLxXfrZsKkfjOYC1aRvAZuhpJOb5cu4IBTJdsCigUlf2iCOu4ZDQ=="], + + "@inquirer/expand": ["@inquirer/expand@4.0.23", "", { "dependencies": { "@inquirer/core": "^10.3.2", "@inquirer/type": "^3.0.10", "yoctocolors-cjs": "^2.1.3" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-nRzdOyFYnpeYTTR2qFwEVmIWypzdAx/sIkCMeTNTcflFOovfqUk+HcFhQQVBftAh9gmGrpFj6QcGEqrDMDOiew=="], + + "@inquirer/external-editor": ["@inquirer/external-editor@1.0.3", "", { "dependencies": { "chardet": "^2.1.1", "iconv-lite": "^0.7.0" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA=="], + + "@inquirer/figures": ["@inquirer/figures@1.0.15", "", {}, "sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g=="], + + "@inquirer/input": ["@inquirer/input@4.3.1", "", { "dependencies": { "@inquirer/core": "^10.3.2", "@inquirer/type": "^3.0.10" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-kN0pAM4yPrLjJ1XJBjDxyfDduXOuQHrBB8aLDMueuwUGn+vNpF7Gq7TvyVxx8u4SHlFFj4trmj+a2cbpG4Jn1g=="], + + "@inquirer/number": ["@inquirer/number@3.0.23", "", { "dependencies": { "@inquirer/core": "^10.3.2", "@inquirer/type": "^3.0.10" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-5Smv0OK7K0KUzUfYUXDXQc9jrf8OHo4ktlEayFlelCjwMXz0299Y8OrI+lj7i4gCBY15UObk76q0QtxjzFcFcg=="], + + "@inquirer/password": ["@inquirer/password@4.0.23", "", { "dependencies": { "@inquirer/ansi": "^1.0.2", "@inquirer/core": "^10.3.2", "@inquirer/type": "^3.0.10" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-zREJHjhT5vJBMZX/IUbyI9zVtVfOLiTO66MrF/3GFZYZ7T4YILW5MSkEYHceSii/KtRk+4i3RE7E1CUXA2jHcA=="], + + "@inquirer/prompts": ["@inquirer/prompts@7.10.1", "", { "dependencies": { "@inquirer/checkbox": "^4.3.2", "@inquirer/confirm": "^5.1.21", "@inquirer/editor": "^4.2.23", "@inquirer/expand": "^4.0.23", "@inquirer/input": "^4.3.1", "@inquirer/number": "^3.0.23", "@inquirer/password": "^4.0.23", "@inquirer/rawlist": "^4.1.11", "@inquirer/search": "^3.2.2", "@inquirer/select": "^4.4.2" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-Dx/y9bCQcXLI5ooQ5KyvA4FTgeo2jYj/7plWfV5Ak5wDPKQZgudKez2ixyfz7tKXzcJciTxqLeK7R9HItwiByg=="], + + "@inquirer/rawlist": ["@inquirer/rawlist@4.1.11", "", { "dependencies": { "@inquirer/core": "^10.3.2", "@inquirer/type": "^3.0.10", "yoctocolors-cjs": "^2.1.3" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-+LLQB8XGr3I5LZN/GuAHo+GpDJegQwuPARLChlMICNdwW7OwV2izlCSCxN6cqpL0sMXmbKbFcItJgdQq5EBXTw=="], + + "@inquirer/search": ["@inquirer/search@3.2.2", "", { "dependencies": { "@inquirer/core": "^10.3.2", "@inquirer/figures": "^1.0.15", "@inquirer/type": "^3.0.10", "yoctocolors-cjs": "^2.1.3" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-p2bvRfENXCZdWF/U2BXvnSI9h+tuA8iNqtUKb9UWbmLYCRQxd8WkvwWvYn+3NgYaNwdUkHytJMGG4MMLucI1kA=="], + + "@inquirer/select": ["@inquirer/select@4.4.2", "", { "dependencies": { "@inquirer/ansi": "^1.0.2", "@inquirer/core": "^10.3.2", "@inquirer/figures": "^1.0.15", "@inquirer/type": "^3.0.10", "yoctocolors-cjs": "^2.1.3" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-l4xMuJo55MAe+N7Qr4rX90vypFwCajSakx59qe/tMaC1aEHWLyw68wF4o0A4SLAY4E0nd+Vt+EyskeDIqu1M6w=="], + + "@inquirer/type": ["@inquirer/type@3.0.10", "", { "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA=="], + + "@isaacs/fs-minipass": ["@isaacs/fs-minipass@4.0.1", "", { "dependencies": { "minipass": "^7.0.4" } }, "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w=="], + + "@nodelib/fs.scandir": ["@nodelib/fs.scandir@2.1.5", "", { "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" } }, "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g=="], + + "@nodelib/fs.stat": ["@nodelib/fs.stat@2.0.5", "", {}, "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A=="], + + "@nodelib/fs.walk": ["@nodelib/fs.walk@1.2.8", "", { "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" } }, "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg=="], + + "@sindresorhus/merge-streams": ["@sindresorhus/merge-streams@4.0.0", "", {}, "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ=="], + + "@types/bun": ["@types/bun@1.3.2", "", { "dependencies": { "bun-types": "1.3.2" } }, "sha512-t15P7k5UIgHKkxwnMNkJbWlh/617rkDGEdSsDbu+qNHTaz9SKf7aC8fiIlUdD5RPpH6GEkP0cK7WlvmrEBRtWg=="], + + "@types/node": ["@types/node@24.10.1", "", { "dependencies": { "undici-types": "~7.16.0" } }, "sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ=="], + + "@types/react": ["@types/react@19.2.6", "", { "dependencies": { "csstype": "^3.2.2" } }, "sha512-p/jUvulfgU7oKtj6Xpk8cA2Y1xKTtICGpJYeJXz2YVO2UcvjQgeRMLDGfDeqeRW2Ta+0QNFwcc8X3GH8SxZz6w=="], + + "@typespec/compiler": ["@typespec/compiler@1.6.0", "", { "dependencies": { "@babel/code-frame": "~7.27.1", "@inquirer/prompts": "^7.4.0", "ajv": "~8.17.1", "change-case": "~5.4.4", "env-paths": "^3.0.0", "globby": "~15.0.0", "is-unicode-supported": "^2.1.0", "mustache": "~4.2.0", "picocolors": "~1.1.1", "prettier": "~3.6.2", "semver": "^7.7.1", "tar": "^7.5.2", "temporal-polyfill": "^0.3.0", "vscode-languageserver": "~9.0.1", "vscode-languageserver-textdocument": "~1.0.12", "yaml": "~2.8.0", "yargs": "~18.0.0" }, "bin": { "tsp": "cmd/tsp.js", "tsp-server": "cmd/tsp-server.js" } }, "sha512-yxyV+ch8tnqiuU2gClv/mQEESoFwpkjo6177UkYfV0nVA9PzTg4zVVc7+WIMZk04wiLRRT3H1uc11FB1cwLY3g=="], + + "ajv": ["ajv@8.17.1", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2" } }, "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g=="], + + "ansi-regex": ["ansi-regex@6.2.2", "", {}, "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg=="], + + "ansi-styles": ["ansi-styles@6.2.3", "", {}, "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg=="], + + "braces": ["braces@3.0.3", "", { "dependencies": { "fill-range": "^7.1.1" } }, "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA=="], + + "bun-types": ["bun-types@1.3.2", "", { "dependencies": { "@types/node": "*" }, "peerDependencies": { "@types/react": "^19" } }, "sha512-i/Gln4tbzKNuxP70OWhJRZz1MRfvqExowP7U6JKoI8cntFrtxg7RJK3jvz7wQW54UuvNC8tbKHHri5fy74FVqg=="], + + "change-case": ["change-case@5.4.4", "", {}, "sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w=="], + + "chardet": ["chardet@2.1.1", "", {}, "sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ=="], + + "chownr": ["chownr@3.0.0", "", {}, "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g=="], + + "cli-width": ["cli-width@4.1.0", "", {}, "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ=="], + + "cliui": ["cliui@9.0.1", "", { "dependencies": { "string-width": "^7.2.0", "strip-ansi": "^7.1.0", "wrap-ansi": "^9.0.0" } }, "sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w=="], + + "color-convert": ["color-convert@2.0.1", "", { "dependencies": { "color-name": "~1.1.4" } }, "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="], + + "color-name": ["color-name@1.1.4", "", {}, "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="], + + "csstype": ["csstype@3.2.3", "", {}, "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ=="], + + "emoji-regex": ["emoji-regex@10.6.0", "", {}, "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A=="], + + "env-paths": ["env-paths@3.0.0", "", {}, "sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A=="], + + "escalade": ["escalade@3.2.0", "", {}, "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA=="], + + "fast-deep-equal": ["fast-deep-equal@3.1.3", "", {}, "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="], + + "fast-glob": ["fast-glob@3.3.3", "", { "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", "glob-parent": "^5.1.2", "merge2": "^1.3.0", "micromatch": "^4.0.8" } }, "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg=="], + + "fast-uri": ["fast-uri@3.1.0", "", {}, "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA=="], + + "fastq": ["fastq@1.19.1", "", { "dependencies": { "reusify": "^1.0.4" } }, "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ=="], + + "fill-range": ["fill-range@7.1.1", "", { "dependencies": { "to-regex-range": "^5.0.1" } }, "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg=="], + + "get-caller-file": ["get-caller-file@2.0.5", "", {}, "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="], + + "get-east-asian-width": ["get-east-asian-width@1.4.0", "", {}, "sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q=="], + + "glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], + + "globby": ["globby@15.0.0", "", { "dependencies": { "@sindresorhus/merge-streams": "^4.0.0", "fast-glob": "^3.3.3", "ignore": "^7.0.5", "path-type": "^6.0.0", "slash": "^5.1.0", "unicorn-magic": "^0.3.0" } }, "sha512-oB4vkQGqlMl682wL1IlWd02tXCbquGWM4voPEI85QmNKCaw8zGTm1f1rubFgkg3Eli2PtKlFgrnmUqasbQWlkw=="], + + "iconv-lite": ["iconv-lite@0.7.0", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ=="], + + "ignore": ["ignore@7.0.5", "", {}, "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg=="], + + "is-extglob": ["is-extglob@2.1.1", "", {}, "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="], + + "is-fullwidth-code-point": ["is-fullwidth-code-point@3.0.0", "", {}, "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="], + + "is-glob": ["is-glob@4.0.3", "", { "dependencies": { "is-extglob": "^2.1.1" } }, "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg=="], + + "is-number": ["is-number@7.0.0", "", {}, "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="], + + "is-unicode-supported": ["is-unicode-supported@2.1.0", "", {}, "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ=="], + + "js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], + + "json-schema-traverse": ["json-schema-traverse@1.0.0", "", {}, "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="], + + "merge2": ["merge2@1.4.1", "", {}, "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg=="], + + "micromatch": ["micromatch@4.0.8", "", { "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" } }, "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA=="], + + "minipass": ["minipass@7.1.2", "", {}, "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw=="], + + "minizlib": ["minizlib@3.1.0", "", { "dependencies": { "minipass": "^7.1.2" } }, "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw=="], + + "mustache": ["mustache@4.2.0", "", { "bin": { "mustache": "bin/mustache" } }, "sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ=="], + + "mute-stream": ["mute-stream@2.0.0", "", {}, "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA=="], + + "path-type": ["path-type@6.0.0", "", {}, "sha512-Vj7sf++t5pBD637NSfkxpHSMfWaeig5+DKWLhcqIYx6mWQz5hdJTGDVMQiJcw1ZYkhs7AazKDGpRVji1LJCZUQ=="], + + "picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="], + + "picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], + + "prettier": ["prettier@3.6.2", "", { "bin": { "prettier": "bin/prettier.cjs" } }, "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ=="], + + "queue-microtask": ["queue-microtask@1.2.3", "", {}, "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="], + + "require-from-string": ["require-from-string@2.0.2", "", {}, "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw=="], + + "reusify": ["reusify@1.1.0", "", {}, "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw=="], + + "run-parallel": ["run-parallel@1.2.0", "", { "dependencies": { "queue-microtask": "^1.2.2" } }, "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA=="], + + "safer-buffer": ["safer-buffer@2.1.2", "", {}, "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="], + + "semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], + + "signal-exit": ["signal-exit@4.1.0", "", {}, "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw=="], + + "slash": ["slash@5.1.0", "", {}, "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg=="], + + "string-width": ["string-width@7.2.0", "", { "dependencies": { "emoji-regex": "^10.3.0", "get-east-asian-width": "^1.0.0", "strip-ansi": "^7.1.0" } }, "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ=="], + + "strip-ansi": ["strip-ansi@7.1.2", "", { "dependencies": { "ansi-regex": "^6.0.1" } }, "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA=="], + + "tar": ["tar@7.5.2", "", { "dependencies": { "@isaacs/fs-minipass": "^4.0.0", "chownr": "^3.0.0", "minipass": "^7.1.2", "minizlib": "^3.1.0", "yallist": "^5.0.0" } }, "sha512-7NyxrTE4Anh8km8iEy7o0QYPs+0JKBTj5ZaqHg6B39erLg0qYXN3BijtShwbsNSvQ+LN75+KV+C4QR/f6Gwnpg=="], + + "temporal-polyfill": ["temporal-polyfill@0.3.0", "", { "dependencies": { "temporal-spec": "0.3.0" } }, "sha512-qNsTkX9K8hi+FHDfHmf22e/OGuXmfBm9RqNismxBrnSmZVJKegQ+HYYXT+R7Ha8F/YSm2Y34vmzD4cxMu2u95g=="], + + "temporal-spec": ["temporal-spec@0.3.0", "", {}, "sha512-n+noVpIqz4hYgFSMOSiINNOUOMFtV5cZQNCmmszA6GiVFVRt3G7AqVyhXjhCSmowvQn+NsGn+jMDMKJYHd3bSQ=="], + + "to-regex-range": ["to-regex-range@5.0.1", "", { "dependencies": { "is-number": "^7.0.0" } }, "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ=="], + + "typescript": ["typescript@5.9.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="], + + "undici-types": ["undici-types@7.16.0", "", {}, "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw=="], + + "unicorn-magic": ["unicorn-magic@0.3.0", "", {}, "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA=="], + + "vscode-jsonrpc": ["vscode-jsonrpc@8.2.0", "", {}, "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA=="], + + "vscode-languageserver": ["vscode-languageserver@9.0.1", "", { "dependencies": { "vscode-languageserver-protocol": "3.17.5" }, "bin": { "installServerIntoExtension": "bin/installServerIntoExtension" } }, "sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g=="], + + "vscode-languageserver-protocol": ["vscode-languageserver-protocol@3.17.5", "", { "dependencies": { "vscode-jsonrpc": "8.2.0", "vscode-languageserver-types": "3.17.5" } }, "sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg=="], + + "vscode-languageserver-textdocument": ["vscode-languageserver-textdocument@1.0.12", "", {}, "sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA=="], + + "vscode-languageserver-types": ["vscode-languageserver-types@3.17.5", "", {}, "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg=="], + + "wrap-ansi": ["wrap-ansi@9.0.2", "", { "dependencies": { "ansi-styles": "^6.2.1", "string-width": "^7.0.0", "strip-ansi": "^7.1.0" } }, "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww=="], + + "y18n": ["y18n@5.0.8", "", {}, "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA=="], + + "yallist": ["yallist@5.0.0", "", {}, "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw=="], + + "yaml": ["yaml@2.8.1", "", { "bin": { "yaml": "bin.mjs" } }, "sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw=="], + + "yargs": ["yargs@18.0.0", "", { "dependencies": { "cliui": "^9.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "string-width": "^7.2.0", "y18n": "^5.0.5", "yargs-parser": "^22.0.0" } }, "sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg=="], + + "yargs-parser": ["yargs-parser@22.0.0", "", {}, "sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw=="], + + "yoctocolors-cjs": ["yoctocolors-cjs@2.1.3", "", {}, "sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw=="], + + "@inquirer/core/wrap-ansi": ["wrap-ansi@6.2.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA=="], + + "@inquirer/core/wrap-ansi/ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], + + "@inquirer/core/wrap-ansi/string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], + + "@inquirer/core/wrap-ansi/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], + + "@inquirer/core/wrap-ansi/string-width/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], + + "@inquirer/core/wrap-ansi/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], + } +} diff --git a/bunfig.toml b/bunfig.toml new file mode 100644 index 0000000..cd45629 --- /dev/null +++ b/bunfig.toml @@ -0,0 +1,2 @@ +[test] +root = "src" diff --git a/package.json b/package.json new file mode 100644 index 0000000..637d5f7 --- /dev/null +++ b/package.json @@ -0,0 +1,30 @@ +{ + "name": "@omnidotdev/typespec-drizzle-emitter", + "version": "0.0.0", + "type": "module", + "main": "build/src/index.js", + "exports": { + ".": { + "types": "./build/src/index.d.ts", + "default": "./build/src/index.js" + }, + "./testing": { + "types": "./build/src/testing/index.d.ts", + "default": "./build/src/testing/index.js" + } + }, + "scripts": { + "build": "tsc", + "build:watch": "tsc --watch", + "test": "bun test" + }, + "peerDependencies": { + "@typespec/compiler": "^1.6.0" + }, + "devDependencies": { + "@types/bun": "^1.3.2", + "@types/node": "^24.10.1", + "@typespec/compiler": "^1.6.0", + "typescript": "5.9" + } +} diff --git a/src/emitter.ts b/src/emitter.ts new file mode 100644 index 0000000..b73620c --- /dev/null +++ b/src/emitter.ts @@ -0,0 +1,16 @@ +import { EmitContext, emitFile, resolvePath } from "@typespec/compiler"; + +/** + * Entry point for the emitter. + * @param context Emitter context, including the current program being compiled. + * @see https://typespec.io/docs/extending-typespec/emitters-basics/#onemit + */ +export const $onEmit = async (ctx: EmitContext) => { + // exit if `noEmit` is enabled + if (ctx.program.compilerOptions.noEmit) return; + + await emitFile(ctx.program, { + path: resolvePath(ctx.emitterOutputDir, "output.txt"), + content: "Hello world\n", + }); +}; diff --git a/src/index.ts b/src/index.ts new file mode 100644 index 0000000..d274d30 --- /dev/null +++ b/src/index.ts @@ -0,0 +1,2 @@ +export { $onEmit } from "./emitter.js"; +export { $lib } from "./lib.js"; diff --git a/src/lib.ts b/src/lib.ts new file mode 100644 index 0000000..2aec68d --- /dev/null +++ b/src/lib.ts @@ -0,0 +1,11 @@ +import { createTypeSpecLibrary } from "@typespec/compiler"; + +/** + * Initiate the TypeSpec library. + */ +export const $lib = createTypeSpecLibrary({ + name: "typespec-drizzle-emitter", + diagnostics: {}, +}); + +export const { reportDiagnostic, createDiagnostic } = $lib; diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..b9db603 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,18 @@ +{ + "compilerOptions": { + "target": "es2022", + "useDefineForClassFields": true, + "module": "nodenext", + "moduleResolution": "nodenext", + "lib": ["es2022"], + "rootDir": ".", + "outDir": "build", + "baseUrl": "src", + "sourceMap": true, + "declaration": true, + "strict": true, + "skipLibCheck": true + }, + "include": ["src"], + "exclude": ["src/test"] +} From b806b9766b25f5df9799ed336314afb6d947481f Mon Sep 17 00:00:00 2001 From: Brian Cooper Date: Mon, 17 Nov 2025 21:17:09 -0800 Subject: [PATCH 02/26] test: add drizzle emitter tester fixture and basic test --- .../__fixtures__/drizzleEmitter.tester.ts | 14 +++++++++ src/test/hello.test.ts | 31 +++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 src/test/__fixtures__/drizzleEmitter.tester.ts create mode 100644 src/test/hello.test.ts diff --git a/src/test/__fixtures__/drizzleEmitter.tester.ts b/src/test/__fixtures__/drizzleEmitter.tester.ts new file mode 100644 index 0000000..6c398a8 --- /dev/null +++ b/src/test/__fixtures__/drizzleEmitter.tester.ts @@ -0,0 +1,14 @@ +import { resolvePath } from "@typespec/compiler"; +import { createTester } from "@typespec/compiler/testing"; +import { fileURLToPath } from "url"; + +/** + * Drizzle emitter tester. Functionally serves as a test fixture. + * @see https://typespec.io/docs/extending-typespec/testing/#tester-api + */ +export const DrizzleEmitterTester = createTester( + resolvePath(fileURLToPath(import.meta.url), "../../../../"), + { + libraries: ["@omnidotdev/typespec-drizzle-emitter"], + }, +).importLibraries(); diff --git a/src/test/hello.test.ts b/src/test/hello.test.ts new file mode 100644 index 0000000..01157af --- /dev/null +++ b/src/test/hello.test.ts @@ -0,0 +1,31 @@ +import { describe, it, expect } from "bun:test"; + +import { DrizzleEmitterTester } from "./__fixtures__/drizzleEmitter.tester.js"; + +describe("TypeSpec Drizzle emitter", () => { + it("compiles TypeSpec code without errors", async () => { + await DrizzleEmitterTester.compile(` + model User { + id: string; + name: string; + } + + op getUser(id: string): User; + `); + + // NB: assertion is implicit, if above works, the test passes + }); + + it("diagnoses TypeSpec code without errors", async () => { + const diagnostics = await DrizzleEmitterTester.diagnose(` + model User { + id: string; + name: string; + } + + op getUser(id: string): User; + `); + + expect(diagnostics).toHaveLength(0); + }); +}); From 453a9fac5bfcdaec26f7a9512cb09df778742271 Mon Sep 17 00:00:00 2001 From: Brian Cooper Date: Mon, 17 Nov 2025 21:20:35 -0800 Subject: [PATCH 03/26] build(deps): add Biome, Changesets --- bun.lock | 205 +++++++++++++++++++++++++++++++++++++++++++++++++-- package.json | 5 +- 2 files changed, 203 insertions(+), 7 deletions(-) diff --git a/bun.lock b/bun.lock index e05b200..756ab91 100644 --- a/bun.lock +++ b/bun.lock @@ -5,10 +5,13 @@ "": { "name": "@omnidotdev/typespec-drizzle-emitter", "devDependencies": { + "@biomejs/biome": "2.3.2", + "@changesets/changelog-github": "^0.5.1", + "@changesets/cli": "^2.29.7", "@types/bun": "^1.3.2", "@types/node": "^24.10.1", "@typespec/compiler": "^1.6.0", - "typescript": "5.9", + "typescript": "5.9.3", }, "peerDependencies": { "@typespec/compiler": "^1.6.0", @@ -20,6 +23,64 @@ "@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.28.5", "", {}, "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q=="], + "@babel/runtime": ["@babel/runtime@7.28.4", "", {}, "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ=="], + + "@biomejs/biome": ["@biomejs/biome@2.3.2", "", { "optionalDependencies": { "@biomejs/cli-darwin-arm64": "2.3.2", "@biomejs/cli-darwin-x64": "2.3.2", "@biomejs/cli-linux-arm64": "2.3.2", "@biomejs/cli-linux-arm64-musl": "2.3.2", "@biomejs/cli-linux-x64": "2.3.2", "@biomejs/cli-linux-x64-musl": "2.3.2", "@biomejs/cli-win32-arm64": "2.3.2", "@biomejs/cli-win32-x64": "2.3.2" }, "bin": { "biome": "bin/biome" } }, "sha512-8e9tzamuDycx7fdrcJ/F/GDZ8SYukc5ud6tDicjjFqURKYFSWMl0H0iXNXZEGmcmNUmABgGuHThPykcM41INgg=="], + + "@biomejs/cli-darwin-arm64": ["@biomejs/cli-darwin-arm64@2.3.2", "", { "os": "darwin", "cpu": "arm64" }, "sha512-4LECm4kc3If0JISai4c3KWQzukoUdpxy4fRzlrPcrdMSRFksR9ZoXK7JBcPuLBmd2SoT4/d7CQS33VnZpgBjew=="], + + "@biomejs/cli-darwin-x64": ["@biomejs/cli-darwin-x64@2.3.2", "", { "os": "darwin", "cpu": "x64" }, "sha512-jNMnfwHT4N3wi+ypRfMTjLGnDmKYGzxVr1EYAPBcauRcDnICFXN81wD6wxJcSUrLynoyyYCdfW6vJHS/IAoTDA=="], + + "@biomejs/cli-linux-arm64": ["@biomejs/cli-linux-arm64@2.3.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-amnqvk+gWybbQleRRq8TMe0rIv7GHss8mFJEaGuEZYWg1Tw14YKOkeo8h6pf1c+d3qR+JU4iT9KXnBKGON4klw=="], + + "@biomejs/cli-linux-arm64-musl": ["@biomejs/cli-linux-arm64-musl@2.3.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-2Zz4usDG1GTTPQnliIeNx6eVGGP2ry5vE/v39nT73a3cKN6t5H5XxjcEoZZh62uVZvED7hXXikclvI64vZkYqw=="], + + "@biomejs/cli-linux-x64": ["@biomejs/cli-linux-x64@2.3.2", "", { "os": "linux", "cpu": "x64" }, "sha512-8BG/vRAhFz1pmuyd24FQPhNeueLqPtwvZk6yblABY2gzL2H8fLQAF/Z2OPIc+BPIVPld+8cSiKY/KFh6k81xfA=="], + + "@biomejs/cli-linux-x64-musl": ["@biomejs/cli-linux-x64-musl@2.3.2", "", { "os": "linux", "cpu": "x64" }, "sha512-gzB19MpRdTuOuLtPpFBGrV3Lq424gHyq2lFj8wfX9tvLMLdmA/R9C7k/mqBp/spcbWuHeIEKgEs3RviOPcWGBA=="], + + "@biomejs/cli-win32-arm64": ["@biomejs/cli-win32-arm64@2.3.2", "", { "os": "win32", "cpu": "arm64" }, "sha512-lCruqQlfWjhMlOdyf5pDHOxoNm4WoyY2vZ4YN33/nuZBRstVDuqPPjS0yBkbUlLEte11FbpW+wWSlfnZfSIZvg=="], + + "@biomejs/cli-win32-x64": ["@biomejs/cli-win32-x64@2.3.2", "", { "os": "win32", "cpu": "x64" }, "sha512-6Ee9P26DTb4D8sN9nXxgbi9Dw5vSOfH98M7UlmkjKB2vtUbrRqCbZiNfryGiwnPIpd6YUoTl7rLVD2/x1CyEHQ=="], + + "@changesets/apply-release-plan": ["@changesets/apply-release-plan@7.0.13", "", { "dependencies": { "@changesets/config": "^3.1.1", "@changesets/get-version-range-type": "^0.4.0", "@changesets/git": "^3.0.4", "@changesets/should-skip-package": "^0.1.2", "@changesets/types": "^6.1.0", "@manypkg/get-packages": "^1.1.3", "detect-indent": "^6.0.0", "fs-extra": "^7.0.1", "lodash.startcase": "^4.4.0", "outdent": "^0.5.0", "prettier": "^2.7.1", "resolve-from": "^5.0.0", "semver": "^7.5.3" } }, "sha512-BIW7bofD2yAWoE8H4V40FikC+1nNFEKBisMECccS16W1rt6qqhNTBDmIw5HaqmMgtLNz9e7oiALiEUuKrQ4oHg=="], + + "@changesets/assemble-release-plan": ["@changesets/assemble-release-plan@6.0.9", "", { "dependencies": { "@changesets/errors": "^0.2.0", "@changesets/get-dependents-graph": "^2.1.3", "@changesets/should-skip-package": "^0.1.2", "@changesets/types": "^6.1.0", "@manypkg/get-packages": "^1.1.3", "semver": "^7.5.3" } }, "sha512-tPgeeqCHIwNo8sypKlS3gOPmsS3wP0zHt67JDuL20P4QcXiw/O4Hl7oXiuLnP9yg+rXLQ2sScdV1Kkzde61iSQ=="], + + "@changesets/changelog-git": ["@changesets/changelog-git@0.2.1", "", { "dependencies": { "@changesets/types": "^6.1.0" } }, "sha512-x/xEleCFLH28c3bQeQIyeZf8lFXyDFVn1SgcBiR2Tw/r4IAWlk1fzxCEZ6NxQAjF2Nwtczoen3OA2qR+UawQ8Q=="], + + "@changesets/changelog-github": ["@changesets/changelog-github@0.5.1", "", { "dependencies": { "@changesets/get-github-info": "^0.6.0", "@changesets/types": "^6.1.0", "dotenv": "^8.1.0" } }, "sha512-BVuHtF+hrhUScSoHnJwTELB4/INQxVFc+P/Qdt20BLiBFIHFJDDUaGsZw+8fQeJTRP5hJZrzpt3oZWh0G19rAQ=="], + + "@changesets/cli": ["@changesets/cli@2.29.7", "", { "dependencies": { "@changesets/apply-release-plan": "^7.0.13", "@changesets/assemble-release-plan": "^6.0.9", "@changesets/changelog-git": "^0.2.1", "@changesets/config": "^3.1.1", "@changesets/errors": "^0.2.0", "@changesets/get-dependents-graph": "^2.1.3", "@changesets/get-release-plan": "^4.0.13", "@changesets/git": "^3.0.4", "@changesets/logger": "^0.1.1", "@changesets/pre": "^2.0.2", "@changesets/read": "^0.6.5", "@changesets/should-skip-package": "^0.1.2", "@changesets/types": "^6.1.0", "@changesets/write": "^0.4.0", "@inquirer/external-editor": "^1.0.0", "@manypkg/get-packages": "^1.1.3", "ansi-colors": "^4.1.3", "ci-info": "^3.7.0", "enquirer": "^2.4.1", "fs-extra": "^7.0.1", "mri": "^1.2.0", "p-limit": "^2.2.0", "package-manager-detector": "^0.2.0", "picocolors": "^1.1.0", "resolve-from": "^5.0.0", "semver": "^7.5.3", "spawndamnit": "^3.0.1", "term-size": "^2.1.0" }, "bin": { "changeset": "bin.js" } }, "sha512-R7RqWoaksyyKXbKXBTbT4REdy22yH81mcFK6sWtqSanxUCbUi9Uf+6aqxZtDQouIqPdem2W56CdxXgsxdq7FLQ=="], + + "@changesets/config": ["@changesets/config@3.1.1", "", { "dependencies": { "@changesets/errors": "^0.2.0", "@changesets/get-dependents-graph": "^2.1.3", "@changesets/logger": "^0.1.1", "@changesets/types": "^6.1.0", "@manypkg/get-packages": "^1.1.3", "fs-extra": "^7.0.1", "micromatch": "^4.0.8" } }, "sha512-bd+3Ap2TKXxljCggI0mKPfzCQKeV/TU4yO2h2C6vAihIo8tzseAn2e7klSuiyYYXvgu53zMN1OeYMIQkaQoWnA=="], + + "@changesets/errors": ["@changesets/errors@0.2.0", "", { "dependencies": { "extendable-error": "^0.1.5" } }, "sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow=="], + + "@changesets/get-dependents-graph": ["@changesets/get-dependents-graph@2.1.3", "", { "dependencies": { "@changesets/types": "^6.1.0", "@manypkg/get-packages": "^1.1.3", "picocolors": "^1.1.0", "semver": "^7.5.3" } }, "sha512-gphr+v0mv2I3Oxt19VdWRRUxq3sseyUpX9DaHpTUmLj92Y10AGy+XOtV+kbM6L/fDcpx7/ISDFK6T8A/P3lOdQ=="], + + "@changesets/get-github-info": ["@changesets/get-github-info@0.6.0", "", { "dependencies": { "dataloader": "^1.4.0", "node-fetch": "^2.5.0" } }, "sha512-v/TSnFVXI8vzX9/w3DU2Ol+UlTZcu3m0kXTjTT4KlAdwSvwutcByYwyYn9hwerPWfPkT2JfpoX0KgvCEi8Q/SA=="], + + "@changesets/get-release-plan": ["@changesets/get-release-plan@4.0.13", "", { "dependencies": { "@changesets/assemble-release-plan": "^6.0.9", "@changesets/config": "^3.1.1", "@changesets/pre": "^2.0.2", "@changesets/read": "^0.6.5", "@changesets/types": "^6.1.0", "@manypkg/get-packages": "^1.1.3" } }, "sha512-DWG1pus72FcNeXkM12tx+xtExyH/c9I1z+2aXlObH3i9YA7+WZEVaiHzHl03thpvAgWTRaH64MpfHxozfF7Dvg=="], + + "@changesets/get-version-range-type": ["@changesets/get-version-range-type@0.4.0", "", {}, "sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ=="], + + "@changesets/git": ["@changesets/git@3.0.4", "", { "dependencies": { "@changesets/errors": "^0.2.0", "@manypkg/get-packages": "^1.1.3", "is-subdir": "^1.1.1", "micromatch": "^4.0.8", "spawndamnit": "^3.0.1" } }, "sha512-BXANzRFkX+XcC1q/d27NKvlJ1yf7PSAgi8JG6dt8EfbHFHi4neau7mufcSca5zRhwOL8j9s6EqsxmT+s+/E6Sw=="], + + "@changesets/logger": ["@changesets/logger@0.1.1", "", { "dependencies": { "picocolors": "^1.1.0" } }, "sha512-OQtR36ZlnuTxKqoW4Sv6x5YIhOmClRd5pWsjZsddYxpWs517R0HkyiefQPIytCVh4ZcC5x9XaG8KTdd5iRQUfg=="], + + "@changesets/parse": ["@changesets/parse@0.4.1", "", { "dependencies": { "@changesets/types": "^6.1.0", "js-yaml": "^3.13.1" } }, "sha512-iwksMs5Bf/wUItfcg+OXrEpravm5rEd9Bf4oyIPL4kVTmJQ7PNDSd6MDYkpSJR1pn7tz/k8Zf2DhTCqX08Ou+Q=="], + + "@changesets/pre": ["@changesets/pre@2.0.2", "", { "dependencies": { "@changesets/errors": "^0.2.0", "@changesets/types": "^6.1.0", "@manypkg/get-packages": "^1.1.3", "fs-extra": "^7.0.1" } }, "sha512-HaL/gEyFVvkf9KFg6484wR9s0qjAXlZ8qWPDkTyKF6+zqjBe/I2mygg3MbpZ++hdi0ToqNUF8cjj7fBy0dg8Ug=="], + + "@changesets/read": ["@changesets/read@0.6.5", "", { "dependencies": { "@changesets/git": "^3.0.4", "@changesets/logger": "^0.1.1", "@changesets/parse": "^0.4.1", "@changesets/types": "^6.1.0", "fs-extra": "^7.0.1", "p-filter": "^2.1.0", "picocolors": "^1.1.0" } }, "sha512-UPzNGhsSjHD3Veb0xO/MwvasGe8eMyNrR/sT9gR8Q3DhOQZirgKhhXv/8hVsI0QpPjR004Z9iFxoJU6in3uGMg=="], + + "@changesets/should-skip-package": ["@changesets/should-skip-package@0.1.2", "", { "dependencies": { "@changesets/types": "^6.1.0", "@manypkg/get-packages": "^1.1.3" } }, "sha512-qAK/WrqWLNCP22UDdBTMPH5f41elVDlsNyat180A33dWxuUDyNpg6fPi/FyTZwRriVjg0L8gnjJn2F9XAoF0qw=="], + + "@changesets/types": ["@changesets/types@6.1.0", "", {}, "sha512-rKQcJ+o1nKNgeoYRHKOS07tAMNd3YSN0uHaJOZYjBAgxfV7TUE7JE+z4BzZdQwb5hKaYbayKN5KrYV7ODb2rAA=="], + + "@changesets/write": ["@changesets/write@0.4.0", "", { "dependencies": { "@changesets/types": "^6.1.0", "fs-extra": "^7.0.1", "human-id": "^4.1.1", "prettier": "^2.7.1" } }, "sha512-CdTLvIOPiCNuH71pyDu3rA+Q0n65cmAbXnwWH84rKGiFumFzkmHNT8KHTMEchcxN+Kl8I54xGUhJ7l3E7X396Q=="], + "@inquirer/ansi": ["@inquirer/ansi@1.0.2", "", {}, "sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ=="], "@inquirer/checkbox": ["@inquirer/checkbox@4.3.2", "", { "dependencies": { "@inquirer/ansi": "^1.0.2", "@inquirer/core": "^10.3.2", "@inquirer/figures": "^1.0.15", "@inquirer/type": "^3.0.10", "yoctocolors-cjs": "^2.1.3" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-VXukHf0RR1doGe6Sm4F0Em7SWYLTHSsbGfJdS9Ja2bX5/D5uwVOEjr07cncLROdBvmnvCATYEWlHqYmXv2IlQA=="], @@ -54,6 +115,10 @@ "@isaacs/fs-minipass": ["@isaacs/fs-minipass@4.0.1", "", { "dependencies": { "minipass": "^7.0.4" } }, "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w=="], + "@manypkg/find-root": ["@manypkg/find-root@1.1.0", "", { "dependencies": { "@babel/runtime": "^7.5.5", "@types/node": "^12.7.1", "find-up": "^4.1.0", "fs-extra": "^8.1.0" } }, "sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA=="], + + "@manypkg/get-packages": ["@manypkg/get-packages@1.1.3", "", { "dependencies": { "@babel/runtime": "^7.5.5", "@changesets/types": "^4.0.1", "@manypkg/find-root": "^1.1.0", "fs-extra": "^8.1.0", "globby": "^11.0.0", "read-yaml-file": "^1.1.0" } }, "sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A=="], + "@nodelib/fs.scandir": ["@nodelib/fs.scandir@2.1.5", "", { "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" } }, "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g=="], "@nodelib/fs.stat": ["@nodelib/fs.stat@2.0.5", "", {}, "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A=="], @@ -72,10 +137,18 @@ "ajv": ["ajv@8.17.1", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2" } }, "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g=="], - "ansi-regex": ["ansi-regex@6.2.2", "", {}, "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg=="], + "ansi-colors": ["ansi-colors@4.1.3", "", {}, "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw=="], + + "ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], "ansi-styles": ["ansi-styles@6.2.3", "", {}, "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg=="], + "argparse": ["argparse@1.0.10", "", { "dependencies": { "sprintf-js": "~1.0.2" } }, "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg=="], + + "array-union": ["array-union@2.1.0", "", {}, "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw=="], + + "better-path-resolve": ["better-path-resolve@1.0.0", "", { "dependencies": { "is-windows": "^1.0.0" } }, "sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g=="], + "braces": ["braces@3.0.3", "", { "dependencies": { "fill-range": "^7.1.1" } }, "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA=="], "bun-types": ["bun-types@1.3.2", "", { "dependencies": { "@types/node": "*" }, "peerDependencies": { "@types/react": "^19" } }, "sha512-i/Gln4tbzKNuxP70OWhJRZz1MRfvqExowP7U6JKoI8cntFrtxg7RJK3jvz7wQW54UuvNC8tbKHHri5fy74FVqg=="], @@ -86,6 +159,8 @@ "chownr": ["chownr@3.0.0", "", {}, "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g=="], + "ci-info": ["ci-info@3.9.0", "", {}, "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ=="], + "cli-width": ["cli-width@4.1.0", "", {}, "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ=="], "cliui": ["cliui@9.0.1", "", { "dependencies": { "string-width": "^7.2.0", "strip-ansi": "^7.1.0", "wrap-ansi": "^9.0.0" } }, "sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w=="], @@ -94,14 +169,30 @@ "color-name": ["color-name@1.1.4", "", {}, "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="], + "cross-spawn": ["cross-spawn@7.0.6", "", { "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" } }, "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA=="], + "csstype": ["csstype@3.2.3", "", {}, "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ=="], + "dataloader": ["dataloader@1.4.0", "", {}, "sha512-68s5jYdlvasItOJnCuI2Q9s4q98g0pCyL3HrcKJu8KNugUl8ahgmZYg38ysLTgQjjXX3H8CJLkAvWrclWfcalw=="], + + "detect-indent": ["detect-indent@6.1.0", "", {}, "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA=="], + + "dir-glob": ["dir-glob@3.0.1", "", { "dependencies": { "path-type": "^4.0.0" } }, "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA=="], + + "dotenv": ["dotenv@8.6.0", "", {}, "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g=="], + "emoji-regex": ["emoji-regex@10.6.0", "", {}, "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A=="], + "enquirer": ["enquirer@2.4.1", "", { "dependencies": { "ansi-colors": "^4.1.1", "strip-ansi": "^6.0.1" } }, "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ=="], + "env-paths": ["env-paths@3.0.0", "", {}, "sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A=="], "escalade": ["escalade@3.2.0", "", {}, "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA=="], + "esprima": ["esprima@4.0.1", "", { "bin": { "esparse": "./bin/esparse.js", "esvalidate": "./bin/esvalidate.js" } }, "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="], + + "extendable-error": ["extendable-error@0.1.7", "", {}, "sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg=="], + "fast-deep-equal": ["fast-deep-equal@3.1.3", "", {}, "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="], "fast-glob": ["fast-glob@3.3.3", "", { "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", "glob-parent": "^5.1.2", "merge2": "^1.3.0", "micromatch": "^4.0.8" } }, "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg=="], @@ -112,6 +203,10 @@ "fill-range": ["fill-range@7.1.1", "", { "dependencies": { "to-regex-range": "^5.0.1" } }, "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg=="], + "find-up": ["find-up@4.1.0", "", { "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" } }, "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw=="], + + "fs-extra": ["fs-extra@7.0.1", "", { "dependencies": { "graceful-fs": "^4.1.2", "jsonfile": "^4.0.0", "universalify": "^0.1.0" } }, "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw=="], + "get-caller-file": ["get-caller-file@2.0.5", "", {}, "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="], "get-east-asian-width": ["get-east-asian-width@1.4.0", "", {}, "sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q=="], @@ -120,6 +215,10 @@ "globby": ["globby@15.0.0", "", { "dependencies": { "@sindresorhus/merge-streams": "^4.0.0", "fast-glob": "^3.3.3", "ignore": "^7.0.5", "path-type": "^6.0.0", "slash": "^5.1.0", "unicorn-magic": "^0.3.0" } }, "sha512-oB4vkQGqlMl682wL1IlWd02tXCbquGWM4voPEI85QmNKCaw8zGTm1f1rubFgkg3Eli2PtKlFgrnmUqasbQWlkw=="], + "graceful-fs": ["graceful-fs@4.2.11", "", {}, "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="], + + "human-id": ["human-id@4.1.2", "", { "bin": { "human-id": "dist/cli.js" } }, "sha512-v/J+4Z/1eIJovEBdlV5TYj1IR+ZiohcYGRY+qN/oC9dAfKzVT023N/Bgw37hrKCoVRBvk3bqyzpr2PP5YeTMSg=="], + "iconv-lite": ["iconv-lite@0.7.0", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ=="], "ignore": ["ignore@7.0.5", "", {}, "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg=="], @@ -132,12 +231,26 @@ "is-number": ["is-number@7.0.0", "", {}, "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="], + "is-subdir": ["is-subdir@1.2.0", "", { "dependencies": { "better-path-resolve": "1.0.0" } }, "sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw=="], + "is-unicode-supported": ["is-unicode-supported@2.1.0", "", {}, "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ=="], + "is-windows": ["is-windows@1.0.2", "", {}, "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA=="], + + "isexe": ["isexe@2.0.0", "", {}, "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="], + "js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], + "js-yaml": ["js-yaml@3.14.2", "", { "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg=="], + "json-schema-traverse": ["json-schema-traverse@1.0.0", "", {}, "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="], + "jsonfile": ["jsonfile@4.0.0", "", { "optionalDependencies": { "graceful-fs": "^4.1.6" } }, "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg=="], + + "locate-path": ["locate-path@5.0.0", "", { "dependencies": { "p-locate": "^4.1.0" } }, "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g=="], + + "lodash.startcase": ["lodash.startcase@4.4.0", "", {}, "sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg=="], + "merge2": ["merge2@1.4.1", "", {}, "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg=="], "micromatch": ["micromatch@4.0.8", "", { "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" } }, "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA=="], @@ -146,22 +259,52 @@ "minizlib": ["minizlib@3.1.0", "", { "dependencies": { "minipass": "^7.1.2" } }, "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw=="], + "mri": ["mri@1.2.0", "", {}, "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA=="], + "mustache": ["mustache@4.2.0", "", { "bin": { "mustache": "bin/mustache" } }, "sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ=="], "mute-stream": ["mute-stream@2.0.0", "", {}, "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA=="], + "node-fetch": ["node-fetch@2.7.0", "", { "dependencies": { "whatwg-url": "^5.0.0" }, "peerDependencies": { "encoding": "^0.1.0" }, "optionalPeers": ["encoding"] }, "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A=="], + + "outdent": ["outdent@0.5.0", "", {}, "sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q=="], + + "p-filter": ["p-filter@2.1.0", "", { "dependencies": { "p-map": "^2.0.0" } }, "sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw=="], + + "p-limit": ["p-limit@2.3.0", "", { "dependencies": { "p-try": "^2.0.0" } }, "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w=="], + + "p-locate": ["p-locate@4.1.0", "", { "dependencies": { "p-limit": "^2.2.0" } }, "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A=="], + + "p-map": ["p-map@2.1.0", "", {}, "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw=="], + + "p-try": ["p-try@2.2.0", "", {}, "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="], + + "package-manager-detector": ["package-manager-detector@0.2.11", "", { "dependencies": { "quansync": "^0.2.7" } }, "sha512-BEnLolu+yuz22S56CU1SUKq3XC3PkwD5wv4ikR4MfGvnRVcmzXR9DwSlW2fEamyTPyXHomBJRzgapeuBvRNzJQ=="], + + "path-exists": ["path-exists@4.0.0", "", {}, "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="], + + "path-key": ["path-key@3.1.1", "", {}, "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="], + "path-type": ["path-type@6.0.0", "", {}, "sha512-Vj7sf++t5pBD637NSfkxpHSMfWaeig5+DKWLhcqIYx6mWQz5hdJTGDVMQiJcw1ZYkhs7AazKDGpRVji1LJCZUQ=="], "picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="], "picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], + "pify": ["pify@4.0.1", "", {}, "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g=="], + "prettier": ["prettier@3.6.2", "", { "bin": { "prettier": "bin/prettier.cjs" } }, "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ=="], + "quansync": ["quansync@0.2.11", "", {}, "sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA=="], + "queue-microtask": ["queue-microtask@1.2.3", "", {}, "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="], + "read-yaml-file": ["read-yaml-file@1.1.0", "", { "dependencies": { "graceful-fs": "^4.1.5", "js-yaml": "^3.6.1", "pify": "^4.0.1", "strip-bom": "^3.0.0" } }, "sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA=="], + "require-from-string": ["require-from-string@2.0.2", "", {}, "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw=="], + "resolve-from": ["resolve-from@5.0.0", "", {}, "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw=="], + "reusify": ["reusify@1.1.0", "", {}, "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw=="], "run-parallel": ["run-parallel@1.2.0", "", { "dependencies": { "queue-microtask": "^1.2.2" } }, "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA=="], @@ -170,13 +313,23 @@ "semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], + "shebang-command": ["shebang-command@2.0.0", "", { "dependencies": { "shebang-regex": "^3.0.0" } }, "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA=="], + + "shebang-regex": ["shebang-regex@3.0.0", "", {}, "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="], + "signal-exit": ["signal-exit@4.1.0", "", {}, "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw=="], "slash": ["slash@5.1.0", "", {}, "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg=="], + "spawndamnit": ["spawndamnit@3.0.1", "", { "dependencies": { "cross-spawn": "^7.0.5", "signal-exit": "^4.0.1" } }, "sha512-MmnduQUuHCoFckZoWnXsTg7JaiLBJrKFj9UI2MbRPGaJeVpsLcVBu6P/IGZovziM/YBsellCmsprgNA+w0CzVg=="], + + "sprintf-js": ["sprintf-js@1.0.3", "", {}, "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g=="], + "string-width": ["string-width@7.2.0", "", { "dependencies": { "emoji-regex": "^10.3.0", "get-east-asian-width": "^1.0.0", "strip-ansi": "^7.1.0" } }, "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ=="], - "strip-ansi": ["strip-ansi@7.1.2", "", { "dependencies": { "ansi-regex": "^6.0.1" } }, "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA=="], + "strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], + + "strip-bom": ["strip-bom@3.0.0", "", {}, "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA=="], "tar": ["tar@7.5.2", "", { "dependencies": { "@isaacs/fs-minipass": "^4.0.0", "chownr": "^3.0.0", "minipass": "^7.1.2", "minizlib": "^3.1.0", "yallist": "^5.0.0" } }, "sha512-7NyxrTE4Anh8km8iEy7o0QYPs+0JKBTj5ZaqHg6B39erLg0qYXN3BijtShwbsNSvQ+LN75+KV+C4QR/f6Gwnpg=="], @@ -184,14 +337,20 @@ "temporal-spec": ["temporal-spec@0.3.0", "", {}, "sha512-n+noVpIqz4hYgFSMOSiINNOUOMFtV5cZQNCmmszA6GiVFVRt3G7AqVyhXjhCSmowvQn+NsGn+jMDMKJYHd3bSQ=="], + "term-size": ["term-size@2.2.1", "", {}, "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg=="], + "to-regex-range": ["to-regex-range@5.0.1", "", { "dependencies": { "is-number": "^7.0.0" } }, "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ=="], + "tr46": ["tr46@0.0.3", "", {}, "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="], + "typescript": ["typescript@5.9.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="], "undici-types": ["undici-types@7.16.0", "", {}, "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw=="], "unicorn-magic": ["unicorn-magic@0.3.0", "", {}, "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA=="], + "universalify": ["universalify@0.1.2", "", {}, "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg=="], + "vscode-jsonrpc": ["vscode-jsonrpc@8.2.0", "", {}, "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA=="], "vscode-languageserver": ["vscode-languageserver@9.0.1", "", { "dependencies": { "vscode-languageserver-protocol": "3.17.5" }, "bin": { "installServerIntoExtension": "bin/installServerIntoExtension" } }, "sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g=="], @@ -202,6 +361,12 @@ "vscode-languageserver-types": ["vscode-languageserver-types@3.17.5", "", {}, "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg=="], + "webidl-conversions": ["webidl-conversions@3.0.1", "", {}, "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="], + + "whatwg-url": ["whatwg-url@5.0.0", "", { "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" } }, "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw=="], + + "which": ["which@2.0.2", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "./bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="], + "wrap-ansi": ["wrap-ansi@9.0.2", "", { "dependencies": { "ansi-styles": "^6.2.1", "string-width": "^7.0.0", "strip-ansi": "^7.1.0" } }, "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww=="], "y18n": ["y18n@5.0.8", "", {}, "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA=="], @@ -216,16 +381,44 @@ "yoctocolors-cjs": ["yoctocolors-cjs@2.1.3", "", {}, "sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw=="], + "@changesets/apply-release-plan/prettier": ["prettier@2.8.8", "", { "bin": { "prettier": "bin-prettier.js" } }, "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q=="], + + "@changesets/write/prettier": ["prettier@2.8.8", "", { "bin": { "prettier": "bin-prettier.js" } }, "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q=="], + "@inquirer/core/wrap-ansi": ["wrap-ansi@6.2.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA=="], + "@manypkg/find-root/@types/node": ["@types/node@12.20.55", "", {}, "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ=="], + + "@manypkg/find-root/fs-extra": ["fs-extra@8.1.0", "", { "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^4.0.0", "universalify": "^0.1.0" } }, "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g=="], + + "@manypkg/get-packages/@changesets/types": ["@changesets/types@4.1.0", "", {}, "sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw=="], + + "@manypkg/get-packages/fs-extra": ["fs-extra@8.1.0", "", { "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^4.0.0", "universalify": "^0.1.0" } }, "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g=="], + + "@manypkg/get-packages/globby": ["globby@11.1.0", "", { "dependencies": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", "fast-glob": "^3.2.9", "ignore": "^5.2.0", "merge2": "^1.4.1", "slash": "^3.0.0" } }, "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g=="], + + "cliui/strip-ansi": ["strip-ansi@7.1.2", "", { "dependencies": { "ansi-regex": "^6.0.1" } }, "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA=="], + + "dir-glob/path-type": ["path-type@4.0.0", "", {}, "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw=="], + + "string-width/strip-ansi": ["strip-ansi@7.1.2", "", { "dependencies": { "ansi-regex": "^6.0.1" } }, "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA=="], + + "wrap-ansi/strip-ansi": ["strip-ansi@7.1.2", "", { "dependencies": { "ansi-regex": "^6.0.1" } }, "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA=="], + "@inquirer/core/wrap-ansi/ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], "@inquirer/core/wrap-ansi/string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], - "@inquirer/core/wrap-ansi/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], + "@manypkg/get-packages/globby/ignore": ["ignore@5.3.2", "", {}, "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g=="], - "@inquirer/core/wrap-ansi/string-width/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], + "@manypkg/get-packages/globby/slash": ["slash@3.0.0", "", {}, "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q=="], + + "cliui/strip-ansi/ansi-regex": ["ansi-regex@6.2.2", "", {}, "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg=="], - "@inquirer/core/wrap-ansi/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], + "string-width/strip-ansi/ansi-regex": ["ansi-regex@6.2.2", "", {}, "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg=="], + + "wrap-ansi/strip-ansi/ansi-regex": ["ansi-regex@6.2.2", "", {}, "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg=="], + + "@inquirer/core/wrap-ansi/string-width/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], } } diff --git a/package.json b/package.json index 637d5f7..a28bb0e 100644 --- a/package.json +++ b/package.json @@ -22,9 +22,12 @@ "@typespec/compiler": "^1.6.0" }, "devDependencies": { + "@biomejs/biome": "2.3.2", + "@changesets/changelog-github": "^0.5.1", + "@changesets/cli": "^2.29.7", "@types/bun": "^1.3.2", "@types/node": "^24.10.1", "@typespec/compiler": "^1.6.0", - "typescript": "5.9" + "typescript": "5.9.3" } } From b72b80df26d8a50db85d56bc8a3c2bc8dbde47e2 Mon Sep 17 00:00:00 2001 From: Brian Cooper Date: Mon, 17 Nov 2025 21:25:06 -0800 Subject: [PATCH 04/26] build(pkg): add metadata --- package.json | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index a28bb0e..82b5ff3 100644 --- a/package.json +++ b/package.json @@ -1,18 +1,34 @@ { "name": "@omnidotdev/typespec-drizzle-emitter", + "description": "TypeSpec Drizzle schema emitter", "version": "0.0.0", + "license": "MIT", "type": "module", "main": "build/src/index.js", "exports": { ".": { "types": "./build/src/index.d.ts", "default": "./build/src/index.js" - }, - "./testing": { - "types": "./build/src/testing/index.d.ts", - "default": "./build/src/testing/index.js" } }, + "homepage": "https://github.com/omnidotdev/typespec-drizzle-emitter#readme", + "repository": { + "type": "git", + "url": "git+https://github.com/omnidotdev/typespec-drizzle-emitter.git" + }, + "bugs": { + "url": "https://github.com/omnidotdev/typespec-drizzle-emitter/issues" + }, + "files": [ + "build/" + ], + "keywords": [ + "typespec", + "drizzle", + "emitter", + "tsp", + "codegen" + ], "scripts": { "build": "tsc", "build:watch": "tsc --watch", From 5999af3fe76c7a7bf007748d1d5b681b49ded1a6 Mon Sep 17 00:00:00 2001 From: Brian Cooper Date: Mon, 17 Nov 2025 21:36:57 -0800 Subject: [PATCH 05/26] feature(code-quality): add code quality configs --- .husky/pre-commit | 1 + biome.jsonc | 43 +++++++++++++++++++++++++++++++++++++++++++ knip.json | 8 ++++++++ renovate.json | 4 ++++ 4 files changed, 56 insertions(+) create mode 100644 .husky/pre-commit create mode 100644 biome.jsonc create mode 100644 knip.json create mode 100644 renovate.json diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100644 index 0000000..ddf063c --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1 @@ +bun biome check --write --staged --no-errors-on-unmatched src diff --git a/biome.jsonc b/biome.jsonc new file mode 100644 index 0000000..b428368 --- /dev/null +++ b/biome.jsonc @@ -0,0 +1,43 @@ +{ + "$schema": "https://biomejs.dev/schemas/2.3.6/schema.json", + "files": { + // NB: `node_modules` excluded by default + "includes": ["**", "!**/build"] + }, + "formatter": { + "indentStyle": "tab" + }, + "javascript": { + "formatter": { + "jsxQuoteStyle": "double" + } + }, + "linter": { + "enabled": true, + "rules": { + "a11y": { + "useKeyWithClickEvents": "off" + }, + "correctness": { + "useExhaustiveDependencies": "warn" + }, + "style": { + "noInferrableTypes": "error", + "noParameterAssign": "error", + "noUnusedTemplateLiteral": "error", + "noUselessElse": "error", + "useAsConstAssertion": "error", + "useConst": "error", + "useDefaultParameterLast": "error", + "useEnumInitializers": "error", + "useNumberNamespace": "error", + "useSelfClosingElements": "error", + "useSingleVarDeclarator": "error", + "useTemplate": "error" + }, + "suspicious": { + "noExplicitAny": "warn" + } + } + } +} diff --git a/knip.json b/knip.json new file mode 100644 index 0000000..6fa8f4c --- /dev/null +++ b/knip.json @@ -0,0 +1,8 @@ +{ + "$schema": "https://unpkg.com/knip@5/schema.json", + "ignore": ["**/*.test.ts", "**/*.spec.ts", ".github/workflows/*.yml"], + "ignoreExportsUsedInFile": { + "interface": true, + "type": true + } +} diff --git a/renovate.json b/renovate.json new file mode 100644 index 0000000..f20d4d1 --- /dev/null +++ b/renovate.json @@ -0,0 +1,4 @@ +{ + "$schema": "https://docs.renovatebot.com/renovate-schema.json", + "extends": ["config:recommended", "customManagers:biomeVersions"] +} From 95f531cdc61dddf040b9cebfb4b43c1e431d1bcd Mon Sep 17 00:00:00 2001 From: Brian Cooper Date: Mon, 17 Nov 2025 21:37:20 -0800 Subject: [PATCH 06/26] feature: add changesets support --- .changeset/config.json | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 .changeset/config.json diff --git a/.changeset/config.json b/.changeset/config.json new file mode 100644 index 0000000..dcc7377 --- /dev/null +++ b/.changeset/config.json @@ -0,0 +1,12 @@ +{ + "$schema": "https://unpkg.com/@changesets/config@3.1.1/schema.json", + "changelog": [ + "@changesets/changelog-github", + { "repo": "omnidotdev/typespec-drizzle-emitter" } + ], + "commit": false, + "access": "public", + "baseBranch": "master", + "updateInternalDependencies": "patch", + "ignore": [] +} From df4be0efcf0e6b43de7b70772f9ace9d6ac9c64b Mon Sep 17 00:00:00 2001 From: Brian Cooper Date: Mon, 17 Nov 2025 21:37:30 -0800 Subject: [PATCH 07/26] docs: add license --- LICENSE.md | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 LICENSE.md diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000..cdba092 --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,9 @@ +MIT License + +Copyright (c) Omni LLC + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. From 67765baa7f9055b01c5df025c82218f246dbd891 Mon Sep 17 00:00:00 2001 From: Brian Cooper Date: Mon, 17 Nov 2025 21:37:42 -0800 Subject: [PATCH 08/26] feature: add `.env` --- .env | 1 + 1 file changed, 1 insertion(+) create mode 100644 .env diff --git a/.env b/.env new file mode 100644 index 0000000..7358238 --- /dev/null +++ b/.env @@ -0,0 +1 @@ +DO_NOT_TRACK=1 From e968461b4651d4c9941ceb8f2ec61e2e6eb71cec Mon Sep 17 00:00:00 2001 From: Brian Cooper Date: Mon, 17 Nov 2025 21:38:57 -0800 Subject: [PATCH 09/26] chore: format --- .changeset/config.json | 20 ++-- bun.lock | 110 +++++++++++++++--- package.json | 103 ++++++++-------- src/emitter.ts | 15 +-- src/lib.ts | 6 +- .../__fixtures__/drizzleEmitter.tester.ts | 10 +- src/test/hello.test.ts | 18 +-- tsconfig.json | 32 ++--- 8 files changed, 203 insertions(+), 111 deletions(-) diff --git a/.changeset/config.json b/.changeset/config.json index dcc7377..e2c3668 100644 --- a/.changeset/config.json +++ b/.changeset/config.json @@ -1,12 +1,12 @@ { - "$schema": "https://unpkg.com/@changesets/config@3.1.1/schema.json", - "changelog": [ - "@changesets/changelog-github", - { "repo": "omnidotdev/typespec-drizzle-emitter" } - ], - "commit": false, - "access": "public", - "baseBranch": "master", - "updateInternalDependencies": "patch", - "ignore": [] + "$schema": "https://unpkg.com/@changesets/config@3.1.1/schema.json", + "changelog": [ + "@changesets/changelog-github", + { "repo": "omnidotdev/typespec-drizzle-emitter" } + ], + "commit": false, + "access": "public", + "baseBranch": "master", + "updateInternalDependencies": "patch", + "ignore": [] } diff --git a/bun.lock b/bun.lock index 756ab91..d7a514e 100644 --- a/bun.lock +++ b/bun.lock @@ -5,12 +5,14 @@ "": { "name": "@omnidotdev/typespec-drizzle-emitter", "devDependencies": { - "@biomejs/biome": "2.3.2", + "@biomejs/biome": "2.3.6", "@changesets/changelog-github": "^0.5.1", "@changesets/cli": "^2.29.7", "@types/bun": "^1.3.2", "@types/node": "^24.10.1", "@typespec/compiler": "^1.6.0", + "husky": "^9.1.7", + "knip": "^5.69.1", "typescript": "5.9.3", }, "peerDependencies": { @@ -25,23 +27,23 @@ "@babel/runtime": ["@babel/runtime@7.28.4", "", {}, "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ=="], - "@biomejs/biome": ["@biomejs/biome@2.3.2", "", { "optionalDependencies": { "@biomejs/cli-darwin-arm64": "2.3.2", "@biomejs/cli-darwin-x64": "2.3.2", "@biomejs/cli-linux-arm64": "2.3.2", "@biomejs/cli-linux-arm64-musl": "2.3.2", "@biomejs/cli-linux-x64": "2.3.2", "@biomejs/cli-linux-x64-musl": "2.3.2", "@biomejs/cli-win32-arm64": "2.3.2", "@biomejs/cli-win32-x64": "2.3.2" }, "bin": { "biome": "bin/biome" } }, "sha512-8e9tzamuDycx7fdrcJ/F/GDZ8SYukc5ud6tDicjjFqURKYFSWMl0H0iXNXZEGmcmNUmABgGuHThPykcM41INgg=="], + "@biomejs/biome": ["@biomejs/biome@2.3.6", "", { "optionalDependencies": { "@biomejs/cli-darwin-arm64": "2.3.6", "@biomejs/cli-darwin-x64": "2.3.6", "@biomejs/cli-linux-arm64": "2.3.6", "@biomejs/cli-linux-arm64-musl": "2.3.6", "@biomejs/cli-linux-x64": "2.3.6", "@biomejs/cli-linux-x64-musl": "2.3.6", "@biomejs/cli-win32-arm64": "2.3.6", "@biomejs/cli-win32-x64": "2.3.6" }, "bin": { "biome": "bin/biome" } }, "sha512-oqUhWyU6tae0MFsr/7iLe++QWRg+6jtUhlx9/0GmCWDYFFrK366sBLamNM7D9Y+c7YSynUFKr8lpEp1r6Sk7eA=="], - "@biomejs/cli-darwin-arm64": ["@biomejs/cli-darwin-arm64@2.3.2", "", { "os": "darwin", "cpu": "arm64" }, "sha512-4LECm4kc3If0JISai4c3KWQzukoUdpxy4fRzlrPcrdMSRFksR9ZoXK7JBcPuLBmd2SoT4/d7CQS33VnZpgBjew=="], + "@biomejs/cli-darwin-arm64": ["@biomejs/cli-darwin-arm64@2.3.6", "", { "os": "darwin", "cpu": "arm64" }, "sha512-P4JWE5d8UayBxYe197QJwyW4ZHp0B+zvRIGCusOm1WbxmlhpAQA1zEqQuunHgSIzvyEEp4TVxiKGXNFZPg7r9Q=="], - "@biomejs/cli-darwin-x64": ["@biomejs/cli-darwin-x64@2.3.2", "", { "os": "darwin", "cpu": "x64" }, "sha512-jNMnfwHT4N3wi+ypRfMTjLGnDmKYGzxVr1EYAPBcauRcDnICFXN81wD6wxJcSUrLynoyyYCdfW6vJHS/IAoTDA=="], + "@biomejs/cli-darwin-x64": ["@biomejs/cli-darwin-x64@2.3.6", "", { "os": "darwin", "cpu": "x64" }, "sha512-I4rTebj+F/L9K93IU7yTFs8nQ6EhaCOivxduRha4w4WEZK80yoZ8OAdR1F33m4yJ/NfUuTUbP/Wjs+vKjlCoWA=="], - "@biomejs/cli-linux-arm64": ["@biomejs/cli-linux-arm64@2.3.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-amnqvk+gWybbQleRRq8TMe0rIv7GHss8mFJEaGuEZYWg1Tw14YKOkeo8h6pf1c+d3qR+JU4iT9KXnBKGON4klw=="], + "@biomejs/cli-linux-arm64": ["@biomejs/cli-linux-arm64@2.3.6", "", { "os": "linux", "cpu": "arm64" }, "sha512-JjYy83eVBnvuINZiqyFO7xx72v8Srh4hsgaacSBCjC22DwM6+ZvnX1/fj8/SBiLuUOfZ8YhU2pfq2Dzakeyg1A=="], - "@biomejs/cli-linux-arm64-musl": ["@biomejs/cli-linux-arm64-musl@2.3.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-2Zz4usDG1GTTPQnliIeNx6eVGGP2ry5vE/v39nT73a3cKN6t5H5XxjcEoZZh62uVZvED7hXXikclvI64vZkYqw=="], + "@biomejs/cli-linux-arm64-musl": ["@biomejs/cli-linux-arm64-musl@2.3.6", "", { "os": "linux", "cpu": "arm64" }, "sha512-oK1NpIXIixbJ/4Tcx40cwiieqah6rRUtMGOHDeK2ToT7yUFVEvXUGRKqH0O4hqZ9tW8TcXNZKfgRH6xrsjVtGg=="], - "@biomejs/cli-linux-x64": ["@biomejs/cli-linux-x64@2.3.2", "", { "os": "linux", "cpu": "x64" }, "sha512-8BG/vRAhFz1pmuyd24FQPhNeueLqPtwvZk6yblABY2gzL2H8fLQAF/Z2OPIc+BPIVPld+8cSiKY/KFh6k81xfA=="], + "@biomejs/cli-linux-x64": ["@biomejs/cli-linux-x64@2.3.6", "", { "os": "linux", "cpu": "x64" }, "sha512-ZjPXzy5yN9wusIoX+8Zp4p6cL8r0NzJCXg/4r1KLVveIPXd2jKVlqZ6ZyzEq385WwU3OX5KOwQYLQsOc788waQ=="], - "@biomejs/cli-linux-x64-musl": ["@biomejs/cli-linux-x64-musl@2.3.2", "", { "os": "linux", "cpu": "x64" }, "sha512-gzB19MpRdTuOuLtPpFBGrV3Lq424gHyq2lFj8wfX9tvLMLdmA/R9C7k/mqBp/spcbWuHeIEKgEs3RviOPcWGBA=="], + "@biomejs/cli-linux-x64-musl": ["@biomejs/cli-linux-x64-musl@2.3.6", "", { "os": "linux", "cpu": "x64" }, "sha512-QvxB8GHQeaO4FCtwJpJjCgJkbHBbWxRHUxQlod+xeaYE6gtJdSkYkuxdKAQUZEOIsec+PeaDAhW9xjzYbwmOFA=="], - "@biomejs/cli-win32-arm64": ["@biomejs/cli-win32-arm64@2.3.2", "", { "os": "win32", "cpu": "arm64" }, "sha512-lCruqQlfWjhMlOdyf5pDHOxoNm4WoyY2vZ4YN33/nuZBRstVDuqPPjS0yBkbUlLEte11FbpW+wWSlfnZfSIZvg=="], + "@biomejs/cli-win32-arm64": ["@biomejs/cli-win32-arm64@2.3.6", "", { "os": "win32", "cpu": "arm64" }, "sha512-YM7hLHpwjdt8R7+O2zS1Vo2cKgqEeptiXB1tWW1rgjN5LlpZovBVKtg7zfwfRrFx3i08aNZThYpTcowpTlczug=="], - "@biomejs/cli-win32-x64": ["@biomejs/cli-win32-x64@2.3.2", "", { "os": "win32", "cpu": "x64" }, "sha512-6Ee9P26DTb4D8sN9nXxgbi9Dw5vSOfH98M7UlmkjKB2vtUbrRqCbZiNfryGiwnPIpd6YUoTl7rLVD2/x1CyEHQ=="], + "@biomejs/cli-win32-x64": ["@biomejs/cli-win32-x64@2.3.6", "", { "os": "win32", "cpu": "x64" }, "sha512-psgNEYgMAobY5h+QHRBVR9xvg2KocFuBKm6axZWB/aD12NWhQjiVFQUjV6wMXhlH4iT0Q9c3yK5JFRiDC/rzHA=="], "@changesets/apply-release-plan": ["@changesets/apply-release-plan@7.0.13", "", { "dependencies": { "@changesets/config": "^3.1.1", "@changesets/get-version-range-type": "^0.4.0", "@changesets/git": "^3.0.4", "@changesets/should-skip-package": "^0.1.2", "@changesets/types": "^6.1.0", "@manypkg/get-packages": "^1.1.3", "detect-indent": "^6.0.0", "fs-extra": "^7.0.1", "lodash.startcase": "^4.4.0", "outdent": "^0.5.0", "prettier": "^2.7.1", "resolve-from": "^5.0.0", "semver": "^7.5.3" } }, "sha512-BIW7bofD2yAWoE8H4V40FikC+1nNFEKBisMECccS16W1rt6qqhNTBDmIw5HaqmMgtLNz9e7oiALiEUuKrQ4oHg=="], @@ -81,6 +83,12 @@ "@changesets/write": ["@changesets/write@0.4.0", "", { "dependencies": { "@changesets/types": "^6.1.0", "fs-extra": "^7.0.1", "human-id": "^4.1.1", "prettier": "^2.7.1" } }, "sha512-CdTLvIOPiCNuH71pyDu3rA+Q0n65cmAbXnwWH84rKGiFumFzkmHNT8KHTMEchcxN+Kl8I54xGUhJ7l3E7X396Q=="], + "@emnapi/core": ["@emnapi/core@1.7.1", "", { "dependencies": { "@emnapi/wasi-threads": "1.1.0", "tslib": "^2.4.0" } }, "sha512-o1uhUASyo921r2XtHYOHy7gdkGLge8ghBEQHMWmyJFoXlpU58kIrhhN3w26lpQb6dspetweapMn2CSNwQ8I4wg=="], + + "@emnapi/runtime": ["@emnapi/runtime@1.7.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA=="], + + "@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.1.0", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ=="], + "@inquirer/ansi": ["@inquirer/ansi@1.0.2", "", {}, "sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ=="], "@inquirer/checkbox": ["@inquirer/checkbox@4.3.2", "", { "dependencies": { "@inquirer/ansi": "^1.0.2", "@inquirer/core": "^10.3.2", "@inquirer/figures": "^1.0.15", "@inquirer/type": "^3.0.10", "yoctocolors-cjs": "^2.1.3" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-VXukHf0RR1doGe6Sm4F0Em7SWYLTHSsbGfJdS9Ja2bX5/D5uwVOEjr07cncLROdBvmnvCATYEWlHqYmXv2IlQA=="], @@ -119,14 +127,56 @@ "@manypkg/get-packages": ["@manypkg/get-packages@1.1.3", "", { "dependencies": { "@babel/runtime": "^7.5.5", "@changesets/types": "^4.0.1", "@manypkg/find-root": "^1.1.0", "fs-extra": "^8.1.0", "globby": "^11.0.0", "read-yaml-file": "^1.1.0" } }, "sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A=="], + "@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@1.0.7", "", { "dependencies": { "@emnapi/core": "^1.5.0", "@emnapi/runtime": "^1.5.0", "@tybys/wasm-util": "^0.10.1" } }, "sha512-SeDnOO0Tk7Okiq6DbXmmBODgOAb9dp9gjlphokTUxmt8U3liIP1ZsozBahH69j/RJv+Rfs6IwUKHTgQYJ/HBAw=="], + "@nodelib/fs.scandir": ["@nodelib/fs.scandir@2.1.5", "", { "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" } }, "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g=="], "@nodelib/fs.stat": ["@nodelib/fs.stat@2.0.5", "", {}, "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A=="], "@nodelib/fs.walk": ["@nodelib/fs.walk@1.2.8", "", { "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" } }, "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg=="], + "@oxc-resolver/binding-android-arm-eabi": ["@oxc-resolver/binding-android-arm-eabi@11.13.2", "", { "os": "android", "cpu": "arm" }, "sha512-vWd1NEaclg/t2DtEmYzRRBNQOueMI8tixw/fSNZ9XETXLRJiAjQMYpYeflQdRASloGze6ZelHE/wIBNt4S+pkw=="], + + "@oxc-resolver/binding-android-arm64": ["@oxc-resolver/binding-android-arm64@11.13.2", "", { "os": "android", "cpu": "arm64" }, "sha512-jxZrYcxgpI6IuQpguQVAQNrZfUyiYfMVqR4pKVU3PRLCM7AsfXNKp0TIgcvp+l6dYVdoZ1MMMMa5Ayjd09rNOw=="], + + "@oxc-resolver/binding-darwin-arm64": ["@oxc-resolver/binding-darwin-arm64@11.13.2", "", { "os": "darwin", "cpu": "arm64" }, "sha512-RDS3HUe1FvgjNS1xfBUqiEJ8938Zb5r7iKABwxEblp3K4ufZZNAtoaHjdUH2TJ0THDmuf0OxxVUO/Y+4Ep4QfQ=="], + + "@oxc-resolver/binding-darwin-x64": ["@oxc-resolver/binding-darwin-x64@11.13.2", "", { "os": "darwin", "cpu": "x64" }, "sha512-tDcyWtkUzkt6auJLP2dOjL84BxqHkKW4mz2lNRIGPTq7b+HBraB+m8RdRH6BgqTvbnNECOxR3XAMaKBKC8J51g=="], + + "@oxc-resolver/binding-freebsd-x64": ["@oxc-resolver/binding-freebsd-x64@11.13.2", "", { "os": "freebsd", "cpu": "x64" }, "sha512-fpaeN8Q0kWvKns9uSMg6CcKo7cdgmWt6J91stPf8sdM+EKXzZ0YcRnWWyWF8SM16QcLUPCy5Iwt5Z8aYBGaZYA=="], + + "@oxc-resolver/binding-linux-arm-gnueabihf": ["@oxc-resolver/binding-linux-arm-gnueabihf@11.13.2", "", { "os": "linux", "cpu": "arm" }, "sha512-idBgJU5AvSsGOeaIWiFBKbNBjpuduHsJmrG4CBbEUNW/Ykx+ISzcuj1PHayiYX6R9stVsRhj3d2PyymfC5KWRg=="], + + "@oxc-resolver/binding-linux-arm-musleabihf": ["@oxc-resolver/binding-linux-arm-musleabihf@11.13.2", "", { "os": "linux", "cpu": "arm" }, "sha512-BlBvQUhvvIM/7s96KlKhMk0duR2sj8T7Hyii46/5QnwfN/pHwobvOL5czZ6/SKrHNB/F/qDY4hGsBuB1y7xgTg=="], + + "@oxc-resolver/binding-linux-arm64-gnu": ["@oxc-resolver/binding-linux-arm64-gnu@11.13.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-lUmDTmYOGpbIK+FBfZ0ySaQTo7g1Ia/WnDnQR2wi/0AtehZIg/ZZIgiT/fD0iRvKEKma612/0PVo8dXdAKaAGA=="], + + "@oxc-resolver/binding-linux-arm64-musl": ["@oxc-resolver/binding-linux-arm64-musl@11.13.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-dkGzOxo+I9lA4Er6qzFgkFevl3JvwyI9i0T/PkOJHva04rb1p9dz8GPogTO9uMK4lrwLWzm/piAu+tHYC7v7+w=="], + + "@oxc-resolver/binding-linux-ppc64-gnu": ["@oxc-resolver/binding-linux-ppc64-gnu@11.13.2", "", { "os": "linux", "cpu": "ppc64" }, "sha512-53kWsjLkVFnoSA7COdps38pBssN48zI8LfsOvupsmQ0/4VeMYb+0Ao9O6r52PtmFZsGB3S1Qjqbjl/Pswj1a3g=="], + + "@oxc-resolver/binding-linux-riscv64-gnu": ["@oxc-resolver/binding-linux-riscv64-gnu@11.13.2", "", { "os": "linux", "cpu": "none" }, "sha512-MfxN6DMpvmdCbGlheJ+ihy11oTcipqDfcEIQV9ah3FGXBRCZtBOHJpQDk8qI2Y+nCXVr3Nln7OSsOzoC4+rSYQ=="], + + "@oxc-resolver/binding-linux-riscv64-musl": ["@oxc-resolver/binding-linux-riscv64-musl@11.13.2", "", { "os": "linux", "cpu": "none" }, "sha512-WXrm4YiRU0ijqb72WHSjmfYaQZ7t6/kkQrFc4JtU+pUE4DZA/DEdxOuQEd4Q43VqmLvICTJWSaZMlCGQ4PSRUg=="], + + "@oxc-resolver/binding-linux-s390x-gnu": ["@oxc-resolver/binding-linux-s390x-gnu@11.13.2", "", { "os": "linux", "cpu": "s390x" }, "sha512-4pISWIlOFRUhWyvGCB3XUhtcwyvwGGhlXhHz7IXCXuGufaQtvR05trvw8U1ZnaPhsdPBkRhOMIedX11ayi5uXw=="], + + "@oxc-resolver/binding-linux-x64-gnu": ["@oxc-resolver/binding-linux-x64-gnu@11.13.2", "", { "os": "linux", "cpu": "x64" }, "sha512-DVo6jS8n73yNAmCsUOOk2vBeC60j2RauDXQM8p7RDl0afsEaA2le22vD8tky7iNoM5tsxfBmE4sOJXEKgpwWRw=="], + + "@oxc-resolver/binding-linux-x64-musl": ["@oxc-resolver/binding-linux-x64-musl@11.13.2", "", { "os": "linux", "cpu": "x64" }, "sha512-6WqrE+hQBFP35KdwQjWcZpldbTq6yJmuTVThISu+rY3+j6MaDp2ciLHTr1X68r2H/7ocOIl4k3NnOVIzeRJE3w=="], + + "@oxc-resolver/binding-wasm32-wasi": ["@oxc-resolver/binding-wasm32-wasi@11.13.2", "", { "dependencies": { "@napi-rs/wasm-runtime": "^1.0.7" }, "cpu": "none" }, "sha512-YpxvQmP2D+mNUkLQZbBjGz20g/pY8XoOBdPPoWMl9X68liFFjXxkPQTrZxWw4zzG/UkTM5z6dPRTyTePRsMcjw=="], + + "@oxc-resolver/binding-win32-arm64-msvc": ["@oxc-resolver/binding-win32-arm64-msvc@11.13.2", "", { "os": "win32", "cpu": "arm64" }, "sha512-1SKBw6KcCmvPBdEw1/Qdpv6eSDf23lCXTWz9VxTe6QUQ/1wR+HZR2uS4q6C8W6jnIswMTQbxpTvVwdRXl+ufeA=="], + + "@oxc-resolver/binding-win32-ia32-msvc": ["@oxc-resolver/binding-win32-ia32-msvc@11.13.2", "", { "os": "win32", "cpu": "ia32" }, "sha512-KEVV7wggDucxRn3vvyHnmTCPXoCT7vWpH18UVLTygibHJvNRP2zl5lBaQcCIdIaYYZjKt1aGI/yZqxZvHoiCdg=="], + + "@oxc-resolver/binding-win32-x64-msvc": ["@oxc-resolver/binding-win32-x64-msvc@11.13.2", "", { "os": "win32", "cpu": "x64" }, "sha512-6AAdN9v/wO5c3td1yidgNLKYlzuNgfOtEqBq60WE469bJWR7gHgG/S5aLR2pH6/gyPLs9UXtItxi934D+0Estg=="], + "@sindresorhus/merge-streams": ["@sindresorhus/merge-streams@4.0.0", "", {}, "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ=="], + "@tybys/wasm-util": ["@tybys/wasm-util@0.10.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg=="], + "@types/bun": ["@types/bun@1.3.2", "", { "dependencies": { "bun-types": "1.3.2" } }, "sha512-t15P7k5UIgHKkxwnMNkJbWlh/617rkDGEdSsDbu+qNHTaz9SKf7aC8fiIlUdD5RPpH6GEkP0cK7WlvmrEBRtWg=="], "@types/node": ["@types/node@24.10.1", "", { "dependencies": { "undici-types": "~7.16.0" } }, "sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ=="], @@ -143,7 +193,7 @@ "ansi-styles": ["ansi-styles@6.2.3", "", {}, "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg=="], - "argparse": ["argparse@1.0.10", "", { "dependencies": { "sprintf-js": "~1.0.2" } }, "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg=="], + "argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="], "array-union": ["array-union@2.1.0", "", {}, "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw=="], @@ -201,10 +251,14 @@ "fastq": ["fastq@1.19.1", "", { "dependencies": { "reusify": "^1.0.4" } }, "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ=="], + "fd-package-json": ["fd-package-json@2.0.0", "", { "dependencies": { "walk-up-path": "^4.0.0" } }, "sha512-jKmm9YtsNXN789RS/0mSzOC1NUq9mkVd65vbSSVsKdjGvYXBuE4oWe2QOEoFeRmJg+lPuZxpmrfFclNhoRMneQ=="], + "fill-range": ["fill-range@7.1.1", "", { "dependencies": { "to-regex-range": "^5.0.1" } }, "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg=="], "find-up": ["find-up@4.1.0", "", { "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" } }, "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw=="], + "formatly": ["formatly@0.3.0", "", { "dependencies": { "fd-package-json": "^2.0.0" }, "bin": { "formatly": "bin/index.mjs" } }, "sha512-9XNj/o4wrRFyhSMJOvsuyMwy8aUfBaZ1VrqHVfohyXf0Sw0e+yfKG+xZaY3arGCOMdwFsqObtzVOc1gU9KiT9w=="], + "fs-extra": ["fs-extra@7.0.1", "", { "dependencies": { "graceful-fs": "^4.1.2", "jsonfile": "^4.0.0", "universalify": "^0.1.0" } }, "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw=="], "get-caller-file": ["get-caller-file@2.0.5", "", {}, "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="], @@ -219,6 +273,8 @@ "human-id": ["human-id@4.1.2", "", { "bin": { "human-id": "dist/cli.js" } }, "sha512-v/J+4Z/1eIJovEBdlV5TYj1IR+ZiohcYGRY+qN/oC9dAfKzVT023N/Bgw37hrKCoVRBvk3bqyzpr2PP5YeTMSg=="], + "husky": ["husky@9.1.7", "", { "bin": { "husky": "bin.js" } }, "sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA=="], + "iconv-lite": ["iconv-lite@0.7.0", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ=="], "ignore": ["ignore@7.0.5", "", {}, "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg=="], @@ -239,14 +295,18 @@ "isexe": ["isexe@2.0.0", "", {}, "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="], + "jiti": ["jiti@2.6.1", "", { "bin": { "jiti": "lib/jiti-cli.mjs" } }, "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ=="], + "js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "js-yaml": ["js-yaml@3.14.2", "", { "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg=="], + "js-yaml": ["js-yaml@4.1.1", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA=="], "json-schema-traverse": ["json-schema-traverse@1.0.0", "", {}, "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="], "jsonfile": ["jsonfile@4.0.0", "", { "optionalDependencies": { "graceful-fs": "^4.1.6" } }, "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg=="], + "knip": ["knip@5.69.1", "", { "dependencies": { "@nodelib/fs.walk": "^1.2.3", "fast-glob": "^3.3.3", "formatly": "^0.3.0", "jiti": "^2.6.0", "js-yaml": "^4.1.0", "minimist": "^1.2.8", "oxc-resolver": "^11.12.0", "picocolors": "^1.1.1", "picomatch": "^4.0.1", "smol-toml": "^1.4.1", "strip-json-comments": "5.0.2", "zod": "^4.1.11" }, "peerDependencies": { "@types/node": ">=18", "typescript": ">=5.0.4 <7" }, "bin": { "knip": "bin/knip.js", "knip-bun": "bin/knip-bun.js" } }, "sha512-duK61dmrk9O3RiPQtDrsWGzxGyNoyf9gQyjXPcvmcecZypdv9x0ixzPdBU4YTPRbwvUaRtNGulHYUyixz2fbKg=="], + "locate-path": ["locate-path@5.0.0", "", { "dependencies": { "p-locate": "^4.1.0" } }, "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g=="], "lodash.startcase": ["lodash.startcase@4.4.0", "", {}, "sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg=="], @@ -255,6 +315,8 @@ "micromatch": ["micromatch@4.0.8", "", { "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" } }, "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA=="], + "minimist": ["minimist@1.2.8", "", {}, "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA=="], + "minipass": ["minipass@7.1.2", "", {}, "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw=="], "minizlib": ["minizlib@3.1.0", "", { "dependencies": { "minipass": "^7.1.2" } }, "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw=="], @@ -269,6 +331,8 @@ "outdent": ["outdent@0.5.0", "", {}, "sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q=="], + "oxc-resolver": ["oxc-resolver@11.13.2", "", { "optionalDependencies": { "@oxc-resolver/binding-android-arm-eabi": "11.13.2", "@oxc-resolver/binding-android-arm64": "11.13.2", "@oxc-resolver/binding-darwin-arm64": "11.13.2", "@oxc-resolver/binding-darwin-x64": "11.13.2", "@oxc-resolver/binding-freebsd-x64": "11.13.2", "@oxc-resolver/binding-linux-arm-gnueabihf": "11.13.2", "@oxc-resolver/binding-linux-arm-musleabihf": "11.13.2", "@oxc-resolver/binding-linux-arm64-gnu": "11.13.2", "@oxc-resolver/binding-linux-arm64-musl": "11.13.2", "@oxc-resolver/binding-linux-ppc64-gnu": "11.13.2", "@oxc-resolver/binding-linux-riscv64-gnu": "11.13.2", "@oxc-resolver/binding-linux-riscv64-musl": "11.13.2", "@oxc-resolver/binding-linux-s390x-gnu": "11.13.2", "@oxc-resolver/binding-linux-x64-gnu": "11.13.2", "@oxc-resolver/binding-linux-x64-musl": "11.13.2", "@oxc-resolver/binding-wasm32-wasi": "11.13.2", "@oxc-resolver/binding-win32-arm64-msvc": "11.13.2", "@oxc-resolver/binding-win32-ia32-msvc": "11.13.2", "@oxc-resolver/binding-win32-x64-msvc": "11.13.2" } }, "sha512-1SXVyYQ9bqMX3uZo8Px81EG7jhZkO9PvvR5X9roY5TLYVm4ZA7pbPDNlYaDBBeF9U+YO3OeMNoHde52hrcCu8w=="], + "p-filter": ["p-filter@2.1.0", "", { "dependencies": { "p-map": "^2.0.0" } }, "sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw=="], "p-limit": ["p-limit@2.3.0", "", { "dependencies": { "p-try": "^2.0.0" } }, "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w=="], @@ -289,7 +353,7 @@ "picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="], - "picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], + "picomatch": ["picomatch@4.0.3", "", {}, "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q=="], "pify": ["pify@4.0.1", "", {}, "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g=="], @@ -321,6 +385,8 @@ "slash": ["slash@5.1.0", "", {}, "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg=="], + "smol-toml": ["smol-toml@1.5.2", "", {}, "sha512-QlaZEqcAH3/RtNyet1IPIYPsEWAaYyXXv1Krsi+1L/QHppjX4Ifm8MQsBISz9vE8cHicIq3clogsheili5vhaQ=="], + "spawndamnit": ["spawndamnit@3.0.1", "", { "dependencies": { "cross-spawn": "^7.0.5", "signal-exit": "^4.0.1" } }, "sha512-MmnduQUuHCoFckZoWnXsTg7JaiLBJrKFj9UI2MbRPGaJeVpsLcVBu6P/IGZovziM/YBsellCmsprgNA+w0CzVg=="], "sprintf-js": ["sprintf-js@1.0.3", "", {}, "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g=="], @@ -331,6 +397,8 @@ "strip-bom": ["strip-bom@3.0.0", "", {}, "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA=="], + "strip-json-comments": ["strip-json-comments@5.0.2", "", {}, "sha512-4X2FR3UwhNUE9G49aIsJW5hRRR3GXGTBTZRMfv568O60ojM8HcWjV/VxAxCDW3SUND33O6ZY66ZuRcdkj73q2g=="], + "tar": ["tar@7.5.2", "", { "dependencies": { "@isaacs/fs-minipass": "^4.0.0", "chownr": "^3.0.0", "minipass": "^7.1.2", "minizlib": "^3.1.0", "yallist": "^5.0.0" } }, "sha512-7NyxrTE4Anh8km8iEy7o0QYPs+0JKBTj5ZaqHg6B39erLg0qYXN3BijtShwbsNSvQ+LN75+KV+C4QR/f6Gwnpg=="], "temporal-polyfill": ["temporal-polyfill@0.3.0", "", { "dependencies": { "temporal-spec": "0.3.0" } }, "sha512-qNsTkX9K8hi+FHDfHmf22e/OGuXmfBm9RqNismxBrnSmZVJKegQ+HYYXT+R7Ha8F/YSm2Y34vmzD4cxMu2u95g=="], @@ -343,6 +411,8 @@ "tr46": ["tr46@0.0.3", "", {}, "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="], + "tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "typescript": ["typescript@5.9.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="], "undici-types": ["undici-types@7.16.0", "", {}, "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw=="], @@ -361,6 +431,8 @@ "vscode-languageserver-types": ["vscode-languageserver-types@3.17.5", "", {}, "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg=="], + "walk-up-path": ["walk-up-path@4.0.0", "", {}, "sha512-3hu+tD8YzSLGuFYtPRb48vdhKMi0KQV5sn+uWr8+7dMEq/2G/dtLrdDinkLjqq5TIbIBjYJ4Ax/n3YiaW7QM8A=="], + "webidl-conversions": ["webidl-conversions@3.0.1", "", {}, "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="], "whatwg-url": ["whatwg-url@5.0.0", "", { "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" } }, "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw=="], @@ -381,8 +453,12 @@ "yoctocolors-cjs": ["yoctocolors-cjs@2.1.3", "", {}, "sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw=="], + "zod": ["zod@4.1.12", "", {}, "sha512-JInaHOamG8pt5+Ey8kGmdcAcg3OL9reK8ltczgHTAwNhMys/6ThXHityHxVV2p3fkw/c+MAvBHFVYHFZDmjMCQ=="], + "@changesets/apply-release-plan/prettier": ["prettier@2.8.8", "", { "bin": { "prettier": "bin-prettier.js" } }, "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q=="], + "@changesets/parse/js-yaml": ["js-yaml@3.14.2", "", { "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg=="], + "@changesets/write/prettier": ["prettier@2.8.8", "", { "bin": { "prettier": "bin-prettier.js" } }, "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q=="], "@inquirer/core/wrap-ansi": ["wrap-ansi@6.2.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA=="], @@ -401,10 +477,16 @@ "dir-glob/path-type": ["path-type@4.0.0", "", {}, "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw=="], + "micromatch/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], + + "read-yaml-file/js-yaml": ["js-yaml@3.14.2", "", { "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg=="], + "string-width/strip-ansi": ["strip-ansi@7.1.2", "", { "dependencies": { "ansi-regex": "^6.0.1" } }, "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA=="], "wrap-ansi/strip-ansi": ["strip-ansi@7.1.2", "", { "dependencies": { "ansi-regex": "^6.0.1" } }, "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA=="], + "@changesets/parse/js-yaml/argparse": ["argparse@1.0.10", "", { "dependencies": { "sprintf-js": "~1.0.2" } }, "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg=="], + "@inquirer/core/wrap-ansi/ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], "@inquirer/core/wrap-ansi/string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], @@ -415,6 +497,8 @@ "cliui/strip-ansi/ansi-regex": ["ansi-regex@6.2.2", "", {}, "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg=="], + "read-yaml-file/js-yaml/argparse": ["argparse@1.0.10", "", { "dependencies": { "sprintf-js": "~1.0.2" } }, "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg=="], + "string-width/strip-ansi/ansi-regex": ["ansi-regex@6.2.2", "", {}, "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg=="], "wrap-ansi/strip-ansi/ansi-regex": ["ansi-regex@6.2.2", "", {}, "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg=="], diff --git a/package.json b/package.json index 82b5ff3..e14d3ec 100644 --- a/package.json +++ b/package.json @@ -1,49 +1,58 @@ { - "name": "@omnidotdev/typespec-drizzle-emitter", - "description": "TypeSpec Drizzle schema emitter", - "version": "0.0.0", - "license": "MIT", - "type": "module", - "main": "build/src/index.js", - "exports": { - ".": { - "types": "./build/src/index.d.ts", - "default": "./build/src/index.js" - } - }, - "homepage": "https://github.com/omnidotdev/typespec-drizzle-emitter#readme", - "repository": { - "type": "git", - "url": "git+https://github.com/omnidotdev/typespec-drizzle-emitter.git" - }, - "bugs": { - "url": "https://github.com/omnidotdev/typespec-drizzle-emitter/issues" - }, - "files": [ - "build/" - ], - "keywords": [ - "typespec", - "drizzle", - "emitter", - "tsp", - "codegen" - ], - "scripts": { - "build": "tsc", - "build:watch": "tsc --watch", - "test": "bun test" - }, - "peerDependencies": { - "@typespec/compiler": "^1.6.0" - }, - "devDependencies": { - "@biomejs/biome": "2.3.2", - "@changesets/changelog-github": "^0.5.1", - "@changesets/cli": "^2.29.7", - "@types/bun": "^1.3.2", - "@types/node": "^24.10.1", - "@typespec/compiler": "^1.6.0", - "typescript": "5.9.3" - } + "name": "@omnidotdev/typespec-drizzle-emitter", + "description": "TypeSpec Drizzle schema emitter", + "version": "0.0.0", + "license": "MIT", + "type": "module", + "main": "build/src/index.js", + "exports": { + ".": { + "types": "./build/src/index.d.ts", + "default": "./build/src/index.js" + } + }, + "homepage": "https://github.com/omnidotdev/typespec-drizzle-emitter#readme", + "repository": { + "type": "git", + "url": "git+https://github.com/omnidotdev/typespec-drizzle-emitter.git" + }, + "bugs": { + "url": "https://github.com/omnidotdev/typespec-drizzle-emitter/issues" + }, + "files": [ + "build/" + ], + "keywords": [ + "typespec", + "drizzle", + "emitter", + "tsp", + "codegen" + ], + "scripts": { + "build": "tsc", + "build:watch": "tsc --watch", + "format": "biome format --write .", + "lint": "biome check .", + "lint:fix": "biome check --write .", + "knip": "knip-bun", + "test": "bun test", + "release": "bun run build && changeset publish", + "prebuild": "rm -rf build", + "prepare": "husky" + }, + "peerDependencies": { + "@typespec/compiler": "^1.6.0" + }, + "devDependencies": { + "@biomejs/biome": "2.3.6", + "@changesets/changelog-github": "^0.5.1", + "@changesets/cli": "^2.29.7", + "@types/bun": "^1.3.2", + "@types/node": "^24.10.1", + "@typespec/compiler": "^1.6.0", + "husky": "^9.1.7", + "knip": "^5.69.1", + "typescript": "5.9.3" + } } diff --git a/src/emitter.ts b/src/emitter.ts index b73620c..f444903 100644 --- a/src/emitter.ts +++ b/src/emitter.ts @@ -1,4 +1,5 @@ -import { EmitContext, emitFile, resolvePath } from "@typespec/compiler"; +import type { EmitContext } from "@typespec/compiler"; +import { emitFile, resolvePath } from "@typespec/compiler"; /** * Entry point for the emitter. @@ -6,11 +7,11 @@ import { EmitContext, emitFile, resolvePath } from "@typespec/compiler"; * @see https://typespec.io/docs/extending-typespec/emitters-basics/#onemit */ export const $onEmit = async (ctx: EmitContext) => { - // exit if `noEmit` is enabled - if (ctx.program.compilerOptions.noEmit) return; + // exit if `noEmit` is enabled + if (ctx.program.compilerOptions.noEmit) return; - await emitFile(ctx.program, { - path: resolvePath(ctx.emitterOutputDir, "output.txt"), - content: "Hello world\n", - }); + await emitFile(ctx.program, { + path: resolvePath(ctx.emitterOutputDir, "output.txt"), + content: "Hello world\n", + }); }; diff --git a/src/lib.ts b/src/lib.ts index 2aec68d..552b8ff 100644 --- a/src/lib.ts +++ b/src/lib.ts @@ -4,8 +4,6 @@ import { createTypeSpecLibrary } from "@typespec/compiler"; * Initiate the TypeSpec library. */ export const $lib = createTypeSpecLibrary({ - name: "typespec-drizzle-emitter", - diagnostics: {}, + name: "typespec-drizzle-emitter", + diagnostics: {}, }); - -export const { reportDiagnostic, createDiagnostic } = $lib; diff --git a/src/test/__fixtures__/drizzleEmitter.tester.ts b/src/test/__fixtures__/drizzleEmitter.tester.ts index 6c398a8..ad4f487 100644 --- a/src/test/__fixtures__/drizzleEmitter.tester.ts +++ b/src/test/__fixtures__/drizzleEmitter.tester.ts @@ -1,14 +1,14 @@ +import { fileURLToPath } from "node:url"; import { resolvePath } from "@typespec/compiler"; import { createTester } from "@typespec/compiler/testing"; -import { fileURLToPath } from "url"; /** * Drizzle emitter tester. Functionally serves as a test fixture. * @see https://typespec.io/docs/extending-typespec/testing/#tester-api */ export const DrizzleEmitterTester = createTester( - resolvePath(fileURLToPath(import.meta.url), "../../../../"), - { - libraries: ["@omnidotdev/typespec-drizzle-emitter"], - }, + resolvePath(fileURLToPath(import.meta.url), "../../../../"), + { + libraries: ["@omnidotdev/typespec-drizzle-emitter"], + }, ).importLibraries(); diff --git a/src/test/hello.test.ts b/src/test/hello.test.ts index 01157af..1fa1802 100644 --- a/src/test/hello.test.ts +++ b/src/test/hello.test.ts @@ -1,10 +1,10 @@ -import { describe, it, expect } from "bun:test"; +import { describe, expect, it } from "bun:test"; import { DrizzleEmitterTester } from "./__fixtures__/drizzleEmitter.tester.js"; describe("TypeSpec Drizzle emitter", () => { - it("compiles TypeSpec code without errors", async () => { - await DrizzleEmitterTester.compile(` + it("compiles TypeSpec code without errors", async () => { + await DrizzleEmitterTester.compile(` model User { id: string; name: string; @@ -13,11 +13,11 @@ describe("TypeSpec Drizzle emitter", () => { op getUser(id: string): User; `); - // NB: assertion is implicit, if above works, the test passes - }); + // NB: assertion is implicit, if above works, the test passes + }); - it("diagnoses TypeSpec code without errors", async () => { - const diagnostics = await DrizzleEmitterTester.diagnose(` + it("diagnoses TypeSpec code without errors", async () => { + const diagnostics = await DrizzleEmitterTester.diagnose(` model User { id: string; name: string; @@ -26,6 +26,6 @@ describe("TypeSpec Drizzle emitter", () => { op getUser(id: string): User; `); - expect(diagnostics).toHaveLength(0); - }); + expect(diagnostics).toHaveLength(0); + }); }); diff --git a/tsconfig.json b/tsconfig.json index b9db603..032ba24 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,18 +1,18 @@ { - "compilerOptions": { - "target": "es2022", - "useDefineForClassFields": true, - "module": "nodenext", - "moduleResolution": "nodenext", - "lib": ["es2022"], - "rootDir": ".", - "outDir": "build", - "baseUrl": "src", - "sourceMap": true, - "declaration": true, - "strict": true, - "skipLibCheck": true - }, - "include": ["src"], - "exclude": ["src/test"] + "compilerOptions": { + "target": "es2022", + "useDefineForClassFields": true, + "module": "nodenext", + "moduleResolution": "nodenext", + "lib": ["es2022"], + "rootDir": ".", + "outDir": "build", + "baseUrl": "src", + "sourceMap": true, + "declaration": true, + "strict": true, + "skipLibCheck": true + }, + "include": ["src"], + "exclude": ["src/test"] } From 664636359672f955a881d29bb85155dd54cf727b Mon Sep 17 00:00:00 2001 From: Brian Cooper Date: Mon, 17 Nov 2025 21:41:12 -0800 Subject: [PATCH 10/26] feature: add Tiltfile --- Tiltfile | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 Tiltfile diff --git a/Tiltfile b/Tiltfile new file mode 100644 index 0000000..eb6db41 --- /dev/null +++ b/Tiltfile @@ -0,0 +1,23 @@ +load("ext://dotenv", "dotenv") +dotenv() + +local_resource( + "build", + "bun run build", + auto_init=False, + trigger_mode=TRIGGER_MODE_MANUAL +) + +local_resource( + "build:watch", + serve_cmd="bun build:watch", + auto_init=False, + trigger_mode=TRIGGER_MODE_MANUAL +) + +local_resource( + "test", + "bun test", + auto_init=False, + trigger_mode=TRIGGER_MODE_MANUAL +) From 14b3cc80ddf8ad97bfa27046bc672ab8e10013e8 Mon Sep 17 00:00:00 2001 From: Brian Cooper Date: Mon, 17 Nov 2025 21:42:01 -0800 Subject: [PATCH 11/26] ci: add workflows --- .github/workflows/publish.yml | 36 +++++++++++++++++++++++++++++++++++ .github/workflows/release.yml | 27 ++++++++++++++++++++++++++ .github/workflows/test.yml | 28 +++++++++++++++++++++++++++ 3 files changed, 91 insertions(+) create mode 100644 .github/workflows/publish.yml create mode 100644 .github/workflows/release.yml create mode 100644 .github/workflows/test.yml diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml new file mode 100644 index 0000000..b9ede46 --- /dev/null +++ b/.github/workflows/publish.yml @@ -0,0 +1,36 @@ +name: Publish Commit โš™๏ธ + +on: + push: + branches: [master] + pull_request: + branches: [master] + +jobs: + # check author permissions + check: + runs-on: ubuntu-latest + outputs: + has-permissions: ${{ steps.checkPermissions.outputs.require-result }} + steps: + - name: Check permissions + id: checkPermissions + uses: actions-cool/check-user-permission@v2 + with: + # require repo write access to trigger the package preview + require: "write" + # build and publish the preview package + publish: + needs: check + # publish the preview package only if permissions check passed + if: needs.check.outputs.has-permissions == 'true' + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: oven-sh/setup-bun@v2 + - name: Install dependencies + run: bun i + - name: Build package + run: bun run build --filter @omnidotdev/template-typescript-library + - name: Publish package + run: bunx pkg-pr-new publish './packages/template-typescript-library' diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..f445b0f --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,27 @@ +name: Release ๐Ÿ—๏ธ + +on: + push: + branches: [master] + +concurrency: ${{ github.workflow }}-${{ github.ref }} + +jobs: + release: + name: Handle release ๐Ÿฆ‹ + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: oven-sh/setup-bun@v2 + - name: Install dependencies + run: bun i + - name: Create release PR or publish package + id: changesets + uses: changesets/action@v1 + with: + publish: bun release + title: "feature(release): version packages" + commit: "ci(changesets): version packages" + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + NPM_TOKEN: ${{ secrets.NPM_TOKEN }} diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..b8230a8 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,28 @@ +name: Test ๐Ÿงช + +on: + push: + branches: [master] + pull_request: + branches: [master] + +jobs: + test_unit: + name: Run unit tests ๐Ÿƒ + timeout-minutes: 1 + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: oven-sh/setup-bun@v2 + with: + bun-version: 1.1.42 + # - uses: ArtiomTr/jest-coverage-report-action@v2 + # with: + # package-manager: bun + # test-script: bun test:coverage + # annotations: failed-tests + # TODO replace below with commented job above, blocked by Bun not yet supporting a JSON coverage reporter for the action to consume nor generate (similar: https://github.com/oven-sh/bun/issues/4099) + - name: Install dependencies + run: bun install + - name: Run unit tests + run: bun test From f5c6a234ac884531ab2e9f3a89ca228da205df6d Mon Sep 17 00:00:00 2001 From: Brian Cooper Date: Mon, 17 Nov 2025 21:57:45 -0800 Subject: [PATCH 12/26] docs: add README --- README.md | 100 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..67c1e35 --- /dev/null +++ b/README.md @@ -0,0 +1,100 @@ +# TypeSpec Drizzle Emitter + +
+ + +[Join Omni community on Discord](https://discord.gg/omnidotdev) + +[![version](https://img.shields.io/github/v/release/omnidotdev/typespec-drizzle?sort=semver)](https://github.com/omnidotdev/typespec-drizzle/releases) +[![build](https://img.shields.io/github/actions/workflow/status/omnidotdev/typespec-drizzle/release.yml)](https://github.com/omnidotdev/typespec-drizzle/actions/workflows/release.yml) +[![license: MIT](https://img.shields.io/github/license/omnidotdev/typespec-drizzle)](https://github.com/omnidotdev/typespec-drizzle/blob/master/LICENSE.md) + +
+ +A TypeSpec emitter that generates [Drizzle ORM](https://orm.drizzle.team) schema definitions and types from TypeSpec specifications. + +> [!IMPORTANT] > **Project Status:** ๐Ÿšง This project is **brand new**. + +## Overview + +This emitter allows you to define your database schema using TypeSpec's type-safe language and automatically generate Drizzle ORM schema files, enabling a single source of truth for your database schema definitions alongside other artifacts. + +## Features + +- Generate Drizzle schema definitions from TypeSpec models +- Type-safe database schema generation +- Support for common database types and constraints +- Integration with TypeSpec's existing ecosystem + +## Installation + +```sh +bun add @omnidotdev/typespec-drizzle +``` + +## Usage + +### Basic Usage + +1. Add the emitter to your TypeSpec configuration (`tspconfig.yaml`): + +```yaml +emit: + - "@omnidotdev/typespec-drizzle" +``` + +2. Define your models in TypeSpec: + +```typespec +import "@omnidotdev/typespec-drizzle"; + +model User { + id: string; + email: string; + name: string; + createdAt: utcDateTime; +} + +model Post { + id: string; + title: string; + content: string; + authorId: string; + publishedAt?: utcDateTime; +} +``` + +3. Run the TypeSpec compiler: + +```sh +tsp compile . +``` + +The emitter will generate Drizzle schema files in the output directory. + +## Getting Started + +### Local Development + +Use [Tilt](https://tilt.dev) for a unified development experience: + +```sh +tilt up +``` + +or manually install and build: + +```sh +bun install +bun run build # or `bun run build:watch` +``` + +Tests can be run with `bun test`. + +## Contributing + +See Omni's [contributing docs](https://docs.omni.dev/contributing/overview). + +## License + +The code in this repository is licensed under MIT, © Omni LLC. See [LICENSE.md](LICENSE.md) for more information. From 1258d8dc4bfdae2624abebd1e3bbf920f3bd5d55 Mon Sep 17 00:00:00 2001 From: Brian Cooper Date: Mon, 17 Nov 2025 22:18:24 -0800 Subject: [PATCH 13/26] chore: format --- .changeset/config.json | 20 ++-- bun.lock | 2 +- package.json | 112 +++++++++--------- src/lib.ts | 4 +- .../__fixtures__/drizzleEmitter.tester.ts | 8 +- 5 files changed, 73 insertions(+), 73 deletions(-) diff --git a/.changeset/config.json b/.changeset/config.json index e2c3668..a7469d4 100644 --- a/.changeset/config.json +++ b/.changeset/config.json @@ -1,12 +1,12 @@ { - "$schema": "https://unpkg.com/@changesets/config@3.1.1/schema.json", - "changelog": [ - "@changesets/changelog-github", - { "repo": "omnidotdev/typespec-drizzle-emitter" } - ], - "commit": false, - "access": "public", - "baseBranch": "master", - "updateInternalDependencies": "patch", - "ignore": [] + "$schema": "https://unpkg.com/@changesets/config@3.1.1/schema.json", + "changelog": [ + "@changesets/changelog-github", + { "repo": "omnidotdev/typespec-drizzle" } + ], + "commit": false, + "access": "public", + "baseBranch": "master", + "updateInternalDependencies": "patch", + "ignore": [] } diff --git a/bun.lock b/bun.lock index d7a514e..2744e4f 100644 --- a/bun.lock +++ b/bun.lock @@ -3,7 +3,7 @@ "configVersion": 1, "workspaces": { "": { - "name": "@omnidotdev/typespec-drizzle-emitter", + "name": "@omnidotdev/typespec-drizzle", "devDependencies": { "@biomejs/biome": "2.3.6", "@changesets/changelog-github": "^0.5.1", diff --git a/package.json b/package.json index e14d3ec..9262c4c 100644 --- a/package.json +++ b/package.json @@ -1,58 +1,58 @@ { - "name": "@omnidotdev/typespec-drizzle-emitter", - "description": "TypeSpec Drizzle schema emitter", - "version": "0.0.0", - "license": "MIT", - "type": "module", - "main": "build/src/index.js", - "exports": { - ".": { - "types": "./build/src/index.d.ts", - "default": "./build/src/index.js" - } - }, - "homepage": "https://github.com/omnidotdev/typespec-drizzle-emitter#readme", - "repository": { - "type": "git", - "url": "git+https://github.com/omnidotdev/typespec-drizzle-emitter.git" - }, - "bugs": { - "url": "https://github.com/omnidotdev/typespec-drizzle-emitter/issues" - }, - "files": [ - "build/" - ], - "keywords": [ - "typespec", - "drizzle", - "emitter", - "tsp", - "codegen" - ], - "scripts": { - "build": "tsc", - "build:watch": "tsc --watch", - "format": "biome format --write .", - "lint": "biome check .", - "lint:fix": "biome check --write .", - "knip": "knip-bun", - "test": "bun test", - "release": "bun run build && changeset publish", - "prebuild": "rm -rf build", - "prepare": "husky" - }, - "peerDependencies": { - "@typespec/compiler": "^1.6.0" - }, - "devDependencies": { - "@biomejs/biome": "2.3.6", - "@changesets/changelog-github": "^0.5.1", - "@changesets/cli": "^2.29.7", - "@types/bun": "^1.3.2", - "@types/node": "^24.10.1", - "@typespec/compiler": "^1.6.0", - "husky": "^9.1.7", - "knip": "^5.69.1", - "typescript": "5.9.3" - } + "name": "@omnidotdev/typespec-drizzle", + "description": "TypeSpec Drizzle schema emitter", + "version": "0.0.0", + "license": "MIT", + "type": "module", + "main": "build/src/index.js", + "exports": { + ".": { + "types": "./build/src/index.d.ts", + "default": "./build/src/index.js" + } + }, + "homepage": "https://github.com/omnidotdev/typespec-drizzle#readme", + "repository": { + "type": "git", + "url": "git+https://github.com/omnidotdev/typespec-drizzle.git" + }, + "bugs": { + "url": "https://github.com/omnidotdev/typespec-drizzle/issues" + }, + "files": [ + "build/" + ], + "keywords": [ + "typespec", + "drizzle", + "emitter", + "tsp", + "codegen" + ], + "scripts": { + "build": "tsc", + "build:watch": "tsc --watch", + "format": "biome format --write .", + "lint": "biome check .", + "lint:fix": "biome check --write .", + "knip": "knip-bun", + "test": "bun test", + "release": "bun run build && changeset publish", + "prebuild": "rm -rf build", + "prepare": "husky" + }, + "peerDependencies": { + "@typespec/compiler": "^1.6.0" + }, + "devDependencies": { + "@biomejs/biome": "2.3.6", + "@changesets/changelog-github": "^0.5.1", + "@changesets/cli": "^2.29.7", + "@types/bun": "^1.3.2", + "@types/node": "^24.10.1", + "@typespec/compiler": "^1.6.0", + "husky": "^9.1.7", + "knip": "^5.69.1", + "typescript": "5.9.3" + } } diff --git a/src/lib.ts b/src/lib.ts index 552b8ff..9e17265 100644 --- a/src/lib.ts +++ b/src/lib.ts @@ -4,6 +4,6 @@ import { createTypeSpecLibrary } from "@typespec/compiler"; * Initiate the TypeSpec library. */ export const $lib = createTypeSpecLibrary({ - name: "typespec-drizzle-emitter", - diagnostics: {}, + name: "typespec-drizzle", + diagnostics: {}, }); diff --git a/src/test/__fixtures__/drizzleEmitter.tester.ts b/src/test/__fixtures__/drizzleEmitter.tester.ts index ad4f487..db24385 100644 --- a/src/test/__fixtures__/drizzleEmitter.tester.ts +++ b/src/test/__fixtures__/drizzleEmitter.tester.ts @@ -7,8 +7,8 @@ import { createTester } from "@typespec/compiler/testing"; * @see https://typespec.io/docs/extending-typespec/testing/#tester-api */ export const DrizzleEmitterTester = createTester( - resolvePath(fileURLToPath(import.meta.url), "../../../../"), - { - libraries: ["@omnidotdev/typespec-drizzle-emitter"], - }, + resolvePath(fileURLToPath(import.meta.url), "../../../../"), + { + libraries: ["@omnidotdev/typespec-drizzle"], + }, ).importLibraries(); From 100a8807824cf3688f56951bf65b74a3b9cecb00 Mon Sep 17 00:00:00 2001 From: Brian Cooper Date: Mon, 17 Nov 2025 22:18:35 -0800 Subject: [PATCH 14/26] chore: format --- .changeset/config.json | 20 ++-- package.json | 112 +++++++++--------- src/lib.ts | 4 +- .../__fixtures__/drizzleEmitter.tester.ts | 8 +- 4 files changed, 72 insertions(+), 72 deletions(-) diff --git a/.changeset/config.json b/.changeset/config.json index a7469d4..11d1a82 100644 --- a/.changeset/config.json +++ b/.changeset/config.json @@ -1,12 +1,12 @@ { - "$schema": "https://unpkg.com/@changesets/config@3.1.1/schema.json", - "changelog": [ - "@changesets/changelog-github", - { "repo": "omnidotdev/typespec-drizzle" } - ], - "commit": false, - "access": "public", - "baseBranch": "master", - "updateInternalDependencies": "patch", - "ignore": [] + "$schema": "https://unpkg.com/@changesets/config@3.1.1/schema.json", + "changelog": [ + "@changesets/changelog-github", + { "repo": "omnidotdev/typespec-drizzle" } + ], + "commit": false, + "access": "public", + "baseBranch": "master", + "updateInternalDependencies": "patch", + "ignore": [] } diff --git a/package.json b/package.json index 9262c4c..6148961 100644 --- a/package.json +++ b/package.json @@ -1,58 +1,58 @@ { - "name": "@omnidotdev/typespec-drizzle", - "description": "TypeSpec Drizzle schema emitter", - "version": "0.0.0", - "license": "MIT", - "type": "module", - "main": "build/src/index.js", - "exports": { - ".": { - "types": "./build/src/index.d.ts", - "default": "./build/src/index.js" - } - }, - "homepage": "https://github.com/omnidotdev/typespec-drizzle#readme", - "repository": { - "type": "git", - "url": "git+https://github.com/omnidotdev/typespec-drizzle.git" - }, - "bugs": { - "url": "https://github.com/omnidotdev/typespec-drizzle/issues" - }, - "files": [ - "build/" - ], - "keywords": [ - "typespec", - "drizzle", - "emitter", - "tsp", - "codegen" - ], - "scripts": { - "build": "tsc", - "build:watch": "tsc --watch", - "format": "biome format --write .", - "lint": "biome check .", - "lint:fix": "biome check --write .", - "knip": "knip-bun", - "test": "bun test", - "release": "bun run build && changeset publish", - "prebuild": "rm -rf build", - "prepare": "husky" - }, - "peerDependencies": { - "@typespec/compiler": "^1.6.0" - }, - "devDependencies": { - "@biomejs/biome": "2.3.6", - "@changesets/changelog-github": "^0.5.1", - "@changesets/cli": "^2.29.7", - "@types/bun": "^1.3.2", - "@types/node": "^24.10.1", - "@typespec/compiler": "^1.6.0", - "husky": "^9.1.7", - "knip": "^5.69.1", - "typescript": "5.9.3" - } + "name": "@omnidotdev/typespec-drizzle", + "description": "TypeSpec Drizzle schema emitter", + "version": "0.0.0", + "license": "MIT", + "type": "module", + "main": "build/src/index.js", + "exports": { + ".": { + "types": "./build/src/index.d.ts", + "default": "./build/src/index.js" + } + }, + "homepage": "https://github.com/omnidotdev/typespec-drizzle#readme", + "repository": { + "type": "git", + "url": "git+https://github.com/omnidotdev/typespec-drizzle.git" + }, + "bugs": { + "url": "https://github.com/omnidotdev/typespec-drizzle/issues" + }, + "files": [ + "build/" + ], + "keywords": [ + "typespec", + "drizzle", + "emitter", + "tsp", + "codegen" + ], + "scripts": { + "build": "tsc", + "build:watch": "tsc --watch", + "format": "biome format --write .", + "lint": "biome check .", + "lint:fix": "biome check --write .", + "knip": "knip-bun", + "test": "bun test", + "release": "bun run build && changeset publish", + "prebuild": "rm -rf build", + "prepare": "husky" + }, + "peerDependencies": { + "@typespec/compiler": "^1.6.0" + }, + "devDependencies": { + "@biomejs/biome": "2.3.6", + "@changesets/changelog-github": "^0.5.1", + "@changesets/cli": "^2.29.7", + "@types/bun": "^1.3.2", + "@types/node": "^24.10.1", + "@typespec/compiler": "^1.6.0", + "husky": "^9.1.7", + "knip": "^5.69.1", + "typescript": "5.9.3" + } } diff --git a/src/lib.ts b/src/lib.ts index 9e17265..d0e8e8c 100644 --- a/src/lib.ts +++ b/src/lib.ts @@ -4,6 +4,6 @@ import { createTypeSpecLibrary } from "@typespec/compiler"; * Initiate the TypeSpec library. */ export const $lib = createTypeSpecLibrary({ - name: "typespec-drizzle", - diagnostics: {}, + name: "typespec-drizzle", + diagnostics: {}, }); diff --git a/src/test/__fixtures__/drizzleEmitter.tester.ts b/src/test/__fixtures__/drizzleEmitter.tester.ts index db24385..3724273 100644 --- a/src/test/__fixtures__/drizzleEmitter.tester.ts +++ b/src/test/__fixtures__/drizzleEmitter.tester.ts @@ -7,8 +7,8 @@ import { createTester } from "@typespec/compiler/testing"; * @see https://typespec.io/docs/extending-typespec/testing/#tester-api */ export const DrizzleEmitterTester = createTester( - resolvePath(fileURLToPath(import.meta.url), "../../../../"), - { - libraries: ["@omnidotdev/typespec-drizzle"], - }, + resolvePath(fileURLToPath(import.meta.url), "../../../../"), + { + libraries: ["@omnidotdev/typespec-drizzle"], + }, ).importLibraries(); From a5f8d2757d882c9a1b502152fea7f65ddf6a6908 Mon Sep 17 00:00:00 2001 From: Brian Cooper Date: Mon, 17 Nov 2025 22:18:48 -0800 Subject: [PATCH 15/26] feature(tilt): add install resource --- Tiltfile | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Tiltfile b/Tiltfile index eb6db41..253e229 100644 --- a/Tiltfile +++ b/Tiltfile @@ -1,6 +1,11 @@ load("ext://dotenv", "dotenv") dotenv() +local_resource( + "install", + "bun install", +) + local_resource( "build", "bun run build", From 7b41c5c548dae807d107de61d731a2f1d35d800b Mon Sep 17 00:00:00 2001 From: Brian Cooper Date: Mon, 17 Nov 2025 22:20:56 -0800 Subject: [PATCH 16/26] build(scripts): add `pretest` build script --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index 6148961..1568fa4 100644 --- a/package.json +++ b/package.json @@ -39,6 +39,7 @@ "test": "bun test", "release": "bun run build && changeset publish", "prebuild": "rm -rf build", + "pretest": "bun run build", "prepare": "husky" }, "peerDependencies": { From 48c1a8e3a4815f89e1080e13d97e8c906718a22d Mon Sep 17 00:00:00 2001 From: Brian Cooper Date: Mon, 17 Nov 2025 22:22:29 -0800 Subject: [PATCH 17/26] ci(publish): fix scripts --- .github/workflows/publish.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index b9ede46..435d499 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -31,6 +31,6 @@ jobs: - name: Install dependencies run: bun i - name: Build package - run: bun run build --filter @omnidotdev/template-typescript-library + run: bun run build - name: Publish package - run: bunx pkg-pr-new publish './packages/template-typescript-library' + run: bunx pkg-pr-new publish From ede93032eef4e6d6f7d38d6005de85dda6b91f60 Mon Sep 17 00:00:00 2001 From: Brian Cooper Date: Mon, 17 Nov 2025 22:27:14 -0800 Subject: [PATCH 18/26] ci(test): add build step --- .github/workflows/test.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index b8230a8..e4e196c 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -24,5 +24,8 @@ jobs: # TODO replace below with commented job above, blocked by Bun not yet supporting a JSON coverage reporter for the action to consume nor generate (similar: https://github.com/oven-sh/bun/issues/4099) - name: Install dependencies run: bun install + # NB: build is necessary for test fixtures to resolve paths properly + - name: Build project + run: bun run build - name: Run unit tests run: bun test From 4eaabd6c78154ebb5e32167b64e07224227b9ffe Mon Sep 17 00:00:00 2001 From: Brian Cooper Date: Mon, 17 Nov 2025 22:29:47 -0800 Subject: [PATCH 19/26] chore: format --- .changeset/config.json | 20 +-- biome.jsonc | 120 ++++++++++++------ knip.json | 12 +- package.json | 114 ++++++++--------- renovate.json | 4 +- src/emitter.ts | 12 +- src/lib.ts | 4 +- .../__fixtures__/drizzleEmitter.tester.ts | 8 +- src/test/hello.test.ts | 16 +-- tsconfig.json | 32 ++--- 10 files changed, 190 insertions(+), 152 deletions(-) diff --git a/.changeset/config.json b/.changeset/config.json index 11d1a82..a7469d4 100644 --- a/.changeset/config.json +++ b/.changeset/config.json @@ -1,12 +1,12 @@ { - "$schema": "https://unpkg.com/@changesets/config@3.1.1/schema.json", - "changelog": [ - "@changesets/changelog-github", - { "repo": "omnidotdev/typespec-drizzle" } - ], - "commit": false, - "access": "public", - "baseBranch": "master", - "updateInternalDependencies": "patch", - "ignore": [] + "$schema": "https://unpkg.com/@changesets/config@3.1.1/schema.json", + "changelog": [ + "@changesets/changelog-github", + { "repo": "omnidotdev/typespec-drizzle" } + ], + "commit": false, + "access": "public", + "baseBranch": "master", + "updateInternalDependencies": "patch", + "ignore": [] } diff --git a/biome.jsonc b/biome.jsonc index b428368..77022fa 100644 --- a/biome.jsonc +++ b/biome.jsonc @@ -1,43 +1,81 @@ +// see https://biomejs.dev/reference/configuration { - "$schema": "https://biomejs.dev/schemas/2.3.6/schema.json", - "files": { - // NB: `node_modules` excluded by default - "includes": ["**", "!**/build"] - }, - "formatter": { - "indentStyle": "tab" - }, - "javascript": { - "formatter": { - "jsxQuoteStyle": "double" - } - }, - "linter": { - "enabled": true, - "rules": { - "a11y": { - "useKeyWithClickEvents": "off" - }, - "correctness": { - "useExhaustiveDependencies": "warn" - }, - "style": { - "noInferrableTypes": "error", - "noParameterAssign": "error", - "noUnusedTemplateLiteral": "error", - "noUselessElse": "error", - "useAsConstAssertion": "error", - "useConst": "error", - "useDefaultParameterLast": "error", - "useEnumInitializers": "error", - "useNumberNamespace": "error", - "useSelfClosingElements": "error", - "useSingleVarDeclarator": "error", - "useTemplate": "error" - }, - "suspicious": { - "noExplicitAny": "warn" - } - } - } + "$schema": "https://biomejs.dev/schemas/2.3.6/schema.json", + "assist": { + "actions": { + "source": { + "organizeImports": { + "options": { + "groups": [ + { "type": false, "source": [":BUN:", ":NODE:"] }, + ":BLANK_LINE:", + { + "type": false, + // TODO look into this for TS `baseUrl` (https://github.com/omnidotdev/golden/pull/1#discussion_r2487186008) + "source": [":PACKAGE:", ":PACKAGE_WITH_PROTOCOL:"] + }, + ":BLANK_LINE:", + { "type": false, "source": ["**"] }, + ":BLANK_LINE:", + { "type": true } + ] + } + } + } + } + }, + "files": { + "includes": [ + "**", + "!!**/*.gen.*", + "!!**/.cache", + "!!**/build", + "!!**/bun.lock", + "!!**/dist", + "!!**/generated", + "!!**/node_modules", + "!!**/out", + "!!**/public", + "!!**/vendor", + "!!**/certificates" + ] + }, + "formatter": { + "indentStyle": "space", + "indentWidth": 2, + "lineWidth": 80 + }, + "linter": { + "rules": { + "correctness": { + "noUnusedImports": { + "fix": "safe", + "level": "error" + } + }, + "nursery": { + "useSortedClasses": { + "fix": "safe", + "level": "error", + "options": { + "attributes": ["class", "className"], + "functions": ["cn", "clsx", "classnames", "cva", "tv"] + } + } + }, + "style": { + "useImportType": { + "level": "error", + "options": { "style": "separatedType" } + } + }, + "suspicious": { + "noArrayIndexKey": "warn", + "noConsole": { + "level": "error", + "options": { "allow": ["error", "warn"] } + } + } + } + } } diff --git a/knip.json b/knip.json index 6fa8f4c..fd36d0a 100644 --- a/knip.json +++ b/knip.json @@ -1,8 +1,8 @@ { - "$schema": "https://unpkg.com/knip@5/schema.json", - "ignore": ["**/*.test.ts", "**/*.spec.ts", ".github/workflows/*.yml"], - "ignoreExportsUsedInFile": { - "interface": true, - "type": true - } + "$schema": "https://unpkg.com/knip@5/schema.json", + "ignore": ["**/*.test.ts", "**/*.spec.ts", ".github/workflows/*.yml"], + "ignoreExportsUsedInFile": { + "interface": true, + "type": true + } } diff --git a/package.json b/package.json index 1568fa4..cbb8c72 100644 --- a/package.json +++ b/package.json @@ -1,59 +1,59 @@ { - "name": "@omnidotdev/typespec-drizzle", - "description": "TypeSpec Drizzle schema emitter", - "version": "0.0.0", - "license": "MIT", - "type": "module", - "main": "build/src/index.js", - "exports": { - ".": { - "types": "./build/src/index.d.ts", - "default": "./build/src/index.js" - } - }, - "homepage": "https://github.com/omnidotdev/typespec-drizzle#readme", - "repository": { - "type": "git", - "url": "git+https://github.com/omnidotdev/typespec-drizzle.git" - }, - "bugs": { - "url": "https://github.com/omnidotdev/typespec-drizzle/issues" - }, - "files": [ - "build/" - ], - "keywords": [ - "typespec", - "drizzle", - "emitter", - "tsp", - "codegen" - ], - "scripts": { - "build": "tsc", - "build:watch": "tsc --watch", - "format": "biome format --write .", - "lint": "biome check .", - "lint:fix": "biome check --write .", - "knip": "knip-bun", - "test": "bun test", - "release": "bun run build && changeset publish", - "prebuild": "rm -rf build", - "pretest": "bun run build", - "prepare": "husky" - }, - "peerDependencies": { - "@typespec/compiler": "^1.6.0" - }, - "devDependencies": { - "@biomejs/biome": "2.3.6", - "@changesets/changelog-github": "^0.5.1", - "@changesets/cli": "^2.29.7", - "@types/bun": "^1.3.2", - "@types/node": "^24.10.1", - "@typespec/compiler": "^1.6.0", - "husky": "^9.1.7", - "knip": "^5.69.1", - "typescript": "5.9.3" - } + "name": "@omnidotdev/typespec-drizzle", + "description": "TypeSpec Drizzle schema emitter", + "version": "0.0.0", + "license": "MIT", + "type": "module", + "main": "build/src/index.js", + "exports": { + ".": { + "types": "./build/src/index.d.ts", + "default": "./build/src/index.js" + } + }, + "homepage": "https://github.com/omnidotdev/typespec-drizzle#readme", + "repository": { + "type": "git", + "url": "git+https://github.com/omnidotdev/typespec-drizzle.git" + }, + "bugs": { + "url": "https://github.com/omnidotdev/typespec-drizzle/issues" + }, + "files": [ + "build/" + ], + "keywords": [ + "typespec", + "drizzle", + "emitter", + "tsp", + "codegen" + ], + "scripts": { + "build": "tsc", + "build:watch": "tsc --watch", + "format": "biome format --write .", + "lint": "biome check .", + "lint:fix": "biome check --write .", + "knip": "knip-bun", + "test": "bun test", + "release": "bun run build && changeset publish", + "prebuild": "rm -rf build", + "pretest": "bun run build", + "prepare": "husky" + }, + "peerDependencies": { + "@typespec/compiler": "^1.6.0" + }, + "devDependencies": { + "@biomejs/biome": "2.3.6", + "@changesets/changelog-github": "^0.5.1", + "@changesets/cli": "^2.29.7", + "@types/bun": "^1.3.2", + "@types/node": "^24.10.1", + "@typespec/compiler": "^1.6.0", + "husky": "^9.1.7", + "knip": "^5.69.1", + "typescript": "5.9.3" + } } diff --git a/renovate.json b/renovate.json index f20d4d1..80bde9f 100644 --- a/renovate.json +++ b/renovate.json @@ -1,4 +1,4 @@ { - "$schema": "https://docs.renovatebot.com/renovate-schema.json", - "extends": ["config:recommended", "customManagers:biomeVersions"] + "$schema": "https://docs.renovatebot.com/renovate-schema.json", + "extends": ["config:recommended", "customManagers:biomeVersions"] } diff --git a/src/emitter.ts b/src/emitter.ts index f444903..d3f590a 100644 --- a/src/emitter.ts +++ b/src/emitter.ts @@ -7,11 +7,11 @@ import { emitFile, resolvePath } from "@typespec/compiler"; * @see https://typespec.io/docs/extending-typespec/emitters-basics/#onemit */ export const $onEmit = async (ctx: EmitContext) => { - // exit if `noEmit` is enabled - if (ctx.program.compilerOptions.noEmit) return; + // exit if `noEmit` is enabled + if (ctx.program.compilerOptions.noEmit) return; - await emitFile(ctx.program, { - path: resolvePath(ctx.emitterOutputDir, "output.txt"), - content: "Hello world\n", - }); + await emitFile(ctx.program, { + path: resolvePath(ctx.emitterOutputDir, "output.txt"), + content: "Hello world\n", + }); }; diff --git a/src/lib.ts b/src/lib.ts index d0e8e8c..9e17265 100644 --- a/src/lib.ts +++ b/src/lib.ts @@ -4,6 +4,6 @@ import { createTypeSpecLibrary } from "@typespec/compiler"; * Initiate the TypeSpec library. */ export const $lib = createTypeSpecLibrary({ - name: "typespec-drizzle", - diagnostics: {}, + name: "typespec-drizzle", + diagnostics: {}, }); diff --git a/src/test/__fixtures__/drizzleEmitter.tester.ts b/src/test/__fixtures__/drizzleEmitter.tester.ts index 3724273..db24385 100644 --- a/src/test/__fixtures__/drizzleEmitter.tester.ts +++ b/src/test/__fixtures__/drizzleEmitter.tester.ts @@ -7,8 +7,8 @@ import { createTester } from "@typespec/compiler/testing"; * @see https://typespec.io/docs/extending-typespec/testing/#tester-api */ export const DrizzleEmitterTester = createTester( - resolvePath(fileURLToPath(import.meta.url), "../../../../"), - { - libraries: ["@omnidotdev/typespec-drizzle"], - }, + resolvePath(fileURLToPath(import.meta.url), "../../../../"), + { + libraries: ["@omnidotdev/typespec-drizzle"], + }, ).importLibraries(); diff --git a/src/test/hello.test.ts b/src/test/hello.test.ts index 1fa1802..16f4275 100644 --- a/src/test/hello.test.ts +++ b/src/test/hello.test.ts @@ -3,8 +3,8 @@ import { describe, expect, it } from "bun:test"; import { DrizzleEmitterTester } from "./__fixtures__/drizzleEmitter.tester.js"; describe("TypeSpec Drizzle emitter", () => { - it("compiles TypeSpec code without errors", async () => { - await DrizzleEmitterTester.compile(` + it("compiles TypeSpec code without errors", async () => { + await DrizzleEmitterTester.compile(` model User { id: string; name: string; @@ -13,11 +13,11 @@ describe("TypeSpec Drizzle emitter", () => { op getUser(id: string): User; `); - // NB: assertion is implicit, if above works, the test passes - }); + // NB: assertion is implicit, if above works, the test passes + }); - it("diagnoses TypeSpec code without errors", async () => { - const diagnostics = await DrizzleEmitterTester.diagnose(` + it("diagnoses TypeSpec code without errors", async () => { + const diagnostics = await DrizzleEmitterTester.diagnose(` model User { id: string; name: string; @@ -26,6 +26,6 @@ describe("TypeSpec Drizzle emitter", () => { op getUser(id: string): User; `); - expect(diagnostics).toHaveLength(0); - }); + expect(diagnostics).toHaveLength(0); + }); }); diff --git a/tsconfig.json b/tsconfig.json index 032ba24..b9db603 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,18 +1,18 @@ { - "compilerOptions": { - "target": "es2022", - "useDefineForClassFields": true, - "module": "nodenext", - "moduleResolution": "nodenext", - "lib": ["es2022"], - "rootDir": ".", - "outDir": "build", - "baseUrl": "src", - "sourceMap": true, - "declaration": true, - "strict": true, - "skipLibCheck": true - }, - "include": ["src"], - "exclude": ["src/test"] + "compilerOptions": { + "target": "es2022", + "useDefineForClassFields": true, + "module": "nodenext", + "moduleResolution": "nodenext", + "lib": ["es2022"], + "rootDir": ".", + "outDir": "build", + "baseUrl": "src", + "sourceMap": true, + "declaration": true, + "strict": true, + "skipLibCheck": true + }, + "include": ["src"], + "exclude": ["src/test"] } From e4483eb09cc9c506a26a8a8db10dcb07c00e51cd Mon Sep 17 00:00:00 2001 From: Brian Cooper Date: Mon, 17 Nov 2025 22:51:53 -0800 Subject: [PATCH 20/26] docs(readme): add logo --- README.md | 2 +- assets/logo.png | Bin 0 -> 15237 bytes 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 assets/logo.png diff --git a/README.md b/README.md index 67c1e35..8103f01 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # TypeSpec Drizzle Emitter
- + [Join Omni community on Discord](https://discord.gg/omnidotdev) diff --git a/assets/logo.png b/assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..7ef9fa3d5b3d923191696a32c4a6882f48be7303 GIT binary patch literal 15237 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 K(w`(v{r(4B;RM Date: Mon, 17 Nov 2025 22:52:19 -0800 Subject: [PATCH 21/26] docs(readme): reduce logo size --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8103f01..9b0d09a 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # TypeSpec Drizzle Emitter
- + [Join Omni community on Discord](https://discord.gg/omnidotdev) From 61df87dd20acb4877b2594480119df4236bf2645 Mon Sep 17 00:00:00 2001 From: Brian Cooper Date: Mon, 17 Nov 2025 22:52:41 -0800 Subject: [PATCH 22/26] docs(readme): reduce logo size --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9b0d09a..8384380 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # TypeSpec Drizzle Emitter
- + [Join Omni community on Discord](https://discord.gg/omnidotdev) From 9fb31d1a15ab668995b02a7c3ab0e91300c3e47c Mon Sep 17 00:00:00 2001 From: Brian Cooper <20056195+coopbri@users.noreply.github.com> Date: Mon, 17 Nov 2025 22:54:28 -0800 Subject: [PATCH 23/26] docs(readme): update project status warning --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 8384380..a58559d 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,8 @@ A TypeSpec emitter that generates [Drizzle ORM](https://orm.drizzle.team) schema definitions and types from TypeSpec specifications. -> [!IMPORTANT] > **Project Status:** ๐Ÿšง This project is **brand new**. +> [!IMPORTANT] +> **Project Status:** ๐Ÿšง This project is **brand new**. Use at your own risk. ## Overview From b1f328068066278d05aa6528f2e7ae72f4e28089 Mon Sep 17 00:00:00 2001 From: Brian Cooper Date: Mon, 17 Nov 2025 22:55:14 -0800 Subject: [PATCH 24/26] docs(readme): add TypeSpec link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a58559d..0b2ccae 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@
-A TypeSpec emitter that generates [Drizzle ORM](https://orm.drizzle.team) schema definitions and types from TypeSpec specifications. +A [TypeSpec](https://typespec.io) emitter that generates [Drizzle ORM](https://orm.drizzle.team) schema definitions and types from TypeSpec specifications. > [!IMPORTANT] > **Project Status:** ๐Ÿšง This project is **brand new**. Use at your own risk. From e5b6046e8ddf2a549613c428e8f02239df496f9a Mon Sep 17 00:00:00 2001 From: Brian Cooper Date: Mon, 17 Nov 2025 22:59:19 -0800 Subject: [PATCH 25/26] docs(readme): add TSP emitter docs link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0b2ccae..bd0cc04 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@
-A [TypeSpec](https://typespec.io) emitter that generates [Drizzle ORM](https://orm.drizzle.team) schema definitions and types from TypeSpec specifications. +A [TypeSpec](https://typespec.io) emitter that generates [Drizzle ORM](https://orm.drizzle.team) schema definitions and types from TypeSpec specifications. Learn about TypeSpec emitters [here](https://typespec.io/docs/extending-typespec/emitters-basics). > [!IMPORTANT] > **Project Status:** ๐Ÿšง This project is **brand new**. Use at your own risk. From df06791ccb7a185cbc4cdceafa951f1d5cb643b3 Mon Sep 17 00:00:00 2001 From: Brian Cooper <20056195+coopbri@users.noreply.github.com> Date: Tue, 18 Nov 2025 00:51:52 -0800 Subject: [PATCH 26/26] docs(readme,installation): add development flag --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index bd0cc04..503dd4e 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,7 @@ This emitter allows you to define your database schema using TypeSpec's type-saf ## Installation ```sh -bun add @omnidotdev/typespec-drizzle +bun add -D @omnidotdev/typespec-drizzle ``` ## Usage