@peterhauge/apiops-cli 0.1.7-alpha.0 → 0.2.1-alpha.0

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.
Files changed (102) hide show
  1. package/LICENSE.md +22 -22
  2. package/README.md +169 -169
  3. package/dist/cli/init-command.d.ts.map +1 -1
  4. package/dist/cli/init-command.js +2 -1
  5. package/dist/cli/init-command.js.map +1 -1
  6. package/dist/clients/apim-client.d.ts +25 -1
  7. package/dist/clients/apim-client.d.ts.map +1 -1
  8. package/dist/clients/apim-client.js +173 -9
  9. package/dist/clients/apim-client.js.map +1 -1
  10. package/dist/clients/iapim-client.d.ts +6 -0
  11. package/dist/clients/iapim-client.d.ts.map +1 -1
  12. package/dist/lib/config-loader.d.ts +0 -4
  13. package/dist/lib/config-loader.d.ts.map +1 -1
  14. package/dist/lib/config-loader.js +290 -51
  15. package/dist/lib/config-loader.js.map +1 -1
  16. package/dist/lib/resource-path.d.ts.map +1 -1
  17. package/dist/lib/resource-path.js +20 -2
  18. package/dist/lib/resource-path.js.map +1 -1
  19. package/dist/lib/resource-uri.d.ts.map +1 -1
  20. package/dist/lib/resource-uri.js +24 -4
  21. package/dist/lib/resource-uri.js.map +1 -1
  22. package/dist/lib/workspace-link.d.ts +46 -0
  23. package/dist/lib/workspace-link.d.ts.map +1 -0
  24. package/dist/lib/workspace-link.js +93 -0
  25. package/dist/lib/workspace-link.js.map +1 -0
  26. package/dist/models/config.d.ts +80 -44
  27. package/dist/models/config.d.ts.map +1 -1
  28. package/dist/models/resource-types.d.ts +14 -1
  29. package/dist/models/resource-types.d.ts.map +1 -1
  30. package/dist/models/resource-types.js +11 -3
  31. package/dist/models/resource-types.js.map +1 -1
  32. package/dist/services/api-extractor.d.ts +19 -0
  33. package/dist/services/api-extractor.d.ts.map +1 -1
  34. package/dist/services/api-extractor.js +87 -6
  35. package/dist/services/api-extractor.js.map +1 -1
  36. package/dist/services/api-publisher.d.ts.map +1 -1
  37. package/dist/services/api-publisher.js +251 -60
  38. package/dist/services/api-publisher.js.map +1 -1
  39. package/dist/services/filter-service.d.ts +1 -0
  40. package/dist/services/filter-service.d.ts.map +1 -1
  41. package/dist/services/filter-service.js +101 -40
  42. package/dist/services/filter-service.js.map +1 -1
  43. package/dist/services/identity-guide-service.d.ts +1 -1
  44. package/dist/services/identity-guide-service.d.ts.map +1 -1
  45. package/dist/services/identity-guide-service.js +37 -518
  46. package/dist/services/identity-guide-service.js.map +1 -1
  47. package/dist/services/init-service.d.ts.map +1 -1
  48. package/dist/services/init-service.js +51 -19
  49. package/dist/services/init-service.js.map +1 -1
  50. package/dist/services/override-merger.d.ts +3 -7
  51. package/dist/services/override-merger.d.ts.map +1 -1
  52. package/dist/services/override-merger.js +198 -47
  53. package/dist/services/override-merger.js.map +1 -1
  54. package/dist/services/product-extractor.d.ts +20 -0
  55. package/dist/services/product-extractor.d.ts.map +1 -1
  56. package/dist/services/product-extractor.js +101 -5
  57. package/dist/services/product-extractor.js.map +1 -1
  58. package/dist/services/product-publisher.d.ts.map +1 -1
  59. package/dist/services/product-publisher.js +23 -6
  60. package/dist/services/product-publisher.js.map +1 -1
  61. package/dist/services/publish-service.d.ts.map +1 -1
  62. package/dist/services/publish-service.js +55 -7
  63. package/dist/services/publish-service.js.map +1 -1
  64. package/dist/services/resource-extractor.d.ts.map +1 -1
  65. package/dist/services/resource-extractor.js +1 -52
  66. package/dist/services/resource-extractor.js.map +1 -1
  67. package/dist/services/resource-publisher.d.ts.map +1 -1
  68. package/dist/services/resource-publisher.js +179 -2
  69. package/dist/services/resource-publisher.js.map +1 -1
  70. package/dist/services/transitive-resolver.d.ts.map +1 -1
  71. package/dist/services/transitive-resolver.js +4 -4
  72. package/dist/services/transitive-resolver.js.map +1 -1
  73. package/dist/services/workspace-extractor.d.ts.map +1 -1
  74. package/dist/services/workspace-extractor.js +50 -7
  75. package/dist/services/workspace-extractor.js.map +1 -1
  76. package/dist/templates/azure-devops/extract-pipeline.d.ts +2 -1
  77. package/dist/templates/azure-devops/extract-pipeline.d.ts.map +1 -1
  78. package/dist/templates/azure-devops/extract-pipeline.js +147 -88
  79. package/dist/templates/azure-devops/extract-pipeline.js.map +1 -1
  80. package/dist/templates/azure-devops/publish-pipeline.d.ts.map +1 -1
  81. package/dist/templates/azure-devops/publish-pipeline.js +116 -89
  82. package/dist/templates/azure-devops/publish-pipeline.js.map +1 -1
  83. package/dist/templates/configs/filter-config.d.ts +1 -1
  84. package/dist/templates/configs/filter-config.d.ts.map +1 -1
  85. package/dist/templates/configs/filter-config.js +109 -44
  86. package/dist/templates/configs/filter-config.js.map +1 -1
  87. package/dist/templates/configs/override-config.d.ts.map +1 -1
  88. package/dist/templates/configs/override-config.js +90 -37
  89. package/dist/templates/configs/override-config.js.map +1 -1
  90. package/dist/templates/copilot/identity-setup-prompt.d.ts +4 -3
  91. package/dist/templates/copilot/identity-setup-prompt.d.ts.map +1 -1
  92. package/dist/templates/copilot/identity-setup-prompt.js +59 -269
  93. package/dist/templates/copilot/identity-setup-prompt.js.map +1 -1
  94. package/dist/templates/generated/embedded-markdown.d.ts +12 -0
  95. package/dist/templates/generated/embedded-markdown.d.ts.map +1 -0
  96. package/dist/templates/generated/embedded-markdown.js +14 -0
  97. package/dist/templates/generated/embedded-markdown.js.map +1 -0
  98. package/dist/templates/github-actions/extract-workflow.js +118 -118
  99. package/dist/templates/github-actions/publish-workflow.d.ts.map +1 -1
  100. package/dist/templates/github-actions/publish-workflow.js +104 -90
  101. package/dist/templates/github-actions/publish-workflow.js.map +1 -1
  102. package/package.json +69 -66
