@peterhauge/apiops-cli 0.2.1-alpha.0 → 0.4.0-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 (167) hide show
  1. package/CHANGELOG.md +166 -0
  2. package/README.md +173 -169
  3. package/dist/cli/extract-command.d.ts +2 -2
  4. package/dist/cli/extract-command.d.ts.map +1 -1
  5. package/dist/cli/extract-command.js +3 -5
  6. package/dist/cli/extract-command.js.map +1 -1
  7. package/dist/cli/index.js +2 -3
  8. package/dist/cli/index.js.map +1 -1
  9. package/dist/cli/init-command.d.ts +1 -1
  10. package/dist/cli/init-command.js +6 -6
  11. package/dist/cli/init-command.js.map +1 -1
  12. package/dist/cli/publish-command.d.ts +2 -2
  13. package/dist/cli/publish-command.js +3 -3
  14. package/dist/clients/apim-client.d.ts +16 -5
  15. package/dist/clients/apim-client.d.ts.map +1 -1
  16. package/dist/clients/apim-client.js +22 -7
  17. package/dist/clients/apim-client.js.map +1 -1
  18. package/dist/clients/artifact-store.d.ts +4 -4
  19. package/dist/clients/artifact-store.d.ts.map +1 -1
  20. package/dist/clients/artifact-store.js +10 -4
  21. package/dist/clients/artifact-store.js.map +1 -1
  22. package/dist/clients/iapim-client.d.ts +14 -2
  23. package/dist/clients/iapim-client.d.ts.map +1 -1
  24. package/dist/clients/iapim-client.js +1 -1
  25. package/dist/clients/iartifact-store.d.ts +10 -5
  26. package/dist/clients/iartifact-store.d.ts.map +1 -1
  27. package/dist/clients/iartifact-store.js +1 -1
  28. package/dist/lib/cloud-config.d.ts +1 -1
  29. package/dist/lib/cloud-config.js +1 -1
  30. package/dist/lib/config-loader.d.ts +2 -7
  31. package/dist/lib/config-loader.d.ts.map +1 -1
  32. package/dist/lib/config-loader.js +3 -22
  33. package/dist/lib/config-loader.js.map +1 -1
  34. package/dist/lib/dependency-graph.d.ts +1 -1
  35. package/dist/lib/dependency-graph.js +1 -1
  36. package/dist/lib/exit-codes.d.ts +1 -1
  37. package/dist/lib/exit-codes.js +1 -1
  38. package/dist/lib/logger.js +1 -1
  39. package/dist/lib/parallel-runner.d.ts +2 -2
  40. package/dist/lib/parallel-runner.js +2 -2
  41. package/dist/lib/render-template.d.ts +10 -0
  42. package/dist/lib/render-template.d.ts.map +1 -0
  43. package/dist/lib/render-template.js +14 -0
  44. package/dist/lib/render-template.js.map +1 -0
  45. package/dist/lib/resource-path.d.ts +1 -1
  46. package/dist/lib/resource-path.js +1 -1
  47. package/dist/lib/resource-uri.d.ts +1 -1
  48. package/dist/lib/resource-uri.js +1 -1
  49. package/dist/lib/workspace-link.d.ts +31 -3
  50. package/dist/lib/workspace-link.d.ts.map +1 -1
  51. package/dist/lib/workspace-link.js +49 -3
  52. package/dist/lib/workspace-link.js.map +1 -1
  53. package/dist/models/config.d.ts +2 -4
  54. package/dist/models/config.d.ts.map +1 -1
  55. package/dist/models/config.js +1 -1
  56. package/dist/models/resource-types.d.ts +1 -1
  57. package/dist/models/resource-types.d.ts.map +1 -1
  58. package/dist/models/resource-types.js +5 -3
  59. package/dist/models/resource-types.js.map +1 -1
  60. package/dist/models/types.d.ts +22 -1
  61. package/dist/models/types.d.ts.map +1 -1
  62. package/dist/models/types.js +1 -1
  63. package/dist/services/api-extractor.d.ts +1 -1
  64. package/dist/services/api-extractor.d.ts.map +1 -1
  65. package/dist/services/api-extractor.js +39 -133
  66. package/dist/services/api-extractor.js.map +1 -1
  67. package/dist/services/api-publisher.d.ts +1 -1
  68. package/dist/services/api-publisher.d.ts.map +1 -1
  69. package/dist/services/api-publisher.js +50 -18
  70. package/dist/services/api-publisher.js.map +1 -1
  71. package/dist/services/delete-unmatched-service.d.ts +1 -1
  72. package/dist/services/delete-unmatched-service.js +1 -1
  73. package/dist/services/dry-run-reporter.d.ts +1 -1
  74. package/dist/services/dry-run-reporter.js +1 -1
  75. package/dist/services/extract-service.d.ts +1 -1
  76. package/dist/services/extract-service.d.ts.map +1 -1
  77. package/dist/services/extract-service.js +5 -3
  78. package/dist/services/extract-service.js.map +1 -1
  79. package/dist/services/filter-service.d.ts +19 -1
  80. package/dist/services/filter-service.d.ts.map +1 -1
  81. package/dist/services/filter-service.js +40 -2
  82. package/dist/services/filter-service.js.map +1 -1
  83. package/dist/services/git-diff-service.d.ts +1 -1
  84. package/dist/services/git-diff-service.js +1 -1
  85. package/dist/services/identity-guide-service.d.ts +4 -5
  86. package/dist/services/identity-guide-service.d.ts.map +1 -1
  87. package/dist/services/identity-guide-service.js +7 -41
  88. package/dist/services/identity-guide-service.js.map +1 -1
  89. package/dist/services/init-service.d.ts +1 -1
  90. package/dist/services/init-service.d.ts.map +1 -1
  91. package/dist/services/init-service.js +62 -29
  92. package/dist/services/init-service.js.map +1 -1
  93. package/dist/services/override-merger.d.ts +1 -1
  94. package/dist/services/override-merger.js +1 -1
  95. package/dist/services/product-extractor.d.ts +1 -1
  96. package/dist/services/product-extractor.d.ts.map +1 -1
  97. package/dist/services/product-extractor.js +31 -28
  98. package/dist/services/product-extractor.js.map +1 -1
  99. package/dist/services/product-publisher.d.ts.map +1 -1
  100. package/dist/services/product-publisher.js +25 -9
  101. package/dist/services/product-publisher.js.map +1 -1
  102. package/dist/services/prompt-service.d.ts +1 -1
  103. package/dist/services/prompt-service.js +1 -1
  104. package/dist/services/publish-service.d.ts +1 -1
  105. package/dist/services/publish-service.d.ts.map +1 -1
  106. package/dist/services/publish-service.js +31 -1
  107. package/dist/services/publish-service.js.map +1 -1
  108. package/dist/services/resource-extractor.d.ts +1 -1
  109. package/dist/services/resource-extractor.js +1 -1
  110. package/dist/services/resource-publisher.d.ts +14 -1
  111. package/dist/services/resource-publisher.d.ts.map +1 -1
  112. package/dist/services/resource-publisher.js +45 -10
  113. package/dist/services/resource-publisher.js.map +1 -1
  114. package/dist/services/secret-redaction-guard.d.ts +40 -0
  115. package/dist/services/secret-redaction-guard.d.ts.map +1 -0
  116. package/dist/services/secret-redaction-guard.js +92 -0
  117. package/dist/services/secret-redaction-guard.js.map +1 -0
  118. package/dist/services/secret-redactor.d.ts +19 -1
  119. package/dist/services/secret-redactor.d.ts.map +1 -1
  120. package/dist/services/secret-redactor.js +173 -1
  121. package/dist/services/secret-redactor.js.map +1 -1
  122. package/dist/services/transitive-resolver.d.ts +1 -1
  123. package/dist/services/transitive-resolver.js +1 -1
  124. package/dist/services/workspace-extractor.d.ts +7 -1
  125. package/dist/services/workspace-extractor.d.ts.map +1 -1
  126. package/dist/services/workspace-extractor.js +75 -10
  127. package/dist/services/workspace-extractor.js.map +1 -1
  128. package/dist/templates/azure-devops/extract-pipeline.d.ts +1 -1
  129. package/dist/templates/azure-devops/extract-pipeline.js +142 -142
  130. package/dist/templates/azure-devops/publish-pipeline.d.ts +1 -1
  131. package/dist/templates/azure-devops/publish-pipeline.d.ts.map +1 -1
  132. package/dist/templates/azure-devops/publish-pipeline.js +151 -117
  133. package/dist/templates/azure-devops/publish-pipeline.js.map +1 -1
  134. package/dist/templates/configs/filter-config.d.ts +1 -1
  135. package/dist/templates/configs/filter-config.d.ts.map +1 -1
  136. package/dist/templates/configs/filter-config.js +7 -110
  137. package/dist/templates/configs/filter-config.js.map +1 -1
  138. package/dist/templates/configs/override-config.d.ts +1 -1
  139. package/dist/templates/configs/override-config.d.ts.map +1 -1
  140. package/dist/templates/configs/override-config.js +8 -92
  141. package/dist/templates/configs/override-config.js.map +1 -1
  142. package/dist/templates/configs/schema-ref.d.ts +18 -0
  143. package/dist/templates/configs/schema-ref.d.ts.map +1 -0
  144. package/dist/templates/configs/schema-ref.js +26 -0
  145. package/dist/templates/configs/schema-ref.js.map +1 -0
  146. package/dist/templates/copilot/configure-filter-prompt.d.ts +10 -0
  147. package/dist/templates/copilot/configure-filter-prompt.d.ts.map +1 -0
  148. package/dist/templates/copilot/configure-filter-prompt.js +14 -0
  149. package/dist/templates/copilot/configure-filter-prompt.js.map +1 -0
  150. package/dist/templates/copilot/configure-overrides-prompt.d.ts +7 -0
  151. package/dist/templates/copilot/configure-overrides-prompt.d.ts.map +1 -0
  152. package/dist/templates/copilot/configure-overrides-prompt.js +12 -0
  153. package/dist/templates/copilot/configure-overrides-prompt.js.map +1 -0
  154. package/dist/templates/copilot/identity-setup-prompt.d.ts.map +1 -1
  155. package/dist/templates/copilot/identity-setup-prompt.js +19 -24
  156. package/dist/templates/copilot/identity-setup-prompt.js.map +1 -1
  157. package/dist/templates/generated/embedded-markdown.d.ts +8 -5
  158. package/dist/templates/generated/embedded-markdown.d.ts.map +1 -1
  159. package/dist/templates/generated/embedded-markdown.js +8 -5
  160. package/dist/templates/generated/embedded-markdown.js.map +1 -1
  161. package/dist/templates/github-actions/extract-workflow.d.ts +1 -1
  162. package/dist/templates/github-actions/extract-workflow.js +119 -119
  163. package/dist/templates/github-actions/publish-workflow.d.ts +3 -2
  164. package/dist/templates/github-actions/publish-workflow.d.ts.map +1 -1
  165. package/dist/templates/github-actions/publish-workflow.js +180 -112
  166. package/dist/templates/github-actions/publish-workflow.js.map +1 -1
  167. package/package.json +72 -69
