@azure-typespec/http-client-csharp-mgmt 1.0.0-alpha.20260416.1 → 1.0.0-alpha.20260416.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -21,7 +21,7 @@
21
21
  * allowing gradual migration to the standardized API.
22
22
  */
23
23
  import { Program } from "@typespec/compiler";
24
- import { ArmProviderSchema, ResourceScope } from "./resource-metadata.js";
24
+ import { ArmProviderSchema } from "./resource-metadata.js";
25
25
  import { CSharpEmitterContext } from "@typespec/http-client-csharp";
26
26
  /**
27
27
  * Resolves ARM resources from TypeSpec definitions using the standard resolveArmResources API
@@ -35,8 +35,4 @@ import { CSharpEmitterContext } from "@typespec/http-client-csharp";
35
35
  * @returns The ARM provider schema in our expected format
36
36
  */
37
37
  export declare function resolveArmResources(program: Program, sdkContext: CSharpEmitterContext): ArmProviderSchema;
38
- /**
39
- * Determine operation scope from path
40
- */
41
- export declare function getOperationScopeFromPath(path: string): ResourceScope;
42
38
  //# sourceMappingURL=resolve-arm-resources-converter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"resolve-arm-resources-converter.d.ts","sourceRoot":"","sources":["../../emitter/src/resolve-arm-resources-converter.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EACL,OAAO,EAKR,MAAM,oBAAoB,CAAC;AAM5B,OAAO,EACL,iBAAiB,EAOjB,aAAa,EAOd,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAoBpE;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,oBAAoB,GAC/B,iBAAiB,CA2OnB;AA6OD;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,CAwBrE"}
