@salesforce/b2c-tooling-sdk 1.17.0 → 1.19.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 (94) hide show
  1. package/data/content-schemas/componenttype.json +79 -17
  2. package/data/content-schemas/pagetype.json +4 -0
  3. package/data/guides/enrichment.json +11264 -0
  4. package/data/guides/index.json +15166 -0
  5. package/data/job-steps/index.json +71 -1
  6. package/data/job-steps/job-steps.json +1 -1
  7. package/data/script-api/index.json +2145 -37
  8. package/data/tooling/index.json +222 -0
  9. package/data/xsd/index.json +1 -1
  10. package/dist/esm/auth/client-credentials.d.ts +27 -0
  11. package/dist/esm/auth/client-credentials.js +60 -0
  12. package/dist/esm/auth/client-credentials.js.map +1 -0
  13. package/dist/esm/auth/index.d.ts +1 -0
  14. package/dist/esm/auth/index.js +2 -0
  15. package/dist/esm/auth/index.js.map +1 -1
  16. package/dist/esm/auth/oauth.js +2 -1
  17. package/dist/esm/auth/oauth.js.map +1 -1
  18. package/dist/esm/cli/base-command.d.ts +40 -0
  19. package/dist/esm/cli/base-command.js +66 -5
  20. package/dist/esm/cli/base-command.js.map +1 -1
  21. package/dist/esm/cli/index.d.ts +2 -2
  22. package/dist/esm/cli/index.js +1 -1
  23. package/dist/esm/cli/index.js.map +1 -1
  24. package/dist/esm/cli/instance-command.d.ts +1 -1
  25. package/dist/esm/cli/instance-command.js +5 -3
  26. package/dist/esm/cli/instance-command.js.map +1 -1
  27. package/dist/esm/cli/oauth-command.d.ts +1 -1
  28. package/dist/esm/cli/oauth-command.js +5 -3
  29. package/dist/esm/cli/oauth-command.js.map +1 -1
  30. package/dist/esm/cli/ods-command.d.ts +1 -1
  31. package/dist/esm/cli/webdav-command.d.ts +1 -1
  32. package/dist/esm/clients/index.d.ts +2 -0
  33. package/dist/esm/clients/index.js +1 -0
  34. package/dist/esm/clients/index.js.map +1 -1
  35. package/dist/esm/clients/metrics.d.ts +123 -0
  36. package/dist/esm/clients/metrics.generated.d.ts +1016 -0
  37. package/dist/esm/clients/metrics.generated.js +6 -0
  38. package/dist/esm/clients/metrics.generated.js.map +1 -0
  39. package/dist/esm/clients/metrics.js +65 -0
  40. package/dist/esm/clients/metrics.js.map +1 -0
  41. package/dist/esm/clients/middleware-registry.d.ts +1 -1
  42. package/dist/esm/clients/middleware-registry.js.map +1 -1
  43. package/dist/esm/config/sources/env-source.js +1 -0
  44. package/dist/esm/config/sources/env-source.js.map +1 -1
  45. package/dist/esm/discovery/detector.d.ts +0 -5
  46. package/dist/esm/discovery/detector.js +24 -3
  47. package/dist/esm/discovery/detector.js.map +1 -1
  48. package/dist/esm/discovery/index.d.ts +1 -0
  49. package/dist/esm/discovery/index.js +1 -0
  50. package/dist/esm/discovery/index.js.map +1 -1
  51. package/dist/esm/discovery/patterns/index.d.ts +4 -2
  52. package/dist/esm/discovery/patterns/index.js +9 -3
  53. package/dist/esm/discovery/patterns/index.js.map +1 -1
  54. package/dist/esm/discovery/patterns/pwa-kit.d.ts +12 -0
  55. package/dist/esm/discovery/patterns/pwa-kit.js +18 -7
  56. package/dist/esm/discovery/patterns/pwa-kit.js.map +1 -1
  57. package/dist/esm/discovery/patterns/sfra.d.ts +5 -4
  58. package/dist/esm/discovery/patterns/sfra.js +1 -1
  59. package/dist/esm/discovery/patterns/sfra.js.map +1 -1
  60. package/dist/esm/discovery/patterns/storefront-next.js +18 -2
  61. package/dist/esm/discovery/patterns/storefront-next.js.map +1 -1
  62. package/dist/esm/discovery/types.d.ts +13 -4
  63. package/dist/esm/discovery/types.js +11 -1
  64. package/dist/esm/discovery/types.js.map +1 -1
  65. package/dist/esm/docs/index.d.ts +3 -3
  66. package/dist/esm/docs/index.js +1 -1
  67. package/dist/esm/docs/index.js.map +1 -1
  68. package/dist/esm/docs/search.d.ts +111 -38
  69. package/dist/esm/docs/search.js +402 -81
  70. package/dist/esm/docs/search.js.map +1 -1
  71. package/dist/esm/docs/types.d.ts +56 -6
  72. package/dist/esm/docs/types.js +2 -0
  73. package/dist/esm/docs/types.js.map +1 -1
  74. package/dist/esm/index.d.ts +4 -2
  75. package/dist/esm/index.js +3 -1
  76. package/dist/esm/index.js.map +1 -1
  77. package/dist/esm/operations/logs/filter.d.ts +6 -1
  78. package/dist/esm/operations/logs/filter.js +7 -2
  79. package/dist/esm/operations/logs/filter.js.map +1 -1
  80. package/dist/esm/operations/metrics/index.d.ts +371 -0
  81. package/dist/esm/operations/metrics/index.js +478 -0
  82. package/dist/esm/operations/metrics/index.js.map +1 -0
  83. package/dist/esm/operations/metrics/tags.d.ts +148 -0
  84. package/dist/esm/operations/metrics/tags.js +235 -0
  85. package/dist/esm/operations/metrics/tags.js.map +1 -0
  86. package/dist/esm/slas/token.d.ts +9 -2
  87. package/dist/esm/slas/token.js +25 -29
  88. package/dist/esm/slas/token.js.map +1 -1
  89. package/dist/esm/telemetry/telemetry.d.ts +1 -0
  90. package/dist/esm/telemetry/telemetry.js +32 -0
  91. package/dist/esm/telemetry/telemetry.js.map +1 -1
  92. package/dist/esm/telemetry/types.d.ts +6 -0
  93. package/package.json +12 -3
  94. 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"}
