Merge remote-tracking branch 'origin' into fix/typescript-process-null-values

This commit is contained in:
Vincent Biret 2024-08-13 10:40:11 -04:00
Родитель 635f79d583 4e9a9ab2ae
Коммит 540f39632b
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 32426322EDFFB7E3
21 изменённых файлов: 408 добавлений и 276 удалений

Просмотреть файл

@ -200,11 +200,16 @@ extends:
projects: '$(Build.SourcesDirectory)\kiota.sln'
arguments: "--configuration $(BuildConfiguration) --no-build"
- task: EsrpCodeSigning@3
- task: EsrpCodeSigning@5
displayName: "ESRP CodeSigning"
inputs:
ConnectedServiceName: "microsoftgraph ESRP CodeSign DLL and NuGet (AKV)"
FolderPath: src
ConnectedServiceName: 'Federated DevX ESRP Managed Identity Connection'
AppRegistrationClientId: '65035b7f-7357-4f29-bf25-c5ee5c3949f8'
AppRegistrationTenantId: 'cdc5aeea-15c5-4db6-b079-fcadd2505dc2'
AuthAKVName: 'akv-prod-eastus'
AuthCertName: 'ReferenceLibraryPrivateCert'
AuthSignCertName: 'ReferencePackagePublisherCertificate'
FolderPath: '$(Build.SourcesDirectory)\src'
signConfigType: inlineSignParams
UseMinimatch: true
Pattern: |
@ -249,6 +254,9 @@ extends:
}
]
SessionTimeout: 20
MaxConcurrency: 50
MaxRetryAttempts: 5
PendingAnalysisWaitTimeoutMinutes: 5
# Pack
- pwsh: dotnet pack $(Build.SourcesDirectory)/src/kiota/kiota.csproj -o $(Build.ArtifactStagingDirectory) --configuration $(BuildConfiguration) --no-build --include-symbols --include-source /p:SymbolPackageFormat=snupkg --version-suffix "$(versionSuffix)"
@ -267,10 +275,15 @@ extends:
condition: eq(variables['isPrerelease'], 'false')
displayName: "pack kiota builder"
- task: EsrpCodeSigning@3
- task: EsrpCodeSigning@5
displayName: "ESRP CodeSigning Nuget Packages"
inputs:
ConnectedServiceName: "microsoftgraph ESRP CodeSign DLL and NuGet (AKV)"
ConnectedServiceName: 'Federated DevX ESRP Managed Identity Connection'
AppRegistrationClientId: '65035b7f-7357-4f29-bf25-c5ee5c3949f8'
AppRegistrationTenantId: 'cdc5aeea-15c5-4db6-b079-fcadd2505dc2'
AuthAKVName: 'akv-prod-eastus'
AuthCertName: 'ReferenceLibraryPrivateCert'
AuthSignCertName: 'ReferencePackagePublisherCertificate'
FolderPath: "$(Build.ArtifactStagingDirectory)"
UseMinimatch: true
Pattern: "*.nupkg"
@ -293,6 +306,9 @@ extends:
}
]
SessionTimeout: 20
MaxConcurrency: 50
MaxRetryAttempts: 5
PendingAnalysisWaitTimeoutMinutes: 5
- task: CopyFiles@2
displayName: Prepare staging folder for upload
@ -379,10 +395,15 @@ extends:
displayName: Set Hardened Entitlements
condition: and(succeeded(), startsWith('${{ distribution.architecture }}', 'osx'))
- task: EsrpCodeSigning@3
- task: EsrpCodeSigning@5
condition: and(succeeded(), startsWith('${{ distribution.architecture }}', 'win'))
inputs:
ConnectedServiceName: "microsoftgraph ESRP CodeSign DLL and NuGet (AKV)"
ConnectedServiceName: 'Federated DevX ESRP Managed Identity Connection'
AppRegistrationClientId: '65035b7f-7357-4f29-bf25-c5ee5c3949f8'
AppRegistrationTenantId: 'cdc5aeea-15c5-4db6-b079-fcadd2505dc2'
AuthAKVName: 'akv-prod-eastus'
AuthCertName: 'ReferenceLibraryPrivateCert'
AuthSignCertName: 'ReferencePackagePublisherCertificate'
FolderPath: $(Build.ArtifactStagingDirectory)/binaries/${{ distribution.architecture }}
signConfigType: inlineSignParams
UseMinimatch: true
@ -425,6 +446,9 @@ extends:
}
]
SessionTimeout: 20
MaxConcurrency: 50
MaxRetryAttempts: 5
PendingAnalysisWaitTimeoutMinutes: 5
Pattern: |
**\*.exe
**\*.dll
@ -437,10 +461,15 @@ extends:
archiveType: zip
archiveFile: $(Build.ArtifactStagingDirectory)/binaries/${{ distribution.architecture }}.zip
replaceExistingArchive: true
- task: EsrpCodeSigning@3
- task: EsrpCodeSigning@5
condition: and(succeeded(), startsWith('${{ distribution.architecture }}', 'osx'))
inputs:
ConnectedServiceName: "microsoftgraph ESRP CodeSign DLL and NuGet (AKV)"
ConnectedServiceName: 'Federated DevX ESRP Managed Identity Connection'
AppRegistrationClientId: '65035b7f-7357-4f29-bf25-c5ee5c3949f8'
AppRegistrationTenantId: 'cdc5aeea-15c5-4db6-b079-fcadd2505dc2'
AuthAKVName: 'akv-prod-eastus'
AuthCertName: 'ReferenceLibraryPrivateCert'
AuthSignCertName: 'ReferencePackagePublisherCertificate'
FolderPath: $(Build.ArtifactStagingDirectory)/binaries
signConfigType: inlineSignParams
UseMinimatch: true
@ -457,12 +486,20 @@ extends:
}
]
SessionTimeout: 20
MaxConcurrency: 50
MaxRetryAttempts: 5
PendingAnalysisWaitTimeoutMinutes: 5
Pattern: |
**/*.zip
- task: EsrpCodeSigning@3
- task: EsrpCodeSigning@5
condition: and(succeeded(), startsWith('${{ distribution.architecture }}', 'osx'))
inputs:
ConnectedServiceName: "microsoftgraph ESRP CodeSign DLL and NuGet (AKV)"
ConnectedServiceName: 'Federated DevX ESRP Managed Identity Connection'
AppRegistrationClientId: '65035b7f-7357-4f29-bf25-c5ee5c3949f8'
AppRegistrationTenantId: 'cdc5aeea-15c5-4db6-b079-fcadd2505dc2'
AuthAKVName: 'akv-prod-eastus'
AuthCertName: 'ReferenceLibraryPrivateCert'
AuthSignCertName: 'ReferencePackagePublisherCertificate'
FolderPath: $(Build.ArtifactStagingDirectory)/binaries
signConfigType: inlineSignParams
UseMinimatch: true
@ -479,6 +516,9 @@ extends:
}
]
SessionTimeout: 20
MaxConcurrency: 50
MaxRetryAttempts: 5
PendingAnalysisWaitTimeoutMinutes: 5
Pattern: |
**/*.zip
- task: 1ES.PublishPipelineArtifact@1
@ -557,9 +597,14 @@ extends:
- script: cp $(getExtensionFileName.extensionFileName).manifest $(getExtensionFileName.extensionFileName).signature.p7s
displayName: 'Prepare manifest for signing'
workingDirectory: $(Build.SourcesDirectory)/vscode/microsoft-kiota
- task: EsrpCodeSigning@3
- task: EsrpCodeSigning@5
inputs:
ConnectedServiceName: "microsoftgraph ESRP CodeSign DLL and NuGet (AKV)"
ConnectedServiceName: 'Federated DevX ESRP Managed Identity Connection'
AppRegistrationClientId: '65035b7f-7357-4f29-bf25-c5ee5c3949f8'
AppRegistrationTenantId: 'cdc5aeea-15c5-4db6-b079-fcadd2505dc2'
AuthAKVName: 'akv-prod-eastus'
AuthCertName: 'ReferenceLibraryPrivateCert'
AuthSignCertName: 'ReferencePackagePublisherCertificate'
FolderPath: $(Build.SourcesDirectory)/vscode/microsoft-kiota
UseMinimatch: true
Pattern: '**\*.signature.p7s'

6
.github/workflows/docker.yml поставляемый
Просмотреть файл

@ -25,7 +25,7 @@ jobs:
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Build image
uses: docker/build-push-action@v6.5.0
uses: docker/build-push-action@v6.6.1
with:
push: false
platforms: linux/amd64,linux/arm64/v8,linux/arm/v7
@ -94,7 +94,7 @@ jobs:
run: echo "date=$(date +'%Y%m%d')" >> $GITHUB_OUTPUT
- name: Push to GitHub Packages - Nightly
if: contains(github.ref, env.PREVIEW_BRANCH)
uses: docker/build-push-action@v6.5.0
uses: docker/build-push-action@v6.6.1
with:
push: true
platforms: linux/amd64,linux/arm64/v8,linux/arm/v7
@ -104,7 +104,7 @@ jobs:
# we can't get the sequence number from ADO so we default it back to github run number
- name: Push to GitHub Packages - Release
if: contains(github.ref, 'refs/tags/v')
uses: docker/build-push-action@v6.5.0
uses: docker/build-push-action@v6.6.1
with:
push: true
platforms: linux/amd64,linux/arm64/v8,linux/arm/v7

Просмотреть файл

