diff --git a/cspell.yaml b/cspell.yaml index 4a4bdff7af3..b1b516b3983 100644 --- a/cspell.yaml +++ b/cspell.yaml @@ -93,11 +93,13 @@ words: - ptvsd - pylint - pylintrc + - pyodide - pygen - qnas - ragrs - rcfile - recommonmark + - regen - reqs - retrys - roundtrippable @@ -123,6 +125,7 @@ words: - tfft - tikka - toctree + - tspd - undoc - venv - venvtools diff --git a/packages/typespec-python/README.md b/packages/typespec-python/README.md index 0fe16a2bc2b..596de7a59a3 100644 --- a/packages/typespec-python/README.md +++ b/packages/typespec-python/README.md @@ -1,118 +1,139 @@ -# TypeSpec Python Client Emitter +# @azure-tools/typespec-python -## Getting started +TypeSpec emitter for Python SDKs -### Initialize TypeSpec Project +## Install -Follow [TypeSpec Getting Started](https://typespec.io/docs) to initialize your TypeSpec project. +```bash +npm install @azure-tools/typespec-python +``` + +## Usage -Make sure `npx tsp compile .` runs correctly. +1. Via the command line -### Add typespec-python to your project +```bash +tsp compile . --emit=@azure-tools/typespec-python +``` -Include @azure-tools/typespec-python dependencies in `package.json`: +2. Via the config -```diff - "dependencies": { -+ "@azure-tools/typespec-python": "latest" - }, +```yaml +emit: + - "@azure-tools/typespec-python" ``` -Run `npm install` to install the dependency. +The config can be extended with options as follows: -### Generate a Python client library +```yaml +emit: + - "@azure-tools/typespec-python" +options: + "@azure-tools/typespec-python": + option: value +``` -You can either specify typespec-python on the commandline or through tspconfig.yaml. +## Emitter options -#### Generate with `--emit` command +### `emitter-output-dir` -Run command `npx tsp compile --emit @azure-tools/typespec-python ` +**Type:** `absolutePath` -e.g. +Defines the emitter output directory. Defaults to `{output-dir}/@azure-tools/typespec-python` +See [Configuring output directory for more info](https://typespec.io/docs/handbook/configuration/configuration/#configuring-output-directory) -```cmd -npx tsp compile main.tsp --emit @azure-tools/typespec-python -``` +### `examples-dir` -or +**Type:** `string` -```cmd -npx tsp compile client.tsp --emit @azure-tools/typespec-python -``` +Specifies the directory where the emitter will look for example files. If the flag isn’t set, the emitter defaults to using an `examples` directory located at the project root. -#### Generate with tspconfig.yaml +### `namespace` -Add the following configuration in tspconfig.yaml: +**Type:** `string` -```diff -emit: - - "@azure-tools/typespec-python" -options: - "@azure-tools/typespec-python": -+ package-dir: "azure-contoso" -+ package-name: "azure-contoso" -``` +Specifies the namespace you want to override for namespaces set in the spec. With this config, all namespace for the spec types will default to it. -Run the command to generate your library: +### `flavor` -```cmd -npx tsp compile main.tsp -``` +**Type:** `string` -or +The flavor of the SDK. -```cmd -npx tsp compile client.tsp -``` +### `models-mode` -## Configure the generated library +**Type:** `"dpg" | "none"` -You can further configure the generated client library using the emitter options provided through @azure-tools/typespec-python. +What kind of models to generate. If you pass in `none`, we won't generate models. `dpg` models are the default models we generate. -You can set options in the command line directly via `--option @azure-tools/typespec-python.=XXX`, e.g. `--option @azure-tools/typespec-python.package-name="azure-contoso"` +### `generate-sample` -or +**Type:** `boolean` -Modify `tspconfig.yaml` in the TypeSpec project to add emitter options under options/@azure-tools/typespec-python. +Whether to generate sample files, for basic samples of your generated sdks. Defaults to `false`. -```diff -emit: - - "@azure-tools/typespec-python" -options: - "@azure-tools/typespec-python": -+ package-dir: "{package-dir}" -+ package-name: "azure-contoso" -``` +### `generate-test` -### Supported emitter options +**Type:** `boolean` -Common emitter configuration example: +Whether to generate test files, for basic testing of your generated sdks. Defaults to `false`. -```yaml -emit: - - "@azure-tools/typespec-python" -options: - "@azure-tools/typespec-python": - package-dir: "{package-dir}" - package-name: "azure-contoso" -``` +### `api-version` + +**Type:** `string` + +Use this flag if you would like to generate the sdk only for a specific version. Default value is the latest version. Also accepts values `latest` and `all`. + +### `license` + +**Type:** `object` + +License information for the generated client code. + +### `package-version` + +**Type:** `string` + +The version of the package. + +### `package-name` + +**Type:** `string` + +The name of the package. + +### `generate-packaging-files` + +**Type:** `boolean` + +Whether to generate packaging files. Packaging files refer to the `setup.py`, `README`, and other files that are needed to package your code. + +### `packaging-files-dir` + +**Type:** `string` + +If you are using a custom packaging files directory, you can specify it here. We won't generate with the default packaging files we have. + +### `packaging-files-config` + +**Type:** `object` + +If you are using a custom packaging files directory, and have additional configuration parameters you want to pass in during generation, you can specify it here. Only applicable if `packaging-files-dir` is set. + +### `package-pprint-name` + +**Type:** `string` + +The name of the package to be used in pretty-printing. Will be the name of the package in `README` and pprinting of `setup.py`. + +### `head-as-boolean` + +**Type:** `boolean` + +Whether to return responses from HEAD requests as boolean. Defaults to `true`. + +### `use-pyodide` + +**Type:** `boolean` -|Option|Type|Description| -|-|-|-| -|`package-version`|string|Specify the package version. Default version: `1.0.0b1`.| -|`package-name`|string|Specify the package name.| -|`package-dir`|string|Specify the output directory for the package.| -|`generate-packaging-files`|boolean|Indicate if packaging files, such as setup.py, should be generated.| -|`package-pprint-name`|string|Specify the pretty print name for the package.| -|`flavor`|string|Represents the type of SDK that will be generated. By default, there will be no branding in the generated client library. Specify `"azure"` to generate an SDK following Azure guidelines.| -|`company-name`|string|Specify the company name to be inserted into licensing data. For `"azure"` flavor, the default value inserted is `Microsoft`.| - -**Advanced emitter options** - -|Option|Type|Description| -|-|-|-| -|`head-as-boolean`|boolean|Generate head calls to return a boolean. Default: `true`.| -|`packaging-files-dir`|string|Pass in the path to a custom directory with SDK packaging files.| -|`packaging-files-config`|object|Specify configuration options that will be passed directly into the packaging files specified by the `packaging-files-dir` option.| -|`tracing`|boolean|Only available for the `"azure"` flavor of SDKs, provide tracing support in the generated client library. Default: `true`.| -|`debug`|boolean|Enable debugging.| +Whether to generate using `pyodide` instead of `python`. If there is no python installed on your device, we will default to using pyodide to generate the code. diff --git a/packages/typespec-python/package.json b/packages/typespec-python/package.json index 9191eb6020c..50578da99cb 100644 --- a/packages/typespec-python/package.json +++ b/packages/typespec-python/package.json @@ -19,8 +19,10 @@ "type": "module", "main": "dist/src/index.js", "exports": { - ".": "./dist/src/index.js", - "./testing": "./dist/src/testing/index.js" + ".": { + "types": "./dist/src/index.d.ts", + "default": "./dist/src/index.js" + } }, "tspMain": "dist/src/index.js", "engines": { @@ -36,7 +38,8 @@ "lint:fix": "eslint . --fix --ext .ts", "format": "npx prettier **/*.ts --write && tsx ./scripts/eng/format.ts", "regenerate": "tsx ./scripts/eng/regenerate.ts", - "test": "tsx ./scripts/eng/run-tests.ts" + "test": "tsx ./scripts/eng/run-tests.ts", + "regen-docs": "npm run build && tspd doc . --enable-experimental --output-dir ./website/src/content/docs/docs/emitters/clients/typespec-python/reference --skip-js" }, "files": [ "dist/**", @@ -76,6 +79,7 @@ "@typespec/events": "~0.70.0", "@typespec/sse": "~0.70.0", "@typespec/streams": "~0.70.0", + "@typespec/tspd": "~0.70.0", "@typespec/xml": "~0.70.0", "@azure-tools/typespec-azure-resource-manager": "~0.56.0", "@azure-tools/typespec-azure-core": "~0.56.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1a2f9e24a9a..104e1cf1841 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -157,6 +157,9 @@ importers: '@typespec/streams': specifier: ~0.70.0 version: 0.70.0(@typespec/compiler@1.0.0(@types/node@22.13.17)) + '@typespec/tspd': + specifier: ~0.70.0 + version: 0.70.0(@types/node@22.13.17)(typescript@5.8.2) '@typespec/versioning': specifier: ~0.70.0 version: 0.70.0(@typespec/compiler@1.0.0(@types/node@22.13.17)) @@ -193,6 +196,12 @@ packages: '@actions/http-client@2.2.3': resolution: {integrity: sha512-mx8hyJi/hjFvbPokCg4uRd4ZX78t+YyRPtnKWwIl+RzNaVuFpQHfmlGVfsKEJN8LwTCvL+DfVgAM04XaHkm6bA==} + '@alloy-js/core@0.15.0': + resolution: {integrity: sha512-GfQZqaUqGBGFeFJbA9H7Iu+IJQiEQ2B3Hjh5C1N2YclEg5vtjSAb/pdqJ5x2BTqOq2iUCpFOJ44pJy5mhS116Q==} + + '@alloy-js/typescript@0.15.0': + resolution: {integrity: sha512-dALRXFY6h3i3i4Xv6ym+ejmgerxP6HcCECAhTC7CZJ4zNY9fHDhjqfxScsEaFrbalpib4JMX8wceO47l4CIFTw==} + '@autorest/system-requirements@1.0.2': resolution: {integrity: sha512-T21naRb6JDdjjn2s/zwr9iCIv/9jviL/PRtiWAhi+3UA2WKH2wrId2VqJa4uVD7iEV8BLkuGgFmMkaMBG26hFw==} engines: {node: '>=12.0.0'} @@ -366,6 +375,10 @@ packages: engines: {node: '>=20.0.0'} hasBin: true + '@colors/colors@1.5.0': + resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} + engines: {node: '>=0.1.90'} + '@colors/colors@1.6.0': resolution: {integrity: sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==} engines: {node: '>=0.1.90'} @@ -887,6 +900,9 @@ packages: resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} engines: {node: '>=14'} + '@gerrit0/mini-shiki@3.4.2': + resolution: {integrity: sha512-3jXo5bNjvvimvdbIhKGfFxSnKCX+MA8wzHv55ptzk/cx8wOzT+BRcYgj8aFN3yTiTs+zvQQiaZFr7Jce1ZG3fw==} + '@humanwhocodes/module-importer@1.0.1': resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} @@ -1362,6 +1378,21 @@ packages: '@rtsao/scc@1.1.0': resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} + '@shikijs/engine-oniguruma@3.4.2': + resolution: {integrity: sha512-zcZKMnNndgRa3ORja6Iemsr3DrLtkX3cAF7lTJkdMB6v9alhlBsX9uNiCpqofNrXOvpA3h6lHcLJxgCIhVOU5Q==} + + '@shikijs/langs@3.4.2': + resolution: {integrity: sha512-H6azIAM+OXD98yztIfs/KH5H4PU39t+SREhmM8LaNXyUrqj2mx+zVkr8MWYqjceSjDw9I1jawm1WdFqU806rMA==} + + '@shikijs/themes@3.4.2': + resolution: {integrity: sha512-qAEuAQh+brd8Jyej2UDDf+b4V2g1Rm8aBIdvt32XhDPrHvDkEnpb7Kzc9hSuHUxz0Iuflmq7elaDuQAP9bHIhg==} + + '@shikijs/types@3.4.2': + resolution: {integrity: sha512-zHC1l7L+eQlDXLnxvM9R91Efh2V4+rN3oMVS2swCBssbj2U/FBwybD1eeLaq8yl/iwT+zih8iUbTBCgGZOYlVg==} + + '@shikijs/vscode-textmate@10.0.2': + resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} + '@sigstore/bundle@3.1.0': resolution: {integrity: sha512-Mm1E3/CmDDCz3nDhFKTuYdB47EdRFRQMOE/EAbiG1MJW77/w1b3P7Qx7JSrVJs8PfwOLOVcKQCHErIwCTyPbag==} engines: {node: ^18.17.0 || >=20.5.0} @@ -1410,6 +1441,9 @@ packages: '@types/fs-extra@11.0.4': resolution: {integrity: sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==} + '@types/hast@3.0.4': + resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} + '@types/istanbul-lib-coverage@2.0.6': resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} @@ -1437,6 +1471,9 @@ packages: '@types/triple-beam@1.3.5': resolution: {integrity: sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==} + '@types/unist@3.0.3': + resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + '@types/yargs-parser@21.0.3': resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} @@ -1646,6 +1683,11 @@ packages: peerDependencies: '@typespec/compiler': ^1.0.0 + '@typespec/tspd@0.70.0': + resolution: {integrity: sha512-kZXgoCljTK0gLmoKIeVgdrLdZ6DEN5RPMKsezOW/K1CTU/q7LvVvvQduhzv1tEnY1axkGCVolN41wRfgrrbvjw==} + engines: {node: '>=20.0.0'} + hasBin: true + '@typespec/versioning@0.69.0': resolution: {integrity: sha512-RqSd4Ee2O/6LdcQg2YfLgbsB6up0N8MGKFIxQ8PwE3z3l4lJju3chBMyBZxTxhaV293j7oUZr6+2CvfqwX2IWw==} engines: {node: '>=20.0.0'} @@ -1693,6 +1735,12 @@ packages: '@vitest/utils@3.0.8': resolution: {integrity: sha512-nkBC3aEhfX2PdtQI/QwAWp8qZWwzASsU4Npbcd5RdMPBSSLCpkZp52P3xku3s3uA0HIEhGvEcF8rNkBsz9dQ4Q==} + '@vue/reactivity@3.5.14': + resolution: {integrity: sha512-7cK1Hp343Fu/SUCCO52vCabjvsYu7ZkOqyYu7bXV9P2yyfjUMUXHZafEbq244sP7gf+EZEz+77QixBTuEqkQQw==} + + '@vue/shared@3.5.14': + resolution: {integrity: sha512-oXTwNxVfc9EtP1zzXAlSlgARLXNC84frFYkS0HHz0h3E4WZSP9sywqjqzGCP9Y34M8ipNmd380pVgmMuwELDyQ==} + abbrev@3.0.1: resolution: {integrity: sha512-AO2ac6pjRB3SJmGJo+v5/aK6Omggp6fsLrs6wN9bd35ulu4cCwaAU9+7ZhXjeqHVkaHThLuzH0nZr0YpCDhygg==} engines: {node: ^18.17.0 || >=20.5.0} @@ -1953,6 +2001,10 @@ packages: resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} engines: {node: '>=6'} + cli-table3@0.6.5: + resolution: {integrity: sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==} + engines: {node: 10.* || >= 12.*} + cli-width@4.1.0: resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==} engines: {node: '>= 12'} @@ -2259,6 +2311,10 @@ packages: entities@2.0.3: resolution: {integrity: sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ==} + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + env-paths@2.2.1: resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} engines: {node: '>=6'} @@ -3089,6 +3145,9 @@ packages: lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + linkify-it@5.0.0: + resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==} + locate-path@5.0.0: resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} engines: {node: '>=8'} @@ -3149,6 +3208,9 @@ packages: resolution: {integrity: sha512-CgeuL5uom6j/ZVrg7G/+1IXqRY8JXX4Hghfy5YE0EhoYQWvndP1kufu58cmZLNIDKnRhZrXfdS9urVWx98AipQ==} engines: {node: 20 || >=22} + lunr@2.3.9: + resolution: {integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==} + magic-string@0.30.17: resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} @@ -3160,6 +3222,10 @@ packages: resolution: {integrity: sha512-QMjGbFTP0blj97EeidG5hk/QhKQ3T4ICckQGLgz38QF7Vgbk6e6FTARN8KhKxyBbWn8R0HU+bnw8aSoFPD4qtQ==} engines: {node: ^18.17.0 || >=20.5.0} + markdown-it@14.1.0: + resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==} + hasBin: true + marked@15.0.7: resolution: {integrity: sha512-dgLIeKGLx5FwziAnsk4ONoGwHwGPJzselimvlVskE9XLN4Orv9u2VA3GWw/lYUqjfA0rUT/6fqKwfZJapP9BEg==} engines: {node: '>= 18'} @@ -3172,6 +3238,9 @@ packages: mdurl@1.0.1: resolution: {integrity: sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==} + mdurl@2.0.0: + resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} + media-typer@0.3.0: resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} engines: {node: '>= 0.6'} @@ -3642,6 +3711,10 @@ packages: resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} engines: {node: '>= 0.10'} + punycode.js@2.3.1: + resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==} + engines: {node: '>=6'} + punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} @@ -4197,6 +4270,19 @@ packages: typedarray@0.0.6: resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} + typedoc-plugin-markdown@4.6.3: + resolution: {integrity: sha512-86oODyM2zajXwLs4Wok2mwVEfCwCnp756QyhLGX2IfsdRYr1DXLCgJgnLndaMUjJD7FBhnLk2okbNE9PdLxYRw==} + engines: {node: '>= 18'} + peerDependencies: + typedoc: 0.28.x + + typedoc@0.28.4: + resolution: {integrity: sha512-xKvKpIywE1rnqqLgjkoq0F3wOqYaKO9nV6YkkSat6IxOWacUCc/7Es0hR3OPmkIqkPoEn7U3x+sYdG72rstZQA==} + engines: {node: '>= 18', pnpm: '>= 10'} + hasBin: true + peerDependencies: + typescript: 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x || 5.7.x || 5.8.x + typescript-eslint@8.26.0: resolution: {integrity: sha512-PtVz9nAnuNJuAVeUFvwztjuUgSnJInODAUx47VDwWPXzd5vismPOtPtt83tzNXyOjVQbPRp786D6WFW/M2koIA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -4228,6 +4314,9 @@ packages: engines: {node: '>=14.17'} hasBin: true + uc.micro@2.1.0: + resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==} + unbox-primitive@1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} @@ -4549,6 +4638,20 @@ snapshots: tunnel: 0.0.6 undici: 5.28.4 + '@alloy-js/core@0.15.0': + dependencies: + '@vue/reactivity': 3.5.14 + cli-table3: 0.6.5 + pathe: 2.0.3 + picocolors: 1.1.1 + prettier: 3.5.3 + + '@alloy-js/typescript@0.15.0': + dependencies: + '@alloy-js/core': 0.15.0 + change-case: 5.4.4 + pathe: 2.0.3 + '@autorest/system-requirements@1.0.2': dependencies: '@azure/logger': 1.1.4 @@ -4824,6 +4927,9 @@ snapshots: transitivePeerDependencies: - supports-color + '@colors/colors@1.5.0': + optional: true + '@colors/colors@1.6.0': {} '@cspell/cspell-bundled-dicts@7.3.9': @@ -5197,6 +5303,14 @@ snapshots: '@fastify/busboy@2.1.1': {} + '@gerrit0/mini-shiki@3.4.2': + dependencies: + '@shikijs/engine-oniguruma': 3.4.2 + '@shikijs/langs': 3.4.2 + '@shikijs/themes': 3.4.2 + '@shikijs/types': 3.4.2 + '@shikijs/vscode-textmate': 10.0.2 + '@humanwhocodes/module-importer@1.0.1': {} '@humanwhocodes/retry@0.3.0': {} @@ -5719,6 +5833,26 @@ snapshots: '@rtsao/scc@1.1.0': {} + '@shikijs/engine-oniguruma@3.4.2': + dependencies: + '@shikijs/types': 3.4.2 + '@shikijs/vscode-textmate': 10.0.2 + + '@shikijs/langs@3.4.2': + dependencies: + '@shikijs/types': 3.4.2 + + '@shikijs/themes@3.4.2': + dependencies: + '@shikijs/types': 3.4.2 + + '@shikijs/types@3.4.2': + dependencies: + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + + '@shikijs/vscode-textmate@10.0.2': {} + '@sigstore/bundle@3.1.0': dependencies: '@sigstore/protobuf-specs': 0.4.2 @@ -5771,6 +5905,10 @@ snapshots: '@types/jsonfile': 6.1.4 '@types/node': 22.13.17 + '@types/hast@3.0.4': + dependencies: + '@types/unist': 3.0.3 + '@types/istanbul-lib-coverage@2.0.6': {} '@types/js-yaml@4.0.9': {} @@ -5793,6 +5931,8 @@ snapshots: '@types/triple-beam@1.3.5': {} + '@types/unist@3.0.3': {} + '@types/yargs-parser@21.0.3': {} '@types/yargs@17.0.33': @@ -6099,6 +6239,21 @@ snapshots: dependencies: '@typespec/compiler': 1.0.0(@types/node@22.13.17) + '@typespec/tspd@0.70.0(@types/node@22.13.17)(typescript@5.8.2)': + dependencies: + '@alloy-js/core': 0.15.0 + '@alloy-js/typescript': 0.15.0 + '@typespec/compiler': 1.0.0(@types/node@22.13.17) + picocolors: 1.1.1 + prettier: 3.5.3 + typedoc: 0.28.4(typescript@5.8.2) + typedoc-plugin-markdown: 4.6.3(typedoc@0.28.4(typescript@5.8.2)) + yaml: 2.7.0 + yargs: 17.7.2 + transitivePeerDependencies: + - '@types/node' + - typescript + '@typespec/versioning@0.69.0(@typespec/compiler@1.0.0(@types/node@22.13.17))': dependencies: '@typespec/compiler': 1.0.0(@types/node@22.13.17) @@ -6151,6 +6306,12 @@ snapshots: loupe: 3.1.3 tinyrainbow: 2.0.0 + '@vue/reactivity@3.5.14': + dependencies: + '@vue/shared': 3.5.14 + + '@vue/shared@3.5.14': {} + abbrev@3.0.1: {} accepts@1.3.8: @@ -6449,6 +6610,12 @@ snapshots: cli-spinners@2.9.2: {} + cli-table3@0.6.5: + dependencies: + string-width: 4.2.3 + optionalDependencies: + '@colors/colors': 1.5.0 + cli-width@4.1.0: {} cliui@8.0.1: @@ -6805,6 +6972,8 @@ snapshots: entities@2.0.3: {} + entities@4.5.0: {} + env-paths@2.2.1: {} env-paths@3.0.0: {} @@ -7822,6 +7991,10 @@ snapshots: lines-and-columns@1.2.4: {} + linkify-it@5.0.0: + dependencies: + uc.micro: 2.1.0 + locate-path@5.0.0: dependencies: p-locate: 4.1.0 @@ -7876,6 +8049,8 @@ snapshots: lru-cache@11.0.1: {} + lunr@2.3.9: {} + magic-string@0.30.17: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 @@ -7900,12 +8075,23 @@ snapshots: transitivePeerDependencies: - supports-color + markdown-it@14.1.0: + dependencies: + argparse: 2.0.1 + entities: 4.5.0 + linkify-it: 5.0.0 + mdurl: 2.0.0 + punycode.js: 2.3.1 + uc.micro: 2.1.0 + marked@15.0.7: {} math-intrinsics@1.1.0: {} mdurl@1.0.1: {} + mdurl@2.0.0: {} + media-typer@0.3.0: {} media-typer@1.1.0: {} @@ -8377,6 +8563,8 @@ snapshots: forwarded: 0.2.0 ipaddr.js: 1.9.1 + punycode.js@2.3.1: {} + punycode@2.3.1: {} pure-rand@6.1.0: {} @@ -9028,6 +9216,19 @@ snapshots: typedarray@0.0.6: {} + typedoc-plugin-markdown@4.6.3(typedoc@0.28.4(typescript@5.8.2)): + dependencies: + typedoc: 0.28.4(typescript@5.8.2) + + typedoc@0.28.4(typescript@5.8.2): + dependencies: + '@gerrit0/mini-shiki': 3.4.2 + lunr: 2.3.9 + markdown-it: 14.1.0 + minimatch: 9.0.5 + typescript: 5.8.2 + yaml: 2.8.0 + typescript-eslint@8.26.0(eslint@9.11.1)(typescript@5.8.2): dependencies: '@typescript-eslint/eslint-plugin': 8.26.0(@typescript-eslint/parser@8.26.0(eslint@9.11.1)(typescript@5.8.2))(eslint@9.11.1)(typescript@5.8.2) @@ -9055,6 +9256,8 @@ snapshots: typescript@5.8.2: {} + uc.micro@2.1.0: {} + unbox-primitive@1.0.2: dependencies: call-bind: 1.0.7