1
+ {"version":3,"file":"resolve-arm-resources-converter.d.ts","sourceRoot":"","sources":["../../emitter/src/resolve-arm-resources-converter.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EACL,OAAO,EAKR,MAAM,oBAAoB,CAAC;AAM5B,OAAO,EAGL,iBAAiB,EAalB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAcpE;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,oBAAoB,GAC/B,iBAAiB,CA6OnB"}
@@ -24,9 +24,8 @@
24
24
  */
25
25
  import { getPattern, getMinLength, getMaxLength } from "@typespec/compiler";
26
26
  import { resolveArmResources as resolveArmResourcesFromLibrary } from "@azure-tools/typespec-azure-resource-manager";
27
- import { ResourceOperationKind, ResourceScope, postProcessArmResources, assignNonResourceMethodsToResources, calculateResourceTypeFromPath, resolveResourceApiVersions, extractRbacRoles } from "./resource-metadata.js";
27
+ import { findLongestPrefixMatch, RequestPath, ResourceOperationKind, ResourceScopeKind, postProcessArmResources, assignNonResourceMethodsToResources, resolveResourceApiVersions, extractRbacRoles } from "./resource-metadata.js";
28
28
  import { getCrossLanguageDefinitionId, getClientType } from "@azure-tools/typespec-client-generator-core";
29
- import { isVariableSegment, isPrefix, findLongestPrefixMatch, countProviderSegments } from "./utils.js";
30
29
  import { getAllSdkClients } from "./sdk-client-utils.js";
31
30
  import { extensionResourceOperationName, legacyExtensionResourceOperationName, legacyResourceOperationName, builtInResourceOperationName } from "./sdk-context-options.js";
32
31
  /**
@@ -118,7 +117,7 @@ export function resolveArmResources(program, sdkContext) {
118
117
  // In this case, parent information comes from ResolvedResource objects
119
118
  // Build validResourceMap once for efficient lookup
120
119
  const validResourceMap = new Map();
121
- for (const r of resources.filter((r) => r.metadata.resourceIdPattern !== "")) {
120
+ for (const r of resources.filter((r) => r.metadata.resourceIdPattern !== undefined)) {
122
121
  const resolvedR = schemaToResolvedResource.get(r);
123
122
  if (resolvedR) {
124
123
  validResourceMap.set(resolvedR.resourceInstancePath, r);
@@ -151,11 +150,12 @@ export function resolveArmResources(program, sdkContext) {
151
150
  if (!methodId) {
152
151
  continue;
153
152
  }
153
+ const opPath = new RequestPath(operation.path);
154
154
  nonResourceMethods.push({
155
155
  methodId,
156
- operationPath: operation.path,
156
+ operationPath: opPath,
157
157
  // TODO: this is also temporary because resolveArmResources does not have the scope of a provider operation
158
- operationScope: getOperationScopeFromPath(operation.path)
158
+ operationScope: opPath.operationScope
159
159
  });
160
160
  }
161
161
  }
@@ -185,11 +185,12 @@ export function resolveArmResources(program, sdkContext) {
185
185
  if (!operation || operation.kind !== "http" || !operation.path) {
186
186
  continue;
187
187
  }
188
+ const opPath = new RequestPath(operation.path);
188
189
  // Add this missing operation as a non-resource method
189
190
  nonResourceMethods.push({
190
191
  methodId: methodId,
191
- operationPath: operation.path,
192
- operationScope: getOperationScopeFromPath(operation.path)
192
+ operationPath: opPath,
193
+ operationScope: opPath.operationScope
193
194
  });
194
195
  }
195
196
  }
@@ -212,7 +213,7 @@ export function resolveArmResources(program, sdkContext) {
212
213
  */
213
214
  function convertResolvedResourceToMetadata(program, sdkContext, resolvedResource, methodKindMap, methodResponseModelIdMap, resourceModelIds) {
214
215
  const methods = [];
215
- const resourceScope = convertScopeToResourceScope(resolvedResource.scope);
216
+ const operationScopeKind = convertScopeToResourceScope(resolvedResource.scope);
216
217
  let resourceIdPattern = "";
217
218
  // Convert lifecycle operations
218
219
  if (resolvedResource.operations.lifecycle) {
@@ -224,9 +225,9 @@ function convertResolvedResourceToMetadata(program, sdkContext, resolvedResource
224
225
  methods.push({
225
226
  methodId,
226
227
  kind: ResourceOperationKind.Read,
227
- operationPath: readOp.path,
228
- operationScope: resourceScope,
229
- resourceScope: calculateResourceScope(readOp.path, resolvedResource)
228
+ operationPath: new RequestPath(readOp.path),
229
+ operationScope: operationScopeKind,
230
+ resourceScopeIdPattern: findResourceScopeIdPattern(readOp.path, resolvedResource)
230
231
  });
231
232
  // Use the first read operation's path as the resource ID pattern
232
233
  if (!resourceIdPattern) {
@@ -242,9 +243,9 @@ function convertResolvedResourceToMetadata(program, sdkContext, resolvedResource
242
243
  methods.push({
243
244
  methodId,
244
245
  kind: ResourceOperationKind.Create,
245
- operationPath: createOp.path,
246
- operationScope: resourceScope,
247
- resourceScope: calculateResourceScope(createOp.path, resolvedResource)
246
+ operationPath: new RequestPath(createOp.path),
247
+ operationScope: operationScopeKind,
248
+ resourceScopeIdPattern: findResourceScopeIdPattern(createOp.path, resolvedResource)
248
249
  });
249
250
  }
250
251
  }
@@ -256,9 +257,9 @@ function convertResolvedResourceToMetadata(program, sdkContext, resolvedResource
256
257
  methods.push({
257
258
  methodId,
258
259
  kind: ResourceOperationKind.Update,
259
- operationPath: updateOp.path,
260
- operationScope: resourceScope,
261
- resourceScope: calculateResourceScope(updateOp.path, resolvedResource)
260
+ operationPath: new RequestPath(updateOp.path),
261
+ operationScope: operationScopeKind,
262
+ resourceScopeIdPattern: findResourceScopeIdPattern(updateOp.path, resolvedResource)
262
263
  });
263
264
  }
264
265
  }
@@ -270,9 +271,9 @@ function convertResolvedResourceToMetadata(program, sdkContext, resolvedResource
270
271
  methods.push({
271
272
  methodId,
272
273
  kind: ResourceOperationKind.Delete,
273
- operationPath: deleteOp.path,
274
- operationScope: resourceScope,
275
- resourceScope: calculateResourceScope(deleteOp.path, resolvedResource)
274
+ operationPath: new RequestPath(deleteOp.path),
275
+ operationScope: operationScopeKind,
276
+ resourceScopeIdPattern: findResourceScopeIdPattern(deleteOp.path, resolvedResource)
276
277
  });
277
278
  }
278
279
  }
@@ -296,9 +297,9 @@ function convertResolvedResourceToMetadata(program, sdkContext, resolvedResource
296
297
  kind: isResourceList
297
298
  ? ResourceOperationKind.List
298
299
  : ResourceOperationKind.Action,
299
- operationPath: actionOp.path,
300
- operationScope: resourceScope,
301
- resourceScope: calculateResourceScope(actionOp.path, resolvedResource)
300
+ operationPath: new RequestPath(actionOp.path),
301
+ operationScope: operationScopeKind,
302
+ resourceScopeIdPattern: findResourceScopeIdPattern(actionOp.path, resolvedResource)
302
303
  });
303
304
  }