@ -13,7 +13,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Added
- Adds generation of default 'color.png`and`outline.png` files when generating plugins. [#4993](https://github.com/microsoft/kiota/issues/4993)
### Changed
- Fixed an issue where models would be missing when they had no properties and a single allOf entry. [#5014](https://github.com/microsoft/kiota/issues/5014)
- Reverts modification of responses in output openApi file when generating plugins [#4945](https://github.com/microsoft/kiota/issues/4945)
## [1.17.0] - 2024-08-09
### Added
- Adds generation of default `color.png` and `outline.png` files when generating plugins. [#4993](https://github.com/microsoft/kiota/issues/4993)
### Changed
@ -25,6 +34,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Exclude the `x-openai-isConsequential` extension from cleanup. [#4962](https://github.com/microsoft/kiota/issues/4962)
- Fixed file name and namespace sanitization when generating plugins. [#5019](https://github.com/microsoft/kiota/issues/5019)
- Added TypeScript typecheck suppression to generated method prototype, where anused arguments can cause build fail in projects which use `noUnusedLocals: true` compiler option. [#5095](https://github.com/microsoft/kiota/issues/5095)
- Fixed a bug where defensive programming would consider some default values as invalid in Python.
## [1.16.0] - 2024-07-05

Просмотреть файл

@ -10,13 +10,13 @@
<ItemGroup>
<PackageReference Include="Azure.Identity" Version="1.12.0" />
<PackageReference Include="Microsoft.Kiota.Abstractions" Version="1.10.1" />
<PackageReference Include="Microsoft.Kiota.Authentication.Azure" Version="1.10.1" />
<PackageReference Include="Microsoft.Kiota.Http.HttpClientLibrary" Version="1.10.1" />
<PackageReference Include="Microsoft.Kiota.Serialization.Form" Version="1.10.1" />
<PackageReference Include="Microsoft.Kiota.Serialization.Json" Version="1.10.1" />
<PackageReference Include="Microsoft.kiota.Serialization.Multipart" Version="1.10.1" />
<PackageReference Include="Microsoft.Kiota.Serialization.Text" Version="1.10.1" />
<PackageReference Include="Microsoft.Kiota.Abstractions" Version="1.11.1" />
<PackageReference Include="Microsoft.Kiota.Authentication.Azure" Version="1.11.1" />
<PackageReference Include="Microsoft.Kiota.Http.HttpClientLibrary" Version="1.11.1" />
<PackageReference Include="Microsoft.Kiota.Serialization.Form" Version="1.11.1" />
<PackageReference Include="Microsoft.Kiota.Serialization.Json" Version="1.11.1" />
<PackageReference Include="Microsoft.kiota.Serialization.Multipart" Version="1.11.1" />
<PackageReference Include="Microsoft.Kiota.Serialization.Text" Version="1.11.1" />
<Compile Remove="basic\**" />
</ItemGroup>

Просмотреть файл

@ -5,7 +5,7 @@ go 1.20
require (
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.7.0
github.com/microsoft/kiota-abstractions-go v1.6.1
github.com/microsoft/kiota-authentication-azure-go v1.0.2
github.com/microsoft/kiota-authentication-azure-go v1.1.0
github.com/microsoft/kiota-http-go v1.4.3
github.com/microsoft/kiota-serialization-form-go v1.0.0
github.com/microsoft/kiota-serialization-json-go v1.0.7

Просмотреть файл

@ -26,8 +26,8 @@ github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0
github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw=
github.com/microsoft/kiota-abstractions-go v1.6.1 h1:NXK50S3BwJn9Wj6bO0YFuAig7y2WVgdQ/ie1ktMl2J4=
github.com/microsoft/kiota-abstractions-go v1.6.1/go.mod h1:FI1I2OHg0E7bK5t8DPnw+9C/CHVyLP6XeqDBT+95pTE=
github.com/microsoft/kiota-authentication-azure-go v1.0.2 h1:tClGeyFZJ+4Bakf8u0euPM4wqy4ethycdOgx3jyH3pI=
github.com/microsoft/kiota-authentication-azure-go v1.0.2/go.mod h1:aTcti0bUJEcq7kBfQG4Sr4ElvRNuaalXcFEu4iEyQ6M=
github.com/microsoft/kiota-authentication-azure-go v1.1.0 h1:HudH57Enel9zFQ4TEaJw6lMiyZ5RbBdrRHwdU0NP2RY=
github.com/microsoft/kiota-authentication-azure-go v1.1.0/go.mod h1:zfPFOiLdEqM77Hua5B/2vpcXrVaGqSWjHSRzlvAWEgc=
github.com/microsoft/kiota-http-go v1.4.3 h1:BVviWZSZCm2nr9qySbhSXa8jlrLvCcC2/uV4p45Ow0I=
github.com/microsoft/kiota-http-go v1.4.3/go.mod h1:Kup5nMDD3a9sjdgRKHCqZWqtrv3FbprjcPaGjLR6FzM=
github.com/microsoft/kiota-serialization-form-go v1.0.0 h1:UNdrkMnLFqUCccQZerKjblsyVgifS11b3WCx+eFEsAI=

Просмотреть файл

@ -15,7 +15,7 @@
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<kiota-java.version>1.1.14</kiota-java.version>
<kiota-java.version>1.2.0</kiota-java.version>
</properties>
<dependencies>

Просмотреть файл

@ -64,9 +64,9 @@ wrapt==1.15.0 ; python_version < '3.11'
yapf==0.40.2
zipp==3.19.2 ; python_version >= '3.7'
zipp==3.20.0 ; python_version >= '3.7'
aiohttp==3.10.1 ; python_version >= '3.6'
aiohttp==3.10.3 ; python_version >= '3.6'
aiosignal==1.3.1 ; python_version >= '3.7'
@ -102,7 +102,7 @@ microsoft-kiota-abstractions==1.3.3
microsoft-kiota-authentication-azure==1.0.0
microsoft-kiota-http==1.3.2
microsoft-kiota-http==1.3.3
microsoft-kiota-serialization-json==1.3.0

192
it/typescript/package-lock.json сгенерированный
Просмотреть файл

@ -10,24 +10,24 @@
"license": "MIT",
"dependencies": {
"@azure/identity": "^4.4.1",
"@microsoft/kiota-abstractions": "^1.0.0-preview.58",
"@microsoft/kiota-authentication-azure": "^1.0.0-preview.53",
"@microsoft/kiota-http-fetchlibrary": "^1.0.0-preview.57",
"@microsoft/kiota-serialization-form": "^1.0.0-preview.47",
"@microsoft/kiota-serialization-json": "^1.0.0-preview.58",
"@microsoft/kiota-serialization-multipart": "^1.0.0-preview.36",
"@microsoft/kiota-serialization-text": "^1.0.0-preview.55",
"@microsoft/kiota-abstractions": "^1.0.0-preview.59",
"@microsoft/kiota-authentication-azure": "^1.0.0-preview.54",
"@microsoft/kiota-http-fetchlibrary": "^1.0.0-preview.58",
"@microsoft/kiota-serialization-form": "^1.0.0-preview.48",
"@microsoft/kiota-serialization-json": "^1.0.0-preview.59",
"@microsoft/kiota-serialization-multipart": "^1.0.0-preview.37",
"@microsoft/kiota-serialization-text": "^1.0.0-preview.56",
"express": "^4.19.2",
"node-fetch": "^2.7.0"
},
"devDependencies": {
"@es-exec/esbuild-plugin-start": "^0.0.5",
"@stylistic/eslint-plugin-ts": "^2.6.1",
"@types/node": "^22.1.0",
"@typescript-eslint/eslint-plugin": "^8.0.1",
"@typescript-eslint/parser": "^8.0.1",
"@stylistic/eslint-plugin-ts": "^2.6.2",
"@types/node": "^22.2.0",
"@typescript-eslint/eslint-plugin": "^8.1.0",
"@typescript-eslint/parser": "^8.1.0",
"esbuild": "^0.23.0",
"eslint": "^9.8.0",
"eslint": "^9.9.0",
"eslint-config-prettier": "^9.1.0",
"minimist": "^1.2.8",
"prettier": "^3.3.3",
@ -707,9 +707,9 @@
}
},
"node_modules/@eslint/js": {
"version": "9.8.0",
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.8.0.tgz",
"integrity": "sha512-MfluB7EUfxXtv3i/++oh89uzAr4PDI4nn201hsp+qaXqsjAWzinlZEHEfPgAX4doIlKvPG/i0A9dpKxOLII8yA==",
"version": "9.9.0",
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.9.0.tgz",
"integrity": "sha512-hhetes6ZHP3BlXLxmd8K2SNgkhNSi+UcecbnwWKwpP7kyi/uC75DJ1lOOBO3xrC4jyojtGE3YxKZPHfk4yrgug==",
"dev": true,
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@ -751,9 +751,9 @@
}
},
"node_modules/@microsoft/kiota-abstractions": {
"version": "1.0.0-preview.58",
"resolved": "https://registry.npmjs.org/@microsoft/kiota-abstractions/-/kiota-abstractions-1.0.0-preview.58.tgz",
"integrity": "sha512-jnwicLTTubQcBNbP+ge+5i4xaqsqUU1wCwofVn66c1wF942fiyN1fWJ5FU9XbjQe/oCeHnEAtNVK/Kqdw7E8ug==",
"version": "1.0.0-preview.59",
"resolved": "https://registry.npmjs.org/@microsoft/kiota-abstractions/-/kiota-abstractions-1.0.0-preview.59.tgz",
"integrity": "sha512-qb+ZyYXa5BQhPtYPyySoAcsE56Elulm42b2E6J/VxG3TAFobZ8O0B1RcBPBRtnr5UbKW6a00f+DUL+8tiPYq8Q==",
"dependencies": {
"@opentelemetry/api": "^1.7.0",
"@std-uritemplate/std-uritemplate": "^1.0.1",
@ -776,9 +776,9 @@
}
},
"node_modules/@microsoft/kiota-authentication-azure": {
"version": "1.0.0-preview.53",
"resolved": "https://registry.npmjs.org/@microsoft/kiota-authentication-azure/-/kiota-authentication-azure-1.0.0-preview.53.tgz",
"integrity": "sha512-4YsjHjWOpwobjTDhEdBPq05RI9ApWegniUhAjyrbaJnfu1uehNGpoGrreKitgpCG8FOMBmuZycKjFZ8c4TRnLQ==",
"version": "1.0.0-preview.54",
"resolved": "https://registry.npmjs.org/@microsoft/kiota-authentication-azure/-/kiota-authentication-azure-1.0.0-preview.54.tgz",
"integrity": "sha512-jIPz2ziwIKnrglynWmiXO0KcvRp3R0emHPXcSjbK+l7+D+kLrPZy92RDYjIdKJFtS39ZdM5jZgLeIEnmAkSvEQ==",
"dependencies": {
"@azure/core-auth": "^1.5.0",
"@microsoft/kiota-abstractions": "*",
@ -787,9 +787,9 @@
}
},
"node_modules/@microsoft/kiota-http-fetchlibrary": {
"version": "1.0.0-preview.57",
"resolved": "https://registry.npmjs.org/@microsoft/kiota-http-fetchlibrary/-/kiota-http-fetchlibrary-1.0.0-preview.57.tgz",
"integrity": "sha512-Fvmvz7RfHIe18faYrXrh9QpSuU9ZFj321wZaC2JoEedtlXKpVCZTaCvO93KrrZhVinXKp+WroR5uAt/YajyZaA==",
"version": "1.0.0-preview.58",
"resolved": "https://registry.npmjs.org/@microsoft/kiota-http-fetchlibrary/-/kiota-http-fetchlibrary-1.0.0-preview.58.tgz",
"integrity": "sha512-91Ft4hIt289rfwEP1R7WDsCd7tYJBKiCIRjGLlJ5jKcxamS4IHtI+ui8Qgy1tdk7azkq0+z6JzYZ6LBBdAJ97g==",
"dependencies": {
"@microsoft/kiota-abstractions": "*",
"@opentelemetry/api": "^1.7.0",
@ -798,9 +798,9 @@
}
},
"node_modules/@microsoft/kiota-serialization-form": {
"version": "1.0.0-preview.47",
"resolved": "https://registry.npmjs.org/@microsoft/kiota-serialization-form/-/kiota-serialization-form-1.0.0-preview.47.tgz",
"integrity": "sha512-0QeaUPRhlmyJa8d8Hcaqu15ZC3y5aAh0kMYn3X3dmjMGvmAAcmDA274VZUXtFqmG43nJOpuOIcFPM8KgBTtF2g==",
"version": "1.0.0-preview.48",
"resolved": "https://registry.npmjs.org/@microsoft/kiota-serialization-form/-/kiota-serialization-form-1.0.0-preview.48.tgz",
"integrity": "sha512-NP95IzgLZcsCtBnlA21nPIM6qW0pqmWk3bv+S/pHFlb4bktfOrhrrfGGTMjPwq3Wpm7bGoQy/kr2iT8Y91sThQ==",
"dependencies": {
"@microsoft/kiota-abstractions": "*",
"guid-typescript": "^1.0.9",
@ -808,9 +808,9 @@
}
},
"node_modules/@microsoft/kiota-serialization-json": {
"version": "1.0.0-preview.58",
"resolved": "https://registry.npmjs.org/@microsoft/kiota-serialization-json/-/kiota-serialization-json-1.0.0-preview.58.tgz",
"integrity": "sha512-GGK7ESpsDswMldYdCDULXQXNwWCLpg6bxgiSUy5QLZIr7bMWsI3C7Ue0YUzI0YyZ4T6Zi2tYmv4EbySuPnrF1w==",
"version": "1.0.0-preview.59",
"resolved": "https://registry.npmjs.org/@microsoft/kiota-serialization-json/-/kiota-serialization-json-1.0.0-preview.59.tgz",
"integrity": "sha512-jqI9hozmP1S2YKfmAIIZpwMQREXdgWpAnGM/DgKSfs3O4fKmH4yVilhNRb6k+H+Y7TouS6cgTJkMnB10ARGY1A==",
"dependencies": {
"@microsoft/kiota-abstractions": "*",
"guid-typescript": "^1.0.9",
@ -818,9 +818,9 @@
}
},
"node_modules/@microsoft/kiota-serialization-multipart": {
"version": "1.0.0-preview.36",
"resolved": "https://registry.npmjs.org/@microsoft/kiota-serialization-multipart/-/kiota-serialization-multipart-1.0.0-preview.36.tgz",
"integrity": "sha512-80qORCmu7QbkPx+v4hiuvD70U+qzGYjgNGiDkZT3ihWcLbujLcRBWDJhRokuvnGcg7PBwuyPS7yvHTupD///YQ==",
"version": "1.0.0-preview.37",
"resolved": "https://registry.npmjs.org/@microsoft/kiota-serialization-multipart/-/kiota-serialization-multipart-1.0.0-preview.37.tgz",
"integrity": "sha512-PgRnMuk0dn2YxNgNt0o3ItjITJE5/M85u31IMe1z6U8hqnnYemJTIoXjXv1Tfv73qEfXy9USeAFaX8ioPe6rGA==",
"dependencies": {
"@microsoft/kiota-abstractions": "*",
"guid-typescript": "^1.0.9",
@ -828,9 +828,9 @@
}
},
"node_modules/@microsoft/kiota-serialization-text": {
"version": "1.0.0-preview.55",
"resolved": "https://registry.npmjs.org/@microsoft/kiota-serialization-text/-/kiota-serialization-text-1.0.0-preview.55.tgz",
"integrity": "sha512-bVFpK/0Gg1UPP+bFCwKFq4k2KWZ2yGps15F+1fxJ9Xz1yOLfqsY+C3LaWfVJS1Ctiwpsq866AdqtbmbPberfuA==",
"version": "1.0.0-preview.56",
"resolved": "https://registry.npmjs.org/@microsoft/kiota-serialization-text/-/kiota-serialization-text-1.0.0-preview.56.tgz",
"integrity": "sha512-72UC5ACyYwMHNsy5+TyHk8Douw6uYrjCfZica00QlPmDO8+aW5yq1Ysr0A4ZL8B0LPU2P/SAYuKinBXpTkUA1w==",
"dependencies": {
"@microsoft/kiota-abstractions": "*",
"guid-typescript": "^1.0.9",
@ -886,9 +886,9 @@
"integrity": "sha512-35k/Nn+wlqkOf9AxIlhOA19mndrUMDspRuV3lO/9IgqKk0W7b8LwuWup5bGt4wZ1sCZij/lDTQMTY9WKTKrusg=="
},
"node_modules/@stylistic/eslint-plugin-js": {
"version": "2.6.1",
"resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-js/-/eslint-plugin-js-2.6.1.tgz",
"integrity": "sha512-iLOiVzcvqzDGD9U0EuVOX680v+XOPiPAjkxWj+Q6iV2GLOM5NB27tKVOpJY7AzBhidwpRbaLTgg3T4UzYx09jw==",
"version": "2.6.2",
"resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-js/-/eslint-plugin-js-2.6.2.tgz",
"integrity": "sha512-wCr/kVctAPayMU3pcOI1MKR7MoKIh6VKZU89lPklAqtJoxT+Em6RueiiARbpznUYG5eg3LymiU+aMD+aIZXdqA==",
"dev": true,
"dependencies": {
"@types/eslint": "^9.6.0",
@ -916,12 +916,12 @@
}
},
"node_modules/@stylistic/eslint-plugin-ts": {
"version": "2.6.1",
"resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-ts/-/eslint-plugin-ts-2.6.1.tgz",
"integrity": "sha512-Mxl1VMorEG1Hc6oBYPD0+KIJOWkjEF1R0liL7wWgKfwpqOkgmnh5lVdZBrYyfRKOE4RlGcwEFTNai1IW6orgVg==",
"version": "2.6.2",
"resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-ts/-/eslint-plugin-ts-2.6.2.tgz",
"integrity": "sha512-6OEN3VtUNxjgOvWPavnC10MByr1H4zsgwNND3rQXr5lDFv93MLUnTsH+/SH15OkuqdyJgrQILI6b9lYecb1vIg==",
"dev": true,
"dependencies": {
"@stylistic/eslint-plugin-js": "2.6.1",
"@stylistic/eslint-plugin-js": "2.6.2",
"@types/eslint": "^9.6.0",
"@typescript-eslint/utils": "^8.0.0"
},
@ -955,25 +955,25 @@
"dev": true
},
"node_modules/@types/node": {
"version": "22.1.0",
"resolved": "https://registry.npmjs.org/@types/node/-/node-22.1.0.tgz",
"integrity": "sha512-AOmuRF0R2/5j1knA3c6G3HOk523Ga+l+ZXltX8SF1+5oqcXijjfTd8fY3XRZqSihEu9XhtQnKYLmkFaoxgsJHw==",
"version": "22.2.0",
"resolved": "https://registry.npmjs.org/@types/node/-/node-22.2.0.tgz",
"integrity": "sha512-bm6EG6/pCpkxDf/0gDNDdtDILMOHgaQBVOJGdwsqClnxA3xL6jtMv76rLBc006RVMWbmaf0xbmom4Z/5o2nRkQ==",
"dev": true,
"dependencies": {
"undici-types": "~6.13.0"
}
},
"node_modules/@typescript-eslint/eslint-plugin": {
"version": "8.0.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.0.1.tgz",
"integrity": "sha512-5g3Y7GDFsJAnY4Yhvk8sZtFfV6YNF2caLzjrRPUBzewjPCaj0yokePB4LJSobyCzGMzjZZYFbwuzbfDHlimXbQ==",
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.1.0.tgz",
"integrity": "sha512-LlNBaHFCEBPHyD4pZXb35mzjGkuGKXU5eeCA1SxvHfiRES0E82dOounfVpL4DCqYvJEKab0bZIA0gCRpdLKkCw==",
"dev": true,
"dependencies": {
"@eslint-community/regexpp": "^4.10.0",
"@typescript-eslint/scope-manager": "8.0.1",
"@typescript-eslint/type-utils": "8.0.1",
"@typescript-eslint/utils": "8.0.1",
"@typescript-eslint/visitor-keys": "8.0.1",
"@typescript-eslint/scope-manager": "8.1.0",
"@typescript-eslint/type-utils": "8.1.0",
"@typescript-eslint/utils": "8.1.0",
"@typescript-eslint/visitor-keys": "8.1.0",
"graphemer": "^1.4.0",
"ignore": "^5.3.1",
"natural-compare": "^1.4.0",
@ -997,15 +997,15 @@
}
},
"node_modules/@typescript-eslint/parser": {
"version": "8.0.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.0.1.tgz",
"integrity": "sha512-5IgYJ9EO/12pOUwiBKFkpU7rS3IU21mtXzB81TNwq2xEybcmAZrE9qwDtsb5uQd9aVO9o0fdabFyAmKveXyujg==",
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.1.0.tgz",
"integrity": "sha512-U7iTAtGgJk6DPX9wIWPPOlt1gO57097G06gIcl0N0EEnNw8RGD62c+2/DiP/zL7KrkqnnqF7gtFGR7YgzPllTA==",
"dev": true,
"dependencies": {
"@typescript-eslint/scope-manager": "8.0.1",
"@typescript-eslint/types": "8.0.1",
"@typescript-eslint/typescript-estree": "8.0.1",
"@typescript-eslint/visitor-keys": "8.0.1",
"@typescript-eslint/scope-manager": "8.1.0",
"@typescript-eslint/types": "8.1.0",
"@typescript-eslint/typescript-estree": "8.1.0",
"@typescript-eslint/visitor-keys": "8.1.0",
"debug": "^4.3.4"
},
"engines": {
@ -1025,13 +1025,13 @@
}
},
"node_modules/@typescript-eslint/scope-manager": {
"version": "8.0.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.0.1.tgz",
"integrity": "sha512-NpixInP5dm7uukMiRyiHjRKkom5RIFA4dfiHvalanD2cF0CLUuQqxfg8PtEUo9yqJI2bBhF+pcSafqnG3UBnRQ==",
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.1.0.tgz",
"integrity": "sha512-DsuOZQji687sQUjm4N6c9xABJa7fjvfIdjqpSIIVOgaENf2jFXiM9hIBZOL3hb6DHK9Nvd2d7zZnoMLf9e0OtQ==",
"dev": true,
"dependencies": {
"@typescript-eslint/types": "8.0.1",
"@typescript-eslint/visitor-keys": "8.0.1"
"@typescript-eslint/types": "8.1.0",
"@typescript-eslint/visitor-keys": "8.1.0"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@ -1042,13 +1042,13 @@
}
},
"node_modules/@typescript-eslint/type-utils": {
"version": "8.0.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.0.1.tgz",
"integrity": "sha512-+/UT25MWvXeDX9YaHv1IS6KI1fiuTto43WprE7pgSMswHbn1Jm9GEM4Txp+X74ifOWV8emu2AWcbLhpJAvD5Ng==",
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.1.0.tgz",
"integrity": "sha512-oLYvTxljVvsMnldfl6jIKxTaU7ok7km0KDrwOt1RHYu6nxlhN3TIx8k5Q52L6wR33nOwDgM7VwW1fT1qMNfFIA==",
"dev": true,
"dependencies": {
"@typescript-eslint/typescript-estree": "8.0.1",
"@typescript-eslint/utils": "8.0.1",
"@typescript-eslint/typescript-estree": "8.1.0",
"@typescript-eslint/utils": "8.1.0",
"debug": "^4.3.4",
"ts-api-utils": "^1.3.0"
},
@ -1066,9 +1066,9 @@
}
},
"node_modules/@typescript-eslint/types": {
"version": "8.0.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.0.1.tgz",
"integrity": "sha512-PpqTVT3yCA/bIgJ12czBuE3iBlM3g4inRSC5J0QOdQFAn07TYrYEQBBKgXH1lQpglup+Zy6c1fxuwTk4MTNKIw==",
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.1.0.tgz",
"integrity": "sha512-q2/Bxa0gMOu/2/AKALI0tCKbG2zppccnRIRCW6BaaTlRVaPKft4oVYPp7WOPpcnsgbr0qROAVCVKCvIQ0tbWog==",
"dev": true,
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@ -1079,13 +1079,13 @@
}
},
"node_modules/@typescript-eslint/typescript-estree": {
"version": "8.0.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.0.1.tgz",
"integrity": "sha512-8V9hriRvZQXPWU3bbiUV4Epo7EvgM6RTs+sUmxp5G//dBGy402S7Fx0W0QkB2fb4obCF8SInoUzvTYtc3bkb5w==",
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.1.0.tgz",
"integrity": "sha512-NTHhmufocEkMiAord/g++gWKb0Fr34e9AExBRdqgWdVBaKoei2dIyYKD9Q0jBnvfbEA5zaf8plUFMUH6kQ0vGg==",
"dev": true,
"dependencies": {
"@typescript-eslint/types": "8.0.1",
"@typescript-eslint/visitor-keys": "8.0.1",
"@typescript-eslint/types": "8.1.0",
"@typescript-eslint/visitor-keys": "8.1.0",
"debug": "^4.3.4",
"globby": "^11.1.0",
"is-glob": "^4.0.3",
@ -1131,15 +1131,15 @@
}
},
"node_modules/@typescript-eslint/utils": {
"version": "8.0.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.0.1.tgz",
"integrity": "sha512-CBFR0G0sCt0+fzfnKaciu9IBsKvEKYwN9UZ+eeogK1fYHg4Qxk1yf/wLQkLXlq8wbU2dFlgAesxt8Gi76E8RTA==",
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.1.0.tgz",
"integrity": "sha512-ypRueFNKTIFwqPeJBfeIpxZ895PQhNyH4YID6js0UoBImWYoSjBsahUn9KMiJXh94uOjVBgHD9AmkyPsPnFwJA==",
"dev": true,
"dependencies": {
"@eslint-community/eslint-utils": "^4.4.0",
"@typescript-eslint/scope-manager": "8.0.1",
"@typescript-eslint/types": "8.0.1",
"@typescript-eslint/typescript-estree": "8.0.1"
"@typescript-eslint/scope-manager": "8.1.0",
"@typescript-eslint/types": "8.1.0",
"@typescript-eslint/typescript-estree": "8.1.0"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@ -1153,12 +1153,12 @@
}
},
"node_modules/@typescript-eslint/visitor-keys": {
"version": "8.0.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.0.1.tgz",
"integrity": "sha512-W5E+o0UfUcK5EgchLZsyVWqARmsM7v54/qEq6PY3YI5arkgmCzHiuk0zKSJJbm71V0xdRna4BGomkCTXz2/LkQ==",
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.1.0.tgz",
"integrity": "sha512-ba0lNI19awqZ5ZNKh6wCModMwoZs457StTebQ0q1NP58zSi2F6MOZRXwfKZy+jB78JNJ/WH8GSh2IQNzXX8Nag==",
"dev": true,
"dependencies": {
"@typescript-eslint/types": "8.0.1",
"@typescript-eslint/types": "8.1.0",
"eslint-visitor-keys": "^3.4.3"
},
"engines": {
@ -1638,16 +1638,16 @@
}
},
"node_modules/eslint": {
"version": "9.8.0",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-9.8.0.tgz",
"integrity": "sha512-K8qnZ/QJzT2dLKdZJVX6W4XOwBzutMYmt0lqUS+JdXgd+HTYFlonFgkJ8s44d/zMPPCnOOk0kMWCApCPhiOy9A==",
"version": "9.9.0",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-9.9.0.tgz",
"integrity": "sha512-JfiKJrbx0506OEerjK2Y1QlldtBxkAlLxT5OEcRF8uaQ86noDe2k31Vw9rnSWv+MXZHj7OOUV/dA0AhdLFcyvA==",
"dev": true,
"dependencies": {
"@eslint-community/eslint-utils": "^4.2.0",
"@eslint-community/regexpp": "^4.11.0",
"@eslint/config-array": "^0.17.1",
"@eslint/eslintrc": "^3.1.0",
"@eslint/js": "9.8.0",
"@eslint/js": "9.9.0",
"@humanwhocodes/module-importer": "^1.0.1",
"@humanwhocodes/retry": "^0.3.0",
"@nodelib/fs.walk": "^1.2.8",
@ -1686,6 +1686,14 @@
},
"funding": {
"url": "https://eslint.org/donate"
},
"peerDependencies": {
"jiti": "*"
},
"peerDependenciesMeta": {
"jiti": {
"optional": true
}
}
},
"node_modules/eslint-config-prettier": {

Просмотреть файл

@ -19,12 +19,12 @@
"prettier": "./.prettierrc.json",
"devDependencies": {
"@es-exec/esbuild-plugin-start": "^0.0.5",
"@stylistic/eslint-plugin-ts": "^2.6.1",
"@types/node": "^22.1.0",
"@typescript-eslint/eslint-plugin": "^8.0.1",
"@typescript-eslint/parser": "^8.0.1",
"@stylistic/eslint-plugin-ts": "^2.6.2",
"@types/node": "^22.2.0",
"@typescript-eslint/eslint-plugin": "^8.1.0",
"@typescript-eslint/parser": "^8.1.0",
"esbuild": "^0.23.0",
"eslint": "^9.8.0",
"eslint": "^9.9.0",
"eslint-config-prettier": "^9.1.0",
"minimist": "^1.2.8",
"prettier": "^3.3.3",
@ -32,13 +32,13 @@
},
"dependencies": {
"@azure/identity": "^4.4.1",
"@microsoft/kiota-abstractions": "^1.0.0-preview.58",
"@microsoft/kiota-authentication-azure": "^1.0.0-preview.53",
"@microsoft/kiota-http-fetchlibrary": "^1.0.0-preview.57",
"@microsoft/kiota-serialization-form": "^1.0.0-preview.47",
"@microsoft/kiota-serialization-json": "^1.0.0-preview.58",
"@microsoft/kiota-serialization-multipart": "^1.0.0-preview.36",
"@microsoft/kiota-serialization-text": "^1.0.0-preview.55",
"@microsoft/kiota-abstractions": "^1.0.0-preview.59",
"@microsoft/kiota-authentication-azure": "^1.0.0-preview.54",
"@microsoft/kiota-http-fetchlibrary": "^1.0.0-preview.58",
"@microsoft/kiota-serialization-form": "^1.0.0-preview.48",
"@microsoft/kiota-serialization-json": "^1.0.0-preview.59",
"@microsoft/kiota-serialization-multipart": "^1.0.0-preview.37",
"@microsoft/kiota-serialization-text": "^1.0.0-preview.56",
"express": "^4.19.2",
"node-fetch": "^2.7.0"
}

Просмотреть файл

@ -14,10 +14,10 @@ $changelogPath = Join-Path -Path $PSScriptRoot -ChildPath "../CHANGELOG.md"
$changeLogContent = Get-Content $changelogPath -Raw
$headerLine = "## [$version]"
$versionLineNumber = $changeLogContent.IndexOf($headerLine)
$headerLineNumber = $changeLogContent.IndexOf("`n" , $versionLineNumber) + 3
if ($version -ne "Unreleased" -and $versionLineNumber -lt 0) {
throw "Version $version not found in CHANGELOG.md make sure you've updated the changelog"
}
$headerLineNumber = $changeLogContent.IndexOf("`n" , $versionLineNumber) + 3
$endLineNumber = $changeLogContent.IndexOf("## [", $headerLineNumber) - 3
$releaseNotes = $changeLogContent.Substring($headerLineNumber, $endLineNumber - $headerLineNumber)
if ($version -eq "Unreleased" -and [string]::IsNullOrWhiteSpace($releaseNotes.Replace("### Changed", "").Replace("### Added", ""))) {

Просмотреть файл

@ -15,7 +15,7 @@
<Title>Microsoft.OpenApi.Kiota.Builder</Title>
<PackageId>Microsoft.OpenApi.Kiota.Builder</PackageId>
<PackageOutputPath>./nupkg</PackageOutputPath>
<VersionPrefix>1.17.0</VersionPrefix>
<VersionPrefix>1.18.0</VersionPrefix>
<VersionSuffix>$(VersionSuffix)</VersionSuffix>
<PackageReleaseNotes>
https://github.com/microsoft/kiota/releases
@ -39,12 +39,12 @@
<PackageReference Include="AsyncKeyedLock" Version="7.0.0" />
<PackageReference Include="DotNet.Glob" Version="3.1.3" />
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="8.0.1" />
<PackageReference Include="Microsoft.Kiota.Abstractions" Version="1.10.1" />
<PackageReference Include="Microsoft.Kiota.Http.HttpClientLibrary" Version="1.10.1" />
<PackageReference Include="Microsoft.Kiota.Serialization.Form" Version="1.10.1" />
<PackageReference Include="Microsoft.Kiota.Serialization.Json" Version="1.10.1" />
<PackageReference Include="Microsoft.Kiota.Serialization.Text" Version="1.10.1" />
<PackageReference Include="Microsoft.kiota.Serialization.Multipart" Version="1.10.1" />
<PackageReference Include="Microsoft.Kiota.Abstractions" Version="1.11.0" />
<PackageReference Include="Microsoft.Kiota.Http.HttpClientLibrary" Version="1.11.0" />
<PackageReference Include="Microsoft.Kiota.Serialization.Form" Version="1.11.0" />
<PackageReference Include="Microsoft.Kiota.Serialization.Json" Version="1.11.0" />
<PackageReference Include="Microsoft.Kiota.Serialization.Text" Version="1.11.0" />
<PackageReference Include="Microsoft.kiota.Serialization.Multipart" Version="1.11.0" />
<PackageReference Include="Microsoft.OpenApi" Version="1.6.17" />
<PackageReference Include="Microsoft.OpenApi.ApiManifest" Version="0.5.5-preview" />
<PackageReference Include="Microsoft.OpenApi.Readers" Version="1.6.17" />
@ -61,7 +61,7 @@
<None Include="../../README.md" Pack="true" PackagePath="" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="../../resources/color.png"/>
<EmbeddedResource Include="../../resources/outline.png"/>
<EmbeddedResource Include="../../resources/color.png" />
<EmbeddedResource Include="../../resources/outline.png" />
</ItemGroup>
</Project>

Просмотреть файл

@ -1599,14 +1599,14 @@ public partial class KiotaBuilder
TypeDefinition = codeDeclaration,
};
}
private CodeType CreateInheritedModelDeclarationAndType(OpenApiUrlTreeNode currentNode, OpenApiSchema schema, OpenApiOperation? operation, string classNameSuffix, CodeNamespace codeNamespace, bool isRequestBody, string typeNameForInlineSchema)
private CodeType CreateInheritedModelDeclarationAndType(OpenApiUrlTreeNode currentNode, OpenApiSchema schema, OpenApiOperation? operation, string classNameSuffix, CodeNamespace codeNamespace, bool isRequestBody, string typeNameForInlineSchema, bool isViaDiscriminator = false)
{
return new CodeType
{
TypeDefinition = CreateInheritedModelDeclaration(currentNode, schema, operation, classNameSuffix, codeNamespace, isRequestBody, typeNameForInlineSchema),
TypeDefinition = CreateInheritedModelDeclaration(currentNode, schema, operation, classNameSuffix, codeNamespace, isRequestBody, typeNameForInlineSchema, isViaDiscriminator),
};
}
private CodeClass CreateInheritedModelDeclaration(OpenApiUrlTreeNode currentNode, OpenApiSchema schema, OpenApiOperation? operation, string classNameSuffix, CodeNamespace codeNamespace, bool isRequestBody, string typeNameForInlineSchema)
private CodeClass CreateInheritedModelDeclaration(OpenApiUrlTreeNode currentNode, OpenApiSchema schema, OpenApiOperation? operation, string classNameSuffix, CodeNamespace codeNamespace, bool isRequestBody, string typeNameForInlineSchema, bool isViaDiscriminator = false)
{
var flattenedAllOfs = schema.AllOf.FlattenSchemaIfRequired(static x => x.AllOf).ToArray();
var referenceId = schema.Reference?.Id;
@ -1624,44 +1624,50 @@ public partial class KiotaBuilder
typeNameForInlineSchema :
currentNode.GetClassName(config.StructuredMimeTypes, operation: operation, suffix: classNameSuffix, schema: schema, requestBody: isRequestBody)))
.CleanupSymbolName();
var codeDeclaration = (rootSchemaHasProperties, inlineSchemas, referencedSchemas) switch
var codeDeclaration = (rootSchemaHasProperties, inlineSchemas, referencedSchemas, isViaDiscriminator) switch
{
// greatest parent type
(true, { Length: 0 }, { Length: 0 }) =>
(true, { Length: 0 }, { Length: 0 }, _) =>
AddModelDeclarationIfDoesntExist(currentNode, operation, schema, className, shortestNamespace),
// inline schema + referenced schema
(false, { Length: > 0 }, { Length: 1 }) =>
(false, { Length: > 0 }, { Length: 1 }, _) =>
AddModelDeclarationIfDoesntExist(currentNode, operation, schema.MergeAllOfSchemaEntries([.. referencedSchemas], static x => x.Reference is null)!, className, shortestNamespace, CreateInheritedModelDeclaration(currentNode, referencedSchemas[0], operation, classNameSuffix, codeNamespace, isRequestBody, string.Empty)),
// properties + referenced schema
(true, { Length: 0 }, { Length: 1 }) =>
(true, { Length: 0 }, { Length: 1 }, _) =>
AddModelDeclarationIfDoesntExist(currentNode, operation, schema, className, shortestNamespace, CreateInheritedModelDeclaration(currentNode, referencedSchemas[0], operation, classNameSuffix, codeNamespace, isRequestBody, string.Empty)),
// properties + inline schema
(true, { Length: 1 }, { Length: 0 }) =>
(true, { Length: 1 }, { Length: 0 }, _) =>
AddModelDeclarationIfDoesntExist(currentNode, operation, schema, className, shortestNamespace, CreateInheritedModelDeclaration(currentNode, inlineSchemas[0], operation, classNameSuffix, codeNamespace, isRequestBody, typeNameForInlineSchema)),
// empty schema + referenced schema
(false, { Length: 0 }, { Length: 1 }) =>
(false, { Length: 0 }, { Length: 1 }, false) =>
AddModelDeclarationIfDoesntExist(currentNode, operation, referencedSchemas[0], className, shortestNamespace),
// empty schema + inline schema
(false, { Length: 1 }, { Length: 0 }) =>
(false, { Length: 1 }, { Length: 0 }, false) =>
AddModelDeclarationIfDoesntExist(currentNode, operation, inlineSchemas[0], className, shortestNamespace),
// empty schema + referenced schema and referenced by oneOf discriminator
(false, { Length: 0 }, { Length: 1 }, true) =>
AddModelDeclarationIfDoesntExist(currentNode, operation, schema, className, shortestNamespace, CreateInheritedModelDeclaration(currentNode, referencedSchemas[0], operation, classNameSuffix, codeNamespace, isRequestBody, string.Empty)),
// empty schema + inline schema and referenced by oneOf discriminator
(false, { Length: 1 }, { Length: 0 }, true) =>
AddModelDeclarationIfDoesntExist(currentNode, operation, schema, className, shortestNamespace, CreateInheritedModelDeclaration(currentNode, inlineSchemas[0], operation, classNameSuffix, codeNamespace, isRequestBody, typeNameForInlineSchema)),
// too much information but we can make a choice -> maps to properties + inline schema
(true, { Length: 1 }, { Length: 1 }) when inlineSchemas[0].HasAnyProperty() && !referencedSchemas[0].HasAnyProperty() =>
(true, { Length: 1 }, { Length: 1 }, _) when inlineSchemas[0].HasAnyProperty() && !referencedSchemas[0].HasAnyProperty() =>
AddModelDeclarationIfDoesntExist(currentNode, operation, schema, className, shortestNamespace, CreateInheritedModelDeclaration(currentNode, inlineSchemas[0], operation, classNameSuffix, codeNamespace, isRequestBody, typeNameForInlineSchema)),
// too much information but we can make a choice -> maps to properties + referenced schema
(true, { Length: 1 }, { Length: 1 }) when referencedSchemas[0].HasAnyProperty() && !inlineSchemas[0].HasAnyProperty() =>
(true, { Length: 1 }, { Length: 1 }, _) when referencedSchemas[0].HasAnyProperty() && !inlineSchemas[0].HasAnyProperty() =>
AddModelDeclarationIfDoesntExist(currentNode, operation, schema, className, shortestNamespace, CreateInheritedModelDeclaration(currentNode, referencedSchemas[0], operation, classNameSuffix, codeNamespace, isRequestBody, string.Empty)),
// too much information but we can merge root + inline schema
(true, { Length: 1 }, { Length: 1 }) when referencedSchemas[0].HasAnyProperty() && inlineSchemas[0].HasAnyProperty() && schema.MergeAllOfSchemaEntries([.. referencedSchemas]) is { } mergedSchema =>
(true, { Length: 1 }, { Length: 1 }, _) when referencedSchemas[0].HasAnyProperty() && inlineSchemas[0].HasAnyProperty() && schema.MergeAllOfSchemaEntries([.. referencedSchemas]) is { } mergedSchema =>
AddModelDeclarationIfDoesntExist(currentNode, operation, mergedSchema, className, shortestNamespace, CreateInheritedModelDeclaration(currentNode, referencedSchemas[0], operation, classNameSuffix, codeNamespace, isRequestBody, string.Empty)),
// none of the allOf entries have properties, it's a grandparent schema
(true, { Length: 1 }, { Length: 1 }) =>
(true, { Length: 1 }, { Length: 1 }, _) =>
AddModelDeclarationIfDoesntExist(currentNode, operation, schema, className, shortestNamespace),
// too many entries, we mush everything together
(_, { Length: > 1 }, { Length: > 1 }) or (_, { Length: 0 or 1 }, { Length: > 1 }) or (_, { Length: > 1 }, { Length: 0 or 1 }) =>
(_, { Length: > 1 }, { Length: > 1 }, _) or (_, { Length: 0 or 1 }, { Length: > 1 }, _) or (_, { Length: > 1 }, { Length: 0 or 1 }, _) =>
AddModelDeclarationIfDoesntExist(currentNode, operation, schema.MergeAllOfSchemaEntries()!, className, shortestNamespace),
// meaningless scenario
(false, { Length: 0 }, { Length: 0 }) =>
throw new InvalidOperationException("the type does not contain any information"),
(false, { Length: 0 }, { Length: 0 }, _) =>
throw new InvalidOperationException($"The type does not contain any information Path: {currentNode.Path}, Reference Id: {referenceId}"),
};
if (codeDeclaration is not CodeClass currentClass) throw new InvalidOperationException("Inheritance is only supported for classes");
if (!currentClass.Documentation.DescriptionAvailable &&
@ -1735,7 +1741,7 @@ public partial class KiotaBuilder
className = $"{unionType.Name}Member{++membersWithNoName}";
var declarationType = new CodeType
{
TypeDefinition = AddModelDeclarationIfDoesntExist(currentNode, operation, currentSchema, className, shortestNamespace),
TypeDefinition = AddModelDeclarationIfDoesntExist(currentNode, operation, currentSchema, className, shortestNamespace, null),
CollectionKind = currentSchema.IsArray() ? CodeTypeBase.CodeTypeCollectionKind.Complex : default
};
if (!unionType.ContainsType(declarationType))
@ -1743,7 +1749,7 @@ public partial class KiotaBuilder
}
return unionType;
}
private CodeTypeBase CreateModelDeclarations(OpenApiUrlTreeNode currentNode, OpenApiSchema schema, OpenApiOperation? operation, CodeElement parentElement, string suffixForInlineSchema, OpenApiResponse? response = default, string typeNameForInlineSchema = "", bool isRequestBody = false)
private CodeTypeBase CreateModelDeclarations(OpenApiUrlTreeNode currentNode, OpenApiSchema schema, OpenApiOperation? operation, CodeElement parentElement, string suffixForInlineSchema, OpenApiResponse? response = default, string typeNameForInlineSchema = "", bool isRequestBody = false, bool isViaDiscriminator = false)
{
var (codeNamespace, responseValue, suffix) = schema.IsReferencedSchema() switch
{
@ -1760,7 +1766,8 @@ public partial class KiotaBuilder
if (schema.IsInherited())
{
return CreateInheritedModelDeclarationAndType(currentNode, schema, operation, suffix, codeNamespace, isRequestBody, typeNameForInlineSchema);
// Pass isViaDiscriminator so that we can handle the special case where this model was referenced by a discriminator and we always want to generate a base class.
return CreateInheritedModelDeclarationAndType(currentNode, schema, operation, suffix, codeNamespace, isRequestBody, typeNameForInlineSchema, isViaDiscriminator);
}
if (schema.IsIntersection() && schema.MergeIntersectionSchemaEntries() is OpenApiSchema mergedSchema)
@ -1964,6 +1971,7 @@ public partial class KiotaBuilder
}
}
// Recurse into the discriminator & generate its referenced types
var mappings = GetDiscriminatorMappings(currentNode, schema, currentNamespace, newClass, currentOperation)
.Where(x => x.Value is { TypeDefinition: CodeClass definition } &&
definition.DerivesFrom(newClass)); // only the mappings that derive from the current class
@ -1973,6 +1981,7 @@ public partial class KiotaBuilder
}
private IEnumerable<KeyValuePair<string, CodeType>> GetDiscriminatorMappings(OpenApiUrlTreeNode currentNode, OpenApiSchema schema, CodeNamespace currentNamespace, CodeClass? baseClass, OpenApiOperation? currentOperation)
{
// Generate types that this discriminator references
return schema.GetDiscriminatorMappings(inheritanceIndex)
.Union(baseClass is not null && modelsNamespace is not null &&
(openApiDocument?.Components?.Schemas?.TryGetValue(baseClass.GetComponentSchemaName(modelsNamespace), out var componentSchema) ?? false) ?
@ -2160,7 +2169,8 @@ public partial class KiotaBuilder
logger.LogWarning("Discriminator {ComponentKey} not found in the OpenAPI document.", componentKey);
return null;
}
if (CreateModelDeclarations(currentNode, discriminatorSchema, currentOperation, GetShortestNamespace(currentNamespace, discriminatorSchema), string.Empty) is not CodeType result)
// Call CreateModelDeclarations with isViaDiscriminator=true. This is for a special case where we always generate a base class when types are referenced via a oneOf discriminator.
if (CreateModelDeclarations(currentNode, discriminatorSchema, currentOperation, GetShortestNamespace(currentNamespace, discriminatorSchema), string.Empty, null, string.Empty, false, true) is not CodeType result)
{
logger.LogWarning("Discriminator {ComponentKey} is not a valid model and points to a union type.", componentKey);
return null;

Просмотреть файл

@ -25,39 +25,16 @@ public class OpenApiPluginWalker : OpenApiVisitorBase
}
}
/// <summary>
/// Visits the operations.
/// Visits the OpenAPI response.
/// </summary>
public override void Visit(IDictionary<OperationType, OpenApiOperation> operations)
public override void Visit(OpenApiResponses response)
{
ArgumentNullException.ThrowIfNull(operations);
ArgumentNullException.ThrowIfNull(response);
// Cleanup responses for the operation
foreach (var operation in operations.Values)
// Ensure description strings are not empty strings.
foreach (var responseItem in response.Where(static res => string.IsNullOrEmpty(res.Value.Description)))
{
var responseDescription = operation.Responses.Values.Select(static response => response.Description)
.FirstOrDefault(static desc => !string.IsNullOrEmpty(desc)) ?? "Api Response";
operation.Responses = new OpenApiResponses()
{
{
"2XX",new OpenApiResponse
{
Description = responseDescription,
Content = new Dictionary<string, OpenApiMediaType>
{
{
"text/plain", new OpenApiMediaType
{
Schema = new OpenApiSchema
{
Type = "string"
}
}
}
}
}
}
};
responseItem.Value.Description = "Api Response";
}
}
}