@@ -19,6 +19,7 @@ const ENV_VAR_MAP = {
19
19
  SFCC_CLIENT_ID: 'clientId',
20
20
  SFCC_CLIENT_SECRET: 'clientSecret',
21
21
  SFCC_OAUTH_SCOPES: 'scopes',
22
+ SFCC_SHORT_CODE: 'shortCode',
22
23
  SFCC_SHORTCODE: 'shortCode',
23
24
  SFCC_TENANT_ID: 'tenantId',
24
25
  SFCC_CARTRIDGES: 'cartridges',
@@ -1 +1 @@
1
- {"version":3,"file":"env-source.js","sourceRoot":"","sources":["../../../../src/config/sources/env-source.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"env-source.js","sourceRoot":"","sources":["../../../../src/config/sources/env-source.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,3 @@
1
- /**
2
- * Workspace detection implementation.
3
- *
4
- * @module discovery/detector
5
- */
6
1
  import type { DetectionResult, DetectOptions } from './types.js';
7
2
  /**
8
3
  * Detects the type of B2C Commerce project in a workspace.
@@ -1,3 +1,14 @@
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
+ * Workspace detection implementation.
8
+ *
9
+ * @module discovery/detector
10
+ */
11
+ import { getLogger } from '../logging/logger.js';
1
12
  import { DEFAULT_PATTERNS } from './patterns/index.js';
2
13
  /**
3
14
  * Detects the type of B2C Commerce project in a workspace.
@@ -47,11 +58,18 @@ export class WorkspaceTypeDetector {
47
58
  * @returns Detection result with all project types and matched patterns
48
59
  */
49
60
  async detect() {
61
+ // SDK-internal detail is logged at trace: the application layers (CLI/MCP)
62
+ // surface the resolved storefront at debug/info, so this stays out of the
63
+ // way on a normal debug run and is available when tracing library internals.
64
+ const logger = getLogger().child({ component: 'discovery' });
50
65
  const matchedPatterns = [];
51
66
  const projectTypes = [];
67
+ logger.trace({ workspacePath: this.workspacePath, patternCount: this.patterns.length }, 'Detecting workspace/storefront type');
52
68
  for (const pattern of this.patterns) {
53
69
  try {
54
- if (await pattern.detect(this.workspacePath)) {
70
+ const matched = await pattern.detect(this.workspacePath);
71
+ logger.trace({ pattern: pattern.name, projectType: pattern.projectType, matched }, 'Detection pattern evaluated');
72
+ if (matched) {
55
73
  matchedPatterns.push(pattern.name);
56
74
  // Add project type if not already present
57
75
  if (!projectTypes.includes(pattern.projectType)) {
@@ -59,10 +77,13 @@ export class WorkspaceTypeDetector {
59
77
  }
60
78
  }
61
79
  }
62
- catch {
63
- // Skip patterns that fail to detect - could log in debug mode
80
+ catch (err) {
81
+ // A pattern that throws is treated as "not matched" so one bad pattern
82
+ // cannot break detection; surface it (previously silently swallowed).
83
+ logger.trace({ pattern: pattern.name, err }, 'Detection pattern threw; treating as no match');
64
84
  }
65
85
  }
86
+ logger.trace({ workspacePath: this.workspacePath, projectTypes, matchedPatterns }, `Workspace detection complete: ${projectTypes.length > 0 ? projectTypes.join(', ') : 'no project type detected'}`);
66
87
  return {
67
88
  projectTypes,
68
89
  matchedPatterns,
@@ -1 +1 @@
1
- {"version":3,"file":"detector.js","sourceRoot":"","sources":["../../../src/discovery/detector.ts"],"names":[],"mappings":"AAWA,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,MAAM,eAAe,GAAa,EAAE,CAAC;QACrC,MAAM,YAAY,GAAkB,EAAE,CAAC;QAEvC,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,IAAI,CAAC;gBACH,IAAI,MAAM,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;oBAC7C,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,MAAM,CAAC;gBACP,8DAA8D;YAChE,CAAC;QACH,CAAC;QAED,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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"}
@@ -58,6 +58,7 @@
58
58
  */
59
59
  export { WorkspaceTypeDetector, detectWorkspaceType } from './detector.js';
60
60
  export type { ProjectType, DetectionPattern, DetectionResult, DetectOptions } from './types.js';
61
+ export { PROJECT_TYPES } from './types.js';
61
62
  export { DEFAULT_PATTERNS, cartridgesPattern, pwaKitV3Pattern, storefrontNextPattern, sfraPattern, } from './patterns/index.js';
62
63
  export { readPackageJson, exists, glob, globDirs } from './utils.js';
63
64
  export type { PackageJson } from './utils.js';
@@ -63,6 +63,7 @@
63
63
  */
64
64
  // Main API
65
65
  export { WorkspaceTypeDetector, detectWorkspaceType } from './detector.js';
66
+ export { PROJECT_TYPES } from './types.js';
66
67
  // Patterns (for customization)
67
68
  export { DEFAULT_PATTERNS, cartridgesPattern, pwaKitV3Pattern, storefrontNextPattern, sfraPattern, } from './patterns/index.js';
68
69
  // Utilities (for building custom patterns)
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/discovery/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyDG;AAEH,WAAW;AACX,OAAO,EAAC,qBAAqB,EAAE,mBAAmB,EAAC,MAAM,eAAe,CAAC;AAKzE,+BAA+B;AAC/B,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,qBAAqB,EACrB,WAAW,GACZ,MAAM,qBAAqB,CAAC;AAE7B,2CAA2C;AAC3C,OAAO,EAAC,eAAe,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAC,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/discovery/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyDG;AAEH,WAAW;AACX,OAAO,EAAC,qBAAqB,EAAE,mBAAmB,EAAC,MAAM,eAAe,CAAC;AAIzE,OAAO,EAAC,aAAa,EAAC,MAAM,YAAY,CAAC;AAEzC,+BAA+B;AAC/B,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,qBAAqB,EACrB,WAAW,GACZ,MAAM,qBAAqB,CAAC;AAE7B,2CAA2C;AAC3C,OAAO,EAAC,eAAe,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAC,MAAM,YAAY,CAAC"}
@@ -1,8 +1,9 @@
1
1
  /**
2
2
  * Detection patterns for workspace discovery.
3
3
  *
4
- * Simplified to 3 workspace types:
4
+ * Workspace markers (not mutually exclusive — a workspace can match several):
5
5
  * - cartridges: Any project with cartridges
6
+ * - sfra: Storefront Reference Architecture (also matches `cartridges`)
6
7
  * - pwa-kit-v3: PWA Kit v3 storefront
7
8
  * - storefront-next: Storefront Next (Odyssey)
8
9
  *
@@ -12,7 +13,8 @@ import type { DetectionPattern } from '../types.js';
12
13
  /**
13
14
  * Default detection patterns.
14
15
  *
15
- * All patterns are checked - multiple can match for hybrid projects.
16
+ * All patterns are checked multiple can match for hybrid projects. `sfra` is a
17
+ * refinement of `cartridges`, so a SFRA workspace matches both.
16
18
  */
17
19
  export declare const DEFAULT_PATTERNS: DetectionPattern[];
18
20
  export { cartridgesPattern } from './cartridges.js';
@@ -1,16 +1,22 @@
1
1
  import { cartridgesPattern } from './cartridges.js';
2
2
  import { pwaKitV3Pattern } from './pwa-kit.js';
3
+ import { sfraPattern } from './sfra.js';
3
4
  import { storefrontNextPattern } from './storefront-next.js';
4
5
  /**
5
6
  * Default detection patterns.
6
7
  *
7
- * All patterns are checked - multiple can match for hybrid projects.
8
+ * All patterns are checked multiple can match for hybrid projects. `sfra` is a
9
+ * refinement of `cartridges`, so a SFRA workspace matches both.
8
10
  */
9
- export const DEFAULT_PATTERNS = [pwaKitV3Pattern, storefrontNextPattern, cartridgesPattern];
11
+ export const DEFAULT_PATTERNS = [
12
+ pwaKitV3Pattern,
13
+ storefrontNextPattern,
14
+ sfraPattern,
15
+ cartridgesPattern,
16
+ ];
10
17
  // Individual pattern exports for customization
11
18
  export { cartridgesPattern } from './cartridges.js';
12
19
  export { pwaKitV3Pattern } from './pwa-kit.js';
13
20
  export { storefrontNextPattern } from './storefront-next.js';
14
- // Additional patterns (not in DEFAULT_PATTERNS, available for custom use)
15
21
  export { sfraPattern } from './sfra.js';
16
22
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/discovery/patterns/index.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAC,iBAAiB,EAAC,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAC,eAAe,EAAC,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAC,qBAAqB,EAAC,MAAM,sBAAsB,CAAC;AAE3D;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAuB,CAAC,eAAe,EAAE,qBAAqB,EAAE,iBAAiB,CAAC,CAAC;AAEhH,+CAA+C;AAC/C,OAAO,EAAC,iBAAiB,EAAC,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAC,eAAe,EAAC,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAC,qBAAqB,EAAC,MAAM,sBAAsB,CAAC;AAE3D,0EAA0E;AAC1E,OAAO,EAAC,WAAW,EAAC,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/discovery/patterns/index.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAC,iBAAiB,EAAC,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAC,eAAe,EAAC,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAC,WAAW,EAAC,MAAM,WAAW,CAAC;AACtC,OAAO,EAAC,qBAAqB,EAAC,MAAM,sBAAsB,CAAC;AAE3D;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAuB;IAClD,eAAe;IACf,qBAAqB;IACrB,WAAW;IACX,iBAAiB;CAClB,CAAC;AAEF,+CAA+C;AAC/C,OAAO,EAAC,iBAAiB,EAAC,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAC,eAAe,EAAC,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAC,qBAAqB,EAAC,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAC,WAAW,EAAC,MAAM,WAAW,CAAC"}
@@ -4,6 +4,18 @@
4
4
  * @module discovery/patterns/pwa-kit-v3
5
5
  */
6
6
  import type { DetectionPattern } from '../types.js';
7
+ import type { PackageJson } from '../utils.js';
8
+ /**
9
+ * Returns true if this package.json indicates a PWA Kit v3 project.
10
+ *
11
+ * Two flavors:
12
+ * - Template copy: has an `@salesforce/pwa-kit-*` package
13
+ * - Extensible: has `@salesforce/retail-react-app` or the `ccExtensibility` field
14
+ *
15
+ * Exported so other patterns (e.g. storefront-next) can treat a PWA Kit signal
16
+ * as a disambiguator without duplicating this logic.
17
+ */
18
+ export declare function packageIndicatesPwaKit(pkg: PackageJson): boolean;
7
19
  /**
8
20
  * Detection pattern for PWA Kit v3 storefronts.
9
21
  *
@@ -1,4 +1,21 @@
1
1
  import { readPackageJson } from '../utils.js';
2
+ /**
3
+ * Returns true if this package.json indicates a PWA Kit v3 project.
4
+ *
5
+ * Two flavors:
6
+ * - Template copy: has an `@salesforce/pwa-kit-*` package
7
+ * - Extensible: has `@salesforce/retail-react-app` or the `ccExtensibility` field
8
+ *
9
+ * Exported so other patterns (e.g. storefront-next) can treat a PWA Kit signal
10
+ * as a disambiguator without duplicating this logic.
11
+ */
12
+ export function packageIndicatesPwaKit(pkg) {
13
+ // ccExtensibility field is the extensible-flavor marker.
14
+ if (pkg.ccExtensibility)
15
+ return true;
16
+ const deps = Object.keys({ ...pkg.dependencies, ...pkg.devDependencies });
17
+ return deps.some((dep) => dep.startsWith('@salesforce/pwa-kit') || dep === '@salesforce/retail-react-app');
18
+ }
2
19
  /**
3
20
  * Detection pattern for PWA Kit v3 storefronts.
4
21
  *
@@ -14,13 +31,7 @@ export const pwaKitV3Pattern = {
14
31
  const pkg = await readPackageJson(workspacePath);
15
32
  if (!pkg)
16
33
  return false;
17
- // Check for ccExtensibility field (extensible flavor marker)
18
- if (pkg.ccExtensibility)
19
- return true;
20
- const deps = Object.keys({ ...pkg.dependencies, ...pkg.devDependencies });
21
- // Template copy flavor: @salesforce/pwa-kit-* packages
22
- // Extensible flavor: @salesforce/retail-react-app package
23
- return deps.some((dep) => dep.startsWith('@salesforce/pwa-kit') || dep === '@salesforce/retail-react-app');
34
+ return packageIndicatesPwaKit(pkg);
24
35
  },
25
36
  };
26
37
  //# sourceMappingURL=pwa-kit.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pwa-kit.js","sourceRoot":"","sources":["../../../../src/discovery/patterns/pwa-kit.ts"],"names":[],"mappings":"AAWA,OAAO,EAAC,eAAe,EAAC,MAAM,aAAa,CAAC;AAE5C;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,eAAe,GAAqB;IAC/C,IAAI,EAAE,YAAY;IAClB,WAAW,EAAE,YAAY;IACzB,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE;QAC9B,MAAM,GAAG,GAAG,MAAM,eAAe,CAAC,aAAa,CAAC,CAAC;QACjD,IAAI,CAAC,GAAG;YAAE,OAAO,KAAK,CAAC;QAEvB,6DAA6D;QAC7D,IAAI,GAAG,CAAC,eAAe;YAAE,OAAO,IAAI,CAAC;QAErC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,EAAC,GAAG,GAAG,CAAC,YAAY,EAAE,GAAG,GAAG,CAAC,eAAe,EAAC,CAAC,CAAC;QAExE,uDAAuD;QACvD,0DAA0D;QAC1D,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,qBAAqB,CAAC,IAAI,GAAG,KAAK,8BAA8B,CAAC,CAAC;IAC7G,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"pwa-kit.js","sourceRoot":"","sources":["../../../../src/discovery/patterns/pwa-kit.ts"],"names":[],"mappings":"AAYA,OAAO,EAAC,eAAe,EAAC,MAAM,aAAa,CAAC;AAE5C;;;;;;;;;GASG;AACH,MAAM,UAAU,sBAAsB,CAAC,GAAgB;IACrD,yDAAyD;IACzD,IAAI,GAAG,CAAC,eAAe;QAAE,OAAO,IAAI,CAAC;IAErC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,EAAC,GAAG,GAAG,CAAC,YAAY,EAAE,GAAG,GAAG,CAAC,eAAe,EAAC,CAAC,CAAC;IACxE,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,qBAAqB,CAAC,IAAI,GAAG,KAAK,8BAA8B,CAAC,CAAC;AAC7G,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,eAAe,GAAqB;IAC/C,IAAI,EAAE,YAAY;IAClB,WAAW,EAAE,YAAY;IACzB,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE;QAC9B,MAAM,GAAG,GAAG,MAAM,eAAe,CAAC,aAAa,CAAC,CAAC;QACjD,IAAI,CAAC,GAAG;YAAE,OAAO,KAAK,CAAC;QACvB,OAAO,sBAAsB,CAAC,GAAG,CAAC,CAAC;IACrC,CAAC;CACF,CAAC"}
@@ -1,10 +1,11 @@
1
1
  /**
2
2
  * SFRA (Storefront Reference Architecture) detection pattern.
3
3
  *
4
- * NOTE: This pattern is NOT included in DEFAULT_PATTERNS.
5
- * The simpler `cartridgesPattern` is used instead, which detects any cartridge project.
6
- * This pattern is exported for custom detection scenarios where SFRA-specific
7
- * detection is needed.
4
+ * Included in DEFAULT_PATTERNS alongside `cartridgesPattern`. A SFRA workspace
5
+ * matches BOTH patterns (it has cartridges AND the SFRA base cartridge), so it
6
+ * detects as `['cartridges', 'sfra']`. A cartridge project that is not SFRA
7
+ * (custom APIs, integration cartridges, or a PWA Kit / Storefront Next repo that
8
+ * also ships cartridges) matches only `cartridges`, so `sfra` is not asserted.
8
9
  *
9
10
  * @module discovery/patterns/sfra
10
11
  */
@@ -24,7 +24,7 @@ import { readPackageJson } from '../utils.js';
24
24
  */
25
25
  export const sfraPattern = {
26
26
  name: 'sfra',
27
- projectType: 'cartridges', // Maps to cartridges project type
27
+ projectType: 'sfra',
28
28
  detect: async (workspacePath) => {
29
29
  // Primary check: Look for app_storefront_base cartridge (the core SFRA cartridge)
30
30
  // This is the definitive indicator per Salesforce documentation
@@ -1 +1 @@
1
- {"version":3,"file":"sfra.js","sourceRoot":"","sources":["../../../../src/discovery/patterns/sfra.ts"],"names":[],"mappings":"AAgBA,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,YAAY,EAAE,kCAAkC;IAC7D,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,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"}
@@ -10,13 +10,29 @@
10
10
  */
11
11
  import path from 'node:path';
12
12
  import { readPackageJson, globDirs } from '../utils.js';
13
+ import { packageIndicatesPwaKit } from './pwa-kit.js';
14
+ /**
15
+ * The Storefront Next dev toolchain dependency — the definitive dependency
16
+ * signal that a project is Storefront Next.
17
+ *
18
+ * We deliberately do NOT match the broader `@salesforce/storefront-next*` prefix:
19
+ * `@salesforce/storefront-next-runtime` is now also pulled in by PWA Kit projects
20
+ * for unrelated reasons, and matching the prefix produced false positives there.
21
+ */
22
+ const STOREFRONT_NEXT_DEV_DEP = '@salesforce/storefront-next-dev';
13
23
  /**
14
24
  * Returns true if this package.json (deps or name) indicates a Storefront Next project.
15
- * Relies on @salesforce/storefront-next* dependency or package name starting with "storefront-next" only.
25
+ *
26
+ * A PWA Kit signal disqualifies the package outright: PWA Kit apps may depend on
27
+ * `@salesforce/storefront-next-runtime`, and a package that is clearly PWA Kit is
28
+ * not Storefront Next.
16
29
  */
17
30
  function packageIndicatesStorefrontNext(pkg) {
31
+ // PWA Kit and Storefront Next are distinct; a PWA Kit package is never SFNext.
32
+ if (packageIndicatesPwaKit(pkg))
33
+ return false;
18
34
  const deps = Object.keys({ ...pkg.dependencies, ...pkg.devDependencies });
19
- if (deps.some((dep) => dep.startsWith('@salesforce/storefront-next'))) {
35
+ if (deps.includes(STOREFRONT_NEXT_DEV_DEP)) {
20
36
  return true;
21
37
  }
22
38
  const name = pkg.name;
@@ -1 +1 @@
1
- {"version":3,"file":"storefront-next.js","sourceRoot":"","sources":["../../../../src/discovery/patterns/storefront-next.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH;;;;GAIG;AACH,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,OAAO,EAAC,eAAe,EAAE,QAAQ,EAAC,MAAM,aAAa,CAAC;AAEtD;;;GAGG;AACH,SAAS,8BAA8B,CAAC,GAAgB;IACtD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,EAAC,GAAG,GAAG,CAAC,YAAY,EAAE,GAAG,GAAG,CAAC,eAAe,EAAC,CAAC,CAAC;IACxE,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,6BAA6B,CAAC,CAAC,EAAE,CAAC;QACtE,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACtB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAAE,OAAO,KAAK,CAAC;IAC3D,MAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IAC1F,IAAI,CAAC,gBAAgB;QAAE,OAAO,KAAK,CAAC;IACpC,OAAO,gBAAgB,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;AACxD,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAqB;IACrD,IAAI,EAAE,iBAAiB;IACvB,WAAW,EAAE,iBAAiB;IAC9B,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE;QAC9B,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,aAAa,CAAC,CAAC;QACrD,IAAI,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC;QAE3B,IAAI,8BAA8B,CAAC,OAAO,CAAC;YAAE,OAAO,IAAI,CAAC;QAEzD,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;QACtC,IAAI,CAAC,UAAU;YAAE,OAAO,KAAK,CAAC;QAE9B,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;QACvE,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;gBAAE,SAAS;YAC7D,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,OAAO,EAAE,EAAC,GAAG,EAAE,aAAa,EAAC,CAAC,CAAC;YAC3D,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;gBAC9C,MAAM,GAAG,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC;gBAC3C,IAAI,GAAG,IAAI,8BAA8B,CAAC,GAAG,CAAC;oBAAE,OAAO,IAAI,CAAC;YAC9D,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"storefront-next.js","sourceRoot":"","sources":["../../../../src/discovery/patterns/storefront-next.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH;;;;GAIG;AACH,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,OAAO,EAAC,eAAe,EAAE,QAAQ,EAAC,MAAM,aAAa,CAAC;AACtD,OAAO,EAAC,sBAAsB,EAAC,MAAM,cAAc,CAAC;AAEpD;;;;;;;GAOG;AACH,MAAM,uBAAuB,GAAG,iCAAiC,CAAC;AAElE;;;;;;GAMG;AACH,SAAS,8BAA8B,CAAC,GAAgB;IACtD,+EAA+E;IAC/E,IAAI,sBAAsB,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IAE9C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,EAAC,GAAG,GAAG,CAAC,YAAY,EAAE,GAAG,GAAG,CAAC,eAAe,EAAC,CAAC,CAAC;IACxE,IAAI,IAAI,CAAC,QAAQ,CAAC,uBAAuB,CAAC,EAAE,CAAC;QAC3C,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACtB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAAE,OAAO,KAAK,CAAC;IAC3D,MAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IAC1F,IAAI,CAAC,gBAAgB;QAAE,OAAO,KAAK,CAAC;IACpC,OAAO,gBAAgB,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;AACxD,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAqB;IACrD,IAAI,EAAE,iBAAiB;IACvB,WAAW,EAAE,iBAAiB;IAC9B,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE;QAC9B,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,aAAa,CAAC,CAAC;QACrD,IAAI,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC;QAE3B,IAAI,8BAA8B,CAAC,OAAO,CAAC;YAAE,OAAO,IAAI,CAAC;QAEzD,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;QACtC,IAAI,CAAC,UAAU;YAAE,OAAO,KAAK,CAAC;QAE9B,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;QACvE,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;gBAAE,SAAS;YAC7D,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,OAAO,EAAE,EAAC,GAAG,EAAE,aAAa,EAAC,CAAC,CAAC;YAC3D,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;gBAC9C,MAAM,GAAG,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC;gBAC3C,IAAI,GAAG,IAAI,8BAA8B,CAAC,GAAG,CAAC;oBAAE,OAAO,IAAI,CAAC;YAC9D,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;CACF,CAAC"}
@@ -4,14 +4,23 @@
4
4
  * @module discovery/types
5
5
  */
6
6
  /**
7
- * Identifies the type of B2C Commerce project.
7
+ * A workspace marker: something detected about a B2C Commerce project. A single
8
+ * workspace can carry several — they are not mutually exclusive. In particular
9
+ * `sfra` is a refinement of `cartridges` (a SFRA project also has cartridges),
10
+ * so an SFRA workspace detects as both.
8
11
  *
9
- * Simplified to 3 workspace types:
10
- * - cartridges: Any project with cartridges (detected via .project files)
12
+ * - cartridges: any project with cartridges (detected via .project files)
13
+ * - sfra: a Storefront Reference Architecture project (has `app_storefront_base`)
11
14
  * - pwa-kit-v3: PWA Kit v3 storefront
12
15
  * - storefront-next: Storefront Next (Odyssey)
13
16
  */
14
- export type ProjectType = 'cartridges' | 'pwa-kit-v3' | 'storefront-next';
17
+ export type ProjectType = 'cartridges' | 'sfra' | 'pwa-kit-v3' | 'storefront-next';
18
+ /**
19
+ * All workspace markers as a runtime list (single source of truth for callers
20
+ * that need to validate user input, e.g. a CLI flag or MCP enum). Kept in sync
21
+ * with {@link ProjectType} by the `satisfies` check below.
22
+ */
23
+ export declare const PROJECT_TYPES: readonly ["cartridges", "sfra", "pwa-kit-v3", "storefront-next"];
15
24
  /**
16
25
  * Detection pattern definition.
17
26
  */
@@ -8,5 +8,15 @@
8
8
  *
9
9
  * @module discovery/types
10
10
  */
11
- export {};
11
+ /**
12
+ * All workspace markers as a runtime list (single source of truth for callers
13
+ * that need to validate user input, e.g. a CLI flag or MCP enum). Kept in sync
14
+ * with {@link ProjectType} by the `satisfies` check below.
15
+ */
16
+ export const PROJECT_TYPES = [
17
+ 'cartridges',
18
+ 'sfra',
19
+ 'pwa-kit-v3',
20
+ 'storefront-next',
21
+ ];
12
22
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/discovery/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH;;;;GAIG"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/discovery/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH;;;;GAIG;AAmBH;;;;GAIG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,YAAY;IACZ,MAAM;IACN,YAAY;IACZ,iBAAiB;CACwB,CAAC"}
@@ -29,7 +29,7 @@
29
29
  * results.forEach(r => console.log(r.entry.id, r.score));
30
30
  *
31
31
  * // Read a specific doc by fuzzy query
32
- * const doc = readDocByQuery('dw.catalog.ProductMgr');
32
+ * const doc = await readDocByQuery('dw.catalog.ProductMgr');
33
33
  * if (doc) {
34
34
  * console.log(doc.content);
35
35
  * }
@@ -37,8 +37,8 @@
37
37
  *
38
38
  * @module docs
39
39
  */
40
- export type { DocEntry, SearchIndex, SearchResult, SchemaEntry, SchemaIndex, SchemaSearchResult } from './types.js';
41
- export { searchDocs, readDoc, readDocByQuery, listDocs, loadSearchIndex } from './search.js';
40
+ export type { DocCategory, DocEntry, SearchIndex, SearchResult, SchemaEntry, SchemaIndex, SchemaSearchResult, } from './types.js';
41
+ export { searchDocs, readDoc, readDocByQuery, readEntryContent, listDocs, loadSearchIndex, resetDocsCache, categoriesForWorkspace, resolveEnabledCategories, DOC_CATEGORIES, type SearchDocsOptions, } from './search.js';
42
42
  export { listSchemas, readSchema, readSchemaByQuery, searchSchemas } from './schema.js';
43
43
  export { downloadDocs } from './download.js';
44
44
  export type { DownloadDocsOptions, DownloadDocsResult } from './download.js';
@@ -4,7 +4,7 @@
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
6
  // Search operations
7
- export { searchDocs, readDoc, readDocByQuery, listDocs, loadSearchIndex } from './search.js';
7
+ export { searchDocs, readDoc, readDocByQuery, readEntryContent, listDocs, loadSearchIndex, resetDocsCache, categoriesForWorkspace, resolveEnabledCategories, DOC_CATEGORIES, } from './search.js';
8
8
  // Schema operations
9
9
  export { listSchemas, readSchema, readSchemaByQuery, searchSchemas } from './schema.js';
10
10
  // Download operation
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/docs/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AA6CH,oBAAoB;AACpB,OAAO,EAAC,UAAU,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,eAAe,EAAC,MAAM,aAAa,CAAC;AAE3F,oBAAoB;AACpB,OAAO,EAAC,WAAW,EAAE,UAAU,EAAE,iBAAiB,EAAE,aAAa,EAAC,MAAM,aAAa,CAAC;AAEtF,qBAAqB;AACrB,OAAO,EAAC,YAAY,EAAC,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/docs/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAqDH,oBAAoB;AACpB,OAAO,EACL,UAAU,EACV,OAAO,EACP,cAAc,EACd,gBAAgB,EAChB,QAAQ,EACR,eAAe,EACf,cAAc,EACd,sBAAsB,EACtB,wBAAwB,EACxB,cAAc,GAEf,MAAM,aAAa,CAAC;AAErB,oBAAoB;AACpB,OAAO,EAAC,WAAW,EAAE,UAAU,EAAE,iBAAiB,EAAE,aAAa,EAAC,MAAM,aAAa,CAAC;AAEtF,qBAAqB;AACrB,OAAO,EAAC,YAAY,EAAC,MAAM,eAAe,CAAC"}