@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.
- package/data/content-schemas/componenttype.json +79 -17
- package/data/content-schemas/pagetype.json +4 -0
- package/data/guides/enrichment.json +11264 -0
- package/data/guides/index.json +15166 -0
- package/data/job-steps/index.json +71 -1
- package/data/job-steps/job-steps.json +1 -1
- package/data/script-api/index.json +2145 -37
- package/data/tooling/index.json +222 -0
- package/data/xsd/index.json +1 -1
- package/dist/esm/auth/client-credentials.d.ts +27 -0
- package/dist/esm/auth/client-credentials.js +60 -0
- package/dist/esm/auth/client-credentials.js.map +1 -0
- package/dist/esm/auth/index.d.ts +1 -0
- package/dist/esm/auth/index.js +2 -0
- package/dist/esm/auth/index.js.map +1 -1
- package/dist/esm/auth/oauth.js +2 -1
- package/dist/esm/auth/oauth.js.map +1 -1
- package/dist/esm/cli/base-command.d.ts +40 -0
- package/dist/esm/cli/base-command.js +66 -5
- package/dist/esm/cli/base-command.js.map +1 -1
- package/dist/esm/cli/index.d.ts +2 -2
- package/dist/esm/cli/index.js +1 -1
- package/dist/esm/cli/index.js.map +1 -1
- package/dist/esm/cli/instance-command.d.ts +1 -1
- package/dist/esm/cli/instance-command.js +5 -3
- package/dist/esm/cli/instance-command.js.map +1 -1
- package/dist/esm/cli/oauth-command.d.ts +1 -1
- package/dist/esm/cli/oauth-command.js +5 -3
- package/dist/esm/cli/oauth-command.js.map +1 -1
- package/dist/esm/cli/ods-command.d.ts +1 -1
- package/dist/esm/cli/webdav-command.d.ts +1 -1
- package/dist/esm/clients/index.d.ts +2 -0
- package/dist/esm/clients/index.js +1 -0
- package/dist/esm/clients/index.js.map +1 -1
- package/dist/esm/clients/metrics.d.ts +123 -0
- package/dist/esm/clients/metrics.generated.d.ts +1016 -0
- package/dist/esm/clients/metrics.generated.js +6 -0
- package/dist/esm/clients/metrics.generated.js.map +1 -0
- package/dist/esm/clients/metrics.js +65 -0
- package/dist/esm/clients/metrics.js.map +1 -0
- package/dist/esm/clients/middleware-registry.d.ts +1 -1
- package/dist/esm/clients/middleware-registry.js.map +1 -1
- package/dist/esm/config/sources/env-source.js +1 -0
- package/dist/esm/config/sources/env-source.js.map +1 -1
- package/dist/esm/discovery/detector.d.ts +0 -5
- package/dist/esm/discovery/detector.js +24 -3
- package/dist/esm/discovery/detector.js.map +1 -1
- package/dist/esm/discovery/index.d.ts +1 -0
- package/dist/esm/discovery/index.js +1 -0
- package/dist/esm/discovery/index.js.map +1 -1
- package/dist/esm/discovery/patterns/index.d.ts +4 -2
- package/dist/esm/discovery/patterns/index.js +9 -3
- package/dist/esm/discovery/patterns/index.js.map +1 -1
- package/dist/esm/discovery/patterns/pwa-kit.d.ts +12 -0
- package/dist/esm/discovery/patterns/pwa-kit.js +18 -7
- package/dist/esm/discovery/patterns/pwa-kit.js.map +1 -1
- package/dist/esm/discovery/patterns/sfra.d.ts +5 -4
- package/dist/esm/discovery/patterns/sfra.js +1 -1
- package/dist/esm/discovery/patterns/sfra.js.map +1 -1
- package/dist/esm/discovery/patterns/storefront-next.js +18 -2
- package/dist/esm/discovery/patterns/storefront-next.js.map +1 -1
- package/dist/esm/discovery/types.d.ts +13 -4
- package/dist/esm/discovery/types.js +11 -1
- package/dist/esm/discovery/types.js.map +1 -1
- package/dist/esm/docs/index.d.ts +3 -3
- package/dist/esm/docs/index.js +1 -1
- package/dist/esm/docs/index.js.map +1 -1
- package/dist/esm/docs/search.d.ts +111 -38
- package/dist/esm/docs/search.js +402 -81
- package/dist/esm/docs/search.js.map +1 -1
- package/dist/esm/docs/types.d.ts +56 -6
- package/dist/esm/docs/types.js +2 -0
- package/dist/esm/docs/types.js.map +1 -1
- package/dist/esm/index.d.ts +4 -2
- package/dist/esm/index.js +3 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/operations/logs/filter.d.ts +6 -1
- package/dist/esm/operations/logs/filter.js +7 -2
- package/dist/esm/operations/logs/filter.js.map +1 -1
- package/dist/esm/operations/metrics/index.d.ts +371 -0
- package/dist/esm/operations/metrics/index.js +478 -0
- package/dist/esm/operations/metrics/index.js.map +1 -0
- package/dist/esm/operations/metrics/tags.d.ts +148 -0
- package/dist/esm/operations/metrics/tags.js +235 -0
- package/dist/esm/operations/metrics/tags.js.map +1 -0
- package/dist/esm/slas/token.d.ts +9 -2
- package/dist/esm/slas/token.js +25 -29
- package/dist/esm/slas/token.js.map +1 -1
- package/dist/esm/telemetry/telemetry.d.ts +1 -0
- package/dist/esm/telemetry/telemetry.js +32 -0
- package/dist/esm/telemetry/telemetry.js.map +1 -1
- package/dist/esm/telemetry/types.d.ts +6 -0
- package/package.json +12 -3
- package/specs/metrics-v1.json +1713 -0
|
@@ -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":"
|
|
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"}
|
|
@@ -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,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
|
-
|
|
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
|
-
//
|
|
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":"
|
|
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;
|
|
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
|
-
*
|
|
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
|
|
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
|
|
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 = [
|
|
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":"
|
|
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
|
-
|
|
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":"
|
|
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
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
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: '
|
|
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":"
|
|
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
|
-
*
|
|
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.
|
|
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;
|
|
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
|
-
*
|
|
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
|
-
*
|
|
10
|
-
* -
|
|
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
|
-
|
|
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"}
|
package/dist/esm/docs/index.d.ts
CHANGED
|
@@ -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';
|
package/dist/esm/docs/index.js
CHANGED
|
@@ -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;
|
|
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"}
|