Просмотреть файл

@ -43,7 +43,7 @@ public class CodeMethodWriter : BaseElementWriter<CodeMethod, PythonConventionSe
foreach (var parameter in codeElement.Parameters.Where(static x => !x.Optional).OrderBy(static x => x.Name))
{
var parameterName = parameter.Name;
writer.StartBlock($"if not {parameterName}:");
writer.StartBlock($"if {parameterName} is None:");
writer.WriteLine($"raise TypeError(\"{parameterName} cannot be null.\")");
writer.DecreaseIndent();
}

Просмотреть файл

@ -15,7 +15,7 @@
<Title>Microsoft.OpenApi.Kiota</Title>
<PackageId>Microsoft.OpenApi.Kiota</PackageId>
<PackageOutputPath>./nupkg</PackageOutputPath>
<VersionPrefix>1.17.0</VersionPrefix>
<VersionPrefix>1.18.0</VersionPrefix>
<VersionSuffix>$(VersionSuffix)</VersionSuffix>
<PackageReleaseNotes>
https://github.com/microsoft/kiota/releases

Просмотреть файл

@ -7840,6 +7840,80 @@ components:
Assert.Single(groupClass.Properties.Where(static x => x.Name.Equals("facetprop1", StringComparison.OrdinalIgnoreCase)));
Assert.Single(groupClass.Properties.Where(static x => x.Name.Equals("facetprop2", StringComparison.OrdinalIgnoreCase)));
}
[Fact]
public async Task InheritanceWithAllOfBaseClassNoAdditionalProperties()
{
var tempFilePath = Path.Combine(Path.GetTempPath(), Path.GetTempFileName());
await using var fs = await GetDocumentStream(@"openapi: 3.0.1
info:
title: OData Service for namespace microsoft.graph
description: This OData service is located at https://graph.microsoft.com/v1.0
version: 1.0.1
servers:
- url: https://graph.microsoft.com/v1.0
paths:
/directoryObject:
get:
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/microsoft.graph.directoryResult'
components:
schemas:
microsoft.graph.directoryResult:
required: ['fstype']
oneOf:
- $ref: '#/components/schemas/microsoft.graph.file'
- $ref: '#/components/schemas/microsoft.graph.folder'
- $ref: '#/components/schemas/microsoft.graph.link'
properties:
fstype:
type: string
discriminator:
propertyName: 'fstype'
mapping:
'file': '#/components/schemas/microsoft.graph.file'
'folder': '#/components/schemas/microsoft.graph.folder'
'link': '#/components/schemas/microsoft.graph.link'
microsoft.graph.baseDirectoryObject:
properties:
path:
type: string
microsoft.graph.file:
allOf:
- '$ref': '#/components/schemas/microsoft.graph.baseDirectoryObject'
microsoft.graph.folder:
allOf:
- '$ref': '#/components/schemas/microsoft.graph.baseDirectoryObject'
microsoft.graph.link:
allOf:
- '$ref': '#/components/schemas/microsoft.graph.baseDirectoryObject'
properties:
target:
type: string");
var mockLogger = new Mock<ILogger<KiotaBuilder>>();
var builder = new KiotaBuilder(mockLogger.Object, new GenerationConfiguration { ClientClassName = "Graph", OpenAPIFilePath = tempFilePath }, _httpClient);
var document = await builder.CreateOpenApiDocumentAsync(fs);
var node = builder.CreateUriSpace(document);
var codeModel = builder.CreateSourceModel(node);
// Verify that all three classes referenced by the discriminator inherit from baseDirectoryObject
var folder = codeModel.FindChildByName<CodeClass>("Folder");
Assert.NotNull(folder.StartBlock.Inherits);
Assert.Equal("baseDirectoryObject", folder.StartBlock.Inherits.Name);
var file = codeModel.FindChildByName<CodeClass>("File");
Assert.NotNull(file.StartBlock.Inherits);
Assert.Equal("baseDirectoryObject", file.StartBlock.Inherits.Name);
var link = codeModel.FindChildByName<CodeClass>("Link");
Assert.NotNull(link.StartBlock.Inherits);
Assert.Equal("baseDirectoryObject", link.StartBlock.Inherits.Name);
}
[Fact]
public async Task NestedIntersectionTypeAllOf()
{

Просмотреть файл

@ -712,7 +712,7 @@ paths:
format: int32
responses:
'200':
description: test
description:
'500':
description: api error response
components:
@ -789,11 +789,11 @@ components:
Assert.Empty(resultDocument.Components.Schemas);// no schema is referenced. so ensure they are all removed
Assert.Empty(resultDocument.Extensions); // no extension at root (unsupported extension is removed)
Assert.Equal(2, resultDocument.Paths.Count); // document has only two paths
Assert.Single(resultDocument.Paths["/test"].Operations[OperationType.Get].Responses); // other responses are removed from the document
Assert.NotEmpty(resultDocument.Paths["/test"].Operations[OperationType.Get].Responses["2XX"].Description); // response description string is not empty
Assert.Equal(originalDocument.Paths["/test"].Operations[OperationType.Get].Responses.Count, resultDocument.Paths["/test"].Operations[OperationType.Get].Responses.Count); // Responses are still intact.
Assert.NotEmpty(resultDocument.Paths["/test"].Operations[OperationType.Get].Responses["200"].Description); // response description string is not empty
Assert.Empty(resultDocument.Paths["/test"].Operations[OperationType.Get].Extensions); // NO UNsupported extension
Assert.Single(resultDocument.Paths["/test/{id}"].Operations[OperationType.Get].Responses); // 2 responses originally
Assert.NotEmpty(resultDocument.Paths["/test/{id}"].Operations[OperationType.Get].Responses["2XX"].Description);// response description string is not empty
Assert.Equal(originalDocument.Paths["/test/{id}"].Operations[OperationType.Get].Responses.Count, resultDocument.Paths["/test/{id}"].Operations[OperationType.Get].Responses.Count); // Responses are still intact.
Assert.NotEmpty(resultDocument.Paths["/test/{id}"].Operations[OperationType.Get].Responses["200"].Description);// response description string is not empty
Assert.Single(resultDocument.Paths["/test/{id}"].Operations[OperationType.Get].Extensions); // 1 supported extension still present in operation
}
}

