@salesforce/b2c-tooling-sdk 1.18.0 → 1.19.1

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 (37) hide show
  1. package/dist/esm/clients/index.d.ts +2 -0
  2. package/dist/esm/clients/index.js +1 -0
  3. package/dist/esm/clients/index.js.map +1 -1
  4. package/dist/esm/clients/metrics.d.ts +123 -0
  5. package/dist/esm/clients/metrics.generated.d.ts +1016 -0
  6. package/dist/esm/clients/metrics.generated.js +6 -0
  7. package/dist/esm/clients/metrics.generated.js.map +1 -0
  8. package/dist/esm/clients/metrics.js +65 -0
  9. package/dist/esm/clients/metrics.js.map +1 -0
  10. package/dist/esm/clients/middleware-registry.d.ts +1 -1
  11. package/dist/esm/clients/middleware-registry.js.map +1 -1
  12. package/dist/esm/discovery/detector.d.ts +1 -0
  13. package/dist/esm/discovery/detector.js +3 -1
  14. package/dist/esm/discovery/detector.js.map +1 -1
  15. package/dist/esm/discovery/index.d.ts +1 -1
  16. package/dist/esm/discovery/patterns/cartridges.js +4 -2
  17. package/dist/esm/discovery/patterns/cartridges.js.map +1 -1
  18. package/dist/esm/discovery/patterns/sfra.js +10 -5
  19. package/dist/esm/discovery/patterns/sfra.js.map +1 -1
  20. package/dist/esm/discovery/types.d.ts +20 -1
  21. package/dist/esm/index.d.ts +4 -2
  22. package/dist/esm/index.js +3 -1
  23. package/dist/esm/index.js.map +1 -1
  24. package/dist/esm/operations/code/cartridges.d.ts +18 -0
  25. package/dist/esm/operations/code/cartridges.js +31 -20
  26. package/dist/esm/operations/code/cartridges.js.map +1 -1
  27. package/dist/esm/operations/logs/filter.d.ts +6 -1
  28. package/dist/esm/operations/logs/filter.js +7 -2
  29. package/dist/esm/operations/logs/filter.js.map +1 -1
  30. package/dist/esm/operations/metrics/index.d.ts +371 -0
  31. package/dist/esm/operations/metrics/index.js +478 -0
  32. package/dist/esm/operations/metrics/index.js.map +1 -0
  33. package/dist/esm/operations/metrics/tags.d.ts +148 -0
  34. package/dist/esm/operations/metrics/tags.js +235 -0
  35. package/dist/esm/operations/metrics/tags.js.map +1 -0
  36. package/package.json +6 -2
  37. package/specs/metrics-v1.json +1713 -0
@@ -0,0 +1,6 @@
1
+ /**
2
+ * This file was auto-generated by openapi-typescript.
3
+ * Do not make direct changes to the file.
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=metrics.generated.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metrics.generated.js","sourceRoot":"","sources":["../../../src/clients/metrics.generated.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -0,0 +1,65 @@
1
+ /*
2
+ * Copyright (c) 2025, Salesforce, Inc.
3
+ * SPDX-License-Identifier: Apache-2
4
+ * For full license text, see the license.txt file in the repo root or http://www.apache.org/licenses/LICENSE-2.0
5
+ */
6
+ /**
7
+ * Metrics API client for B2C Commerce (Observability).
8
+ *
9
+ * Provides a fully typed client for the SCAPI Observability Metrics API
10
+ * (`observability/metrics/v1`) using openapi-fetch with OAuth authentication
11
+ * middleware. The API exposes time-series operational metrics (overall, sales,
12
+ * eCDN, third-party services, SCAPI, SCAPI hooks, MRT, controllers, and OCAPI)
13
+ * for an organization.
14
+ *
15
+ * @module clients/metrics
16
+ */
17
+ import createClient, {} from 'openapi-fetch';
18
+ import { OAuthStrategy } from '../auth/oauth.js';
19
+ import { JwtOAuthStrategy } from '../auth/oauth-jwt.js';
20
+ import { createAuthMiddleware, createLoggingMiddleware } from './middleware.js';
21
+ import { globalMiddlewareRegistry } from './middleware-registry.js';
22
+ import { buildTenantScope } from './custom-apis.js';
23
+ /** Default OAuth scope required for the Metrics API (read-only). */
24
+ export const METRICS_DEFAULT_SCOPES = ['sfcc.metrics'];
25
+ /**
26
+ * Creates a typed Metrics API client.
27
+ *
28
+ * Returns the openapi-fetch client directly, with authentication handled via
29
+ * middleware. This gives full access to all openapi-fetch features with
30
+ * type-safe paths, parameters, and responses.
31
+ *
32
+ * The client automatically handles OAuth scope requirements:
33
+ * - Domain scope: `sfcc.metrics` (or custom via config.scopes)
34
+ * - Tenant scope: `SALESFORCE_COMMERCE_API:{tenantId}`
35
+ *
36
+ * @param config - Metrics client configuration including shortCode and tenantId
37
+ * @param auth - Authentication strategy (typically OAuth client-credentials)
38
+ * @returns Typed openapi-fetch client
39
+ *
40
+ * @example
41
+ * const auth = new OAuthStrategy({ clientId: '...', clientSecret: '...' });
42
+ * const client = createMetricsClient({ shortCode: 'kv7kzm78', tenantId: 'zzxy_prd' }, auth);
43
+ */
44
+ export function createMetricsClient(config, auth) {
45
+ const registry = config.middlewareRegistry ?? globalMiddlewareRegistry;
46
+ const client = createClient({
47
+ baseUrl: `https://${config.shortCode}.api.commercecloud.salesforce.com/observability/metrics/v1`,
48
+ });
49
+ // Build required scopes: domain scope + tenant-specific scope
50
+ const requiredScopes = config.scopes ?? [...METRICS_DEFAULT_SCOPES, buildTenantScope(config.tenantId)];
51
+ // If auth supports scopes, add required scopes; otherwise use as-is
52
+ const scopedAuth = auth instanceof OAuthStrategy || auth instanceof JwtOAuthStrategy
53
+ ? auth.withAdditionalScopes(requiredScopes)
54
+ : auth;
55
+ // Core middleware: auth first
56
+ client.use(createAuthMiddleware(scopedAuth));
57
+ // Plugin middleware from registry
58
+ for (const middleware of registry.getMiddleware('metrics')) {
59
+ client.use(middleware);
60
+ }
61
+ // Logging middleware last (sees complete request with all modifications)
62
+ client.use(createLoggingMiddleware('METRICS'));
63
+ return client;
64
+ }
65
+ //# sourceMappingURL=metrics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../../src/clients/metrics.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH;;;;;;;;;;GAUG;AACH,OAAO,YAAY,EAAE,EAAa,MAAM,eAAe,CAAC;AAExD,OAAO,EAAC,aAAa,EAAC,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAC,gBAAgB,EAAC,MAAM,sBAAsB,CAAC;AAEtD,OAAO,EAAC,oBAAoB,EAAE,uBAAuB,EAAC,MAAM,iBAAiB,CAAC;AAC9E,OAAO,EAAC,wBAAwB,EAA0B,MAAM,0BAA0B,CAAC;AAC3F,OAAO,EAAC,gBAAgB,EAAC,MAAM,kBAAkB,CAAC;AAiElD,oEAAoE;AACpE,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,cAAc,CAAC,CAAC;AAiCvD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAA2B,EAAE,IAAkB;IACjF,MAAM,QAAQ,GAAG,MAAM,CAAC,kBAAkB,IAAI,wBAAwB,CAAC;IAEvE,MAAM,MAAM,GAAG,YAAY,CAAQ;QACjC,OAAO,EAAE,WAAW,MAAM,CAAC,SAAS,4DAA4D;KACjG,CAAC,CAAC;IAEH,8DAA8D;IAC9D,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,GAAG,sBAAsB,EAAE,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEvG,oEAAoE;IACpE,MAAM,UAAU,GACd,IAAI,YAAY,aAAa,IAAI,IAAI,YAAY,gBAAgB;QAC/D,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC;QAC3C,CAAC,CAAC,IAAI,CAAC;IAEX,8BAA8B;IAC9B,MAAM,CAAC,GAAG,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC,CAAC;IAE7C,kCAAkC;IAClC,KAAK,MAAM,UAAU,IAAI,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3D,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACzB,CAAC;IAED,yEAAyE;IACzE,MAAM,CAAC,GAAG,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC,CAAC;IAE/C,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -38,7 +38,7 @@ import type { Middleware } from 'openapi-fetch';
38
38
  /**
39
39
  * Types of HTTP clients that can receive middleware.
40
40
  */