304
305
  }
@@ -331,16 +332,23 @@ function convertResolvedResourceToMetadata(program, sdkContext, resolvedResource
331
332
  const sdkModel = getClientType(sdkContext, resolvedResource.type);
332
333
  const rbacRoles = extractRbacRoles(sdkModel);
333
334
  return {
334
- // we only assign resourceIdPattern when this resource has a read operation, otherwise this is empty
335
- resourceIdPattern: resourceIdPattern,
335
+ // we only assign resourceIdPattern when this resource has a read operation, otherwise this is undefined
336
+ resourceIdPattern: resourceIdPattern
337
+ ? new RequestPath(resourceIdPattern)
338
+ : undefined,
336
339
  resourceType,
337
340
  methods,
338
- resourceScope: resourceScopeValue,
341
+ scope: {
342
+ kind: resourceScopeValue,
343
+ scopeIdPattern: resourceIdPattern
344
+ ? new RequestPath(resourceIdPattern).scopePath
345
+ : RequestPath.empty
346
+ },
339
347
  parentResourceId: undefined,
340
348
  parentResourceModelId: undefined,
341
349
  // TODO: Temporary - waiting for resolveArmResources API update to include singleton information
342
350
  // Once the API includes this, we can remove this extraction logic
343
- singletonResourceName: extractSingletonName(resolvedResource.resourceInstancePath),
351
+ singletonResourceName: new RequestPath(resolvedResource.resourceInstancePath).singletonName,
344
352
  resourceName: resourceName,
345
353
  nameConstraints,
346
354
  apiVersions,
@@ -357,58 +365,34 @@ function getMethodIdFromOperation(sdkContext, operation) {
357
365
  return getCrossLanguageDefinitionId(sdkContext, operation);
358
366
  }
359
367
  /**
360
- * Convert scope string/object to ResourceScope enum
368
+ * Convert scope string/object to ResourceScopeKind enum
361
369
  */
362
370
  function convertScopeToResourceScope(scope) {
363
371
  if (!scope) {
364
372
  // TODO: does it make sense that we have something without scope??
365
- return ResourceScope.ResourceGroup; // Default
373
+ return ResourceScopeKind.ResourceGroup; // Default
366
374
  }
367
375
  if (typeof scope === "string") {
368
376
  switch (scope) {
369
377
  case "Tenant":
370
- return ResourceScope.Tenant;
378
+ return ResourceScopeKind.Tenant;
371
379
  case "Subscription":
372
- return ResourceScope.Subscription;
380
+ return ResourceScopeKind.Subscription;
373
381
  case "ResourceGroup":
374
- return ResourceScope.ResourceGroup;
382
+ return ResourceScopeKind.ResourceGroup;
375
383
  case "ManagementGroup":
376
- return ResourceScope.ManagementGroup;
384
+ return ResourceScopeKind.ManagementGroup;
377
385
  case "Scope":
378
386
  case "ExternalResource":
379
- return ResourceScope.Extension;
387
+ return ResourceScopeKind.Extension;
380
388
  default:
381
- return ResourceScope.ResourceGroup;
389
+ return ResourceScopeKind.ResourceGroup;
382
390
  }
383
391
  }
384
392
  // TODO: Schema update needed - when scope is a ResolvedResource (extension resource),
385
393
  // our schema needs to support representing the specific parent resource, not just "Extension"
386
394
  // If scope is a ResolvedResource, it's an extension resource
387
- return ResourceScope.Extension;
388
- }
389
- /**
390
- * Determine operation scope from path
391
- */
392
- export function getOperationScopeFromPath(path) {
393
- // Match any path starting with a variable segment followed by /providers/
394
- // This covers scope-based operations like /{resourceUri}/providers/..., /{scope}/providers/..., /{resourceId}/providers/..., etc.
395
- const lastProviderIndex = path.lastIndexOf("/providers/");
396
- const scopePath = path.substring(0, lastProviderIndex);
397
- if (!scopePath) {
398
- return ResourceScope.Tenant;
399
- }
400
- else if (/^\/subscriptions\/\{[^}]+\}\/resourceGroups\/\{[^}]+\}$/.test(scopePath)) {
401
- return ResourceScope.ResourceGroup;
402
- }
403
- else if (/^\/subscriptions\/\{[^}]+\}$/.test(scopePath)) {
404
- return ResourceScope.Subscription;
405
- }
406
- else if (/^\/providers\/Microsoft\.Management\/managementGroups\/\{[^}]+\}$/.test(scopePath)) {
407
- return ResourceScope.ManagementGroup;
408
- }
409
- else {
410
- return ResourceScope.Extension;
411
- }
395
+ return ResourceScopeKind.Extension;
412
396
  }