Просмотреть файл

@ -2086,7 +2086,7 @@ public sealed class CodeMethodWriterTests : IDisposable
});
writer.Write(method);
var result = tw.ToString();
Assert.Contains("if not original_name:", result);
Assert.Contains("if original_name is None:", result);
Assert.Contains("if original_name == \"select\":", result);
Assert.Contains("return \"%24select\"", result);
Assert.Contains("if original_name == \"expand\":", result);
@ -2124,7 +2124,7 @@ public sealed class CodeMethodWriterTests : IDisposable
});
writer.Write(method);
var result = tw.ToString();
Assert.Contains("if not original_name:", result);
Assert.Contains("if original_name is None:", result);
Assert.Contains("if original_name == \"start_date_time\":", result);
Assert.Contains("return \"startDateTime\"", result);
Assert.Contains("return original_name", result);

142
vscode/microsoft-kiota/package-lock.json сгенерированный
Просмотреть файл

@ -16,17 +16,17 @@
"vscode-jsonrpc": "^8.2.1"
},
"devDependencies": {
"@stylistic/eslint-plugin-ts": "^2.6.1",
"@stylistic/eslint-plugin-ts": "^2.6.2",
"@types/adm-zip": "^0.5.5",
"@types/mocha": "^10.0.7",
"@types/node": "22.x",
"@types/vscode": "^1.92.0",
"@typescript-eslint/eslint-plugin": "^8.0.1",
"@typescript-eslint/parser": "^8.0.1",
"@typescript-eslint/eslint-plugin": "^8.1.0",
"@typescript-eslint/parser": "^8.1.0",
"@vscode/test-electron": "^2.4.1",
"eslint": "^9.8.0",
"eslint": "^9.9.0",
"glob": "^11.0.0",
"mocha": "^10.7.0",
"mocha": "^10.7.3",
"ts-loader": "^9.5.1",
"typescript": "^5.5.4",
"webpack": "^5.93.0",
@ -116,9 +116,9 @@
}
},
"node_modules/@eslint/js": {
"version": "9.8.0",
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.8.0.tgz",
"integrity": "sha512-MfluB7EUfxXtv3i/++oh89uzAr4PDI4nn201hsp+qaXqsjAWzinlZEHEfPgAX4doIlKvPG/i0A9dpKxOLII8yA==",
"version": "9.9.0",
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.9.0.tgz",
"integrity": "sha512-hhetes6ZHP3BlXLxmd8K2SNgkhNSi+UcecbnwWKwpP7kyi/uC75DJ1lOOBO3xrC4jyojtGE3YxKZPHfk4yrgug==",
"dev": true,
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@ -437,9 +437,9 @@
}
},
"node_modules/@stylistic/eslint-plugin-js": {
"version": "2.6.1",
"resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-js/-/eslint-plugin-js-2.6.1.tgz",
"integrity": "sha512-iLOiVzcvqzDGD9U0EuVOX680v+XOPiPAjkxWj+Q6iV2GLOM5NB27tKVOpJY7AzBhidwpRbaLTgg3T4UzYx09jw==",
"version": "2.6.2",
"resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-js/-/eslint-plugin-js-2.6.2.tgz",
"integrity": "sha512-wCr/kVctAPayMU3pcOI1MKR7MoKIh6VKZU89lPklAqtJoxT+Em6RueiiARbpznUYG5eg3LymiU+aMD+aIZXdqA==",
"dev": true,
"dependencies": {
"@types/eslint": "^9.6.0",
@ -467,12 +467,12 @@
}
},
"node_modules/@stylistic/eslint-plugin-ts": {
"version": "2.6.1",
"resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-ts/-/eslint-plugin-ts-2.6.1.tgz",
"integrity": "sha512-Mxl1VMorEG1Hc6oBYPD0+KIJOWkjEF1R0liL7wWgKfwpqOkgmnh5lVdZBrYyfRKOE4RlGcwEFTNai1IW6orgVg==",
"version": "2.6.2",
"resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-ts/-/eslint-plugin-ts-2.6.2.tgz",
"integrity": "sha512-6OEN3VtUNxjgOvWPavnC10MByr1H4zsgwNND3rQXr5lDFv93MLUnTsH+/SH15OkuqdyJgrQILI6b9lYecb1vIg==",
"dev": true,
"dependencies": {
"@stylistic/eslint-plugin-js": "2.6.1",
"@stylistic/eslint-plugin-js": "2.6.2",
"@types/eslint": "^9.6.0",
"@typescript-eslint/utils": "^8.0.0"
},
@ -547,9 +547,9 @@
"dev": true
},
"node_modules/@types/node": {
"version": "22.1.0",
"resolved": "https://registry.npmjs.org/@types/node/-/node-22.1.0.tgz",
"integrity": "sha512-AOmuRF0R2/5j1knA3c6G3HOk523Ga+l+ZXltX8SF1+5oqcXijjfTd8fY3XRZqSihEu9XhtQnKYLmkFaoxgsJHw==",
"version": "22.2.0",
"resolved": "https://registry.npmjs.org/@types/node/-/node-22.2.0.tgz",
"integrity": "sha512-bm6EG6/pCpkxDf/0gDNDdtDILMOHgaQBVOJGdwsqClnxA3xL6jtMv76rLBc006RVMWbmaf0xbmom4Z/5o2nRkQ==",
"dev": true,
"dependencies": {
"undici-types": "~6.13.0"
@ -562,16 +562,16 @@
"dev": true
},
"node_modules/@typescript-eslint/eslint-plugin": {
"version": "8.0.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.0.1.tgz",
"integrity": "sha512-5g3Y7GDFsJAnY4Yhvk8sZtFfV6YNF2caLzjrRPUBzewjPCaj0yokePB4LJSobyCzGMzjZZYFbwuzbfDHlimXbQ==",
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.1.0.tgz",
"integrity": "sha512-LlNBaHFCEBPHyD4pZXb35mzjGkuGKXU5eeCA1SxvHfiRES0E82dOounfVpL4DCqYvJEKab0bZIA0gCRpdLKkCw==",
"dev": true,
"dependencies": {
"@eslint-community/regexpp": "^4.10.0",
"@typescript-eslint/scope-manager": "8.0.1",
"@typescript-eslint/type-utils": "8.0.1",
"@typescript-eslint/utils": "8.0.1",
"@typescript-eslint/visitor-keys": "8.0.1",
"@typescript-eslint/scope-manager": "8.1.0",
"@typescript-eslint/type-utils": "8.1.0",
"@typescript-eslint/utils": "8.1.0",
"@typescript-eslint/visitor-keys": "8.1.0",
"graphemer": "^1.4.0",
"ignore": "^5.3.1",
"natural-compare": "^1.4.0",
@ -595,15 +595,15 @@
}
},
"node_modules/@typescript-eslint/parser": {
"version": "8.0.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.0.1.tgz",
"integrity": "sha512-5IgYJ9EO/12pOUwiBKFkpU7rS3IU21mtXzB81TNwq2xEybcmAZrE9qwDtsb5uQd9aVO9o0fdabFyAmKveXyujg==",
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.1.0.tgz",
"integrity": "sha512-U7iTAtGgJk6DPX9wIWPPOlt1gO57097G06gIcl0N0EEnNw8RGD62c+2/DiP/zL7KrkqnnqF7gtFGR7YgzPllTA==",
"dev": true,
"dependencies": {
"@typescript-eslint/scope-manager": "8.0.1",
"@typescript-eslint/types": "8.0.1",
"@typescript-eslint/typescript-estree": "8.0.1",
"@typescript-eslint/visitor-keys": "8.0.1",
"@typescript-eslint/scope-manager": "8.1.0",
"@typescript-eslint/types": "8.1.0",
"@typescript-eslint/typescript-estree": "8.1.0",
"@typescript-eslint/visitor-keys": "8.1.0",
"debug": "^4.3.4"
},
"engines": {
@ -623,13 +623,13 @@
}
},
"node_modules/@typescript-eslint/scope-manager": {
"version": "8.0.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.0.1.tgz",
"integrity": "sha512-NpixInP5dm7uukMiRyiHjRKkom5RIFA4dfiHvalanD2cF0CLUuQqxfg8PtEUo9yqJI2bBhF+pcSafqnG3UBnRQ==",
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.1.0.tgz",
"integrity": "sha512-DsuOZQji687sQUjm4N6c9xABJa7fjvfIdjqpSIIVOgaENf2jFXiM9hIBZOL3hb6DHK9Nvd2d7zZnoMLf9e0OtQ==",
"dev": true,
"dependencies": {
"@typescript-eslint/types": "8.0.1",
"@typescript-eslint/visitor-keys": "8.0.1"
"@typescript-eslint/types": "8.1.0",
"@typescript-eslint/visitor-keys": "8.1.0"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@ -640,13 +640,13 @@
}
},
"node_modules/@typescript-eslint/type-utils": {
"version": "8.0.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.0.1.tgz",
"integrity": "sha512-+/UT25MWvXeDX9YaHv1IS6KI1fiuTto43WprE7pgSMswHbn1Jm9GEM4Txp+X74ifOWV8emu2AWcbLhpJAvD5Ng==",
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.1.0.tgz",
"integrity": "sha512-oLYvTxljVvsMnldfl6jIKxTaU7ok7km0KDrwOt1RHYu6nxlhN3TIx8k5Q52L6wR33nOwDgM7VwW1fT1qMNfFIA==",
"dev": true,
"dependencies": {
"@typescript-eslint/typescript-estree": "8.0.1",
"@typescript-eslint/utils": "8.0.1",
"@typescript-eslint/typescript-estree": "8.1.0",
"@typescript-eslint/utils": "8.1.0",
"debug": "^4.3.4",
"ts-api-utils": "^1.3.0"
},
@ -664,9 +664,9 @@
}
},
"node_modules/@typescript-eslint/types": {
"version": "8.0.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.0.1.tgz",
"integrity": "sha512-PpqTVT3yCA/bIgJ12czBuE3iBlM3g4inRSC5J0QOdQFAn07TYrYEQBBKgXH1lQpglup+Zy6c1fxuwTk4MTNKIw==",
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.1.0.tgz",
"integrity": "sha512-q2/Bxa0gMOu/2/AKALI0tCKbG2zppccnRIRCW6BaaTlRVaPKft4oVYPp7WOPpcnsgbr0qROAVCVKCvIQ0tbWog==",
"dev": true,
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@ -677,13 +677,13 @@
}
},
"node_modules/@typescript-eslint/typescript-estree": {
"version": "8.0.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.0.1.tgz",
"integrity": "sha512-8V9hriRvZQXPWU3bbiUV4Epo7EvgM6RTs+sUmxp5G//dBGy402S7Fx0W0QkB2fb4obCF8SInoUzvTYtc3bkb5w==",
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.1.0.tgz",
"integrity": "sha512-NTHhmufocEkMiAord/g++gWKb0Fr34e9AExBRdqgWdVBaKoei2dIyYKD9Q0jBnvfbEA5zaf8plUFMUH6kQ0vGg==",
"dev": true,
"dependencies": {
"@typescript-eslint/types": "8.0.1",
"@typescript-eslint/visitor-keys": "8.0.1",
"@typescript-eslint/types": "8.1.0",
"@typescript-eslint/visitor-keys": "8.1.0",
"debug": "^4.3.4",
"globby": "^11.1.0",
"is-glob": "^4.0.3",
@ -729,15 +729,15 @@
}
},
"node_modules/@typescript-eslint/utils": {
"version": "8.0.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.0.1.tgz",
"integrity": "sha512-CBFR0G0sCt0+fzfnKaciu9IBsKvEKYwN9UZ+eeogK1fYHg4Qxk1yf/wLQkLXlq8wbU2dFlgAesxt8Gi76E8RTA==",
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.1.0.tgz",
"integrity": "sha512-ypRueFNKTIFwqPeJBfeIpxZ895PQhNyH4YID6js0UoBImWYoSjBsahUn9KMiJXh94uOjVBgHD9AmkyPsPnFwJA==",
"dev": true,
"dependencies": {
"@eslint-community/eslint-utils": "^4.4.0",
"@typescript-eslint/scope-manager": "8.0.1",
"@typescript-eslint/types": "8.0.1",
"@typescript-eslint/typescript-estree": "8.0.1"
"@typescript-eslint/scope-manager": "8.1.0",
"@typescript-eslint/types": "8.1.0",
"@typescript-eslint/typescript-estree": "8.1.0"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@ -751,12 +751,12 @@
}
},
"node_modules/@typescript-eslint/visitor-keys": {
"version": "8.0.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.0.1.tgz",
"integrity": "sha512-W5E+o0UfUcK5EgchLZsyVWqARmsM7v54/qEq6PY3YI5arkgmCzHiuk0zKSJJbm71V0xdRna4BGomkCTXz2/LkQ==",
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.1.0.tgz",
"integrity": "sha512-ba0lNI19awqZ5ZNKh6wCModMwoZs457StTebQ0q1NP58zSi2F6MOZRXwfKZy+jB78JNJ/WH8GSh2IQNzXX8Nag==",
"dev": true,
"dependencies": {
"@typescript-eslint/types": "8.0.1",
"@typescript-eslint/types": "8.1.0",
"eslint-visitor-keys": "^3.4.3"
},
"engines": {
@ -1813,16 +1813,16 @@
}
},
"node_modules/eslint": {
"version": "9.8.0",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-9.8.0.tgz",
"integrity": "sha512-K8qnZ/QJzT2dLKdZJVX6W4XOwBzutMYmt0lqUS+JdXgd+HTYFlonFgkJ8s44d/zMPPCnOOk0kMWCApCPhiOy9A==",
"version": "9.9.0",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-9.9.0.tgz",
"integrity": "sha512-JfiKJrbx0506OEerjK2Y1QlldtBxkAlLxT5OEcRF8uaQ86noDe2k31Vw9rnSWv+MXZHj7OOUV/dA0AhdLFcyvA==",
"dev": true,
"dependencies": {
"@eslint-community/eslint-utils": "^4.2.0",
"@eslint-community/regexpp": "^4.11.0",
"@eslint/config-array": "^0.17.1",
"@eslint/eslintrc": "^3.1.0",
"@eslint/js": "9.8.0",
"@eslint/js": "9.9.0",
"@humanwhocodes/module-importer": "^1.0.1",
"@humanwhocodes/retry": "^0.3.0",
"@nodelib/fs.walk": "^1.2.8",
@ -1861,6 +1861,14 @@
},
"funding": {
"url": "https://eslint.org/donate"
},
"peerDependencies": {
"jiti": "*"
},
"peerDependenciesMeta": {
"jiti": {
"optional": true
}
}
},
"node_modules/eslint-scope": {
@ -3043,9 +3051,9 @@
}
},
"node_modules/mocha": {
"version": "10.7.0",
"resolved": "https://registry.npmjs.org/mocha/-/mocha-10.7.0.tgz",
"integrity": "sha512-v8/rBWr2VO5YkspYINnvu81inSz2y3ODJrhO175/Exzor1RcEZZkizgE2A+w/CAXXoESS8Kys5E62dOHGHzULA==",
"version": "10.7.3",
"resolved": "https://registry.npmjs.org/mocha/-/mocha-10.7.3.tgz",
"integrity": "sha512-uQWxAu44wwiACGqjbPYmjo7Lg8sFrS3dQe7PP2FQI+woptP4vZXSMcfMyFL/e1yFEeEpV4RtyTpZROOKmxis+A==",
"dev": true,
"dependencies": {
"ansi-colors": "^4.1.3",

Просмотреть файл

@ -423,17 +423,17 @@
"test": "node ./out/test/runTest.js"
},
"devDependencies": {
"@stylistic/eslint-plugin-ts": "^2.6.1",
"@stylistic/eslint-plugin-ts": "^2.6.2",
"@types/adm-zip": "^0.5.5",
"@types/mocha": "^10.0.7",
"@types/node": "22.x",
"@types/vscode": "^1.92.0",
"@typescript-eslint/eslint-plugin": "^8.0.1",
"@typescript-eslint/parser": "^8.0.1",
"@typescript-eslint/eslint-plugin": "^8.1.0",
"@typescript-eslint/parser": "^8.1.0",
"@vscode/test-electron": "^2.4.1",
"eslint": "^9.8.0",
"eslint": "^9.9.0",
"glob": "^11.0.0",
"mocha": "^10.7.0",
"mocha": "^10.7.3",
"ts-loader": "^9.5.1",
"typescript": "^5.5.4",
"webpack": "^5.93.0",