Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
327 changes: 166 additions & 161 deletions common/config/rush/pnpm-lock.yaml

Large diffs are not rendered by default.

22 changes: 11 additions & 11 deletions packages/typespec-powershell/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -44,17 +44,17 @@
"vitest": "1.6.1"
},
"peerDependencies": {
"@azure-tools/typespec-azure-core": ">=0.59.0 <1.0.0",
"@azure-tools/typespec-client-generator-core": ">=0.59.0 <1.0.0",
"@typespec/compiler": ">=1.3.0 <2.0.0",
"@typespec/http": ">=1.3.0 <2.0.0",
"@typespec/streams": ">=0.72.1 <1.0.0",
"@typespec/xml": ">=0.72.1 <1.0.0",
"@typespec/rest": ">=0.72.1 <1.0.0",
"@typespec/versioning": ">=0.72.1 <1.0.0",
"@typespec/openapi": ">=1.3.0 <2.0.0",
"@azure-tools/typespec-azure-resource-manager": ">=0.59.0 <1.0.0",
"@azure-tools/typespec-azure-rulesets": ">=0.59.0 <1.0.0"
"@azure-tools/typespec-azure-core": ">=0.61.0 <1.0.0",
"@azure-tools/typespec-client-generator-core": ">=0.61.0 <1.0.0",
"@typespec/compiler": ">=1.5.0 <2.0.0",
"@typespec/http": ">=1.5.0 <2.0.0",
"@typespec/streams": ">=0.75.0 <1.0.0",
"@typespec/xml": ">=0.75.0 <1.0.0",
"@typespec/rest": ">=0.75.0 <1.0.0",
"@typespec/versioning": ">=0.75.0 <1.0.0",
"@typespec/openapi": ">=1.5.0 <2.0.0",
"@azure-tools/typespec-azure-resource-manager": ">=0.61.0 <1.0.0",
"@azure-tools/typespec-azure-rulesets": ">=0.61.0 <1.0.0"
},
"scripts": {
"build": "tsc",
Expand Down
60 changes: 2 additions & 58 deletions packages/typespec-powershell/src/utils/modelUtils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -60,8 +60,7 @@ import {
createMetadataInfo,
Visibility
} from "@typespec/http";
import { getPagedResult, getUnionAsEnum } from "@azure-tools/typespec-azure-core";
import { extractPagedMetadataNested } from "./operationUtil.js";
import { getUnionAsEnum } from "@azure-tools/typespec-azure-core";
import { pascalCase, deconstruct } from "@azure-tools/codegen";
import {
getDefaultApiVersion,
Expand Down Expand Up @@ -780,31 +779,7 @@ function getSchemaForModel(
// let name = dpgContext.rlcOptions?.enableModelNamespace
// ? fullNamespaceName
// : model.name;
let name = model.name;
if (
!overridedModelName &&
model.templateMapper &&
model.templateMapper.args &&
model.templateMapper.args.length > 0 &&
getPagedResult(program, model)
) {
const templateTypes = model.templateMapper.args.filter((it) =>
isType(it)
) as Type[];
name =
templateTypes
.map((it) => {
switch (it.kind) {
case "Model":
return it.name;
case "String":
return it.value;
default:
return "";
}
})
.join("") + "List";
}
const name = model.name;

const modelSchema = new ObjectSchema(overridedModelName ?? name, getDoc(program, model) || "");
// normalized the output name
Expand Down Expand Up @@ -844,37 +819,6 @@ function getSchemaForModel(
// modelSchema.fromCore = true;
// }

if (getPagedResult(program, model)) {
const paged = extractPagedMetadataNested(program, model);
if (paged && paged.itemsProperty) {
const items = paged.itemsProperty as unknown as Model;
if (items && items.templateMapper && items.templateMapper.args) {
const templateTypes = items.templateMapper.args.filter((it) =>
isType(it)
) as Type[];
const templateName = templateTypes
?.map((it) => {
switch (it.kind) {
case "Model":
return it.name;
case "String":
return it.value;
default:
return "";
}
})
.join("");
// ToDo by xiaogang
// if (
// paged.itemsProperty.name === "value" &&
// paged.nextLinkProperty?.name === "nextLink"
// ) {
// modelSchema.alias = `Paged<${templateName}>`;
// modelSchema.outputAlias = `Paged<${templateName}Output>`;
// }
}
}
}
modelSchema.properties = [];

// getSchemaOrRef on all children to push them into components.schemas
Expand Down
58 changes: 1 addition & 57 deletions packages/typespec-powershell/src/utils/operationUtil.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,7 @@ import {
getHttpOperation
} from "@typespec/http";
import {
getLroMetadata,
getPagedResult,
PagedResultMetadata
getLroMetadata
} from "@azure-tools/typespec-azure-core";
import {
getWireName,
Expand Down Expand Up @@ -408,36 +406,6 @@ export function hasPagingOperations(
return false;
}

export function extractPagedMetadataNested(
program: Program,
type: Model
): PagedResultMetadata | undefined {
// This only works for `is Page<T>` not `extends Page<T>`.
let paged = getPagedResult(program, type);
if (paged) {
return paged;
}
if (type.baseModel) {
paged = getPagedResult(program, type.baseModel);
}
if (paged) {
return paged;
}
const templateArguments = type.templateMapper?.args;
if (templateArguments) {
for (const argument of templateArguments) {
const modelArgument = argument as Model;
if (modelArgument) {
paged = extractPagedMetadataNested(program, modelArgument);
if (paged) {
return paged;
}
}
}
}
return paged;
}

export function getSpecialSerializeInfo(
paramType: string,
paramFormat: string
Expand Down Expand Up @@ -554,17 +522,6 @@ export function isIgnoredHeaderParam(param: HttpOperationParameter) {
);
}

export function parseNextLinkName(
paged: PagedResultMetadata
): string | undefined {
return paged.nextLinkProperty?.name;
}

export function parseItemName(paged: PagedResultMetadata): string | undefined {
// TODO: support the nested item names
return (paged.itemsSegments ?? [])[0];
}

export interface PageDetails {
nextLinkNames: string[];
itemNames: string[];
Expand Down Expand Up @@ -605,19 +562,6 @@ export function extractPageDetails(
nextLinkNames: [nextLinkNames],
itemNames: [itemNames]
};
} else {
// TODO: remember to remove this once Azure Paging is removed.
for (const response of operation.responses) {
const paged = extractPagedMetadataNested(program, response.type as Model);
if (paged) {
const nextLinkName = parseNextLinkName(paged) ?? "nextLink";
const itemName = parseItemName(paged) ?? "value";
return {
nextLinkNames: [nextLinkName],
itemNames: [itemName]
};
}
}
}
return undefined;
}
57 changes: 1 addition & 56 deletions packages/typespec-powershell/src/utils/pageUtils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,7 @@ import {
import { ignoreDiagnostics, Model, Program, Type } from "@typespec/compiler";
import { getHttpOperation, HttpOperation } from "@typespec/http";
import {
hasPagingOperations,
extractPagedMetadataNested,
parseNextLinkName,
parseItemName
hasPagingOperations
} from "../utils/operationUtil.js";
import { listOperations } from "./clientUtils.js";

Expand All @@ -23,56 +20,4 @@ export function getPageable(
return program.stateMap(pageableOperationsKey).get(entity);
}

export function extractPageDetailFromCore(
program: Program,
client: SdkClient,
dpgContext: SdkContext
) {
if (!hasPagingOperations(program, client, dpgContext)) {
return;
}
const nextLinks = new Set<string>();
const itemNames = new Set<string>();
// Add default values
nextLinks.add("nextLink");
itemNames.add("value");
const clientOperations = listOperations(client);
for (const clientOp of clientOperations) {
const route = ignoreDiagnostics(getHttpOperation(program, clientOp));
// ignore overload base operation
if (route.overloads && route.overloads?.length > 0) {
continue;
}
extractPageDetailFromCoreForRoute(route);
}

function extractPageDetailFromCoreForRoute(route: HttpOperation) {
for (const response of route.responses) {
const paged = extractPagedMetadataNested(program, response.type as Model);
if (paged) {
const nextLinkName = parseNextLinkName(paged);
if (nextLinkName) {
nextLinks.add(nextLinkName);
}
const itemName = parseItemName(paged);
if (itemName) {
itemNames.add(itemName);
}
// Once we find paged metadata, we don't need to processs any further.
continue;
}
}
}
// If there are more than one options for nextLink and item names we need to generate a
// more complex pagination helper.
const isComplexPaging = nextLinks.size > 1 || itemNames.size > 1;
return {
hasPaging: true,
pageDetails: {
itemNames: [...itemNames],
nextLinkNames: [...nextLinks],
isComplexPaging
}
};
}

Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,5 @@ enum Versions {
/**
* The 2024-06-27 API version.
*/
@useDependency(Azure.ResourceManager.Versions.v1_0_Preview_1)
@useDependency(Azure.Core.Versions.v1_0_Preview_1)
v2024_06_27: "2024-06-27",
}
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ model EvidenceResource extends Azure.ResourceManager.Foundations.ProxyResource {
* Evidence property.
*/
#suppress "deprecated" "Legacy flatten"
@Azure.ClientGenerator.Core.flattenProperty
@Azure.ClientGenerator.Core.Legacy.flattenProperty
properties: EvidenceProperties;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ model ReportResource extends Azure.ResourceManager.Foundations.ProxyResource {
* Report property.
*/
#suppress "deprecated" "Legacy flatten"
@Azure.ClientGenerator.Core.flattenProperty
@Azure.ClientGenerator.Core.Legacy.flattenProperty
properties: ReportProperties;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ model ScopingConfigurationResource
* ScopingConfiguration property.
*/
#suppress "deprecated" "Legacy flatten"
@Azure.ClientGenerator.Core.flattenProperty
@Azure.ClientGenerator.Core.Legacy.flattenProperty
properties: ScopingConfigurationProperties;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ model SnapshotResource extends Azure.ResourceManager.Foundations.ProxyResource {
* Snapshot's property.
*/
#suppress "deprecated" "Legacy flatten"
@Azure.ClientGenerator.Core.flattenProperty
@Azure.ClientGenerator.Core.Legacy.flattenProperty
properties?: SnapshotProperties;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ model WebhookResource extends Azure.ResourceManager.Foundations.ProxyResource {
* Webhook property.
*/
#suppress "deprecated" "Legacy flatten"
@Azure.ClientGenerator.Core.flattenProperty
@Azure.ClientGenerator.Core.Legacy.flattenProperty
properties: WebhookProperties; // Replace 'WebhookProperties' with the actual type
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,17 +13,14 @@ namespace LiftrBase.Data;
@doc("Supported versions for LiftrBase.Data resource model")
enum Versions {
@doc("Dependent on Azure.ResourceManager.Versions.v1_0_Preview_1 and LiftrBase.Versions.v1_preview")
@useDependency(Azure.ResourceManager.Versions.v1_0_Preview_1)
@useDependency(LiftrBase.Versions.v1_preview)
v1_preview: "2023-06-01-preview",

@doc("Dependent on Azure.ResourceManager.Versions.v1_0_Preview_1 and LiftrBase.Versions.v2024_08_27_preview")
@useDependency(Azure.ResourceManager.Versions.v1_0_Preview_1)
@useDependency(LiftrBase.Versions.v2024_08_27_preview)
v2024_08_27_preview: "2024-08-27-preview",

@doc("Dependent on Azure.ResourceManager.Versions.v1_0_Preview_1 and LiftrBase.Versions.v2024_08_27")
@useDependency(Azure.ResourceManager.Versions.v1_0_Preview_1)
@useDependency(LiftrBase.Versions.v2024_08_27)
v2024_08_27: "2024-08-27",
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,15 +10,12 @@ namespace LiftrBase;
@doc("Supported versions for LiftrBase resource model")
enum Versions {
@doc("Dependent on Azure.ResourceManager.Versions.v1_0_Preview_1")
@useDependency(Azure.ResourceManager.Versions.v1_0_Preview_1)
v1_preview: "2023-06-01-preview",

@doc("Dependent on Azure.ResourceManager.Versions.v1_0_Preview_1")
@useDependency(Azure.ResourceManager.Versions.v1_0_Preview_1)
v2024_08_27_preview: "2024-08-27-preview",

@doc("Dependent on Azure.ResourceManager.Versions.v1_0_Preview_1")
@useDependency(Azure.ResourceManager.Versions.v1_0_Preview_1)
v2024_08_27: "2024-08-27",
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,25 +20,21 @@ namespace Astronomer.Astro;
@doc("Supported API versions for the Astronomer.Astro resource provider.")
enum Versions {
@doc("Dependent on Azure.ResourceManager.Versions.v1_0_Preview_1, LiftrBase.Versions.v1_preview, LiftrBase.Data.Versions.v1_preview")
@useDependency(Azure.ResourceManager.Versions.v1_0_Preview_1)
@useDependency(LiftrBase.Versions.v1_preview)
@useDependency(LiftrBase.Data.Versions.v1_preview)
v1_preview: "2023-08-01-preview",

@doc("Dependent on Azure.ResourceManager.Versions.v1_0_Preview_1, LiftrBase.Versions.v1_preview, LiftrBase.Data.Versions.v1_preview")
@useDependency(Azure.ResourceManager.Versions.v1_0_Preview_1)
@useDependency(LiftrBase.Versions.v1_preview)
@useDependency(LiftrBase.Data.Versions.v1_preview)
v1: "2023-08-01",

@doc("Dependent on Azure.ResourceManager.Versions.v1_0_Preview_1, LiftrBase.Versions.v2024_08_27_preview, LiftrBase.Data.Versions.v2024_08_27_preview")
@useDependency(Azure.ResourceManager.Versions.v1_0_Preview_1)
@useDependency(LiftrBase.Versions.v2024_08_27_preview)
@useDependency(LiftrBase.Data.Versions.v2024_08_27_preview)
v2024_08_27_preview: "2024-08-27-preview",

@doc("Dependent on Azure.ResourceManager.Versions.v1_0_Preview_1, LiftrBase.Versions.v2024_08_27, LiftrBase.Data.Versions.v2024_08_27")
@useDependency(Azure.ResourceManager.Versions.v1_0_Preview_1)
@useDependency(LiftrBase.Versions.v2024_08_27)
@useDependency(LiftrBase.Data.Versions.v2024_08_27)
v2024_08_27: "2024-08-27",
Expand Down
2 changes: 0 additions & 2 deletions tests-upgrade/tests-emitter/AzureAI.Assets/main.tsp
Original file line number Diff line number Diff line change
Expand Up @@ -45,10 +45,8 @@ namespace Microsoft.MachineLearningServices;
@doc("Azure Machine Learning Services api versions.")
enum Versions {
@doc("Azure Machine Learning Services api version 2024-04-01-preview.")
@useDependency(Azure.Core.Versions.v1_0_Preview_2)
`2024-04-01-preview`,

@doc("Azure Machine Learning Services api version 2024-05-01-preview.")
@useDependency(Azure.Core.Versions.v1_0_Preview_2)
`2024-05-01-preview`,
}
Loading
Loading