41
- export type HttpClientType = 'cip' | 'ocapi' | 'slas' | 'ods' | 'mrt' | 'mrt-b2c' | 'custom-apis' | 'scapi-schemas' | 'cdn-zones' | 'granular-replications' | 'webdav' | 'am-users-api' | 'am-roles-api' | 'am-apiclients-api' | 'am-orgs-api';
41
+ export type HttpClientType = 'cip' | 'ocapi' | 'slas' | 'ods' | 'mrt' | 'mrt-b2c' | 'custom-apis' | 'scapi-schemas' | 'metrics' | 'cdn-zones' | 'granular-replications' | 'webdav' | 'am-users-api' | 'am-roles-api' | 'am-apiclients-api' | 'am-orgs-api';
42
42
  /**
43
43
  * Middleware interface compatible with openapi-fetch.
44
44
  *
@@ -1 +1 @@
1
- {"version":3,"file":"middleware-registry.js","sourceRoot":"","sources":["../../../src/clients/middleware-registry.ts"],"names":[],"mappings":"AAkIA;;;;;;;;;;;;;;;GAeG;AACH,MAAM,OAAO,kBAAkB;IACrB,SAAS,GAA6B,EAAE,CAAC;IAEjD;;;;;;OAMG;IACH,QAAQ,CAAC,QAAgC;QACvC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;IAED;;;;;OAKG;IACH,UAAU,CAAC,IAAY;QACrB,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QAC/D,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YACf,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAChC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;OAKG;IACH,aAAa,CAAC,UAA0B;QACtC,MAAM,UAAU,GAAwB,EAAE,CAAC;QAE3C,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACtC,MAAM,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;YAC7C,IAAI,CAAC,EAAE,CAAC;gBACN,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACrB,CAAC;QACH,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;;;OAIG;IACH,KAAK;QACH,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,gBAAgB;QACd,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;CACF;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,IAAI,kBAAkB,EAAE,CAAC"}
1
+ {"version":3,"file":"middleware-registry.js","sourceRoot":"","sources":["../../../src/clients/middleware-registry.ts"],"names":[],"mappings":"AAmIA;;;;;;;;;;;;;;;GAeG;AACH,MAAM,OAAO,kBAAkB;IACrB,SAAS,GAA6B,EAAE,CAAC;IAEjD;;;;;;OAMG;IACH,QAAQ,CAAC,QAAgC;QACvC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;IAED;;;;;OAKG;IACH,UAAU,CAAC,IAAY;QACrB,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QAC/D,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YACf,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAChC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;OAKG;IACH,aAAa,CAAC,UAA0B;QACtC,MAAM,UAAU,GAAwB,EAAE,CAAC;QAE3C,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACtC,MAAM,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;YAC7C,IAAI,CAAC,EAAE,CAAC;gBACN,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACrB,CAAC;QACH,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;;;OAIG;IACH,KAAK;QACH,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,gBAAgB;QACd,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;CACF;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,IAAI,kBAAkB,EAAE,CAAC"}
@@ -28,6 +28,7 @@ import type { DetectionResult, DetectOptions } from './types.js';
28
28
  export declare class WorkspaceTypeDetector {
29
29
  private workspacePath;
30
30
  private patterns;
31
+ private context;
31
32
  /**
32
33
  * Creates a new WorkspaceTypeDetector.
33
34
  *
@@ -39,6 +39,7 @@ import { DEFAULT_PATTERNS } from './patterns/index.js';
39
39
  export class WorkspaceTypeDetector {
40
40
  workspacePath;
41
41
  patterns;
42
+ context;
42
43
  /**
43
44
  * Creates a new WorkspaceTypeDetector.
44
45
  *
@@ -48,6 +49,7 @@ export class WorkspaceTypeDetector {
48
49
  constructor(workspacePath, options = {}) {
49
50
  this.workspacePath = workspacePath;
50
51
  this.patterns = this.resolvePatterns(options);
52
+ this.context = { maxDepth: options.maxDepth };
51
53
  }
52
54
  /**
53
55
  * Performs workspace detection.
@@ -67,7 +69,7 @@ export class WorkspaceTypeDetector {
67
69
  logger.trace({ workspacePath: this.workspacePath, patternCount: this.patterns.length }, 'Detecting workspace/storefront type');
68
70
  for (const pattern of this.patterns) {
69
71
  try {
70
- const matched = await pattern.detect(this.workspacePath);
72
+ const matched = await pattern.detect(this.workspacePath, this.context);
71
73
  logger.trace({ pattern: pattern.name, projectType: pattern.projectType, matched }, 'Detection pattern evaluated');
72
74
  if (matched) {
73
75
  matchedPatterns.push(pattern.name);
@@ -1 +1 @@
1
- {"version":3,"file":"detector.js","sourceRoot":"","sources":["../../../src/discovery/detector.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH;;;;GAIG;AACH,OAAO,EAAC,SAAS,EAAC,MAAM,sBAAsB,CAAC;AAE/C,OAAO,EAAC,gBAAgB,EAAC,MAAM,qBAAqB,CAAC;AAErD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,OAAO,qBAAqB;IACxB,aAAa,CAAS;IACtB,QAAQ,CAAqB;IAErC;;;;;OAKG;IACH,YAAY,aAAqB,EAAE,UAAyB,EAAE;QAC5D,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;IAChD,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,MAAM;QACV,2EAA2E;QAC3E,0EAA0E;QAC1E,6EAA6E;QAC7E,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC,KAAK,CAAC,EAAC,SAAS,EAAE,WAAW,EAAC,CAAC,CAAC;QAC3D,MAAM,eAAe,GAAa,EAAE,CAAC;QACrC,MAAM,YAAY,GAAkB,EAAE,CAAC;QAEvC,MAAM,CAAC,KAAK,CACV,EAAC,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAC,EACvE,qCAAqC,CACtC,CAAC;QAEF,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBACzD,MAAM,CAAC,KAAK,CAAC,EAAC,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,OAAO,EAAC,EAAE,6BAA6B,CAAC,CAAC;gBAChH,IAAI,OAAO,EAAE,CAAC;oBACZ,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;oBACnC,0CAA0C;oBAC1C,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;wBAChD,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;oBACzC,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,uEAAuE;gBACvE,sEAAsE;gBACtE,MAAM,CAAC,KAAK,CAAC,EAAC,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,GAAG,EAAC,EAAE,+CAA+C,CAAC,CAAC;YAC9F,CAAC;QACH,CAAC;QAED,MAAM,CAAC,KAAK,CACV,EAAC,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,YAAY,EAAE,eAAe,EAAC,EAClE,iCAAiC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,0BAA0B,EAAE,CAClH,CAAC;QAEF,OAAO;YACL,YAAY;YACZ,eAAe;YACf,cAAc,EAAE,IAAI;SACrB,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,eAAe,CAAC,OAAsB;QAC5C,IAAI,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,gBAAgB,CAAC;QAEpD,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;YAC/B,QAAQ,GAAG,CAAC,GAAG,QAAQ,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;QAC1D,CAAC;QAED,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;YAC5B,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,eAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAChF,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,aAAqB,EAAE,OAAuB;IACtF,MAAM,QAAQ,GAAG,IAAI,qBAAqB,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IACnE,OAAO,QAAQ,CAAC,MAAM,EAAE,CAAC;AAC3B,CAAC"}
1
+ {"version":3,"file":"detector.js","sourceRoot":"","sources":["../../../src/discovery/detector.ts"],"names":[],"mappings":"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"}
@@ -57,7 +57,7 @@
57
57
  * @module discovery
58
58
  */