@@ -1,7 +1,7 @@
1
1
  // Copyright (c) Microsoft Corporation.
2
2
  // Licensed under the MIT license.
3
3
  /**
4
- * T031: Generic resource publisher
4
+ * Generic resource publisher
5
5
  * Read resource from IArtifactStore, apply overrides, PUT via IApimClient.
6
6
  * Handles all 33 resource types using ResourceType metadata.
7
7
  * MUST preserve opaque JSON per FR-009.
@@ -14,10 +14,12 @@ import { isAutoGeneratedId } from '../lib/auto-generated.js';
14
14
  import { isWorkspaceScope, buildLinkPayload } from '../lib/workspace-link.js';
15
15
  import { logger } from '../lib/logger.js';
16
16
  import { REDACTION_MARKER } from './secret-redactor.js';
17
+ import { isLinkAlreadyExistsError } from '../clients/apim-client.js';
18
+ import { buildResourceLabel } from '../lib/resource-uri.js';
17
19
  /**
18
20
  * Policy resource types that have external XML content
19
21
  */
20
- const POLICY_TYPES = new Set([
22
+ export const POLICY_TYPES = new Set([
21
23
  ResourceType.ServicePolicy,
22
24
  ResourceType.ProductPolicy,
23
25
  ResourceType.ApiPolicy,
@@ -84,6 +86,11 @@ export async function publishResource(client, store, context, descriptor, config
84
86
  action: 'noop',
85
87
  };
86
88
  }
89
+ // Rewrite MCP tool operationIds against the target service before overrides
90
+ // so explicit override values win unchanged.
91
+ if (descriptor.type === ResourceType.Api) {
92
+ json = normalizeMcpToolOperationIds(json, context);
93
+ }
87
94
  // Apply overrides (deep merge, preserves opaque structure)
88
95
  json = applyOverrides(descriptor, json, config.overrides);
89
96
  // For Logger resources, rewrite named value references in credentials.
@@ -184,7 +191,6 @@ export async function publishResource(client, store, context, descriptor, config
184
191
  // validation errors in APIM's revision creation.
185
192
  if (descriptor.type === ResourceType.Api) {
186
193
  const apiName = getNamePart(descriptor.nameParts, 0);
187
- json = normalizeMcpToolOperationIds(json, context);
188
194
  if (apiName.includes(';rev=')) {
189
195
  const baseApiName = apiName.split(';rev=')[0];
190
196
  const props = json.properties;
@@ -234,15 +240,23 @@ async function publishAssociation(client, store, context, descriptor, config, as
234
240
  nameParts: [getNamePart(descriptor.nameParts, 0)],
235
241
  workspace: descriptor.workspace,
236
242
  };
237
- const names = await store.readAssociation(config.sourceDir, parentDescriptor, associationType);
243
+ const entries = await store.readAssociation(config.sourceDir, parentDescriptor, associationType);
238
244
  // Create association for each name
239
- for (const name of names) {
245
+ for (const entry of entries) {
240
246
  const assocDescriptor = {
241
247
  type: descriptor.type,
242
- nameParts: [getNamePart(descriptor.nameParts, 0), name],
248
+ nameParts: [getNamePart(descriptor.nameParts, 0), entry.name],
243
249
  };
244
- // PUT empty body for association (APIM uses PUT to create association)
245
- await client.putResource(context, assocDescriptor, {});
250
+ try {
251
+ // PUT empty body for association (APIM uses PUT to create association)
252
+ await client.putResource(context, assocDescriptor, {});
253
+ }
254
+ catch (error) {
255
+ // 409 means the link already exists — desired state is in place.
256
+ if (!isLinkAlreadyExistsError(error)) {
257
+ throw error;
258
+ }
259
+ }
246
260
  }
247
261
  return {
248
262
  descriptor,
@@ -314,6 +328,9 @@ async function publishPolicy(client, store, context, descriptor, config) {
314
328
  action: 'noop',
315
329
  };
316
330
  }
331
+ // Fail-safe guard: extracted policies don't currently carry separate metadata
332
+ // indicating prior redaction, so marker detection is a deliberate content
333
+ // check to block publishing placeholder secrets.
317
334
  const payload = {
318
335
  properties: {
319
336
  value: policyContent.content,
@@ -322,6 +339,16 @@ async function publishPolicy(client, store, context, descriptor, config) {
322
339
  };
323
340
  // Apply overrides (e.g., format: xml) before PUT — matches Toolkit behavior
324
341
  const mergedPayload = applyOverrides(descriptor, payload, config.overrides);
342
+ // Marker check runs AFTER overrides: an override may legitimately replace the
343
+ // policy value with clean content, so only the merged (about-to-be-published)
344
+ // value is authoritative for redaction detection.
345
+ const mergedProps = mergedPayload.properties;
346
+ const mergedValue = mergedProps?.value;
347
+ if (typeof mergedValue === 'string' && mergedValue.includes(REDACTION_MARKER)) {
348
+ throw new Error(`Cannot publish ${buildResourceLabel(descriptor)}: policy contains '${REDACTION_MARKER}'. ` +
349
+ 'Replace inline secrets with named values before publish: ' +
350
+ 'https://learn.microsoft.com/en-us/azure/api-management/api-management-howto-properties');
351
+ }
325
352
  await client.putResource(context, descriptor, mergedPayload);
326
353
  return {
327
354
  descriptor,
@@ -412,7 +439,7 @@ function normalizeApiReleaseApiId(json, context) {
412
439
  * operationId to target service ARM prefix so APIM validates MCP tools against
413
440
  * existing operations in the target instance.
414
441
  */
415
- function normalizeMcpToolOperationIds(json, context) {
442
+ export function normalizeMcpToolOperationIds(json, context) {
416
443
  const props = json.properties;
417
444
  if (!props)
418
445
  return json;
@@ -483,7 +510,15 @@ async function publishWorkspaceApiTagLink(client, context, descriptor) {
483
510
  throw new Error(`Missing workspaceLinkIdProperty in metadata for ${ResourceType.ApiTag}`);
484
511
  }
485
512
  const payload = buildLinkPayload(context, meta.workspaceLinkIdProperty, 'apis', apiName, descriptor.workspace);
486
- await client.putResource(context, descriptor, payload);
513
+ try {
514
+ await client.putResource(context, descriptor, payload);
515
+ }
516
+ catch (error) {
517
+ // 409 means the tag/api link already exists — desired state is in place.
518
+ if (!isLinkAlreadyExistsError(error)) {
519
+ throw error;
520
+ }
521
+ }
487
522
  return {
488
523
  descriptor,
489
524
  status: 'success',
@@ -1 +1 @@
1
- {"version":3,"file":"resource-publisher.js","sourceRoot":"","sources":["../../src/services/resource-publisher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resource-publisher.js","sourceRoot":"","sources":["../../src/services/resource-publisher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Secret redaction pre-flight guard
3
+ *
4
+ * Scans the set of artifacts that are about to be published for leftover
5
+ * redaction markers ('*** REDACTED ***'). Any finding aborts the entire
6
+ * publish before a single PUT is issued (for both real and dry-run modes),
7
+ * so a partially-published service can never result from placeholder secrets.
8
+ *
9
+ * Detection mirrors the per-resource publish guards:
10
+ * - Policies: build the publish payload, apply overrides, then check the
11
+ * merged `properties.value` for the marker (an override may legitimately
12
+ * replace the value with clean content).
13
+ * - Named values: read the resource, apply overrides; KeyVault-backed values
14
+ * have their `value` stripped before publish and are therefore ignored;
15
+ * otherwise a `secret === true` value that exactly equals the marker is a
16
+ * finding.
17
+ */
18
+ import type { IArtifactStore } from '../clients/iartifact-store.js';
19
+ import type { PublishConfig } from '../models/config.js';
20
+ import type { ResourceDescriptor } from '../models/types.js';
21
+ /**
22
+ * A single artifact that still contains a redaction marker after overrides.
23
+ */
24
+ export interface RedactionMarkerFinding {
25
+ /** The descriptor for the offending artifact. */
26
+ descriptor: ResourceDescriptor;
27
+ /** Human-readable resource label (e.g. `apis/echo/policies/policy`). */
28
+ label: string;
29
+ /** Where the marker was found (e.g. `policy.xml`, `properties.value`). */
30
+ location: string;
31
+ }
32
+ /**
33
+ * Scan the supplied descriptors for leftover redaction markers in the content
34
+ * that would actually be published (i.e. after overrides are applied).
35
+ *
36
+ * Returns every finding so the caller can report all offenders at once rather
37
+ * than failing on the first one.
38
+ */
39
+ export declare function scanForRedactionMarkers(store: IArtifactStore, config: PublishConfig, descriptors: ResourceDescriptor[]): Promise<RedactionMarkerFinding[]>;
40
+ //# sourceMappingURL=secret-redaction-guard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secret-redaction-guard.d.ts","sourceRoot":"","sources":["../../src/services/secret-redaction-guard.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAO7D;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,iDAAiD;IACjD,UAAU,EAAE,kBAAkB,CAAC;IAC/B,wEAAwE;IACxE,KAAK,EAAE,MAAM,CAAC;IACd,0EAA0E;IAC1E,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;GAMG;AACH,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,cAAc,EACrB,MAAM,EAAE,aAAa,EACrB,WAAW,EAAE,kBAAkB,EAAE,GAChC,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAcnC"}
@@ -0,0 +1,92 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT license.
3
+ /**
4
+ * Secret redaction pre-flight guard
5
+ *
6
+ * Scans the set of artifacts that are about to be published for leftover
7
+ * redaction markers ('*** REDACTED ***'). Any finding aborts the entire
8
+ * publish before a single PUT is issued (for both real and dry-run modes),
9
+ * so a partially-published service can never result from placeholder secrets.
10
+ *
11
+ * Detection mirrors the per-resource publish guards:
12
+ * - Policies: build the publish payload, apply overrides, then check the
13
+ * merged `properties.value` for the marker (an override may legitimately
14
+ * replace the value with clean content).
15
+ * - Named values: read the resource, apply overrides; KeyVault-backed values
16
+ * have their `value` stripped before publish and are therefore ignored;
17
+ * otherwise a `secret === true` value that exactly equals the marker is a
18
+ * finding.
19
+ */
20
+ import { ResourceType } from '../models/resource-types.js';
21
+ import { applyOverrides } from './override-merger.js';
22
+ import { POLICY_TYPES } from './resource-publisher.js';
23
+ import { REDACTION_MARKER } from './secret-redactor.js';
24
+ import { buildResourceLabel } from '../lib/resource-uri.js';
25
+ /**
26
+ * Scan the supplied descriptors for leftover redaction markers in the content
27
+ * that would actually be published (i.e. after overrides are applied).
28
+ *
29
+ * Returns every finding so the caller can report all offenders at once rather
30
+ * than failing on the first one.
31
+ */
32
+ export async function scanForRedactionMarkers(store, config, descriptors) {
33
+ const findings = [];
34
+ for (const descriptor of descriptors) {
35
+ if (POLICY_TYPES.has(descriptor.type)) {
36
+ const finding = await scanPolicy(store, config, descriptor);
37
+ if (finding)
38
+ findings.push(finding);
39
+ }
40
+ else if (descriptor.type === ResourceType.NamedValue) {
41
+ const finding = await scanNamedValue(store, config, descriptor);
42
+ if (finding)
43
+ findings.push(finding);
44
+ }
45
+ }
46
+ return findings;
47
+ }
48
+ async function scanPolicy(store, config, descriptor) {
49
+ const policyContent = await store.readContent(config.sourceDir, descriptor, 'policy');
50
+ if (!policyContent) {
51
+ return undefined;
52
+ }
53
+ const payload = {
54
+ properties: {
55
+ value: policyContent.content,
56
+ format: 'rawxml',
57
+ },
58
+ };
59
+ const merged = applyOverrides(descriptor, payload, config.overrides);
60
+ const mergedProps = merged.properties;
61
+ const mergedValue = mergedProps?.value;
62
+ if (typeof mergedValue === 'string' && mergedValue.includes(REDACTION_MARKER)) {
63
+ return {
64
+ descriptor,
65
+ label: buildResourceLabel(descriptor),
66
+ location: 'policy.xml',
67
+ };
68
+ }
69
+ return undefined;
70
+ }
71
+ async function scanNamedValue(store, config, descriptor) {
72
+ const json = await store.readResource(config.sourceDir, descriptor);
73
+ if (!json) {
74
+ return undefined;
75
+ }
76
+ const merged = applyOverrides(descriptor, json, config.overrides);
77
+ const props = merged.properties;
78
+ // KeyVault-backed named values have `properties.value` stripped before publish,
79
+ // so any marker still present in the file is never sent to APIM.
80
+ if (props?.keyVault != null) {
81
+ return undefined;
82
+ }
83
+ if (props?.secret === true && props.value === REDACTION_MARKER) {
84
+ return {
85
+ descriptor,
86
+ label: buildResourceLabel(descriptor),
87
+ location: 'properties.value',
88
+ };
89
+ }
90
+ return undefined;
91
+ }
92
+ //# sourceMappingURL=secret-redaction-guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secret-redaction-guard.js","sourceRoot":"","sources":["../../src/services/secret-redaction-guard.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAClC;;;;;;;;;;;;;;;;GAgBG;AAKH,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAc5D;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,KAAqB,EACrB,MAAqB,EACrB,WAAiC;IAEjC,MAAM,QAAQ,GAA6B,EAAE,CAAC;IAE9C,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACrC,IAAI,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACtC,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;YAC5D,IAAI,OAAO;gBAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACtC,CAAC;aAAM,IAAI,UAAU,CAAC,IAAI,KAAK,YAAY,CAAC,UAAU,EAAE,CAAC;YACvD,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;YAChE,IAAI,OAAO;gBAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,KAAK,UAAU,UAAU,CACvB,KAAqB,EACrB,MAAqB,EACrB,UAA8B;IAE9B,MAAM,aAAa,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;IACtF,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,OAAO,GAA4B;QACvC,UAAU,EAAE;YACV,KAAK,EAAE,aAAa,CAAC,OAAO;YAC5B,MAAM,EAAE,QAAQ;SACjB;KACF,CAAC;IAEF,MAAM,MAAM,GAAG,cAAc,CAAC,UAAU,EAAE,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;IACrE,MAAM,WAAW,GAAG,MAAM,CAAC,UAAiD,CAAC;IAC7E,MAAM,WAAW,GAAG,WAAW,EAAE,KAAK,CAAC;IAEvC,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,WAAW,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAC9E,OAAO;YACL,UAAU;YACV,KAAK,EAAE,kBAAkB,CAAC,UAAU,CAAC;YACrC,QAAQ,EAAE,YAAY;SACvB,CAAC;IACJ,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,KAAK,UAAU,cAAc,CAC3B,KAAqB,EACrB,MAAqB,EACrB,UAA8B;IAE9B,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IACpE,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,MAAM,GAAG,cAAc,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;IAClE,MAAM,KAAK,GAAG,MAAM,CAAC,UAAiD,CAAC;IAEvE,gFAAgF;IAChF,iEAAiE;IACjE,IAAI,KAAK,EAAE,QAAQ,IAAI,IAAI,EAAE,CAAC;QAC5B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,KAAK,KAAK,gBAAgB,EAAE,CAAC;QAC/D,OAAO;YACL,UAAU;YACV,KAAK,EAAE,kBAAkB,CAAC,UAAU,CAAC;YACrC,QAAQ,EAAE,kBAAkB;SAC7B,CAAC;IACJ,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -1,11 +1,14 @@
1
1
  /**
2
- * T026: Secret redaction service
2
+ * Secret redaction service
3
3
  * Detect properties.secret === true on named values,
4
4
  * replace properties.value with redaction marker.
5
5
  */
6
6
  import { ResourceDescriptor } from '../models/types.js';
7
7
  /** Marker used to replace secret values in extracted artifacts */
8
8
  export declare const REDACTION_MARKER = "*** REDACTED ***";
9
+ export interface PolicySecretFinding {
10
+ location: string;
11
+ }
9
12
  /**
10
13
  * Redact secret values from a resource's JSON payload.
11
14
  *
@@ -17,4 +20,19 @@ export declare const REDACTION_MARKER = "*** REDACTED ***";
17
20
  * @returns JSON with secrets redacted
18
21
  */
19
22
  export declare function redactSecrets(descriptor: ResourceDescriptor, json: Record<string, unknown>): Record<string, unknown>;
23
+ /**
24
+ * Redact inline literal secrets in policy XML content.
25
+ */
26
+ export declare function redactPolicySecrets(policyContent: string): {
27
+ redactedContent: string;
28
+ findings: PolicySecretFinding[];
29
+ };
30
+ /**
31
+ * Redact inline literal secrets in policy XML content and emit a warning log
32
+ * for every finding. This is the entry point services should use so that
33
+ * redaction and warning always happen together; the underlying
34
+ * {@link redactPolicySecrets} (pure, exported) and `warnPolicySecretRedactions`
35
+ * (private) helpers stay separate for testability.
36
+ */
37
+ export declare function redactAndWarnPolicySecrets(descriptor: ResourceDescriptor, policyContent: string): string;
20
38
  //# sourceMappingURL=secret-redactor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"secret-redactor.d.ts","sourceRoot":"","sources":["../../src/services/secret-redactor.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AAGH,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAIxD,kEAAkE;AAClE,eAAO,MAAM,gBAAgB,qBAAqB,CAAC;AAEnD;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAC3B,UAAU,EAAE,kBAAkB,EAC9B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA4BzB"}
1
+ {"version":3,"file":"secret-redactor.d.ts","sourceRoot":"","sources":["../../src/services/secret-redactor.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AAGH,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAKxD,kEAAkE;AAClE,eAAO,MAAM,gBAAgB,qBAAqB,CAAC;AAoBnD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAC3B,UAAU,EAAE,kBAAkB,EAC9B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA4BzB;AAqCD;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,aAAa,EAAE,MAAM,GACpB;IAAE,eAAe,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,mBAAmB,EAAE,CAAA;CAAE,CAgI9D;AAED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CACxC,UAAU,EAAE,kBAAkB,EAC9B,aAAa,EAAE,MAAM,GACpB,MAAM,CAIR"}
@@ -1,15 +1,34 @@
1
1
  // Copyright (c) Microsoft Corporation.
2
2
  // Licensed under the MIT license.
3
3
  /**
4
- * T026: Secret redaction service
4
+ * Secret redaction service
5
5
  * Detect properties.secret === true on named values,
6
6
  * replace properties.value with redaction marker.
7
7
  */
8
8
  import { ResourceType } from '../models/resource-types.js';
9
9
  import { logger } from '../lib/logger.js';
10
10
  import { getNamePart } from '../lib/resource-path.js';
11
+ import { buildResourceLabel } from '../lib/resource-uri.js';
11
12
  /** Marker used to replace secret values in extracted artifacts */
12
13
  export const REDACTION_MARKER = '*** REDACTED ***';
14
+ const NAMED_VALUE_REFERENCE_PATTERN = /^\s*\{\{[^{}]+\}\}\s*$/;
15
+ // Headers where inline literal values are typically secrets and should be
16
+ // redacted when present in policy XML. Extend this allow-list when APIM adds
17
+ // new secret-bearing header conventions.
18
+ const SECRET_HEADER_NAMES = new Set([
19
+ 'authorization',
20
+ 'ocp-apim-subscription-key',
21
+ 'x-functions-key',
22
+ 'api-key',
23
+ ]);
24
+ // Query parameters commonly used to carry secrets/tokens in APIM policies.
25
+ // Keep focused on secret-bearing names to avoid over-redacting non-secrets.
26
+ const SECRET_QUERY_PARAMETER_NAMES = new Set([
27
+ 'code',
28
+ 'sig',
29
+ 'subscription-key',
30
+ ]);
31
+ const BEARER_TOKEN_PATTERN = /^(\s*Bearer)(\s+)(.*?)(\s*)$/i;
13
32
  /**
14
33
  * Redact secret values from a resource's JSON payload.
15
34
  *
@@ -44,4 +63,157 @@ export function redactSecrets(descriptor, json) {
44
63
  logger.debug(`Redacted secret value for named value "${getNamePart(descriptor.nameParts, 0)}"`);
45
64
  return redacted;
46
65
  }
66
+ function isApimNamedValueReference(value) {
67
+ return NAMED_VALUE_REFERENCE_PATTERN.test(value);
68
+ }
69
+ function shouldRedactLiteral(value) {
70
+ const trimmed = value.trim();
71
+ if (!trimmed || trimmed === REDACTION_MARKER) {
72
+ return false;
73
+ }
74
+ return !isApimNamedValueReference(trimmed);
75
+ }
76
+ function redactAuthorizationHeaderValue(value) {
77
+ const bearerMatch = BEARER_TOKEN_PATTERN.exec(value);
78
+ if (bearerMatch) {
79
+ const [, scheme, spacing, tokenValue, suffix] = bearerMatch;
80
+ if (!shouldRedactLiteral(tokenValue)) {
81
+ return { redactedValue: value, wasRedacted: false };
82
+ }
83
+ return {
84
+ redactedValue: `${scheme}${spacing}${REDACTION_MARKER}${suffix}`,
85
+ wasRedacted: true,
86
+ };
87
+ }
88
+ if (!shouldRedactLiteral(value)) {
89
+ return { redactedValue: value, wasRedacted: false };
90
+ }
91
+ return { redactedValue: REDACTION_MARKER, wasRedacted: true };
92
+ }
93
+ /**
94
+ * Redact inline literal secrets in policy XML content.
95
+ */
96
+ export function redactPolicySecrets(policyContent) {
97
+ const findings = [];
98
+ const addFinding = (location) => {
99
+ findings.push({ location });
100
+ };
101
+ let redacted = policyContent;
102
+ redacted = redacted.replace(/<set-header\b[\s\S]*?<\/set-header>/gi, (setHeaderBlock) => {
103
+ const nameMatch = /\bname\s*=\s*["']([^"']+)["']/i.exec(setHeaderBlock);
104
+ const headerName = nameMatch?.[1]?.toLowerCase();
105
+ if (!headerName || !SECRET_HEADER_NAMES.has(headerName)) {
106
+ return setHeaderBlock;
107
+ }
108
+ return setHeaderBlock.replace(/(<value\b[^>]*>)([\s\S]*?)(<\/value>)/gi, (_full, openTag, value, closeTag) => {
109
+ const shouldRedactHeaderValue = shouldRedactLiteral(value);
110
+ const { redactedValue, wasRedacted } = headerName === 'authorization'
111
+ ? redactAuthorizationHeaderValue(value)
112
+ : {
113
+ redactedValue: shouldRedactHeaderValue ? REDACTION_MARKER : value,
114
+ wasRedacted: shouldRedactHeaderValue,
115
+ };
116
+ if (!wasRedacted) {
117
+ return `${openTag}${value}${closeTag}`;
118
+ }
119
+ addFinding(`set-header[${headerName}]`);
120
+ return `${openTag}${redactedValue}${closeTag}`;
121
+ });
122
+ });
123
+ redacted = redacted.replace(/<set-query-parameter\b[\s\S]*?<\/set-query-parameter>/gi, (setQueryBlock) => {
124
+ const nameMatch = /\bname\s*=\s*["']([^"']+)["']/i.exec(setQueryBlock);
125
+ const parameterName = nameMatch?.[1]?.toLowerCase();
126
+ if (!parameterName || !SECRET_QUERY_PARAMETER_NAMES.has(parameterName)) {
127
+ return setQueryBlock;
128
+ }
129
+ return setQueryBlock.replace(/(<value\b[^>]*>)([\s\S]*?)(<\/value>)/gi, (_full, openTag, value, closeTag) => {
130
+ if (!shouldRedactLiteral(value)) {
131
+ return `${openTag}${value}${closeTag}`;
132
+ }
133
+ addFinding(`set-query-parameter[${parameterName}]`);
134
+ return `${openTag}${REDACTION_MARKER}${closeTag}`;
135
+ });
136
+ });
137
+ redacted = redacted.replace(/<authentication-basic\b[^>]*>/gi, (tag) => {
138
+ return tag.replace(/(\bpassword\s*=\s*["'])([^"']*)(["'])/i, (_full, prefix, value, suffix) => {
139
+ if (!shouldRedactLiteral(value)) {
140
+ return `${prefix}${value}${suffix}`;
141
+ }
142
+ addFinding('authentication-basic@password');
143
+ return `${prefix}${REDACTION_MARKER}${suffix}`;
144
+ });
145
+ });
146
+ redacted = redacted.replace(/<authentication-certificate\b[^>]*>/gi, (tag) => {
147
+ return tag.replace(/(\bbody\s*=\s*["'])([^"']*)(["'])/i, (_full, prefix, value, suffix) => {
148
+ if (!shouldRedactLiteral(value)) {
149
+ return `${prefix}${value}${suffix}`;
150
+ }
151
+ addFinding('authentication-certificate@body');
152
+ return `${prefix}${REDACTION_MARKER}${suffix}`;
153
+ });
154
+ });
155
+ redacted = redacted.replace(/<authentication-certificate\b[\s\S]*?<\/authentication-certificate>/gi, (certificateBlock) => {
156
+ return certificateBlock.replace(/(<certificate\b[^>]*>)([\s\S]*?)(<\/certificate>)/gi, (_full, openTag, value, closeTag) => {
157
+ if (!shouldRedactLiteral(value)) {
158
+ return `${openTag}${value}${closeTag}`;
159
+ }
160
+ addFinding('authentication-certificate/certificate');
161
+ return `${openTag}${REDACTION_MARKER}${closeTag}`;
162
+ });
163
+ });
164
+ for (const keySection of ['issuer-signing-keys', 'decryption-keys']) {
165
+ const sectionRegex = new RegExp(`<${keySection}\\b[\\s\\S]*?<\\/${keySection}>`, 'gi');
166
+ redacted = redacted.replace(sectionRegex, (sectionBlock) => {
167
+ return sectionBlock.replace(/(<key\b[^>]*>)([\s\S]*?)(<\/key>)/gi, (_full, openTag, value, closeTag) => {
168
+ if (!shouldRedactLiteral(value)) {
169
+ return `${openTag}${value}${closeTag}`;
170
+ }
171
+ addFinding(`validate-jwt ${keySection}/key`);
172
+ return `${openTag}${REDACTION_MARKER}${closeTag}`;
173
+ });
174
+ });
175
+ }
176
+ // AccountKey/SharedAccessKey fragments are used by storage/service-bus style
177
+ // connection strings. App Insights connection strings use InstrumentationKey
178
+ // and therefore do not match this pattern (allow-listed by design).
179
+ // Value exclusions:
180
+ // - ';' stops at the next connection-string key/value delimiter
181
+ // - whitespace/newlines avoid over-capturing adjacent text
182
+ // - '<' and '"' avoid crossing into XML tags/attributes
183
+ redacted = redacted.replace(/(AccountKey|SharedAccessKey)\s*=\s*([^;\r\n<"\s]+)/gi, (_full, key, value) => {
184
+ if (!shouldRedactLiteral(value)) {
185
+ return `${key}=${value}`;
186
+ }
187
+ addFinding(`connection-string[${key}]`);
188
+ return `${key}=${REDACTION_MARKER}`;
189
+ });
190
+ return {
191
+ redactedContent: redacted,
192
+ findings,
193
+ };
194
+ }
195
+ /**
196
+ * Redact inline literal secrets in policy XML content and emit a warning log
197
+ * for every finding. This is the entry point services should use so that
198
+ * redaction and warning always happen together; the underlying
199
+ * {@link redactPolicySecrets} (pure, exported) and `warnPolicySecretRedactions`
200
+ * (private) helpers stay separate for testability.
201
+ */
202
+ export function redactAndWarnPolicySecrets(descriptor, policyContent) {
203
+ const { redactedContent, findings } = redactPolicySecrets(policyContent);
204
+ warnPolicySecretRedactions(descriptor, findings);
205
+ return redactedContent;
206
+ }
207
+ /**
208
+ * Emit warning logs for policy secret redaction findings.
209
+ */
210
+ function warnPolicySecretRedactions(descriptor, findings) {
211
+ const label = buildResourceLabel(descriptor);
212
+ for (const finding of findings) {
213
+ logger.warn(`Found and redacted inline secret in ${label} (${finding.location}). ` +
214
+ `Publish will fail while '${REDACTION_MARKER}' remains. ` +
215
+ 'Update the policy to use a named value: ' +
216
+ 'https://learn.microsoft.com/en-us/azure/api-management/api-management-howto-properties');
217
+ }
218
+ }
47
219
  //# sourceMappingURL=secret-redactor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"secret-redactor.js","sourceRoot":"","sources":["../../src/services/secret-redactor.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAClC;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAE3D,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD,kEAAkE;AAClE,MAAM,CAAC,MAAM,gBAAgB,GAAG,kBAAkB,CAAC;AAEnD;;;;;;;;;GASG;AACH,MAAM,UAAU,aAAa,CAC3B,UAA8B,EAC9B,IAA6B;IAE7B,IAAI,UAAU,CAAC,IAAI,KAAK,YAAY,CAAC,UAAU,EAAE,CAAC;QAChD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,UAAiD,CAAC;IAC1E,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,6CAA6C;IAC7C,IAAI,UAAU,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,uEAAuE;IACvE,IAAI,UAAU,CAAC,QAAQ,KAAK,SAAS,IAAI,UAAU,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtE,MAAM,CAAC,KAAK,CAAC,gBAAgB,WAAW,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC,CAAC,4CAA4C,CAAC,CAAC;QAC/G,OAAO,IAAI,CAAC;IACd,CAAC;IAED,4CAA4C;IAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAA4B,CAAC;IAC7E,MAAM,aAAa,GAAG,QAAQ,CAAC,UAAqC,CAAC;IACrE,aAAa,CAAC,KAAK,GAAG,gBAAgB,CAAC;IAEvC,MAAM,CAAC,KAAK,CAAC,0CAA0C,WAAW,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;IAChG,OAAO,QAAQ,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"secret-redactor.js","sourceRoot":"","sources":["../../src/services/secret-redactor.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * T025: Transitive dependency resolver
2
+ * Transitive dependency resolver
3
3
  * Scan policies for named value refs, backend refs, policy fragment refs.
4
4
  * Scan apiInformation.json for apiVersionSetId.
5
5
  * Fixed-point expansion; --no-transitive bypass.
@@ -1,7 +1,7 @@
1
1
  // Copyright (c) Microsoft Corporation.
2
2
  // Licensed under the MIT license.
3
3
  /**
4
- * T025: Transitive dependency resolver
4
+ * Transitive dependency resolver
5
5
  * Scan policies for named value refs, backend refs, policy fragment refs.
6
6
  * Scan apiInformation.json for apiVersionSetId.
7
7
  * Fixed-point expansion; --no-transitive bypass.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * T027: Workspace-scoped extraction
2
+ * Workspace-scoped extraction
3
3
  * List workspaces, extract workspace-scoped resources under workspaces/{name}/
4
4
  * using same resource-extractor with workspace context prefix.
5
5
  */
@@ -23,4 +23,10 @@ export interface WorkspaceExtractionResult {
23
23
  * @returns Results per workspace
24
24
  */
25
25
  export declare function extractWorkspaces(client: IApimClient, store: IArtifactStore, context: ApimServiceContext, outputDir: string, filter?: FilterConfig): Promise<WorkspaceExtractionResult[]>;
26
+ /**
27
+ * Resolve the effective FilterConfig for a workspace.
28
+ * If the workspace has a sub-filter in workspaceSubFilters, convert it to a FilterConfig.
29
+ * Otherwise return undefined (no filter = extract everything in the workspace).
30
+ */
31
+ export declare function resolveWorkspaceFilter(workspaceName: string, filter?: FilterConfig): FilterConfig | undefined;
26
32
  //# sourceMappingURL=workspace-extractor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"workspace-extractor.d.ts","sourceRoot":"","sources":["../../src/services/workspace-extractor.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAgBnD,MAAM,WAAW,yBAAyB;IACxC,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;GASG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,cAAc,EACrB,OAAO,EAAE,kBAAkB,EAC3B,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,YAAY,GACpB,OAAO,CAAC,yBAAyB,EAAE,CAAC,CAmDtC"}
1
+ {"version":3,"file":"workspace-extractor.d.ts","sourceRoot":"","sources":["../../src/services/workspace-extractor.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD,OAAO,EAAE,YAAY,EAAsB,MAAM,qBAAqB,CAAC;AAiBvE,MAAM,WAAW,yBAAyB;IACxC,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;GASG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,cAAc,EACrB,OAAO,EAAE,kBAAkB,EAC3B,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,YAAY,GACpB,OAAO,CAAC,yBAAyB,EAAE,CAAC,CAqEtC;AA0ID;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,aAAa,EAAE,MAAM,EACrB,MAAM,CAAC,EAAE,YAAY,GACpB,YAAY,GAAG,SAAS,CAiB1B"}