@@ -112,6 +112,7 @@ class InitServiceImpl {
112
112
  const extractPipeline = path.join(config.outputDir, '.azdo/pipelines/run-apim-extractor.yml');
113
113
  const publishPipeline = path.join(config.outputDir, '.azdo/pipelines/run-apim-publisher.yml');
114
114
  const identityGuide = path.join(config.outputDir, 'IDENTITY-SETUP-AZDO.md');
115
+ const promptFile = path.join(config.outputDir, '.github/prompts/apiops-setup-identity.prompt.md');
115
116
  if (await this.fileExists(extractPipeline)) {
116
117
  conflictingFiles.push(extractPipeline);
117
118
  }
@@ -121,14 +122,12 @@ class InitServiceImpl {
121
122
  if (await this.fileExists(identityGuide)) {
122
123
  conflictingFiles.push(identityGuide);
123
124
  }
124
- }
125
- // Check for package.json
126
- const packageJsonPath = path.join(config.outputDir, 'package.json');
127
- if (await this.fileExists(packageJsonPath)) {
128
- conflictingFiles.push(packageJsonPath);
125
+ if (await this.fileExists(promptFile)) {
126
+ conflictingFiles.push(promptFile);
127
+ }
129
128
  }
130
129
  // Check for config files
131
- const filterConfig = path.join(config.outputDir, 'configuration.extract.yaml');
130
+ const filterConfig = path.join(config.outputDir, 'configuration.extractor.yaml');
132
131
  if (await this.fileExists(filterConfig)) {
133
132
  conflictingFiles.push(filterConfig);
134
133
  }
@@ -189,7 +188,7 @@ class InitServiceImpl {
189
188
  packageJsonContent = generatePackageJson({ mode: 'npm' });
190
189
  }
191
190
  const packageJsonPath = path.join(config.outputDir, 'package.json');
192
- await fs.writeFile(packageJsonPath, packageJsonContent);
191
+ await this.writeOrMergePackageJson(packageJsonPath, packageJsonContent);
193
192
  generatedFiles.configs.push('package.json');
194
193
  // Generate pipeline files
195
194
  if (config.ciProvider === 'github-actions') {
@@ -225,15 +224,7 @@ class InitServiceImpl {
225
224
  const publishPath = path.join(workflowsDir, 'run-apim-publisher.yml');
226
225
  await fs.writeFile(publishPath, publishContent);
227
226
  generatedFiles.pipelines.push('.github/workflows/run-apim-publisher.yml');
228
- // Copilot identity setup prompt — goes in .github/prompts/
229
- const promptContent = generateIdentitySetupPrompt({
230
- environments: config.environments,
231
- });
232
- const promptsDir = path.join(config.outputDir, '.github/prompts');
233
- await fs.mkdir(promptsDir, { recursive: true });
234
- const promptPath = path.join(promptsDir, 'apiops-setup-identity.prompt.md');
235
- await fs.writeFile(promptPath, promptContent);
236
- generatedFiles.configs.push('.github/prompts/apiops-setup-identity.prompt.md');
227
+ await this.generateCopilotIdentitySetupPrompt(config, generatedFiles);
237
228
  }
238
229
  /**
239
230
  * Generate Azure DevOps pipeline files
@@ -244,6 +235,7 @@ class InitServiceImpl {
244
235
  // Extract pipeline
245
236
  const extractPipelineConfig = {
246
237
  artifactDir: config.artifactDir,
238
+ environments: config.environments,
247
239
  };
248
240
  const extractContent = generateExtractPipeline(extractPipelineConfig);
249
241
  const extractPath = path.join(pipelinesDir, 'run-apim-extractor.yml');
@@ -258,6 +250,18 @@ class InitServiceImpl {
258
250
  const publishPath = path.join(pipelinesDir, 'run-apim-publisher.yml');
259
251
  await fs.writeFile(publishPath, publishContent);
260
252
  generatedFiles.pipelines.push('.azdo/pipelines/run-apim-publisher.yml');
253
+ await this.generateCopilotIdentitySetupPrompt(config, generatedFiles);
254
+ }
255
+ async generateCopilotIdentitySetupPrompt(config, generatedFiles) {
256
+ const promptContent = generateIdentitySetupPrompt({
257
+ environments: config.environments,
258
+ ciProvider: config.ciProvider,
259
+ });
260
+ const promptsDir = path.join(config.outputDir, '.github/prompts');
261
+ await fs.mkdir(promptsDir, { recursive: true });
262
+ const promptPath = path.join(promptsDir, 'apiops-setup-identity.prompt.md');
263
+ await fs.writeFile(promptPath, promptContent);
264
+ generatedFiles.configs.push('.github/prompts/apiops-setup-identity.prompt.md');
261
265
  }
262
266
  /**
263
267
  * Generate configuration files
@@ -265,9 +269,9 @@ class InitServiceImpl {
265
269
  async generateConfigFiles(config, generatedFiles) {
266
270
  // Filter config
267
271
  const filterContent = generateFilterConfig();
268
- const filterPath = path.join(config.outputDir, 'configuration.extract.yaml');
272
+ const filterPath = path.join(config.outputDir, 'configuration.extractor.yaml');
269
273
  await fs.writeFile(filterPath, filterContent);
270
- generatedFiles.configs.push('configuration.extract.yaml');
274
+ generatedFiles.configs.push('configuration.extractor.yaml');
271
275
  // Override configs for each environment
272
276
  for (const env of config.environments) {
273
277
  const overrideContent = generateOverrideConfig(env);
@@ -288,7 +292,7 @@ class InitServiceImpl {
288
292
  guide = identityGuideService.generateGitHubActionsGuide(subscriptionId, resourceGroup, config.environments);
289
293
  }
290
294
  else {
291
- guide = identityGuideService.generateAzureDevOpsGuide(subscriptionId, resourceGroup, config.environments);
295
+ guide = identityGuideService.generateAzureDevOpsGuide(config.environments);
292
296
  }
293
297
  // Save guide to file
294
298
  const guideFileName = config.ciProvider === 'github-actions'
@@ -310,6 +314,34 @@ class InitServiceImpl {
310
314
  return false;
311
315
  }
312
316
  }
317
+ /**
318
+ * Write package.json if missing, otherwise merge APIOps dependency into existing content.
319
+ */
320
+ async writeOrMergePackageJson(packageJsonPath, generatedPackageJsonContent) {
321
+ const generatedPkg = JSON.parse(generatedPackageJsonContent);
322
+ if (!await this.fileExists(packageJsonPath)) {
323
+ await fs.writeFile(packageJsonPath, generatedPackageJsonContent);
324
+ return;
325
+ }
326
+ const existingRaw = await fs.readFile(packageJsonPath, 'utf8');
327
+ let existingPkg;
328
+ try {
329
+ existingPkg = JSON.parse(existingRaw);
330
+ }
331
+ catch {
332
+ throw new Error(`Existing package.json is not valid JSON: ${packageJsonPath}`);
333
+ }
334
+ const existingDeps = (typeof existingPkg.dependencies === 'object' &&
335
+ existingPkg.dependencies !== null
336
+ ? existingPkg.dependencies
337
+ : {});
338
+ const generatedDeps = generatedPkg.dependencies ?? {};
339
+ existingPkg.dependencies = {
340
+ ...existingDeps,
341
+ ...generatedDeps,
342
+ };
343
+ await fs.writeFile(packageJsonPath, `${JSON.stringify(existingPkg, null, 2)}\n`);
344
+ }
313
345
  }
314
346
  export const initService = new InitServiceImpl();
315
347
  //# sourceMappingURL=init-service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"init-service.js","sourceRoot":"","sources":["../../src/services/init-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init-service.js","sourceRoot":"","sources":["../../src/services/init-service.ts"],"names":[],"mappings":"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"}
@@ -1,20 +1,16 @@
1
1
  /**
2
2
  * T033: Override merger service
3
3
  * Apply environment-specific overrides from OverrideConfig to resource JSON payloads.
4
- * Deep-merges with case-insensitive key matching; warns on unknown override keys.
4
+ * Deep-merges with case-insensitive key matching; supports nested sub-resource overrides.
5
+ * Handles all Toolkit override sections with generic property passthrough.
5
6
  */
6
7
  import { ResourceDescriptor } from '../models/types.js';
7
8
  import { OverrideConfig } from '../models/config.js';
8
9
  /**
9
10
  * Apply environment overrides from OverrideConfig to a resource JSON payload.
10
11
  * Deep-merges matching override properties using case-insensitive key matching.
11
- * Logs a warning for any override keys that don't match resource type.
12
+ * Supports both direct overrides and nested sub-resource overrides.
12
13
  * Returns a new object (does not mutate input).
13
- *
14
- * @param descriptor - Resource descriptor (type + name identify the resource)
15
- * @param json - Original resource JSON payload
16
- * @param overrides - Environment-specific override configuration
17
- * @returns New JSON object with overrides applied
18
14
  */
19
15
  export declare function applyOverrides(descriptor: ResourceDescriptor, json: Record<string, unknown>, overrides: OverrideConfig | undefined): Record<string, unknown>;
20
16
  //# sourceMappingURL=override-merger.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"override-merger.d.ts","sourceRoot":"","sources":["../../src/services/override-merger.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAIrD;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAC5B,UAAU,EAAE,kBAAkB,EAC9B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,SAAS,EAAE,cAAc,GAAG,SAAS,GACpC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAsCzB"}
1
+ {"version":3,"file":"override-merger.d.ts","sourceRoot":"","sources":["../../src/services/override-merger.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD,OAAO,EAAE,cAAc,EAAkC,MAAM,qBAAqB,CAAC;AAiDrF;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,UAAU,EAAE,kBAAkB,EAC9B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,SAAS,EAAE,cAAc,GAAG,SAAS,GACpC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA0BzB"}
@@ -3,67 +3,227 @@
3
3
  /**
4
4
  * T033: Override merger service
5
5
  * Apply environment-specific overrides from OverrideConfig to resource JSON payloads.
6
- * Deep-merges with case-insensitive key matching; warns on unknown override keys.
6
+ * Deep-merges with case-insensitive key matching; supports nested sub-resource overrides.
7
+ * Handles all Toolkit override sections with generic property passthrough.
7
8
  */
8
- import { ResourceType } from '../models/resource-types.js';
9
+ import { ResourceType, RESOURCE_TYPE_METADATA } from '../models/resource-types.js';
9
10
  import { logger } from '../lib/logger.js';
10
- import { getNameFromNameParts } from '../lib/resource-path.js';
11
+ import { getNameFromNameParts, isSingletonType } from '../lib/resource-path.js';
12
+ /**
13
+ * Map resource types to their top-level override config section key.
14
+ */
15
+ const OVERRIDE_SECTION_MAP = {
16
+ [ResourceType.NamedValue]: 'namedValues',
17
+ [ResourceType.Backend]: 'backends',
18
+ [ResourceType.Api]: 'apis',
19
+ [ResourceType.Diagnostic]: 'diagnostics',
20
+ [ResourceType.Logger]: 'loggers',
21
+ [ResourceType.ServicePolicy]: 'policies',
22
+ [ResourceType.Gateway]: 'gateways',
23
+ [ResourceType.VersionSet]: 'versionSets',
24
+ [ResourceType.Group]: 'groups',
25
+ [ResourceType.Subscription]: 'subscriptions',
26
+ [ResourceType.Product]: 'products',
27
+ [ResourceType.Tag]: 'tags',
28
+ [ResourceType.PolicyFragment]: 'policyFragments',
29
+ [ResourceType.Workspace]: 'workspaces',
30
+ };
31
+ /**
32
+ * Map child resource types to their parent section and child key within the parent's children.
33
+ * Used for nested override lookup (e.g., ApiDiagnostic → apis.children.diagnostics).
34
+ * `namePartIndex` indicates which name part identifies the child (default: 1).
35
+ */
36
+ const CHILD_OVERRIDE_MAP = {
37
+ [ResourceType.ApiDiagnostic]: { parentSection: 'apis', childKey: 'diagnostics' },
38
+ [ResourceType.ApiOperation]: { parentSection: 'apis', childKey: 'operations' },
39
+ [ResourceType.ApiPolicy]: { parentSection: 'apis', childKey: 'policies' },
40
+ [ResourceType.ApiRelease]: { parentSection: 'apis', childKey: 'releases' },
41
+ [ResourceType.ProductPolicy]: { parentSection: 'products', childKey: 'policies' },
42
+ };
43
+ /**
44
+ * Map grandchild resource types for 3-level override lookup.
45
+ * E.g., ApiOperationPolicy → apis.children.operations[op].children.policies[policy]
46
+ */
47
+ const GRANDCHILD_OVERRIDE_MAP = {
48
+ [ResourceType.ApiOperationPolicy]: { parentSection: 'apis', childKey: 'operations', grandchildKey: 'policies' },
49
+ };
11
50
  /**
12
51
  * Apply environment overrides from OverrideConfig to a resource JSON payload.
13
52
  * Deep-merges matching override properties using case-insensitive key matching.
14
- * Logs a warning for any override keys that don't match resource type.
53
+ * Supports both direct overrides and nested sub-resource overrides.
15
54
  * Returns a new object (does not mutate input).
16
- *
17
- * @param descriptor - Resource descriptor (type + name identify the resource)
18
- * @param json - Original resource JSON payload
19
- * @param overrides - Environment-specific override configuration
20
- * @returns New JSON object with overrides applied
21
55
  */
22
56
  export function applyOverrides(descriptor, json, overrides) {
23
57
  if (!overrides) {
24
58
  return { ...json };
25
59
  }
26
- // Map resource type to override config section
27
- const overrideSection = getOverrideSectionForType(descriptor.type, overrides);
28
- if (!overrideSection) {
29
- return { ...json };
60
+ // Try direct override lookup first
61
+ const directSection = OVERRIDE_SECTION_MAP[descriptor.type];
62
+ if (directSection) {
63
+ const section = overrides[directSection];
64
+ if (!section)
65
+ return { ...json };
66
+ return applyFromSection(descriptor, json, section);
67
+ }
68
+ // Try nested child override lookup
69
+ const childMapping = CHILD_OVERRIDE_MAP[descriptor.type];
70
+ if (childMapping) {
71
+ return applyNestedOverride(descriptor, json, overrides, childMapping);
30
72
  }
31
- // Find matching override using case-insensitive name comparison
32
- const matchingKey = Object.keys(overrideSection).find((key) => key.toLowerCase() === getNameFromNameParts(descriptor.nameParts).toLowerCase());
33
- if (!matchingKey) {
73
+ // Try grandchild (3-level) override lookup
74
+ const grandchildMapping = GRANDCHILD_OVERRIDE_MAP[descriptor.type];
75
+ if (grandchildMapping) {
76
+ return applyGrandchildOverride(descriptor, json, overrides, grandchildMapping);
77
+ }
78
+ return { ...json };
79
+ }
80
+ /**
81
+ * Apply override from a direct section match.
82
+ * For singleton resources (e.g., ServicePolicy with nameParts: []),
83
+ * uses the fixed singleton name from the ARM path (e.g., "policy").
84
+ */
85
+ function applyFromSection(descriptor, json, section) {
86
+ const resourceName = getSingletonOrNamePartName(descriptor);
87
+ const entry = findEntryByName(section, resourceName);
88
+ if (!entry) {
34
89
  return { ...json };
35
90
  }
36
- const overrideValues = overrideSection[matchingKey];
37
- if (overrideValues === null || overrideValues === undefined || typeof overrideValues !== 'object') {
91
+ if (Object.keys(entry.properties).length === 0) {
38
92
  return { ...json };
39
93
  }
40
94
  // ARM resources have all overridable fields inside 'properties'
41
- // Wrap the override values inside 'properties' to merge at the correct level
42
- const wrappedOverride = { properties: overrideValues };
43
- // Deep-merge the override into the resource JSON
95
+ let overrideProperties = entry.properties;
96
+ // Strip apiRevision and isCurrent from API overrides — matches Toolkit behavior.
97
+ // These fields should not be overridden per environment.
98
+ if (descriptor.type === ResourceType.Api) {
99
+ const { apiRevision, isCurrent, ...rest } = overrideProperties;
100
+ if (apiRevision !== undefined || isCurrent !== undefined) {
101
+ logger.warn(`Ignoring 'apiRevision' and/or 'isCurrent' in API override for '${resourceName}'; ` +
102
+ `these fields cannot be overridden (matching Toolkit behavior).`);
103
+ }
104
+ overrideProperties = rest;
105
+ if (Object.keys(overrideProperties).length === 0) {
106
+ return { ...json };
107
+ }
108
+ }
109
+ const wrappedOverride = { properties: overrideProperties };
44
110
  const result = deepMerge(json, wrappedOverride);
45
- logger.debug(`Applied overrides to ${descriptor.type} '${descriptor.nameParts.join('/')}'`, { overrideKeys: Object.keys(overrideValues) });
111
+ logger.debug(`Applied overrides to ${descriptor.type} '${descriptor.nameParts.join('/')}'`, { overrideKeys: Object.keys(entry.properties) });
46
112
  return result;
47
113
  }
48
114
  /**
49
- * Get the override section for a given resource type.
50
- * Returns the relevant Record<string, Override> map or undefined.
115
+ * Apply nested child override (e.g., ApiDiagnostic under apis.children.diagnostics).
116
+ *
117
+ * nameParts layout varies by resource type:
118
+ * - Named children (ApiDiagnostic, ApiOperation, ApiRelease): [parentName, childName]
119
+ * - Singleton children (ApiPolicy, ProductPolicy): [parentName] (child name is always "policy")
51
120
  */
52
- function getOverrideSectionForType(type, overrides) {
53
- switch (type) {
54
- case ResourceType.NamedValue:
55
- return overrides.namedValues;
56
- case ResourceType.Backend:
57
- return overrides.backends;
58
- case ResourceType.Api:
59
- return overrides.apis;
60
- case ResourceType.Diagnostic:
61
- return overrides.diagnostics;
62
- case ResourceType.Logger:
63
- return overrides.loggers;
64
- default:
65
- return undefined;
121
+ function applyNestedOverride(descriptor, json, overrides, mapping) {
122
+ const parentSection = overrides[mapping.parentSection];
123
+ if (!parentSection)
124
+ return { ...json };
125
+ const parentName = descriptor.nameParts[0];
126
+ if (!parentName)
127
+ return { ...json };
128
+ const parentEntry = findEntryByName(parentSection, parentName);
129
+ if (!parentEntry?.children)
130
+ return { ...json };
131
+ const childSection = parentEntry.children[mapping.childKey];
132
+ if (!childSection)
133
+ return { ...json };
134
+ // For singleton children (e.g., ApiPolicy), the name is fixed (e.g., "policy"),
135
+ // NOT in nameParts. For named children, it's nameParts[1].
136
+ const childName = isSingletonType(descriptor.type)
137
+ ? getSingletonName(descriptor.type)
138
+ : descriptor.nameParts[1];
139
+ if (!childName)
140
+ return { ...json };
141
+ const childEntry = findEntryByName(childSection, childName);
142
+ if (!childEntry || Object.keys(childEntry.properties).length === 0) {
143
+ return { ...json };
66
144
  }
145
+ const wrappedOverride = { properties: childEntry.properties };
146
+ const result = deepMerge(json, wrappedOverride);
147
+ logger.debug(`Applied nested overrides to ${descriptor.type} '${descriptor.nameParts.join('/')}'`, { overrideKeys: Object.keys(childEntry.properties) });
148
+ return result;
149
+ }
150
+ /**
151
+ * Apply grandchild (3-level) override.
152
+ * E.g., ApiOperationPolicy: apis[apiName].children.operations[opName].children.policies[policy]
153
+ *
154
+ * nameParts layout for ApiOperationPolicy: [apiName, operationName]
155
+ * The grandchild name is always the fixed singleton name (e.g., "policy").
156
+ */
157
+ function applyGrandchildOverride(descriptor, json, overrides, mapping) {
158
+ const parentSection = overrides[mapping.parentSection];
159
+ if (!parentSection)
160
+ return { ...json };
161
+ const parentName = descriptor.nameParts[0];
162
+ if (!parentName)
163
+ return { ...json };
164
+ const parentEntry = findEntryByName(parentSection, parentName);
165
+ if (!parentEntry?.children)
166
+ return { ...json };
167
+ const childSection = parentEntry.children[mapping.childKey];
168
+ if (!childSection)
169
+ return { ...json };
170
+ const childName = descriptor.nameParts[1];
171
+ if (!childName)
172
+ return { ...json };
173
+ const childEntry = findEntryByName(childSection, childName);
174
+ if (!childEntry?.children)
175
+ return { ...json };
176
+ const grandchildSection = childEntry.children[mapping.grandchildKey];
177
+ if (!grandchildSection)
178
+ return { ...json };
179
+ // Grandchild is always a singleton (e.g., "policy") — name is NOT in nameParts
180
+ const grandchildName = getSingletonName(descriptor.type);
181
+ if (!grandchildName)
182
+ return { ...json };
183
+ const grandchildEntry = findEntryByName(grandchildSection, grandchildName);
184
+ if (!grandchildEntry || Object.keys(grandchildEntry.properties).length === 0) {
185
+ return { ...json };
186
+ }
187
+ const wrappedOverride = { properties: grandchildEntry.properties };
188
+ const result = deepMerge(json, wrappedOverride);
189
+ logger.debug(`Applied grandchild overrides to ${descriptor.type} '${descriptor.nameParts.join('/')}'`, { overrideKeys: Object.keys(grandchildEntry.properties) });
190
+ return result;
191
+ }
192
+ /**
193
+ * Get the resource name for override lookup, handling singletons correctly.
194
+ * - Top-level singletons (ServicePolicy with nameParts: []) use the fixed singleton name
195
+ * - Named resources use the last element of nameParts
196
+ */
197
+ function getSingletonOrNamePartName(descriptor) {
198
+ if (descriptor.nameParts.length === 0) {
199
+ // Top-level singleton (e.g., ServicePolicy)
200
+ const name = getSingletonName(descriptor.type);
201
+ if (!name) {
202
+ throw new RangeError(`getSingletonOrNamePartName: ${descriptor.type} has empty nameParts ` +
203
+ `but no known singleton name`);
204
+ }
205
+ return name;
206
+ }
207
+ return getNameFromNameParts(descriptor.nameParts);
208
+ }
209
+ /**
210
+ * Get the fixed singleton name for a resource type from its ARM path.
211
+ * E.g., ServicePolicy → "policy", ApiPolicy → "policy", ApiWiki → "default"
212
+ * Returns undefined if the resource type is not a singleton.
213
+ */
214
+ function getSingletonName(type) {
215
+ if (!isSingletonType(type))
216
+ return undefined;
217
+ const meta = RESOURCE_TYPE_METADATA[type];
218
+ return meta.armPathSuffix.split('/').pop();
219
+ }
220
+ /**
221
+ * Find an override entry by name using case-insensitive matching.
222
+ */
223
+ function findEntryByName(section, name) {
224
+ const lowerName = name.toLowerCase();
225
+ const matchingKey = Object.keys(section).find((key) => key.toLowerCase() === lowerName);
226
+ return matchingKey ? section[matchingKey] : undefined;
67
227
  }
68
228
  /**
69
229
  * Deep-merge two objects recursively.
@@ -71,30 +231,21 @@ function getOverrideSectionForType(type, overrides) {
71
231
  * - Arrays are replaced (not merged)
72
232
  * - Primitives from source override target
73
233
  * - Returns a new object (immutable)
74
- *
75
- * @param target - Base object
76
- * @param source - Override object
77
- * @returns New merged object
78
234
  */
79
235
  function deepMerge(target, source) {
80
236
  const result = { ...target };
81
237
  for (const [key, sourceValue] of Object.entries(source)) {
82
238
  const targetValue = result[key];
83
- // If both are plain objects, merge recursively
84
239
  if (isPlainObject(sourceValue) &&
85
240
  isPlainObject(targetValue)) {
86
241
  result[key] = deepMerge(targetValue, sourceValue);
87
242
  }
88
243
  else {
89
- // Otherwise replace (arrays, primitives, or type mismatch)
90
244
  result[key] = sourceValue;
91
245
  }
92
246
  }
93
247
  return result;
94
248
  }
95
- /**
96
- * Check if a value is a plain object (not an array, null, or other special object).
97
- */
98
249
  function isPlainObject(value) {
99
250
  return (typeof value === 'object' &&
100
251
  value !== null &&
@@ -1 +1 @@
1
- {"version":3,"file":"override-merger.js","sourceRoot":"","sources":["../../src/services/override-merger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"override-merger.js","sourceRoot":"","sources":["../../src/services/override-merger.ts"],"names":[],"mappings":"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"}
@@ -23,4 +23,24 @@ export interface ProductExtractionResult {
23
23
  * This includes API associations, group associations, policies, and wikis.
24
24
  */
25
25
  export declare function extractProductResources(client: IApimClient, store: IArtifactStore, context: ApimServiceContext, productDescriptor: ResourceDescriptor, outputDir: string, _filter?: FilterConfig, _workspace?: string): Promise<ProductExtractionResult>;
26
+ /**
27
+ * Extract product tag associations in workspace scope using the tag-centric
28
+ * `tags/{tag}/productLinks` endpoint.
29
+ *
30
+ * In workspace scope the classic `products/{product}/tags` endpoint is
31
+ * undocumented and at risk of future removal. Instead, tag-to-product
32
+ * associations are exposed via each tag's `productLinks` collection.
33
+ *
34
+ * @param client - APIM REST client
35
+ * @param store - Artifact file store
36
+ * @param context - Workspace-scoped APIM context
37
+ * @param extractedTagNames - Tag names already extracted for this workspace
38
+ * @param extractedProducts - Extracted product descriptors
39
+ * @param outputDir - Output directory
40
+ * @param workspace - Workspace name
41
+ * @returns Number of product-tag associations discovered
42
+ */
43
+ export declare function extractWorkspaceProductTags(client: IApimClient, store: IArtifactStore, context: ApimServiceContext, extractedTagNames: string[], extractedProducts: Array<{
44
+ descriptor: ResourceDescriptor;
45
+ }>, outputDir: string, _workspace: string): Promise<number>;
26
46
  //# sourceMappingURL=product-extractor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"product-extractor.d.ts","sourceRoot":"","sources":["../../src/services/product-extractor.ts"],"names":[],"mappings":"AAEA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAE5E,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAKnD;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,cAAc,EACrB,OAAO,EAAE,kBAAkB,EAC3B,iBAAiB,EAAE,kBAAkB,EACrC,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,YAAY,EACtB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,uBAAuB,CAAC,CAyClC"}
1
+ {"version":3,"file":"product-extractor.d.ts","sourceRoot":"","sources":["../../src/services/product-extractor.ts"],"names":[],"mappings":"AAEA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAE5E,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAMnD;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,cAAc,EACrB,OAAO,EAAE,kBAAkB,EAC3B,iBAAiB,EAAE,kBAAkB,EACrC,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,YAAY,EACtB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,uBAAuB,CAAC,CA8ClC;AAyKD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,2BAA2B,CAC/C,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,cAAc,EACrB,OAAO,EAAE,kBAAkB,EAC3B,iBAAiB,EAAE,MAAM,EAAE,EAC3B,iBAAiB,EAAE,KAAK,CAAC;IAAE,UAAU,EAAE,kBAAkB,CAAA;CAAE,CAAC,EAC5D,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC,CAgDjB"}