59
59
  export { WorkspaceTypeDetector, detectWorkspaceType } from './detector.js';
60
- export type { ProjectType, DetectionPattern, DetectionResult, DetectOptions } from './types.js';
60
+ export type { ProjectType, DetectionContext, DetectionPattern, DetectionResult, DetectOptions } from './types.js';
61
61
  export { PROJECT_TYPES } from './types.js';
62
62
  export { DEFAULT_PATTERNS, cartridgesPattern, pwaKitV3Pattern, storefrontNextPattern, sfraPattern, } from './patterns/index.js';
63
63
  export { readPackageJson, exists, glob, globDirs } from './utils.js';
@@ -8,8 +8,10 @@ import { findCartridges } from '../../operations/code/cartridges.js';
8
8
  export const cartridgesPattern = {
9
9
  name: 'cartridges',
10
10
  projectType: 'cartridges',
11
- detect: async (workspacePath) => {
12
- const cartridges = findCartridges(workspacePath);
11
+ detect: async (workspacePath, context) => {
12
+ // Existence check only — stop at the first cartridge and honor the depth
13
+ // bound so a broad root (e.g. a home directory) is not fully scanned.
14
+ const cartridges = findCartridges(workspacePath, { firstMatchOnly: true, maxDepth: context?.maxDepth });
13
15
  return cartridges.length > 0;
14
16
  },
15
17
  };
@@ -1 +1 @@
1
- {"version":3,"file":"cartridges.js","sourceRoot":"","sources":["../../../../src/discovery/patterns/cartridges.ts"],"names":[],"mappings":"AAcA,OAAO,EAAC,cAAc,EAAC,MAAM,qCAAqC,CAAC;AAEnE;;;;;GAKG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAqB;IACjD,IAAI,EAAE,YAAY;IAClB,WAAW,EAAE,YAAY;IACzB,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE;QAC9B,MAAM,UAAU,GAAG,cAAc,CAAC,aAAa,CAAC,CAAC;QACjD,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;IAC/B,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"cartridges.js","sourceRoot":"","sources":["../../../../src/discovery/patterns/cartridges.ts"],"names":[],"mappings":"AAcA,OAAO,EAAC,cAAc,EAAC,MAAM,qCAAqC,CAAC;AAEnE;;;;;GAKG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAqB;IACjD,IAAI,EAAE,YAAY;IAClB,WAAW,EAAE,YAAY;IACzB,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE;QACvC,yEAAyE;QACzE,sEAAsE;QACtE,MAAM,UAAU,GAAG,cAAc,CAAC,aAAa,EAAE,EAAC,cAAc,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAC,CAAC,CAAC;QACtG,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;IAC/B,CAAC;CACF,CAAC"}
@@ -25,12 +25,17 @@ import { readPackageJson } from '../utils.js';
25
25
  export const sfraPattern = {
26
26
  name: 'sfra',
27
27
  projectType: 'sfra',
28
- detect: async (workspacePath) => {
28
+ detect: async (workspacePath, context) => {
29
29
  // Primary check: Look for app_storefront_base cartridge (the core SFRA cartridge)
30
- // This is the definitive indicator per Salesforce documentation
31
- const cartridges = findCartridges(workspacePath);
32
- const hasSfraCartridge = cartridges.some((cartridge) => cartridge.name === 'app_storefront_base');
33
- if (hasSfraCartridge) {
30
+ // This is the definitive indicator per Salesforce documentation. Filter to
31
+ // that name and stop at the first hit so we don't enumerate every cartridge,
32
+ // and honor the depth bound so a broad root isn't fully scanned.
33
+ const cartridges = findCartridges(workspacePath, {
34
+ include: ['app_storefront_base'],
35
+ firstMatchOnly: true,
36
+ maxDepth: context?.maxDepth,
37
+ });
38
+ if (cartridges.length > 0) {
34
39
  return true;
35
40
  }
36
41
  // Secondary check: Look for package.json with paths.base pointing to app_storefront_base
@@ -1 +1 @@
1
- {"version":3,"file":"sfra.js","sourceRoot":"","sources":["../../../../src/discovery/patterns/sfra.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAC,cAAc,EAAC,MAAM,qCAAqC,CAAC;AACnE,OAAO,EAAC,eAAe,EAAC,MAAM,aAAa,CAAC;AAE5C;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,MAAM,WAAW,GAAqB;IAC3C,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,MAAM;IACnB,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE;QAC9B,kFAAkF;QAClF,gEAAgE;QAChE,MAAM,UAAU,GAAG,cAAc,CAAC,aAAa,CAAC,CAAC;QACjD,MAAM,gBAAgB,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,qBAAqB,CAAC,CAAC;QAClG,IAAI,gBAAgB,EAAE,CAAC;YACrB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,yFAAyF;QACzF,oFAAoF;QACpF,MAAM,WAAW,GAAG,MAAM,eAAe,CAAC,aAAa,CAAC,CAAC;QACzD,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,KAAK,GAAG,WAAW,CAAC,KAA2C,CAAC;YACtE,IAAI,KAAK,EAAE,IAAI,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAClD,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,CAAC;oBAC/C,OAAO,IAAI,CAAC;gBACd,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"sfra.js","sourceRoot":"","sources":["../../../../src/discovery/patterns/sfra.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAC,cAAc,EAAC,MAAM,qCAAqC,CAAC;AACnE,OAAO,EAAC,eAAe,EAAC,MAAM,aAAa,CAAC;AAE5C;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,MAAM,WAAW,GAAqB;IAC3C,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,MAAM;IACnB,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE;QACvC,kFAAkF;QAClF,2EAA2E;QAC3E,6EAA6E;QAC7E,iEAAiE;QACjE,MAAM,UAAU,GAAG,cAAc,CAAC,aAAa,EAAE;YAC/C,OAAO,EAAE,CAAC,qBAAqB,CAAC;YAChC,cAAc,EAAE,IAAI;YACpB,QAAQ,EAAE,OAAO,EAAE,QAAQ;SAC5B,CAAC,CAAC;QACH,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,yFAAyF;QACzF,oFAAoF;QACpF,MAAM,WAAW,GAAG,MAAM,eAAe,CAAC,aAAa,CAAC,CAAC;QACzD,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,KAAK,GAAG,WAAW,CAAC,KAA2C,CAAC;YACtE,IAAI,KAAK,EAAE,IAAI,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAClD,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,CAAC;oBAC/C,OAAO,IAAI,CAAC;gBACd,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;CACF,CAAC"}
@@ -21,6 +21,18 @@ export type ProjectType = 'cartridges' | 'sfra' | 'pwa-kit-v3' | 'storefront-nex
21
21
  * with {@link ProjectType} by the `satisfies` check below.
22
22
  */
23
23
  export declare const PROJECT_TYPES: readonly ["cartridges", "sfra", "pwa-kit-v3", "storefront-next"];
24
+ /**
25
+ * Context passed to a detection pattern's `detect` function.
26
+ */
27
+ export interface DetectionContext {
28
+ /**
29
+ * Maximum directory depth (in path segments, relative to the workspace root)
30
+ * that filesystem-scanning patterns should recurse. Undefined means unbounded.
31
+ * Bounding this protects against costly walks when the workspace root is broad
32
+ * (e.g. an MCP server launched from a home directory).
33
+ */
34
+ maxDepth?: number;
35
+ }
24
36
  /**
25
37
  * Detection pattern definition.
26
38
  */
@@ -30,7 +42,7 @@ export interface DetectionPattern {
30
42
  /** Project type this pattern detects */
31
43
  projectType: ProjectType;
32
44
  /** Detection function */
33
- detect: (workspacePath: string) => Promise<boolean>;
45
+ detect: (workspacePath: string, context?: DetectionContext) => Promise<boolean>;
34
46
  }
35
47
  /**
36
48
  * Result of workspace detection.
@@ -53,4 +65,11 @@ export interface DetectOptions {
53
65
  additionalPatterns?: DetectionPattern[];
54
66
  /** Patterns to exclude by name */
55
67
  excludePatterns?: string[];
68
+ /**
69
+ * Maximum directory depth (in path segments, relative to the workspace root)
70
+ * that filesystem-scanning patterns recurse. Undefined means unbounded.
71
+ * Passed to each pattern via {@link DetectionContext}. Set this when detecting
72
+ * from a potentially broad root to keep the scan bounded.
73
+ */
74
+ maxDepth?: number;
56
75
  }
@@ -8,8 +8,8 @@ export { BasicAuthStrategy, OAuthStrategy, ImplicitOAuthStrategy, JwtOAuthStrate
8
8
  export type { AuthStrategy, AccessTokenResponse, DecodedJWT, OAuthConfig, ImplicitOAuthConfig, JwtOAuthConfig, AuthConfig, BasicAuthConfig, OAuthAuthConfig, ApiKeyAuthConfig, AuthMethod, AuthCredentials, ResolveAuthStrategyOptions, AvailableAuthMethods, } from './auth/index.js';
9
9
  export { B2CInstance } from './instance/index.js';
10
10
  export type { InstanceConfig } from './instance/index.js';
11
- export { WebDavClient, createOcapiClient, createAuthMiddleware, createExtraParamsMiddleware, createSlasClient, createOdsClient, createCustomApisClient, createAccountManagerUsersClient, createAccountManagerRolesClient, createAccountManagerApiClientsClient, createAccountManagerOrgsClient, createCdnZonesClient, createGranularReplicationsClient, createCipClient, toOrganizationId, normalizeTenantId, buildTenantScope, getApiErrorMessage, isValidRoleTenantFilter, fetchRoleMapping, resolveToInternalRole, resolveFromInternalRole, ORGANIZATION_ID_PREFIX, ROLE_TENANT_FILTER_PATTERN, SCAPI_TENANT_SCOPE_PREFIX, CUSTOM_APIS_DEFAULT_SCOPES, CDN_ZONES_READ_SCOPES, CDN_ZONES_RW_SCOPES, DEFAULT_CIP_HOST, DEFAULT_CIP_STAGING_HOST, } from './clients/index.js';
12
- export type { PropfindEntry, ExtraParamsConfig, OcapiClient, OcapiError, OcapiResponse, OcapiPaths, OcapiComponents, SlasClient, SlasClientConfig, SlasError, SlasResponse, SlasPaths, SlasComponents, OdsClient, OdsClientConfig, OdsError, OdsResponse, OdsPaths, OdsComponents, CustomApisClient, CustomApisClientConfig, CustomApisError, CustomApisResponse, CustomApisPaths, CustomApisComponents, AccountManagerUsersClient, AccountManagerClientConfig, AccountManagerUser, AccountManagerResponse, AccountManagerError, UserCreate, UserUpdate, UserCollection, UserState, UserExpandOption, AccountManagerRolesClient, AccountManagerRole, AccountManagerRolesResponse, AccountManagerRolesError, RoleCollection, ListRolesOptions, RoleMapping, OrgMapping, AccountManagerApiClientsClient, AccountManagerApiClient, APIClientCreate, APIClientUpdate, APIClientCollection, ApiClientExpandOption, ListApiClientsOptions, AccountManagerOrgsClient, AccountManagerOrganization, OrganizationCollection, ListOrgsOptions, CdnZonesClient, CdnZonesClientConfig, CdnZonesClientOptions, CdnZonesError, CdnZonesResponse, Zone, ZonesEnvelope, CdnZonesPaths, CdnZonesComponents, GranularReplicationsClient, GranularReplicationsClientConfig, GranularReplicationsError, GranularReplicationsResponse, ProductItem, PriceTableItem, ContentAssetItemPrivate, ContentAssetItemShared, PublishProcessResponse, PublishProcessListResponse, PublishIdResponse, GranularReplicationsPaths, GranularReplicationsComponents, CipClient, CipClientConfig, CipColumn, CipExecuteResponse, CipFetchResponse, CipFrame, CipQueryOptions, CipQueryResult, } from './clients/index.js';
11
+ export { WebDavClient, createOcapiClient, createAuthMiddleware, createExtraParamsMiddleware, createSlasClient, createOdsClient, createCustomApisClient, createAccountManagerUsersClient, createAccountManagerRolesClient, createAccountManagerApiClientsClient, createAccountManagerOrgsClient, createCdnZonesClient, createGranularReplicationsClient, createCipClient, createMetricsClient, METRICS_DEFAULT_SCOPES, toOrganizationId, normalizeTenantId, buildTenantScope, getApiErrorMessage, isValidRoleTenantFilter, fetchRoleMapping, resolveToInternalRole, resolveFromInternalRole, ORGANIZATION_ID_PREFIX, ROLE_TENANT_FILTER_PATTERN, SCAPI_TENANT_SCOPE_PREFIX, CUSTOM_APIS_DEFAULT_SCOPES, CDN_ZONES_READ_SCOPES, CDN_ZONES_RW_SCOPES, DEFAULT_CIP_HOST, DEFAULT_CIP_STAGING_HOST, } from './clients/index.js';
12
+ export type { PropfindEntry, ExtraParamsConfig, OcapiClient, OcapiError, OcapiResponse, OcapiPaths, OcapiComponents, SlasClient, SlasClientConfig, SlasError, SlasResponse, SlasPaths, SlasComponents, OdsClient, OdsClientConfig, OdsError, OdsResponse, OdsPaths, OdsComponents, CustomApisClient, CustomApisClientConfig, CustomApisError, CustomApisResponse, CustomApisPaths, CustomApisComponents, AccountManagerUsersClient, AccountManagerClientConfig, AccountManagerUser, AccountManagerResponse, AccountManagerError, UserCreate, UserUpdate, UserCollection, UserState, UserExpandOption, AccountManagerRolesClient, AccountManagerRole, AccountManagerRolesResponse, AccountManagerRolesError, RoleCollection, ListRolesOptions, RoleMapping, OrgMapping, AccountManagerApiClientsClient, AccountManagerApiClient, APIClientCreate, APIClientUpdate, APIClientCollection, ApiClientExpandOption, ListApiClientsOptions, AccountManagerOrgsClient, AccountManagerOrganization, OrganizationCollection, ListOrgsOptions, CdnZonesClient, CdnZonesClientConfig, CdnZonesClientOptions, CdnZonesError, CdnZonesResponse, Zone, ZonesEnvelope, CdnZonesPaths, CdnZonesComponents, GranularReplicationsClient, GranularReplicationsClientConfig, GranularReplicationsError, GranularReplicationsResponse, ProductItem, PriceTableItem, ContentAssetItemPrivate, ContentAssetItemShared, PublishProcessResponse, PublishProcessListResponse, PublishIdResponse, GranularReplicationsPaths, GranularReplicationsComponents, CipClient, CipClientConfig, CipColumn, CipExecuteResponse, CipFetchResponse, CipFrame, CipQueryOptions, CipQueryResult, MetricsClient, MetricsClientConfig, MetricsResponse, MetricsDataResponse, Metric, MetricDataSeries, MetricDataPoint, MetricsError, } from './clients/index.js';
13
13
  export { findCartridges, listCodeVersions, getActiveCodeVersion, activateCodeVersion, reloadCodeVersion, deleteCodeVersion, createCodeVersion, findAndDeployCartridges, uploadCartridges, deleteCartridges, watchCartridges, } from './operations/code/index.js';
14
14
  export type { CartridgeMapping, FindCartridgesOptions, CodeVersion, CodeVersionResult, DeployOptions, DeployResult, WatchOptions, WatchResult, } from './operations/code/index.js';
15
15
  export { executeJob, getJobExecution, waitForJob, searchJobExecutions, findRunningJobExecution, getJobLog, getJobErrorMessage, JobExecutionError, siteArchiveImport, siteArchiveExport, siteArchiveExportToPath, } from './operations/jobs/index.js';
@@ -21,6 +21,8 @@ export type { SandboxState, WaitForSandboxOptions, WaitForSandboxPollInfo } from
21
21
  export type { CloneState, WaitForCloneOptions, WaitForClonePollInfo } from './operations/ods/index.js';
22
22
  export { booleanLiteral, buildCipReportSql, dateLiteral, describeCipTable, escapeSqlString, executeCipReport, getCipReportByName, integerLiteral, isReservedIdentifier, listCipReports, listCipTables, quoteIdentifierIfReserved, stringInList, stringLiteral, } from './operations/cip/index.js';
23
23
  export type { CipColumnMetadata, CipDescribeTableOptions, CipDescribeTableResult, CipListTablesOptions, CipListTablesResult, CipReportDefinition, CipReportExecutionOptions, CipReportParamType, CipReportParamDefinition, CipReportQueryExecutor, CipReportQueryResult, CipReportSqlResult, CipTableMetadata, } from './operations/cip/index.js';
24
+ export { getOverallMetrics, getSalesMetrics, getEcdnMetrics, getThirdPartyMetrics, getScapiMetrics, getScapiHooksMetrics, getMrtMetrics, getControllerMetrics, getOcapiMetrics, getMetricsByCategory, parseMetricsBound, resolveMetricsWindow, parseSeriesTags, enrichMetricsTags, METRIC_CATEGORIES, METRICS_RETENTION_MS, METRICS_RETENTION_SAFETY_MARGIN_MS, METRICS_DEFAULT_WINDOW_MS, } from './operations/metrics/index.js';
25
+ export type { MetricCategory, MetricsTimeWindow, MetricsBoundInput, MetricsWindowInput, ResolvedMetricsWindow, MetricSeriesTags, MetricsTagContext, MetricsTaggedResponse, ThirdPartyMetricsOptions, ScapiMetricsOptions, OcapiMetricsOptions, MetricsQueryOptions, } from './operations/metrics/index.js';
24
26
  export { getUser, getUserByLogin, listUsers, createUser, updateUser, deleteUser, purgeUser, resetUser, grantRole, revokeRole, } from './operations/users/index.js';
25
27
  export { validateCap, commerceAppInstall, commerceAppUninstall, commerceAppPackage, discoverLocalApps, listInstalledApps, parseCommerceFeatureStatesXml, readManifest, pullCommerceApps, } from './operations/cap/index.js';
26
28
  export type { CapValidationResult, CommerceAppManifest, CommerceAppInstallOptions, CommerceAppInstallResult, CommerceAppUninstallOptions, CommerceAppUninstallResult, CommerceAppPackageOptions, CommerceAppPackageResult, CommerceFeatureState, LocalCommerceApp, ListInstalledAppsOptions, ListInstalledAppsResult, PullCommerceAppsOptions, PullCommerceAppsResult, PulledApp, PullSource, } from './operations/cap/index.js';
package/dist/esm/index.js CHANGED
@@ -13,7 +13,7 @@ export { BasicAuthStrategy, OAuthStrategy, ImplicitOAuthStrategy, JwtOAuthStrate
13
13
  // Context Layer - Instance
14
14
  export { B2CInstance } from './instance/index.js';
15
15
  // Clients
16
- export { WebDavClient, createOcapiClient, createAuthMiddleware, createExtraParamsMiddleware, createSlasClient, createOdsClient, createCustomApisClient, createAccountManagerUsersClient, createAccountManagerRolesClient, createAccountManagerApiClientsClient, createAccountManagerOrgsClient, createCdnZonesClient, createGranularReplicationsClient, createCipClient, toOrganizationId, normalizeTenantId, buildTenantScope, getApiErrorMessage, isValidRoleTenantFilter, fetchRoleMapping, resolveToInternalRole, resolveFromInternalRole, ORGANIZATION_ID_PREFIX, ROLE_TENANT_FILTER_PATTERN, SCAPI_TENANT_SCOPE_PREFIX, CUSTOM_APIS_DEFAULT_SCOPES, CDN_ZONES_READ_SCOPES, CDN_ZONES_RW_SCOPES, DEFAULT_CIP_HOST, DEFAULT_CIP_STAGING_HOST, } from './clients/index.js';
16
+ export { WebDavClient, createOcapiClient, createAuthMiddleware, createExtraParamsMiddleware, createSlasClient, createOdsClient, createCustomApisClient, createAccountManagerUsersClient, createAccountManagerRolesClient, createAccountManagerApiClientsClient, createAccountManagerOrgsClient, createCdnZonesClient, createGranularReplicationsClient, createCipClient, createMetricsClient, METRICS_DEFAULT_SCOPES, toOrganizationId, normalizeTenantId, buildTenantScope, getApiErrorMessage, isValidRoleTenantFilter, fetchRoleMapping, resolveToInternalRole, resolveFromInternalRole, ORGANIZATION_ID_PREFIX, ROLE_TENANT_FILTER_PATTERN, SCAPI_TENANT_SCOPE_PREFIX, CUSTOM_APIS_DEFAULT_SCOPES, CDN_ZONES_READ_SCOPES, CDN_ZONES_RW_SCOPES, DEFAULT_CIP_HOST, DEFAULT_CIP_STAGING_HOST, } from './clients/index.js';
17
17
  // Operations - Code
18
18
  export { findCartridges, listCodeVersions, getActiveCodeVersion, activateCodeVersion, reloadCodeVersion, deleteCodeVersion, createCodeVersion, findAndDeployCartridges, uploadCartridges, deleteCartridges, watchCartridges, } from './operations/code/index.js';
19
19
  // Operations - Jobs
@@ -24,6 +24,8 @@ export { searchDocs, readDoc, readDocByQuery, listDocs, loadSearchIndex, listSch
24
24
  export { isUuid, isFriendlySandboxId, parseFriendlySandboxId, resolveSandboxId, SandboxNotFoundError, waitForSandbox, SandboxPollingTimeoutError, SandboxPollingError, SandboxTerminalStateError, waitForClone, ClonePollingTimeoutError, ClonePollingError, CloneFailedError, } from './operations/ods/index.js';
25
25
  // Operations - CIP
26
26
  export { booleanLiteral, buildCipReportSql, dateLiteral, describeCipTable, escapeSqlString, executeCipReport, getCipReportByName, integerLiteral, isReservedIdentifier, listCipReports, listCipTables, quoteIdentifierIfReserved, stringInList, stringLiteral, } from './operations/cip/index.js';
27
+ // Operations - Metrics (Observability)
28
+ export { getOverallMetrics, getSalesMetrics, getEcdnMetrics, getThirdPartyMetrics, getScapiMetrics, getScapiHooksMetrics, getMrtMetrics, getControllerMetrics, getOcapiMetrics, getMetricsByCategory, parseMetricsBound, resolveMetricsWindow, parseSeriesTags, enrichMetricsTags, METRIC_CATEGORIES, METRICS_RETENTION_MS, METRICS_RETENTION_SAFETY_MARGIN_MS, METRICS_DEFAULT_WINDOW_MS, } from './operations/metrics/index.js';
27
29
  // Operations - Users
28
30
  export { getUser, getUserByLogin, listUsers, createUser, updateUser, deleteUser, purgeUser, resetUser, grantRole, revokeRole, } from './operations/users/index.js';
29
31
  // Operations - CAP (Commerce App Packages)
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -17,6 +17,24 @@ export interface FindCartridgesOptions {
17
17
  include?: string[];
18
18
  /** Cartridge names to exclude */
19
19
  exclude?: string[];
20
+ /**
21
+ * Maximum directory depth to recurse when searching for `.project` files,
22
+ * counted in path segments relative to the search directory (so a cartridge
23
+ * at `cartridges/<name>/.project` is depth 3). When omitted the search is
24
+ * unbounded (default), preserving behavior for callers that expect a full
25
+ * recursive walk. Bound this for untrusted/broad roots (e.g. an MCP server
26
+ * that may be launched from a home directory) to avoid scanning the whole
27
+ * filesystem tree.
28
+ */
29
+ maxDepth?: number;
30
+ /**
31
+ * When true, stop at the first matching cartridge and return only that one.
32
+ * Useful for existence checks (e.g. workspace-type detection) where the full
33
+ * list is not needed — it lets the underlying scan short-circuit instead of
34
+ * enumerating every `.project` file. Filters from `include`/`exclude` are
35
+ * applied while scanning, so the returned cartridge always satisfies them.
36
+ */
37
+ firstMatchOnly?: boolean;
20
38
  }
21
39
  /**
22
40
  * Find cartridges recursively in a directory.
@@ -3,7 +3,7 @@
3
3
  * SPDX-License-Identifier: Apache-2
4
4
  * For full license text, see the license.txt file in the repo root or http://www.apache.org/licenses/LICENSE-2.0
5
5
  */
6
- import { globSync } from 'glob';
6
+ import { globSync, globIterateSync } from 'glob';
7
7
  import path from 'node:path';
8
8
  /**
9
9
  * Find cartridges recursively in a directory.
@@ -32,9 +32,9 @@ import path from 'node:path';
32
32
  */
33
33
  export function findCartridges(directory, options = {}) {
34
34
  const searchDir = directory ? path.resolve(directory) : process.cwd();
35
- // Find all .project files (Eclipse project markers).
36
- // Ignore common non-cartridge dirs to keep discovery fast when projectRoot is broad (e.g. MCP working directory).
37
- const projectFiles = globSync('**/.project', {
35
+ // Ignore common non-cartridge dirs to keep discovery fast when the search
36
+ // root is broad (e.g. an MCP server's working directory).
37
+ const globOptions = {
38
38
  cwd: searchDir,
39
39
  ignore: [
40
40
  '**/node_modules/**',
@@ -46,24 +46,35 @@ export function findCartridges(directory, options = {}) {
46
46
  '**/tmp/**',
47
47
  '**/temp/**',
48
48
  ],
49
- });
50
- let cartridges = projectFiles.map((f) => {
49
+ // maxDepth is only forwarded when set so unbounded callers keep prior behavior.
50
+ ...(options.maxDepth === undefined ? {} : { maxDepth: options.maxDepth }),
51
+ };
52
+ const toCartridge = (f) => {
51
53
  const dirname = path.resolve(searchDir, path.dirname(f));
52
54
  const cartridgeName = path.basename(dirname);
53
- return {
54
- name: cartridgeName,
55
- dest: cartridgeName,
56
- src: dirname,
57
- };
58
- });
59
- // Apply include filter
60
- if (options.include && options.include.length > 0) {
61
- cartridges = cartridges.filter((c) => options.include.includes(c.name));
62
- }
63
- // Apply exclude filter
64
- if (options.exclude && options.exclude.length > 0) {
65
- cartridges = cartridges.filter((c) => !options.exclude.includes(c.name));
55
+ return { name: cartridgeName, dest: cartridgeName, src: dirname };
56
+ };
57
+ const matches = (c) => {
58
+ if (options.include && options.include.length > 0 && !options.include.includes(c.name)) {
59
+ return false;
60
+ }
61
+ if (options.exclude && options.exclude.length > 0 && options.exclude.includes(c.name)) {
62
+ return false;
63
+ }
64
+ return true;
65
+ };
66
+ // Existence-check fast path: stream matches and stop at the first one that
67
+ // passes the filters, so a large tree isn't fully enumerated.
68
+ if (options.firstMatchOnly) {
69
+ for (const f of globIterateSync('**/.project', globOptions)) {
70
+ const cartridge = toCartridge(f);
71
+ if (matches(cartridge)) {
72
+ return [cartridge];
73
+ }
74
+ }
75
+ return [];
66
76
  }
67
- return cartridges;
77
+ // Find all .project files (Eclipse project markers).
78
+ return globSync('**/.project', globOptions).map(toCartridge).filter(matches);
68
79
  }
69
80
  //# sourceMappingURL=cartridges.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cartridges.js","sourceRoot":"","sources":["../../../../src/operations/code/cartridges.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAC,QAAQ,EAAC,MAAM,MAAM,CAAC;AAC9B,OAAO,IAAI,MAAM,WAAW,CAAC;AAwB7B;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,UAAU,cAAc,CAAC,SAAkB,EAAE,UAAiC,EAAE;IACpF,MAAM,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;IAEtE,qDAAqD;IACrD,kHAAkH;IAClH,MAAM,YAAY,GAAG,QAAQ,CAAC,aAAa,EAAE;QAC3C,GAAG,EAAE,SAAS;QACd,MAAM,EAAE;YACN,oBAAoB;YACpB,YAAY;YACZ,YAAY;YACZ,aAAa;YACb,gBAAgB;YAChB,cAAc;YACd,WAAW;YACX,YAAY;SACb;KACF,CAAC,CAAC;IAEH,IAAI,UAAU,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACtC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QACzD,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC7C,OAAO;YACL,IAAI,EAAE,aAAa;YACnB,IAAI,EAAE,aAAa;YACnB,GAAG,EAAE,OAAO;SACb,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,uBAAuB;IACvB,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClD,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,OAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3E,CAAC;IAED,uBAAuB;IACvB,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClD,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,OAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5E,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC"}
1
+ {"version":3,"file":"cartridges.js","sourceRoot":"","sources":["../../../../src/operations/code/cartridges.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAC,QAAQ,EAAE,eAAe,EAAC,MAAM,MAAM,CAAC;AAC/C,OAAO,IAAI,MAAM,WAAW,CAAC;AA0C7B;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,UAAU,cAAc,CAAC,SAAkB,EAAE,UAAiC,EAAE;IACpF,MAAM,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;IAEtE,0EAA0E;IAC1E,0DAA0D;IAC1D,MAAM,WAAW,GAAG;QAClB,GAAG,EAAE,SAAS;QACd,MAAM,EAAE;YACN,oBAAoB;YACpB,YAAY;YACZ,YAAY;YACZ,aAAa;YACb,gBAAgB;YAChB,cAAc;YACd,WAAW;YACX,YAAY;SACb;QACD,gFAAgF;QAChF,GAAG,CAAC,OAAO,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAC,CAAC;KACxE,CAAC;IAEF,MAAM,WAAW,GAAG,CAAC,CAAS,EAAoB,EAAE;QAClD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QACzD,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC7C,OAAO,EAAC,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,EAAE,OAAO,EAAC,CAAC;IAClE,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,CAAC,CAAmB,EAAW,EAAE;QAC/C,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;YACvF,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;YACtF,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IAEF,2EAA2E;IAC3E,8DAA8D;IAC9D,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;QAC3B,KAAK,MAAM,CAAC,IAAI,eAAe,CAAC,aAAa,EAAE,WAAW,CAAC,EAAE,CAAC;YAC5D,MAAM,SAAS,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;YACjC,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;gBACvB,OAAO,CAAC,SAAS,CAAC,CAAC;YACrB,CAAC;QACH,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,qDAAqD;IACrD,OAAO,QAAQ,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC/E,CAAC"}
@@ -9,8 +9,13 @@ export declare function parseRelativeTime(timeStr: string): null | number;
9
9
  * Supports:
10
10
  * - Relative times: "5m", "1h", "2d"
11
11
  * - ISO 8601: "2026-01-25T10:00:00"
12
+ *
13
+ * @param sinceStr - The value to parse
14
+ * @param now - Reference time for relative values (defaults to the current time).
15
+ * Injectable so callers that resolve several bounds together, or that need
16
+ * deterministic behavior in tests, can pin a single "now".
12
17
  */
13
- export declare function parseSinceTime(sinceStr: string): Date;
18
+ export declare function parseSinceTime(sinceStr: string, now?: Date): Date;
14
19
  /**
15
20
  * Parses a B2C log timestamp into a Date object.
16
21
  * Expected format: "2025-01-25 10:30:45.123 GMT"
@@ -34,11 +34,16 @@ export function parseRelativeTime(timeStr) {
34
34
  * Supports:
35
35
  * - Relative times: "5m", "1h", "2d"
36
36
  * - ISO 8601: "2026-01-25T10:00:00"
37
+ *
38
+ * @param sinceStr - The value to parse
39
+ * @param now - Reference time for relative values (defaults to the current time).
40
+ * Injectable so callers that resolve several bounds together, or that need
41
+ * deterministic behavior in tests, can pin a single "now".
37
42
  */
38
- export function parseSinceTime(sinceStr) {
43
+ export function parseSinceTime(sinceStr, now = new Date()) {
39
44
  const relativeMs = parseRelativeTime(sinceStr);
40
45
  if (relativeMs !== null) {
41
- return new Date(Date.now() - relativeMs);
46
+ return new Date(now.getTime() - relativeMs);
42
47
  }
43
48
  const date = new Date(sinceStr);
44
49
  if (Number.isNaN(date.getTime())) {
@@ -1 +1 @@
1
- {"version":3,"file":"filter.js","sourceRoot":"","sources":["../../../../src/operations/logs/filter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"filter.js","sourceRoot":"","sources":["../../../../src/operations/logs/filter.ts"],"names":[],"mappings":"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"}