413
397
  /**
414
398
  * Format ResourceType to a string
@@ -416,27 +400,17 @@ export function getOperationScopeFromPath(path) {
416
400
  function formatResourceType(resourceType) {
417
401
  return `${resourceType.provider}/${resourceType.types.join("/")}`;
418
402
  }
419
- /**
420
- * Extract singleton resource name from path if it exists
421
- */
422
- function extractSingletonName(path) {
423
- // Check if the path ends with a fixed string instead of a parameter
424
- const segments = path.split("/").filter((s) => s.length > 0);
425
- const lastSegment = segments[segments.length - 1];
426
- // If the last segment is not a parameter (doesn't start with {), it's a singleton
427
- if (lastSegment && !isVariableSegment(lastSegment)) {
428
- return lastSegment;
429
- }
430
- return undefined;
431
- }
432
- function calculateResourceScope(operationPath, resolvedResource) {
433
- if (isPrefix(resolvedResource.resourceInstancePath, operationPath)) {
434
- return resolvedResource.resourceInstancePath;
403
+ function findResourceScopeIdPattern(operationPath, resolvedResource) {
404
+ const opPath = new RequestPath(operationPath);
405
+ const instancePath = new RequestPath(resolvedResource.resourceInstancePath);
406
+ if (instancePath.isPrefixOf(opPath)) {
407
+ return instancePath;
435
408
  }
436
409
  let parent = resolvedResource.parent;
437
410
  while (parent) {
438
- if (isPrefix(parent.resourceInstancePath, operationPath)) {
439
- return parent.resourceInstancePath;
411
+ const parentPath = new RequestPath(parent.resourceInstancePath);
412
+ if (parentPath.isPrefixOf(opPath)) {
413
+ return parentPath;
440
414
  }
441
415
  parent = parent.parent;
442
416
  }
@@ -533,22 +507,14 @@ function assignListOperationsToResources(sdkContext, resources, schemaToResolved
533
507
  }
534
508
  else {
535
509
  // Multiple resources for the same model — use prefix matching to find the correct one
536
- targetResource = findLongestPrefixMatch(listOp.path, resourcesForModel, (r) => {
537
- const pattern = r.metadata.resourceIdPattern;
538
- if (!pattern)
539
- return undefined;
540
- // Strip the last segment (the key variable like {resourceName})
541
- // so we compare against the collection/type segment
542
- const lastSlash = pattern.lastIndexOf("/");
543
- return lastSlash > 0 ? pattern.substring(0, lastSlash) : undefined;
544
- });
510
+ targetResource = findLongestPrefixMatch(new RequestPath(listOp.path), resourcesForModel, (r) => r.metadata.resourceIdPattern?.trimLastSegment);
545
511
  // Fall back to resource type matching if prefix matching didn't find a match
546
- if (!targetResource && listOp.path.includes("/providers/")) {
547
- const listType = calculateResourceTypeFromPath(listOp.path);
548
- const listProviderDepth = countProviderSegments(listOp.path);
512
+ const listPath = new RequestPath(listOp.path);
513
+ const listType = listPath.resourceType;
514
+ if (!targetResource && listType !== undefined) {
549
515
  targetResource = resourcesForModel.find((r) => {
550
- if (countProviderSegments(r.metadata.resourceIdPattern) !==
551
- listProviderDepth) {
516
+ if (!r.metadata.resourceIdPattern ||
517
+ !listPath.hasSameScopeNesting(r.metadata.resourceIdPattern)) {
552
518
  return false;
553
519
  }
554
520
  return r.metadata.resourceType === listType;
@@ -559,12 +525,13 @@ function assignListOperationsToResources(sdkContext, resources, schemaToResolved
559
525
  if (!targetResource) {
560
526
  targetResource = resource;
561
527
  }
528
+ const listPath = new RequestPath(listOp.path);
562
529
  targetResource.metadata.methods.push({
563
530
  methodId,
564
531
  kind: ResourceOperationKind.List,
565
- operationPath: listOp.path,
566
- operationScope: getOperationScopeFromPath(listOp.path),
567
- resourceScope: undefined
532
+ operationPath: listPath,
533
+ operationScope: listPath.operationScope,
534
+ resourceScopeIdPattern: undefined
568
535
  });
569
536
  }
570
537
  }
@@ -1 +1 @@
1
- {"version":3,"file":"resolve-arm-resources-converter.js","sourceRoot":"","sources":["../../emitter/src/resolve-arm-resources-converter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resolve-arm-resources-converter.js","sourceRoot":"","sources":["../../emitter/src/resolve-arm-resources-converter.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"resource-detection.d.ts","sourceRoot":"","sources":["../../emitter/src/resource-detection.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,SAAS,EACT,oBAAoB,EACpB,WAAW,EAEZ,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAOL,iBAAiB,EAQlB,MAAM,wBAAwB,CAAC;AAwChC,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAIvD,wBAAsB,aAAa,CACjC,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,oBAAoB,EAChC,OAAO,EAAE,uBAAuB,iBAWjC;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,oBAAoB,EAChC,SAAS,EAAE,SAAS,GACnB,iBAAiB,CAkdnB;AAgYD,wBAAgB,aAAa,CAAC,SAAS,EAAE,SAAS,GAAG,WAAW,EAAE,CAOjE"}
1
+ {"version":3,"file":"resource-detection.d.ts","sourceRoot":"","sources":["../../emitter/src/resource-detection.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,SAAS,EACT,oBAAoB,EACpB,WAAW,EAEZ,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAML,iBAAiB,EAUlB,MAAM,wBAAwB,CAAC;AAqChC,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAGvD,wBAAsB,aAAa,CACjC,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,oBAAoB,EAChC,OAAO,EAAE,uBAAuB,iBAWjC;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,oBAAoB,EAChC,SAAS,EAAE,SAAS,GACnB,iBAAiB,CA2dnB;AAgYD,wBAAgB,aAAa,CAAC,SAAS,EAAE,SAAS,GAAG,WAAW,EAAE,CAOjE"}
@@ -1,12 +1,11 @@
1
1
  // Copyright (c) Microsoft Corporation. All rights reserved.
2
2
  // Licensed under the MIT License. See License.txt in the project root for license information.
3
- import { calculateResourceTypeFromPath, ResourceOperationKind, ResourceScope, convertArmProviderSchemaToArguments, postProcessArmResources, assignNonResourceMethodsToResources, resolveResourceApiVersions, extractRbacRoles } from "./resource-metadata.js";
3
+ import { ResourceOperationKind, ResourceScopeKind, convertArmProviderSchemaToArguments, postProcessArmResources, assignNonResourceMethodsToResources, resolveResourceApiVersions, extractRbacRoles, findLongestPrefixMatch, RequestPath } from "./resource-metadata.js";
4
4
  import { getClientType } from "@azure-tools/typespec-client-generator-core";
5
5
  import pluralize from "pluralize";
6
- import { armProviderSchema, armResourceActionName, armResourceCreateOrUpdateName, armResourceDeleteName, armResourceInternal, armResourceListName, armResourceReadName, armResourceUpdateName, armResourceWithParameter, customAzureResource, extensionResourceOperationName, legacyExtensionResourceOperationName, legacyResourceOperationName, builtInResourceOperationName, parentResourceName, readsResourceName, singleton, } from "./sdk-context-options.js";
6
+ import { armProviderSchema, armResourceActionName, armResourceCreateOrUpdateName, armResourceDeleteName, armResourceInternal, armResourceListName, armResourceReadName, armResourceUpdateName, armResourceWithParameter, customAzureResource, extensionResourceOperationName, legacyExtensionResourceOperationName, legacyResourceOperationName, builtInResourceOperationName, parentResourceName, readsResourceName, singleton } from "./sdk-context-options.js";
7
7
  import { NoTarget, getPattern, getMinLength, getMaxLength } from "@typespec/compiler";
8
- import { resolveArmResources, getOperationScopeFromPath } from "./resolve-arm-resources-converter.js";
9
- import { findLongestPrefixMatch } from "./utils.js";
8
+ import { resolveArmResources } from "./resolve-arm-resources-converter.js";
10
9
  import { getAllSdkClients, traverseClient } from "./sdk-client-utils.js";
11
10
  export async function updateClients(codeModel, sdkContext, options) {
12
11
  let armProviderSchema;
@@ -88,25 +87,18 @@ export function buildArmProviderSchema(sdkContext, codeModel) {
88
87
  existingPathsForModel.push(existingPath);
89
88
  // Try to match based on resource type segments
90
89
  // Extract the resource type part (after "/providers/")
91
- const existingResourceType = calculateResourceTypeFromPath(existingPath);
92
- let operationResourceType = "";
93
- try {
94
- operationResourceType =
95
- calculateResourceTypeFromPath(operationPath);
96
- }
97
- catch {
98
- // If we can't calculate resource type, try string matching
99
- }
100
- // If resource types match exactly, this is a potential candidate
101
- if (existingResourceType &&
102
- operationResourceType === existingResourceType) {
103
- // Add to type match candidates
90
+ const existingReqPath = new RequestPath(existingPath);
91
+ const operationReqPath = new RequestPath(operationPath);
92
+ // Only compare resource types when both paths have a determinable resource type
93
+ if (existingReqPath.resourceType !== undefined &&
94
+ operationReqPath.resourceType !== undefined &&
95
+ existingReqPath.resourceType === operationReqPath.resourceType) {
104
96
  typeMatchCandidates.push({ existingPath });
105
97
  }
106
98
  }
107
99
  }
108
100
  // Find the best prefix match using the utility
109
- const bestPrefixMatch = findLongestPrefixMatch(operationPath, existingPathsForModel, (path) => path.substring(0, path.lastIndexOf("/")));
101
+ const bestPrefixMatch = findLongestPrefixMatch(new RequestPath(operationPath), existingPathsForModel, (path) => new RequestPath(path).trimLastSegment);
110
102
  // Selection strategy:
111
103
  // 1. If there are prefix matches, use the best one (handles multi-scope resources correctly)
112
104
  // 2. If there's only ONE type match candidate and no prefix matches, use it
@@ -135,14 +127,16 @@ export function buildArmProviderSchema(sdkContext, codeModel) {
135
127
  // by looking for the resource model name in the path
136
128
  const model = resourceModelMap.get(modelId);
137
129
  const resourceTypeName = model?.name?.toLowerCase();
138
- const pathLower = operationPath.toLowerCase();
139
130
  // If the path doesn't include the resource type segment (e.g., "scheduledactions"),
140
131
  // it's a provider operation, not a resource action
141
- if (resourceTypeName && !pathLower.includes(resourceTypeName)) {
132
+ const opPath = new RequestPath(operationPath);
133
+ const hasResourceTypeSegment = resourceTypeName &&
134
+ opPath.segments.some((s) => s.toLowerCase() === resourceTypeName);
135
+ if (resourceTypeName && !hasResourceTypeSegment) {
142
136
  nonResourceMethods.set(method.crossLanguageDefinitionId, {
143
137
  methodId: method.crossLanguageDefinitionId,
144
- operationPath: method.operation.path,
145
- operationScope: getOperationScopeFromPath(method.operation.path)
138
+ operationPath: opPath,
139
+ operationScope: opPath.operationScope
146
140
  });
147
141
  return;
148
142
  }
@@ -175,10 +169,13 @@ export function buildArmProviderSchema(sdkContext, codeModel) {
175
169
  resourcePathToClientName.set(metadataKey, client.name);
176
170
  }
177
171
  entry = {
178
- resourceIdPattern: "", // this will be populated later
172
+ resourceIdPattern: undefined, // this will be populated later
179
173
  resourceType: "", // this will be populated later
180
174
  singletonResourceName: getSingletonResource(model?.decorators?.find((d) => d.name == singleton)),
181
- resourceScope: ResourceScope.Tenant, // temporary default to Tenant, will be properly set later after methods are populated
175
+ scope: {
176
+ kind: ResourceScopeKind.Tenant,
177
+ scopeIdPattern: RequestPath.empty
178
+ }, // temporary default, will be properly set later
182
179
  methods: [],
183
180
  parentResourceId: undefined, // this will be populated later
184
181
  parentResourceModelId: undefined,
@@ -190,25 +187,27 @@ export function buildArmProviderSchema(sdkContext, codeModel) {
190
187
  };
191
188
  resourcePathToMetadataMap.set(metadataKey, entry);
192
189
  }
190
+ const opPath = new RequestPath(method.operation.path);
193
191
  entry.methods.push({
194
192
  methodId: method.crossLanguageDefinitionId,
195
193
  kind,
196
- operationPath: method.operation.path,
197
- operationScope: getOperationScopeFromPath(method.operation.path)
194
+ operationPath: opPath,
195
+ operationScope: opPath.operationScope
198
196
  });
199
- if (!entry.resourceType) {
200
- entry.resourceType = calculateResourceTypeFromPath(method.operation.path);
197
+ if (!entry.resourceType && opPath.resourceType) {
198
+ entry.resourceType = opPath.resourceType;
201
199
  }
202
200
  if (!entry.resourceIdPattern && isCRUDKind(kind)) {
203
- entry.resourceIdPattern = method.operation.path;
201
+ entry.resourceIdPattern = opPath;
204
202
  }
205
203
  }
206
204
  else {
207
205
  // we treat this method as a non-resource method when it does not have a kind or an associated resource model
206
+ const operationPath = new RequestPath(method.operation.path);
208
207
  nonResourceMethods.set(method.crossLanguageDefinitionId, {
209
208
  methodId: method.crossLanguageDefinitionId,
210
- operationPath: method.operation.path,
211
- operationScope: getOperationScopeFromPath(method.operation.path)
209
+ operationPath: operationPath,
210
+ operationScope: operationPath.operationScope
212
211
  });
213
212
  }
214
213
  };
@@ -245,7 +244,7 @@ export function buildArmProviderSchema(sdkContext, codeModel) {
245
244
  const modelId = metadataKey.split("|")[0];
246
245
  const model = resourceModelMap.get(modelId);
247
246
  // Emit diagnostic for resources without resourceIdPattern
248
- if (metadata.resourceIdPattern === "" && model) {
247
+ if (metadata.resourceIdPattern === undefined && model) {
249
248
  sdkContext.program.reportDiagnostic({
250
249
  code: "general-warning",
251
250
  severity: "warning",
@@ -274,19 +273,26 @@ export function buildArmProviderSchema(sdkContext, codeModel) {
274
273
  // This is also specific to legacy resource detection
275
274
  const allMapEntries = [...resourcePathToMetadataMap.entries()];
276
275
  for (const [metadataKey, metadata] of resourcePathToMetadataMap) {
277
- if (!metadata.parentResourceId && metadata.resourceIdPattern) {
276
+ if (!metadata.parentResourceId &&
277
+ metadata.resourceIdPattern !== undefined) {
278
278
  // Find the longest matching parent path (most specific parent)
279
- const bestParent = findLongestPrefixMatch(metadata.resourceIdPattern, allMapEntries, ([key, m]) => key !== metadataKey ? m.resourceIdPattern || undefined : undefined, true);
279
+ const bestParent = findLongestPrefixMatch(metadata.resourceIdPattern, allMapEntries, ([key, m]) => key !== metadataKey && m.resourceIdPattern !== undefined
280
+ ? m.resourceIdPattern
281
+ : undefined, true);
280
282
  if (bestParent) {
281
283
  metadata.parentResourceId = bestParent[1].resourceIdPattern;
282
284
  // Note: we don't set parentResourceModelId here since they share the same model
283
285
  }
284
286
  }
285
287
  }
286
- // Update the model's resourceScope based on resource scope decorator if it exists or based on the Read method's scope.
288
+ // Update the model's scope based on resource scope decorator if it exists or based on the Read method's scope.
287
289
  // This is specific to legacy resource detection
288
290
  for (const metadata of resourcePathToMetadataMap.values()) {
289
- metadata.resourceScope = getResourceScope(metadata.methods);
291
+ const scopeKind = getResourceScope(metadata.methods);
292
+ metadata.scope = {
293
+ kind: scopeKind,
294
+ scopeIdPattern: metadata.resourceIdPattern?.scopePath ?? RequestPath.empty
295
+ };
290
296
  }
291
297
  // Create parent lookup context for legacy resource detection
292
298
  // In this case, parent information comes from decorators and path matching (already populated above)
@@ -308,7 +314,7 @@ export function buildArmProviderSchema(sdkContext, codeModel) {
308
314
  // Convert non-resource methods map to array
309
315
  const nonResourceMethodsArray = Array.from(nonResourceMethods.values());
310
316
  // Track resources before post-processing to emit diagnostics for filtered resources
311
- const resourcesBeforeFiltering = new Set(resources.filter((r) => r.metadata.resourceIdPattern !== ""));
317
+ const resourcesBeforeFiltering = new Set(resources.filter((r) => r.metadata.resourceIdPattern !== undefined));
312
318
  // Use the shared post-processing function
313
319
  const filteredResources = postProcessArmResources(resources, nonResourceMethodsArray, parentLookup, methodResponseModelIdMap);
314
320
  // Emit diagnostics for resources that were filtered out (non-singleton resources without Read operations)
@@ -757,7 +763,7 @@ function getResourceScope(methods) {
757
763
  }
758
764
  }
759
765
  // Final fallback to ResourceGroup
760
- return ResourceScope.ResourceGroup;
766
+ return ResourceScopeKind.ResourceGroup;
761
767
  }
762
768
  /**
763
769
  * Applies the ARM provider schema as a decorator to the root client.