@azure-tools/typespec-azure-resource-manager
Version:
TypeSpec Azure Resource Manager library
105 lines • 5.68 kB
TypeScript
import { DecoratorContext, Model, Operation, Program } from "@typespec/compiler";
import { HttpOperation } from "@typespec/http";
import { ArmResourceActionDecorator, ArmResourceCheckExistenceDecorator, ArmResourceCollectionActionDecorator, ArmResourceCreateOrUpdateDecorator, ArmResourceDeleteDecorator, ArmResourceListDecorator, ArmResourceReadDecorator, ArmResourceUpdateDecorator } from "../generated-defs/Azure.ResourceManager.js";
import { ArmOperationOptions, ArmOperationRouteDecorator, RenamePathParameterDecorator } from "../generated-defs/Azure.ResourceManager.Legacy.js";
export type ArmLifecycleOperationKind = "read" | "createOrUpdate" | "update" | "delete" | "checkExistence";
export type ArmOperationKind = ArmLifecycleOperationKind | "list" | "action" | "other";
export interface ArmResourceOperation extends ArmResourceOperationData {
path: string;
httpOperation: HttpOperation;
}
export interface ArmLifecycleOperations {
read?: ArmResourceOperation;
createOrUpdate?: ArmResourceOperation;
update?: ArmResourceOperation;
delete?: ArmResourceOperation;
checkExistence?: ArmResourceOperation;
}
export interface ArmResourceLifecycleOperations {
read?: ArmResourceOperation[];
createOrUpdate?: ArmResourceOperation[];
update?: ArmResourceOperation[];
delete?: ArmResourceOperation[];
checkExistence?: ArmResourceOperation[];
}
export interface ArmResolvedOperationsForResource {
lifecycle: ArmResourceLifecycleOperations;
lists: ArmResourceOperation[];
actions: ArmResourceOperation[];
}
export interface ArmResourceOperations {
lifecycle: ArmLifecycleOperations;
lists: {
[key: string]: ArmResourceOperation;
};
actions: {
[key: string]: ArmResourceOperation;
};
}
interface ArmResourceOperationData {
name: string;
kind: ArmOperationKind;
operation: Operation;
operationGroup: string;
resourceModelName: string;
resourceName?: string;
resourceKind?: "legacy" | "legacy-extension";
}
/** Identifying information for an arm operation */
export interface ArmOperationIdentifier {
name: string;
kind: ArmOperationKind;
operationGroup: string;
operation: Operation;
resource?: Model;
resourceName?: string;
resourceKind?: "legacy" | "legacy-extension";
}
export interface ArmLifecycleOperationData {
read?: ArmResourceOperationData;
createOrUpdate?: ArmResourceOperationData;
update?: ArmResourceOperationData;
delete?: ArmResourceOperationData;
checkExistence?: ArmResourceOperationData;
}
export interface ArmResourceOperationsData {
lifecycle: ArmLifecycleOperationData;
lists: {
[key: string]: ArmResourceOperationData;
};
actions: {
[key: string]: ArmResourceOperationData;
};
}
export declare function getArmResourceOperations(program: Program, resourceType: Model): ArmResourceOperationsData;
export declare function resolveResourceOperations(program: Program, resourceType: Model): ArmResourceOperations;
export declare const getArmOperationList: (program: Program, type: Model) => Set<ArmOperationIdentifier> | undefined, setArmOperationList: (program: Program, type: Model, value: Set<ArmOperationIdentifier>) => void;
export declare function getArmResourceOperationList(program: Program, resourceType: Model): Set<ArmOperationIdentifier>;
export declare function addArmResourceOperation(program: Program, resourceType: Model, operationData: ArmOperationIdentifier): void;
export declare const getArmResourceOperationData: (program: Program, type: Operation) => ArmResourceOperationData | undefined, setArmResourceOperationData: (program: Program, type: Operation, value: ArmResourceOperationData) => void;
export declare function setArmOperationIdentifier(program: Program, target: Operation, resourceType: Model, data: ArmResourceOperationData): void;
export declare const $armResourceCheckExistence: ArmResourceCheckExistenceDecorator;
export declare const $armResourceRead: ArmResourceReadDecorator;
export declare const $armResourceCreateOrUpdate: ArmResourceCreateOrUpdateDecorator;
export declare const $armResourceUpdate: ArmResourceUpdateDecorator;
export declare const $armResourceDelete: ArmResourceDeleteDecorator;
export declare const $armResourceList: ArmResourceListDecorator;
export declare function armRenameListByOperationInternal(context: DecoratorContext, entity: Operation, resourceType: Model, parentTypeName?: string, parentFriendlyTypeName?: string, applyOperationRename?: boolean): void;
export declare const $armResourceAction: ArmResourceActionDecorator;
export declare const $armResourceCollectionAction: ArmResourceCollectionActionDecorator;
export declare function isArmCollectionAction(program: Program, target: Operation): boolean;
export declare const $armOperationRoute: ArmOperationRouteDecorator;
export declare function getRouteOptions(program: Program, target: Operation): ArmOperationOptions;
/**
* Renames a path parameter in an Azure Resource Manager operation.
* @param context The decorator context.
* @param target The operation to modify.
* @param sourceParameterName The name of the parameter to rename.
* @param targetParameterName The new name for the parameter.
* @returns
*/
export declare const $renamePathParameter: RenamePathParameterDecorator;
export declare function getDefaultLegacyExtensionResourceName(path: string, resourceName: string, operationKind: ArmOperationKind): string;
export declare function getResourceNameForOperation(program: Program, operation: ArmResourceOperationData, operationPath: string): string | undefined;
export {};
//# sourceMappingURL=operations.d.ts.map