@salesforce/b2c-tooling-sdk 1.12.0 → 1.14.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.
@@ -19,7 +19,7 @@ export type { DocEntry, SearchIndex, SearchResult, SchemaEntry, SchemaIndex, Sch
19
19
  export { isUuid, isFriendlySandboxId, parseFriendlySandboxId, resolveSandboxId, SandboxNotFoundError, waitForSandbox, SandboxPollingTimeoutError, SandboxPollingError, SandboxTerminalStateError, waitForClone, ClonePollingTimeoutError, ClonePollingError, CloneFailedError, } from './operations/ods/index.js';
20
20
  export type { SandboxState, WaitForSandboxOptions, WaitForSandboxPollInfo } from './operations/ods/index.js';
21
21
  export type { CloneState, WaitForCloneOptions, WaitForClonePollInfo } from './operations/ods/index.js';
22
- export { buildCipReportSql, describeCipTable, executeCipReport, getCipReportByName, listCipReports, listCipTables, } from './operations/cip/index.js';
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
24
  export { getUser, getUserByLogin, listUsers, createUser, updateUser, deleteUser, purgeUser, resetUser, grantRole, revokeRole, } from './operations/users/index.js';
25
25
  export { validateCap, commerceAppInstall, commerceAppUninstall, commerceAppPackage, discoverLocalApps, listInstalledApps, parseCommerceFeatureStatesXml, readManifest, pullCommerceApps, } from './operations/cap/index.js';
package/dist/esm/index.js CHANGED
@@ -23,7 +23,7 @@ export { searchDocs, readDoc, readDocByQuery, listDocs, loadSearchIndex, listSch
23
23
  // Operations - ODS
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
- export { buildCipReportSql, describeCipTable, executeCipReport, getCipReportByName, listCipReports, listCipTables, } from './operations/cip/index.js';
26
+ export { booleanLiteral, buildCipReportSql, dateLiteral, describeCipTable, escapeSqlString, executeCipReport, getCipReportByName, integerLiteral, isReservedIdentifier, listCipReports, listCipTables, quoteIdentifierIfReserved, stringInList, stringLiteral, } from './operations/cip/index.js';
27
27
  // Operations - Users
28
28
  export { getUser, getUserByLogin, listUsers, createUser, updateUser, deleteUser, purgeUser, resetUser, grantRole, revokeRole, } from './operations/users/index.js';
29
29
  // 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":"AAAA;;;;GAIG;AACH,OAAO,EAAC,YAAY,EAAE,eAAe,EAAE,SAAS,EAAE,WAAW,EAAE,kBAAkB,EAAC,MAAM,oBAAoB,CAAC;AAG7G,OAAO;AACP,OAAO,EAAC,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,eAAe,EAAE,oBAAoB,EAAE,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAGlH,SAAS;AACT,OAAO,EAAC,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,cAAc,EAAE,oBAAoB,EAAC,MAAM,mBAAmB,CAAC;AAe9G,yCAAyC;AACzC,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,qBAAqB,EACrB,gBAAgB,EAChB,cAAc,EACd,SAAS,EACT,mBAAmB,EACnB,yBAAyB,EACzB,gBAAgB,GACjB,MAAM,iBAAiB,CAAC;AAkBzB,2BAA2B;AAC3B,OAAO,EAAC,WAAW,EAAC,MAAM,qBAAqB,CAAC;AAGhD,UAAU;AACV,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,oBAAoB,EACpB,2BAA2B,EAC3B,gBAAgB,EAChB,eAAe,EACf,sBAAsB,EACtB,+BAA+B,EAC/B,+BAA+B,EAC/B,oCAAoC,EACpC,8BAA8B,EAC9B,oBAAoB,EACpB,gCAAgC,EAChC,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAClB,uBAAuB,EACvB,gBAAgB,EAChB,qBAAqB,EACrB,uBAAuB,EACvB,sBAAsB,EACtB,0BAA0B,EAC1B,yBAAyB,EACzB,0BAA0B,EAC1B,qBAAqB,EACrB,mBAAmB,EACnB,gBAAgB,EAChB,wBAAwB,GACzB,MAAM,oBAAoB,CAAC;AAwF5B,oBAAoB;AACpB,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,oBAAoB,EACpB,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,uBAAuB,EACvB,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,GAChB,MAAM,4BAA4B,CAAC;AAYpC,oBAAoB;AACpB,OAAO,EACL,UAAU,EACV,eAAe,EACf,UAAU,EACV,mBAAmB,EACnB,uBAAuB,EACvB,SAAS,EACT,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,4BAA4B,CAAC;AAoBpC,8BAA8B;AAC9B,OAAO,EACL,UAAU,EACV,OAAO,EACP,cAAc,EACd,QAAQ,EACR,eAAe,EACf,WAAW,EACX,UAAU,EACV,iBAAiB,EACjB,aAAa,EACb,YAAY,GACb,MAAM,iBAAiB,CAAC;AAYzB,mBAAmB;AACnB,OAAO,EACL,MAAM,EACN,mBAAmB,EACnB,sBAAsB,EACtB,gBAAgB,EAChB,oBAAoB,EACpB,cAAc,EACd,0BAA0B,EAC1B,mBAAmB,EACnB,yBAAyB,EACzB,YAAY,EACZ,wBAAwB,EACxB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,2BAA2B,CAAC;AAKnC,mBAAmB;AACnB,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,WAAW,EACX,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,oBAAoB,EACpB,cAAc,EACd,aAAa,EACb,yBAAyB,EACzB,YAAY,EACZ,aAAa,GACd,MAAM,2BAA2B,CAAC;AAiBnC,qBAAqB;AACrB,OAAO,EACL,OAAO,EACP,cAAc,EACd,SAAS,EACT,UAAU,EACV,UAAU,EACV,UAAU,EACV,SAAS,EACT,SAAS,EACT,SAAS,EACT,UAAU,GACX,MAAM,6BAA6B,CAAC;AAErC,2CAA2C;AAC3C,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,6BAA6B,EAC7B,YAAY,EACZ,gBAAgB,GACjB,MAAM,2BAA2B,CAAC;AAoBnC,qBAAqB;AACrB,OAAO,EAAC,OAAO,EAAE,SAAS,EAAC,MAAM,6BAA6B,CAAC;AAE/D,6BAA6B;AAC7B,OAAO,EAAC,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAC,MAAM,4BAA4B,CAAC;AAE1E,qDAAqD;AACrD,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EAClB,0BAA0B,EAC1B,WAAW,EACX,oBAAoB,EACpB,cAAc,EACd,kBAAkB,EAClB,sBAAsB,EACtB,4BAA4B,EAC5B,sBAAsB,EACtB,mBAAmB,EACnB,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,mBAAmB,CAAC;AAI3B,WAAW;AACX,OAAO,EACL,4BAA4B,EAC5B,gBAAgB,EAChB,wBAAwB,EACxB,wBAAwB,GACzB,MAAM,eAAe,CAAC;AAEvB,eAAe;AACf,OAAO,EAAC,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAC,MAAM,cAAc,CAAC"}
@@ -9,6 +9,7 @@ import type { CipDescribeTableOptions, CipDescribeTableResult, CipListTablesOpti
9
9
  * @module operations/cip
10
10
  */
11
11
  export type { CipColumnMetadata, CipDescribeTableOptions, CipDescribeTableResult, CipListTablesOptions, CipListTablesResult, CipReportDefinition, CipReportExecutionOptions, CipReportParamType, CipReportParamDefinition, CipReportQueryExecutor, CipReportQueryResult, CipReportSqlResult, CipTableMetadata, } from './types.js';
12
+ export { booleanLiteral, dateLiteral, escapeSqlString, integerLiteral, isReservedIdentifier, quoteIdentifierIfReserved, stringInList, stringLiteral, } from './sql.js';
12
13
  /**
13
14
  * Lists tables from the CIP metadata catalog.
14
15
  *
@@ -4,9 +4,30 @@
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
  import { CIP_REPORTS } from './reports.js';
7
+ import { escapeSqlString } from './sql.js';
8
+ export { booleanLiteral, dateLiteral, escapeSqlString, integerLiteral, isReservedIdentifier, quoteIdentifierIfReserved, stringInList, stringLiteral, } from './sql.js';
7
9
  function toStringOrEmpty(value) {
8
10
  return typeof value === 'string' ? value : '';
9
11
  }
12
+ /**
13
+ * Resolves a value from a metadata row by matching candidate column patterns
14
+ * case-insensitively (ignoring underscores).
15
+ *
16
+ * CIP's Avatica metadata results are keyed by the column *labels* the JDBC
17
+ * driver emits. Depending on the tenant/driver these can be the camelCase
18
+ * aliases from our SELECT (`tableName`) or the standard uppercase JDBC metadata
19
+ * names (`TABLE_NAME`). Hard-coding a single casing makes the mapping silently
20
+ * yield empty strings for the other variant — so match tolerantly instead.
21
+ */
22
+ function pickRowValue(row, ...patterns) {
23
+ for (const key of Object.keys(row)) {
24
+ const normalizedKey = key.replaceAll('_', '').toLowerCase();
25
+ if (patterns.some((pattern) => pattern.test(normalizedKey))) {
26
+ return row[key];
27
+ }
28
+ }
29
+ return undefined;
30
+ }
10
31
  function toBoolean(value) {
11
32
  if (typeof value === 'boolean') {
12
33
  return value;
@@ -22,9 +43,6 @@ function toNumber(value) {
22
43
  }
23
44
  return Number(value ?? 0);
24
45
  }
25
- function escapeSqlLiteral(value) {
26
- return value.replaceAll("'", "''");
27
- }
28
46
  /**
29
47
  * Lists tables from the CIP metadata catalog.
30
48
  *
@@ -35,21 +53,21 @@ function escapeSqlLiteral(value) {
35
53
  export async function listCipTables(client, options = {}) {
36
54
  const whereClauses = [];
37
55
  if (options.schema) {
38
- whereClauses.push(`tableSchem = '${escapeSqlLiteral(options.schema)}'`);
56
+ whereClauses.push(`tableSchem = '${escapeSqlString(options.schema)}'`);
39
57
  }
40
58
  if (options.tableNamePattern) {
41
- whereClauses.push(`tableName LIKE '${escapeSqlLiteral(options.tableNamePattern)}'`);
59
+ whereClauses.push(`tableName LIKE '${escapeSqlString(options.tableNamePattern)}'`);
42
60
  }
43
61
  if (options.tableType) {
44
- whereClauses.push(`tableType = '${escapeSqlLiteral(options.tableType)}'`);
62
+ whereClauses.push(`tableType = '${escapeSqlString(options.tableType)}'`);
45
63
  }
46
64
  const whereClauseSql = whereClauses.length > 0 ? ` WHERE ${whereClauses.join(' AND ')}` : '';
47
65
  const sql = `SELECT tableSchem, tableName, tableType FROM metadata.TABLES${whereClauseSql} ORDER BY tableSchem, tableName`;
48
66
  const result = await client.query(sql, { fetchSize: options.fetchSize });
49
67
  const tables = result.rows.map((row) => ({
50
- tableName: toStringOrEmpty(row.tableName),
51
- tableSchema: toStringOrEmpty(row.tableSchem),
52
- tableType: toStringOrEmpty(row.tableType),
68
+ tableName: toStringOrEmpty(pickRowValue(row, /^tablename$/)),
69
+ tableSchema: toStringOrEmpty(pickRowValue(row, /^tableschem(a)?$/)),
70
+ tableType: toStringOrEmpty(pickRowValue(row, /^tabletype$/)),
53
71
  }));
54
72
  return {
55
73
  schema: options.schema,
@@ -68,16 +86,16 @@ export async function listCipTables(client, options = {}) {
68
86
  export async function describeCipTable(client, tableName, options = {}) {
69
87
  const tableSchema = options.schema ?? 'warehouse';
70
88
  const sql = `SELECT tableSchem, tableName, columnName, typeName, isNullable, ordinalPosition FROM metadata.COLUMNS ` +
71
- `WHERE tableSchem = '${escapeSqlLiteral(tableSchema)}' AND tableName = '${escapeSqlLiteral(tableName)}' ` +
89
+ `WHERE tableSchem = '${escapeSqlString(tableSchema)}' AND tableName = '${escapeSqlString(tableName)}' ` +
72
90
  `ORDER BY ordinalPosition`;
73
91
  const result = await client.query(sql, { fetchSize: options.fetchSize });
74
92
  const columns = result.rows.map((row) => ({
75
- columnName: toStringOrEmpty(row.columnName),
76
- dataType: toStringOrEmpty(row.typeName),
77
- isNullable: toBoolean(row.isNullable),
78
- ordinalPosition: toNumber(row.ordinalPosition),
79
- tableName: toStringOrEmpty(row.tableName),
80
- tableSchema: toStringOrEmpty(row.tableSchem),
93
+ columnName: toStringOrEmpty(pickRowValue(row, /^columnname$/)),
94
+ dataType: toStringOrEmpty(pickRowValue(row, /^(typename|datatype)$/)),
95
+ isNullable: toBoolean(pickRowValue(row, /^isnullable$/)),
96
+ ordinalPosition: toNumber(pickRowValue(row, /^ordinalposition$/)),
97
+ tableName: toStringOrEmpty(pickRowValue(row, /^tablename$/)),
98
+ tableSchema: toStringOrEmpty(pickRowValue(row, /^tableschem(a)?$/)),
81
99
  }));
82
100
  return {
83
101
  columnCount: columns.length,
@@ -103,16 +121,35 @@ export function listCipReports() {
103
121
  export function getCipReportByName(name) {
104
122
  return CIP_REPORTS.find((report) => report.name === name);
105
123
  }
124
+ /**
125
+ * Validates supplied params against the report contract and returns a normalized
126
+ * copy with defaults applied. Enforces required params and, where declared,
127
+ * enum `options` (including per-value checks for `multiple` parameters).
128
+ */
106
129
  function validateReportParams(report, params) {
107
130
  const unknownParams = Object.keys(params).filter((key) => !report.parameters.some((parameter) => parameter.name === key));
108
131
  if (unknownParams.length > 0) {
109
132
  throw new Error(`Unknown parameters for report "${report.name}": ${unknownParams.join(', ')}`);
110
133
  }
134
+ const normalized = { ...params };
111
135
  for (const parameter of report.parameters) {
112
- if (parameter.required && !params[parameter.name]) {
136
+ if (!normalized[parameter.name] && parameter.default !== undefined) {
137
+ normalized[parameter.name] = parameter.default;
138
+ }
139
+ const value = normalized[parameter.name];
140
+ if (parameter.required && !value) {
113
141
  throw new Error(`Missing required parameter for report "${report.name}": ${parameter.name}`);
114
142
  }
143
+ if (value && parameter.options && parameter.options.length > 0) {
144
+ const candidates = parameter.multiple ? value.split(',').map((item) => item.trim()) : [value];
145
+ const invalid = candidates.filter((candidate) => !parameter.options?.includes(candidate));
146
+ if (invalid.length > 0) {
147
+ throw new Error(`Invalid value(s) for parameter "${parameter.name}" in report "${report.name}": ${invalid.join(', ')}. ` +
148
+ `Allowed: ${parameter.options.join(', ')}`);
149
+ }
150
+ }
115
151
  }
152
+ return normalized;
116
153
  }
117
154
  /**
118
155
  * Builds SQL for a curated report after validating provided parameters.
@@ -127,10 +164,10 @@ export function buildCipReportSql(name, params) {
127
164
  if (!report) {
128
165
  throw new Error(`Unknown CIP report: ${name}`);
129
166
  }
130
- validateReportParams(report, params);
167
+ const normalizedParams = validateReportParams(report, params);
131
168
  return {
132
169
  report,
133
- sql: report.buildSql(params),
170
+ sql: report.buildSql(normalizedParams),
134
171
  };
135
172
  }
136
173
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/operations/cip/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/operations/cip/index.ts"],"names":[],"mappings":"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"}
@@ -3,9 +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
- function escapeSqlString(value) {
7
- return value.replaceAll("'", "''");
8
- }
6
+ import { booleanLiteral, dateLiteral, integerLiteral, quoteIdentifierIfReserved, stringLiteral } from './sql.js';
9
7
  function getRequiredString(params, key) {
10
8
  const value = params[key];
11
9
  if (!value) {
@@ -14,33 +12,52 @@ function getRequiredString(params, key) {
14
12
  return value;
15
13
  }
16
14
  function getDateLiteral(params, key) {
17
- const value = getRequiredString(params, key);
18
- if (!/^\d{4}-\d{2}-\d{2}$/u.test(value)) {
15
+ try {
16
+ return dateLiteral(getRequiredString(params, key));
17
+ }
18
+ catch {
19
19
  throw new Error(`Invalid date for parameter "${key}": expected YYYY-MM-DD`);
20
20
  }
21
- return `'${escapeSqlString(value)}'`;
22
21
  }
23
22
  function getStringLiteral(params, key) {
24
- const value = getRequiredString(params, key);
25
- return `'${escapeSqlString(value)}'`;
23
+ return stringLiteral(getRequiredString(params, key));
26
24
  }
27
25
  function getBooleanLiteral(params, key) {
28
- const value = getRequiredString(params, key).toLowerCase();
29
- if (value !== 'true' && value !== 'false') {
26
+ try {
27
+ return booleanLiteral(getRequiredString(params, key));
28
+ }
29
+ catch {
30
30
  throw new Error(`Invalid boolean for parameter "${key}": expected true or false`);
31
31
  }
32
- return value;
33
32
  }
34
33
  function getOptionalIntegerLiteral(params, key, fallback, min, max) {
35
34
  const raw = params[key];
36
35
  if (!raw) {
37
36
  return String(fallback);
38
37
  }
39
- const parsed = Number.parseInt(raw, 10);
40
- if (!Number.isInteger(parsed) || parsed < min || parsed > max) {
38
+ try {
39
+ return integerLiteral(raw, min, max);
40
+ }
41
+ catch {
41
42
  throw new Error(`Invalid integer for parameter "${key}": expected ${min}-${max}`);
42
43
  }
43
- return String(parsed);
44
+ }
45
+ /** Alias for builders that reference reserved column names (for example `method`). */
46
+ const col = quoteIdentifierIfReserved;
47
+ /**
48
+ * Builds the optional site-dimension join and WHERE predicate for tables whose
49
+ * `site_id` is nullable or where site scoping is optional (for example the SCAPI
50
+ * and OCAPI request tables). When `siteId` is absent both fragments are empty so
51
+ * the report spans all sites; when present an inner join restricts to that site.
52
+ */
53
+ function optionalSiteJoin(params, factAlias) {
54
+ if (!params.siteId) {
55
+ return { join: '', predicate: '' };
56
+ }
57
+ return {
58
+ join: ` JOIN ccdw_dim_site s ON s.site_id = ${factAlias}.site_id`,
59
+ predicate: ` AND s.nsite_id = ${getStringLiteral(params, 'siteId')}`,
60
+ };
44
61
  }
45
62
  export const CIP_REPORTS = [
46
63
  {
@@ -144,7 +161,13 @@ export const CIP_REPORTS = [
144
161
  category: 'Search Analytics',
145
162
  parameters: [
146
163
  { name: 'siteId', description: 'Natural site id', type: 'string', required: true },
147
- { name: 'hasResults', description: 'Filter successful/unsuccessful searches', type: 'boolean', required: true },
164
+ {
165
+ name: 'hasResults',
166
+ description: 'Filter successful/unsuccessful searches',
167
+ type: 'boolean',
168
+ required: true,
169
+ options: ['true', 'false'],
170
+ },
148
171
  { name: 'from', description: 'Inclusive start date (YYYY-MM-DD)', type: 'date', required: true },
149
172
  { name: 'to', description: 'Inclusive end date (YYYY-MM-DD)', type: 'date', required: true },
150
173
  ],
@@ -206,5 +229,361 @@ export const CIP_REPORTS = [
206
229
  return `WITH total AS (SELECT SUM(num_visits) AS total_visits FROM ccdw_aggr_visit_referrer WHERE visit_date >= ${from} AND visit_date <= ${to}) SELECT vr.referrer_medium AS traffic_medium, vr.referrer_source AS traffic_source, SUM(vr.num_visits) AS total_visits, SUM(vr.num_visits) * 100.0 / total.total_visits AS visit_percentage FROM ccdw_aggr_visit_referrer vr JOIN ccdw_dim_site s ON s.site_id = vr.site_id JOIN total ON TRUE WHERE vr.visit_date >= ${from} AND vr.visit_date <= ${to} AND s.nsite_id = ${siteId} GROUP BY vr.referrer_medium, vr.referrer_source, total.total_visits ORDER BY total_visits DESC LIMIT ${limit}`;
207
230
  },
208
231
  },
232
+ {
233
+ name: 'scapi-traffic-latency',
234
+ description: 'Rank SCAPI endpoints by request volume and average latency',
235
+ category: 'Technical Analytics',
236
+ tablesUsed: ['ccdw_aggr_scapi_request', 'ccdw_dim_site'],
237
+ parameters: [
238
+ { name: 'from', description: 'Inclusive start date (YYYY-MM-DD)', type: 'date', required: true },
239
+ { name: 'to', description: 'Inclusive end date (YYYY-MM-DD)', type: 'date', required: true },
240
+ {
241
+ name: 'siteId',
242
+ description: 'Optional natural site id; SCAPI rows may be unattributed (omit to span all sites)',
243
+ type: 'string',
244
+ },
245
+ { name: 'limit', description: 'Max rows (1-500)', type: 'number', min: 1, max: 500 },
246
+ ],
247
+ buildSql(params) {
248
+ const from = getDateLiteral(params, 'from');
249
+ const to = getDateLiteral(params, 'to');
250
+ const limit = getOptionalIntegerLiteral(params, 'limit', 20, 1, 500);
251
+ const site = optionalSiteJoin(params, 'r');
252
+ return `SELECT r.api_family, r.api_name, r.api_resource, r.${col('method')}, SUM(r.num_requests) AS total_requests, SUM(r.response_time) AS total_response_ms, CAST(SUM(r.response_time) / NULLIF(SUM(r.num_requests), 0) AS DECIMAL(15,2)) AS avg_response_ms FROM ccdw_aggr_scapi_request r${site.join} WHERE r.request_date >= ${from} AND r.request_date <= ${to}${site.predicate} GROUP BY r.api_family, r.api_name, r.api_resource, r.${col('method')} ORDER BY total_requests DESC LIMIT ${limit}`;
253
+ },
254
+ },
255
+ {
256
+ name: 'scapi-error-rate-by-status',
257
+ description: 'Rank SCAPI endpoints by 4xx/5xx error rate over a date range',
258
+ category: 'Technical Analytics',
259
+ tablesUsed: ['ccdw_aggr_scapi_request', 'ccdw_dim_site'],
260
+ parameters: [
261
+ { name: 'from', description: 'Inclusive start date (YYYY-MM-DD)', type: 'date', required: true },
262
+ { name: 'to', description: 'Inclusive end date (YYYY-MM-DD)', type: 'date', required: true },
263
+ { name: 'siteId', description: 'Optional natural site id (omit to span all sites)', type: 'string' },
264
+ {
265
+ name: 'statusClass',
266
+ description: 'Optional HTTP error class filter',
267
+ type: 'string',
268
+ options: ['4xx', '5xx'],
269
+ },
270
+ { name: 'limit', description: 'Max rows (1-500)', type: 'number', min: 1, max: 500 },
271
+ ],
272
+ buildSql(params) {
273
+ const from = getDateLiteral(params, 'from');
274
+ const to = getDateLiteral(params, 'to');
275
+ const limit = getOptionalIntegerLiteral(params, 'limit', 50, 1, 500);
276
+ const site = optionalSiteJoin(params, 'r');
277
+ const classFilter = params.statusClass === '4xx'
278
+ ? ' AND r.status_code BETWEEN 400 AND 499'
279
+ : params.statusClass === '5xx'
280
+ ? ' AND r.status_code BETWEEN 500 AND 599'
281
+ : '';
282
+ return `SELECT r.api_family, r.api_name, r.api_resource, r.${col('method')}, SUM(r.num_requests) AS total_requests, SUM(CASE WHEN r.status_code BETWEEN 400 AND 499 THEN r.num_requests ELSE 0 END) AS error_4xx, SUM(CASE WHEN r.status_code BETWEEN 500 AND 599 THEN r.num_requests ELSE 0 END) AS error_5xx, SUM(CASE WHEN r.status_code BETWEEN 400 AND 599 THEN r.num_requests ELSE 0 END) AS error_total, CAST(100.0 * SUM(CASE WHEN r.status_code BETWEEN 400 AND 599 THEN r.num_requests ELSE 0 END) / NULLIF(SUM(r.num_requests), 0) AS DECIMAL(15,2)) AS error_pct FROM ccdw_aggr_scapi_request r${site.join} WHERE r.request_date >= ${from} AND r.request_date <= ${to}${site.predicate}${classFilter} GROUP BY r.api_family, r.api_name, r.api_resource, r.${col('method')} HAVING SUM(CASE WHEN r.status_code BETWEEN 400 AND 599 THEN r.num_requests ELSE 0 END) > 0 ORDER BY error_total DESC, error_pct DESC LIMIT ${limit}`;
283
+ },
284
+ },
285
+ {
286
+ name: 'scapi-latency-distribution',
287
+ description: 'Surface the SCAPI latency histogram and slow-tail (SLA breach) percentage per endpoint',
288
+ category: 'Technical Analytics',
289
+ tablesUsed: ['ccdw_aggr_scapi_request', 'ccdw_dim_site'],
290
+ parameters: [
291
+ { name: 'from', description: 'Inclusive start date (YYYY-MM-DD)', type: 'date', required: true },
292
+ { name: 'to', description: 'Inclusive end date (YYYY-MM-DD)', type: 'date', required: true },
293
+ { name: 'siteId', description: 'Optional natural site id (omit to span all sites)', type: 'string' },
294
+ { name: 'limit', description: 'Max rows (1-500)', type: 'number', min: 1, max: 500 },
295
+ ],
296
+ buildSql(params) {
297
+ const from = getDateLiteral(params, 'from');
298
+ const to = getDateLiteral(params, 'to');
299
+ const limit = getOptionalIntegerLiteral(params, 'limit', 20, 1, 500);
300
+ const site = optionalSiteJoin(params, 'r');
301
+ return `SELECT r.api_family, r.api_name, r.api_resource, SUM(r.num_requests) AS total_requests, CAST(100.0 * SUM(r.num_requests_bucket1 + r.num_requests_bucket2 + r.num_requests_bucket3) / NULLIF(SUM(r.num_requests), 0) AS DECIMAL(15,2)) AS fast_pct, CAST(100.0 * SUM(r.num_requests_bucket9 + r.num_requests_bucket10 + r.num_requests_bucket11) / NULLIF(SUM(r.num_requests), 0) AS DECIMAL(15,2)) AS slow_tail_pct, SUM(r.num_requests_bucket1) AS bucket1, SUM(r.num_requests_bucket2) AS bucket2, SUM(r.num_requests_bucket3) AS bucket3, SUM(r.num_requests_bucket4) AS bucket4, SUM(r.num_requests_bucket5) AS bucket5, SUM(r.num_requests_bucket6) AS bucket6, SUM(r.num_requests_bucket7) AS bucket7, SUM(r.num_requests_bucket8) AS bucket8, SUM(r.num_requests_bucket9) AS bucket9, SUM(r.num_requests_bucket10) AS bucket10, SUM(r.num_requests_bucket11) AS bucket11, CAST(SUM(r.response_time) / NULLIF(SUM(r.num_requests), 0) AS DECIMAL(15,2)) AS avg_response_ms FROM ccdw_aggr_scapi_request r${site.join} WHERE r.request_date >= ${from} AND r.request_date <= ${to}${site.predicate} GROUP BY r.api_family, r.api_name, r.api_resource ORDER BY total_requests DESC LIMIT ${limit}`;
302
+ },
303
+ },
304
+ {
305
+ name: 'scapi-cache-hit-ratio',
306
+ description: 'Measure SCAPI cache hit ratio per endpoint to find cacheable resources running as MISS',
307
+ category: 'Technical Analytics',
308
+ tablesUsed: ['ccdw_aggr_scapi_request', 'ccdw_dim_site'],
309
+ parameters: [
310
+ { name: 'from', description: 'Inclusive start date (YYYY-MM-DD)', type: 'date', required: true },
311
+ { name: 'to', description: 'Inclusive end date (YYYY-MM-DD)', type: 'date', required: true },
312
+ { name: 'siteId', description: 'Optional natural site id (omit to span all sites)', type: 'string' },
313
+ { name: 'limit', description: 'Max rows (1-500)', type: 'number', min: 1, max: 500 },
314
+ ],
315
+ buildSql(params) {
316
+ const from = getDateLiteral(params, 'from');
317
+ const to = getDateLiteral(params, 'to');
318
+ const limit = getOptionalIntegerLiteral(params, 'limit', 50, 1, 500);
319
+ const site = optionalSiteJoin(params, 'r');
320
+ return `SELECT r.api_family, r.api_name, r.api_resource, SUM(r.num_requests) AS total_requests, SUM(CASE WHEN r.cache_behavior = 'HIT' THEN r.num_requests ELSE 0 END) AS hits, SUM(CASE WHEN r.cache_behavior = 'MISS' THEN r.num_requests ELSE 0 END) AS misses, SUM(CASE WHEN r.cache_behavior = '__NON_CACHEABLE__' THEN r.num_requests ELSE 0 END) AS non_cacheable, CAST(100.0 * SUM(CASE WHEN r.cache_behavior = 'HIT' THEN r.num_requests ELSE 0 END) / NULLIF(SUM(CASE WHEN r.cache_behavior IN ('HIT', 'MISS') THEN r.num_requests ELSE 0 END), 0) AS DECIMAL(15,2)) AS hit_ratio_pct FROM ccdw_aggr_scapi_request r${site.join} WHERE r.request_date >= ${from} AND r.request_date <= ${to}${site.predicate} GROUP BY r.api_family, r.api_name, r.api_resource ORDER BY total_requests DESC LIMIT ${limit}`;
321
+ },
322
+ },
323
+ {
324
+ name: 'ocapi-client-usage',
325
+ description: 'Rank OCAPI client_ids by request volume with per-client error rate and latency',
326
+ category: 'Technical Analytics',
327
+ tablesUsed: ['ccdw_aggr_ocapi_request', 'ccdw_dim_site'],
328
+ parameters: [
329
+ { name: 'from', description: 'Inclusive start date (YYYY-MM-DD)', type: 'date', required: true },
330
+ { name: 'to', description: 'Inclusive end date (YYYY-MM-DD)', type: 'date', required: true },
331
+ { name: 'siteId', description: 'Optional natural site id (omit to span all sites)', type: 'string' },
332
+ { name: 'limit', description: 'Max rows (1-500)', type: 'number', min: 1, max: 500 },
333
+ ],
334
+ buildSql(params) {
335
+ const from = getDateLiteral(params, 'from');
336
+ const to = getDateLiteral(params, 'to');
337
+ const limit = getOptionalIntegerLiteral(params, 'limit', 50, 1, 500);
338
+ const site = optionalSiteJoin(params, 'o');
339
+ return `WITH totals AS (SELECT SUM(o.num_requests) AS grand_total FROM ccdw_aggr_ocapi_request o${site.join} WHERE o.request_date >= ${from} AND o.request_date <= ${to}${site.predicate}) SELECT o.client_id, SUM(o.num_requests) AS total_requests, CAST(SUM(o.num_requests) * 100.0 / NULLIF(t.grand_total, 0) AS DECIMAL(15,2)) AS traffic_pct, CAST(100.0 * SUM(CASE WHEN o.status_code >= 400 THEN o.num_requests ELSE 0 END) / NULLIF(SUM(o.num_requests), 0) AS DECIMAL(15,2)) AS error_pct, CAST(SUM(o.response_time) / NULLIF(SUM(o.num_requests), 0) AS DECIMAL(15,2)) AS avg_response_ms, COUNT(DISTINCT o.api_resource) AS distinct_resources FROM ccdw_aggr_ocapi_request o${site.join} JOIN totals t ON TRUE WHERE o.request_date >= ${from} AND o.request_date <= ${to}${site.predicate} GROUP BY o.client_id, t.grand_total ORDER BY total_requests DESC LIMIT ${limit}`;
340
+ },
341
+ },
342
+ {
343
+ name: 'controller-health-scorecard',
344
+ description: 'Score SFRA controller health by volume, errors, slow tail, and cache hit rate',
345
+ category: 'Technical Analytics',
346
+ tablesUsed: ['ccdw_aggr_controller_request', 'ccdw_dim_site'],
347
+ parameters: [
348
+ { name: 'siteId', description: 'Natural site id', type: 'string', required: true },
349
+ { name: 'from', description: 'Inclusive start date (YYYY-MM-DD)', type: 'date', required: true },
350
+ { name: 'to', description: 'Inclusive end date (YYYY-MM-DD)', type: 'date', required: true },
351
+ { name: 'limit', description: 'Max rows (1-500)', type: 'number', min: 1, max: 500 },
352
+ ],
353
+ buildSql(params) {
354
+ const siteId = getStringLiteral(params, 'siteId');
355
+ const from = getDateLiteral(params, 'from');
356
+ const to = getDateLiteral(params, 'to');
357
+ const limit = getOptionalIntegerLiteral(params, 'limit', 25, 1, 500);
358
+ return `SELECT cr.controller_name, SUM(cr.num_requests) AS total_requests, CAST(SUM(cr.response_time) / NULLIF(SUM(cr.num_requests), 0) AS DECIMAL(15,2)) AS avg_response_ms, CAST(100.0 * SUM(CASE WHEN cr.status_code >= 400 THEN cr.num_requests ELSE 0 END) / NULLIF(SUM(cr.num_requests), 0) AS DECIMAL(15,2)) AS error_pct, CAST(100.0 * SUM(cr.num_requests_bucket9 + cr.num_requests_bucket10 + cr.num_requests_bucket11) / NULLIF(SUM(cr.num_requests), 0) AS DECIMAL(15,2)) AS slow_tail_pct, CAST(100.0 * SUM(CASE WHEN cr.cache_behavior = 'HIT' THEN cr.num_requests ELSE 0 END) / NULLIF(SUM(CASE WHEN cr.cache_behavior IN ('HIT', 'MISS') THEN cr.num_requests ELSE 0 END), 0) AS DECIMAL(15,2)) AS cache_hit_pct FROM ccdw_aggr_controller_request cr JOIN ccdw_dim_site s ON s.site_id = cr.site_id WHERE cr.request_date >= ${from} AND cr.request_date <= ${to} AND s.nsite_id = ${siteId} GROUP BY cr.controller_name ORDER BY total_requests DESC LIMIT ${limit}`;
359
+ },
360
+ },
361
+ {
362
+ name: 'controller-error-rate-trend',
363
+ description: 'Daily 4xx/5xx error rate per storefront controller for catching deploy regressions',
364
+ category: 'Technical Analytics',
365
+ tablesUsed: ['ccdw_aggr_controller_request', 'ccdw_dim_site'],
366
+ parameters: [
367
+ { name: 'siteId', description: 'Natural site id', type: 'string', required: true },
368
+ { name: 'from', description: 'Inclusive start date (YYYY-MM-DD)', type: 'date', required: true },
369
+ { name: 'to', description: 'Inclusive end date (YYYY-MM-DD)', type: 'date', required: true },
370
+ { name: 'limit', description: 'Max controller/day rows (1-1000)', type: 'number', min: 1, max: 1000 },
371
+ ],
372
+ buildSql(params) {
373
+ const siteId = getStringLiteral(params, 'siteId');
374
+ const from = getDateLiteral(params, 'from');
375
+ const to = getDateLiteral(params, 'to');
376
+ const limit = getOptionalIntegerLiteral(params, 'limit', 100, 1, 1000);
377
+ return `SELECT CAST(CAST(r.request_date AS DATE) AS VARCHAR) AS request_day, r.controller_name, SUM(r.num_requests) AS total_requests, SUM(CASE WHEN r.status_code BETWEEN 400 AND 499 THEN r.num_requests ELSE 0 END) AS client_error_4xx, SUM(CASE WHEN r.status_code BETWEEN 500 AND 599 THEN r.num_requests ELSE 0 END) AS server_error_5xx, CAST(100.0 * (SUM(CASE WHEN r.status_code BETWEEN 400 AND 499 THEN r.num_requests ELSE 0 END) + SUM(CASE WHEN r.status_code BETWEEN 500 AND 599 THEN r.num_requests ELSE 0 END)) / NULLIF(SUM(r.num_requests), 0) AS DECIMAL(15,2)) AS error_rate_pct FROM ccdw_aggr_controller_request r JOIN ccdw_dim_site s ON s.site_id = r.site_id WHERE CAST(r.request_date AS DATE) BETWEEN ${from} AND ${to} AND s.nsite_id = ${siteId} GROUP BY CAST(r.request_date AS DATE), r.controller_name ORDER BY server_error_5xx DESC, client_error_4xx DESC, request_day DESC LIMIT ${limit}`;
378
+ },
379
+ },
380
+ {
381
+ name: 'remote-include-performance',
382
+ description: 'Rank remote-include child controllers by load, latency, errors, and cache hit rate per parent page',
383
+ category: 'Technical Analytics',
384
+ tablesUsed: ['ccdw_aggr_include_controller_request', 'ccdw_dim_site'],
385
+ parameters: [
386
+ { name: 'siteId', description: 'Natural site id', type: 'string', required: true },
387
+ { name: 'from', description: 'Inclusive start date (YYYY-MM-DD)', type: 'date', required: true },
388
+ { name: 'to', description: 'Inclusive end date (YYYY-MM-DD)', type: 'date', required: true },
389
+ { name: 'limit', description: 'Max rows (1-1000)', type: 'number', min: 1, max: 1000 },
390
+ ],
391
+ buildSql(params) {
392
+ const siteId = getStringLiteral(params, 'siteId');
393
+ const from = getDateLiteral(params, 'from');
394
+ const to = getDateLiteral(params, 'to');
395
+ const limit = getOptionalIntegerLiteral(params, 'limit', 50, 1, 1000);
396
+ return `SELECT ic.main_controller_name, ic.controller_name, SUM(ic.num_requests) AS total_requests, SUM(ic.response_time) AS total_response_ms, CAST(SUM(ic.response_time) / NULLIF(SUM(ic.num_requests), 0) AS DECIMAL(15,2)) AS avg_response_ms, CAST(100.0 * SUM(CASE WHEN ic.status_code >= 400 THEN ic.num_requests ELSE 0 END) / NULLIF(SUM(ic.num_requests), 0) AS DECIMAL(15,2)) AS error_pct, CAST(100.0 * SUM(CASE WHEN ic.cache_behavior = 'HIT' THEN ic.num_requests ELSE 0 END) / NULLIF(SUM(CASE WHEN ic.cache_behavior IN ('HIT','MISS') THEN ic.num_requests ELSE 0 END), 0) AS DECIMAL(15,2)) AS cache_hit_pct FROM ccdw_aggr_include_controller_request ic JOIN ccdw_dim_site s ON s.site_id = ic.site_id WHERE ic.request_date >= ${from} AND ic.request_date <= ${to} AND s.nsite_id = ${siteId} GROUP BY ic.main_controller_name, ic.controller_name ORDER BY total_requests DESC, total_response_ms DESC LIMIT ${limit}`;
397
+ },
398
+ },
399
+ {
400
+ name: 'revenue-by-channel',
401
+ description: 'Break down revenue, orders, AOV, and discount rate by channel, device, and locale',
402
+ category: 'Sales Analytics',
403
+ tablesUsed: ['ccdw_aggr_sales_summary', 'ccdw_dim_business_channel', 'ccdw_dim_site'],
404
+ parameters: [
405
+ { name: 'siteId', description: 'Natural site id', type: 'string', required: true },
406
+ { name: 'from', description: 'Inclusive start date (YYYY-MM-DD)', type: 'date', required: true },
407
+ { name: 'to', description: 'Inclusive end date (YYYY-MM-DD)', type: 'date', required: true },
408
+ { name: 'limit', description: 'Max rows (1-500)', type: 'number', min: 1, max: 500 },
409
+ ],
410
+ buildSql(params) {
411
+ const siteId = getStringLiteral(params, 'siteId');
412
+ const from = getDateLiteral(params, 'from');
413
+ const to = getDateLiteral(params, 'to');
414
+ const limit = getOptionalIntegerLiteral(params, 'limit', 50, 1, 500);
415
+ return `WITH site_total AS (SELECT SUM(ss.std_revenue) AS total_std_revenue FROM ccdw_aggr_sales_summary ss JOIN ccdw_dim_site s ON s.site_id = ss.site_id WHERE ss.submit_date >= ${from} AND ss.submit_date <= ${to} AND s.nsite_id = ${siteId}) SELECT bc.order_channel, bc.business_type, ss.device_class_code, ss.locale_code, SUM(ss.std_revenue) AS std_revenue, SUM(ss.num_orders) AS orders, SUM(ss.num_units) AS units, CAST(SUM(ss.std_revenue) / NULLIF(SUM(ss.num_orders), 0) AS DECIMAL(15,2)) AS std_aov, CAST(SUM(ss.std_revenue) * 100.0 / NULLIF(t.total_std_revenue, 0) AS DECIMAL(15,2)) AS revenue_share_pct, CAST(SUM(ss.std_total_discount) * 100.0 / NULLIF(SUM(ss.std_revenue) + SUM(ss.std_total_discount), 0) AS DECIMAL(15,2)) AS discount_rate_pct FROM ccdw_aggr_sales_summary ss JOIN ccdw_dim_site s ON s.site_id = ss.site_id JOIN ccdw_dim_business_channel bc ON bc.business_channel_id = ss.business_channel_id JOIN site_total t ON TRUE WHERE ss.submit_date >= ${from} AND ss.submit_date <= ${to} AND s.nsite_id = ${siteId} GROUP BY bc.order_channel, bc.business_type, ss.device_class_code, ss.locale_code, t.total_std_revenue ORDER BY std_revenue DESC LIMIT ${limit}`;
416
+ },
417
+ },
418
+ {
419
+ name: 'new-vs-returning-buyer-revenue',
420
+ description: 'Split revenue, orders, AOV, and discount depth between first-time and returning buyers',
421
+ category: 'Customer Analytics',
422
+ tablesUsed: ['ccdw_aggr_sales_summary', 'ccdw_dim_site'],
423
+ parameters: [
424
+ { name: 'siteId', description: 'Natural site id', type: 'string', required: true },
425
+ { name: 'from', description: 'Inclusive start date (YYYY-MM-DD)', type: 'date', required: true },
426
+ { name: 'to', description: 'Inclusive end date (YYYY-MM-DD)', type: 'date', required: true },
427
+ ],
428
+ buildSql(params) {
429
+ const siteId = getStringLiteral(params, 'siteId');
430
+ const from = getDateLiteral(params, 'from');
431
+ const to = getDateLiteral(params, 'to');
432
+ return `WITH site_total AS (SELECT SUM(ss.std_revenue) AS total_std_revenue FROM ccdw_aggr_sales_summary ss JOIN ccdw_dim_site s ON s.site_id = ss.site_id WHERE s.nsite_id = ${siteId} AND ss.submit_date >= ${from} AND ss.submit_date <= ${to}) SELECT CASE WHEN ss.first_time_buyer THEN 'first_time' ELSE 'returning' END AS buyer_type, CASE WHEN ss.registered THEN 'registered' ELSE 'guest' END AS customer_type, SUM(ss.std_revenue) AS std_revenue, SUM(ss.num_orders) AS orders, SUM(ss.num_units) AS units, CAST(SUM(ss.std_revenue) / NULLIF(SUM(ss.num_orders), 0) AS DECIMAL(15,2)) AS std_aov, CAST(SUM(ss.std_revenue) * 100.0 / NULLIF(t.total_std_revenue, 0) AS DECIMAL(15,2)) AS revenue_share_pct, CAST(SUM(ss.std_total_discount) * 100.0 / NULLIF(SUM(ss.std_revenue) + SUM(ss.std_total_discount), 0) AS DECIMAL(15,2)) AS discount_rate_pct FROM ccdw_aggr_sales_summary ss JOIN ccdw_dim_site s ON s.site_id = ss.site_id JOIN site_total t ON TRUE WHERE s.nsite_id = ${siteId} AND ss.submit_date >= ${from} AND ss.submit_date <= ${to} GROUP BY ss.first_time_buyer, ss.registered, t.total_std_revenue ORDER BY std_revenue DESC`;
433
+ },
434
+ },
435
+ {
436
+ name: 'discount-depth-breakdown',
437
+ description: 'Break down total discount into promotional vs manual by product, order, and shipping',
438
+ category: 'Promotion Analytics',
439
+ tablesUsed: ['ccdw_aggr_sales_summary', 'ccdw_dim_site'],
440
+ parameters: [
441
+ { name: 'siteId', description: 'Natural site id', type: 'string', required: true },
442
+ { name: 'from', description: 'Inclusive start date (YYYY-MM-DD)', type: 'date', required: true },
443
+ { name: 'to', description: 'Inclusive end date (YYYY-MM-DD)', type: 'date', required: true },
444
+ ],
445
+ buildSql(params) {
446
+ const siteId = getStringLiteral(params, 'siteId');
447
+ const from = getDateLiteral(params, 'from');
448
+ const to = getDateLiteral(params, 'to');
449
+ return `SELECT SUM(ss.std_revenue) AS std_revenue, SUM(COALESCE(ss.std_promotional_product_discount, 0)) AS std_promotional_product_discount, SUM(COALESCE(ss.std_promotional_order_discount, 0)) AS std_promotional_order_discount, SUM(COALESCE(ss.std_promotional_shipping_discount, 0)) AS std_promotional_shipping_discount, SUM(COALESCE(ss.std_manual_product_discount, 0)) AS std_manual_product_discount, SUM(COALESCE(ss.std_manual_order_discount, 0)) AS std_manual_order_discount, SUM(COALESCE(ss.std_manual_shipping_discount, 0)) AS std_manual_shipping_discount, SUM(COALESCE(ss.std_promotional_product_discount, 0) + COALESCE(ss.std_promotional_order_discount, 0) + COALESCE(ss.std_promotional_shipping_discount, 0)) AS promo_discount_total, SUM(COALESCE(ss.std_manual_product_discount, 0) + COALESCE(ss.std_manual_order_discount, 0) + COALESCE(ss.std_manual_shipping_discount, 0)) AS manual_discount_total, SUM(ss.std_total_discount) AS std_total_discount, CAST(SUM(ss.std_total_discount) * 100.0 / NULLIF(SUM(ss.std_revenue) + SUM(ss.std_total_discount), 0) AS DECIMAL(15,2)) AS effective_discount_rate_pct FROM ccdw_aggr_sales_summary ss JOIN ccdw_dim_site s ON s.site_id = ss.site_id WHERE ss.submit_date >= ${from} AND ss.submit_date <= ${to} AND s.nsite_id = ${siteId}`;
450
+ },
451
+ },
452
+ {
453
+ name: 'promotion-roi-leaderboard',
454
+ description: 'Rank promotions by revenue per dollar of discount, with orders, uses, and AOV',
455
+ category: 'Promotion Analytics',
456
+ tablesUsed: ['ccdw_aggr_promotion_sales_summary', 'ccdw_dim_promotion', 'ccdw_dim_site'],
457
+ parameters: [
458
+ { name: 'siteId', description: 'Natural site id', type: 'string', required: true },
459
+ { name: 'from', description: 'Inclusive start date (YYYY-MM-DD)', type: 'date', required: true },
460
+ { name: 'to', description: 'Inclusive end date (YYYY-MM-DD)', type: 'date', required: true },
461
+ { name: 'limit', description: 'Max rows (1-500)', type: 'number', min: 1, max: 500 },
462
+ ],
463
+ buildSql(params) {
464
+ const siteId = getStringLiteral(params, 'siteId');
465
+ const from = getDateLiteral(params, 'from');
466
+ const to = getDateLiteral(params, 'to');
467
+ const limit = getOptionalIntegerLiteral(params, 'limit', 50, 1, 500);
468
+ return `SELECT p.npromotion_id AS promotion_id, p.display_name AS promotion_name, p.promotion_class, SUM(pss.std_revenue) AS std_revenue, SUM(pss.std_total_discount) AS std_total_discount, SUM(pss.num_orders) AS num_orders, SUM(pss.num_promotion_uses) AS num_promotion_uses, CAST(SUM(pss.std_revenue) / NULLIF(SUM(pss.num_orders), 0) AS DECIMAL(15,2)) AS std_aov, CAST(SUM(pss.std_revenue) / NULLIF(SUM(pss.std_total_discount), 0) AS DECIMAL(15,2)) AS revenue_per_discount_dollar FROM ccdw_aggr_promotion_sales_summary pss JOIN ccdw_dim_promotion p ON p.promotion_id = pss.promotion_id JOIN ccdw_dim_site s ON s.site_id = pss.site_id WHERE pss.submit_date >= ${from} AND pss.submit_date <= ${to} AND s.nsite_id = ${siteId} GROUP BY p.npromotion_id, p.display_name, p.promotion_class ORDER BY revenue_per_discount_dollar DESC, std_revenue DESC LIMIT ${limit}`;
469
+ },
470
+ },
471
+ {
472
+ name: 'recommender-effectiveness',
473
+ description: 'Rank product recommenders by engagement, attributed revenue, and conversion',
474
+ category: 'Product Analytics',
475
+ tablesUsed: ['ccdw_aggr_product_recommendation_recommender', 'ccdw_dim_site'],
476
+ parameters: [
477
+ { name: 'siteId', description: 'Natural site id', type: 'string', required: true },
478
+ { name: 'from', description: 'Inclusive start date (YYYY-MM-DD)', type: 'date', required: true },
479
+ { name: 'to', description: 'Inclusive end date (YYYY-MM-DD)', type: 'date', required: true },
480
+ { name: 'limit', description: 'Max rows (1-500)', type: 'number', min: 1, max: 500 },
481
+ ],
482
+ buildSql(params) {
483
+ const siteId = getStringLiteral(params, 'siteId');
484
+ const from = getDateLiteral(params, 'from');
485
+ const to = getDateLiteral(params, 'to');
486
+ const limit = getOptionalIntegerLiteral(params, 'limit', 20, 1, 500);
487
+ // Note: the CIP JDBC service rejects projections with too many SUM() calls
488
+ // (observed ~7+ bare aggregate columns), so this report keeps the highest-value
489
+ // raw metrics (views/clicks/cart_adds/orders/revenue) and derives CTR and
490
+ // view-to-cart ratios rather than also projecting every raw funnel count.
491
+ return `SELECT rr.recommender_name, SUM(rr.num_recommender_views) AS recommender_views, SUM(rr.num_clicks) AS clicks, SUM(rr.num_cart_adds) AS cart_adds, SUM(rr.num_orders) AS orders, SUM(rr.std_attributed_revenue) AS std_attributed_revenue, CAST(SUM(rr.num_clicks) * 100.0 / NULLIF(SUM(rr.num_recommender_views), 0) AS DECIMAL(15,2)) AS ctr_pct, CAST(SUM(rr.num_cart_adds) * 100.0 / NULLIF(SUM(rr.num_product_views), 0) AS DECIMAL(15,2)) AS view_to_cart_pct FROM ccdw_aggr_product_recommendation_recommender rr JOIN ccdw_dim_site s ON s.site_id = rr.site_id WHERE rr.recommendation_date >= ${from} AND rr.recommendation_date <= ${to} AND s.nsite_id = ${siteId} GROUP BY rr.recommender_name ORDER BY std_attributed_revenue DESC LIMIT ${limit}`;
492
+ },
493
+ },
494
+ {
495
+ name: 'zero-result-searches',
496
+ description: 'Surface search terms that most often return zero results and the demand lost to them',
497
+ category: 'Search Analytics',
498
+ tablesUsed: ['ccdw_aggr_search_query', 'ccdw_dim_site'],
499
+ parameters: [
500
+ { name: 'siteId', description: 'Natural site id', type: 'string', required: true },
501
+ { name: 'from', description: 'Inclusive start date (YYYY-MM-DD)', type: 'date', required: true },
502
+ { name: 'to', description: 'Inclusive end date (YYYY-MM-DD)', type: 'date', required: true },
503
+ { name: 'limit', description: 'Max rows (1-500)', type: 'number', min: 1, max: 500 },
504
+ ],
505
+ buildSql(params) {
506
+ const siteId = getStringLiteral(params, 'siteId');
507
+ const from = getDateLiteral(params, 'from');
508
+ const to = getDateLiteral(params, 'to');
509
+ const limit = getOptionalIntegerLiteral(params, 'limit', 50, 1, 500);
510
+ return `SELECT LOWER(sq.query) AS query, SUM(sq.num_searches_without_results) AS no_result_searches, SUM(sq.num_searches_with_results) AS with_result_searches, SUM(sq.num_visits_without_search_results) AS visits_without_results, CAST(100.0 * SUM(sq.num_searches_without_results) / NULLIF(SUM(sq.num_searches_without_results) + SUM(sq.num_searches_with_results), 0) AS DECIMAL(15,2)) AS no_result_rate_pct FROM ccdw_aggr_search_query sq JOIN ccdw_dim_site s ON s.site_id = sq.site_id WHERE sq.search_date >= ${from} AND sq.search_date <= ${to} AND s.nsite_id = ${siteId} GROUP BY LOWER(sq.query) HAVING SUM(sq.num_searches_without_results) > 0 ORDER BY no_result_searches DESC, no_result_rate_pct DESC LIMIT ${limit}`;
511
+ },
512
+ },
513
+ {
514
+ name: 'checkout-funnel-dropoff',
515
+ description: 'Visits reaching each checkout step with step-over-step drop-off to pinpoint funnel leaks',
516
+ category: 'Traffic Analytics',
517
+ tablesUsed: ['ccdw_aggr_visit_checkout', 'ccdw_dim_site'],
518
+ parameters: [
519
+ { name: 'siteId', description: 'Natural site id', type: 'string', required: true },
520
+ { name: 'from', description: 'Inclusive start date (YYYY-MM-DD)', type: 'date', required: true },
521
+ { name: 'to', description: 'Inclusive end date (YYYY-MM-DD)', type: 'date', required: true },
522
+ ],
523
+ buildSql(params) {
524
+ const siteId = getStringLiteral(params, 'siteId');
525
+ const from = getDateLiteral(params, 'from');
526
+ const to = getDateLiteral(params, 'to');
527
+ // Some tenants run parallel checkout implementations (e.g. SFRA + headless) that
528
+ // write colliding step_numbers under different step_names into this table, which
529
+ // makes a step_number-only funnel produce nonsensical drop-offs. Group by the
530
+ // (step_number, step_name) identity and order the window by step_number then total
531
+ // visits so each distinct checkout flow's steps stay in sequence; the dividend is
532
+ // promoted with * 1.0 so Calcite does not truncate the ratio with integer division.
533
+ return `WITH steps AS (SELECT vc.step_number AS step_number, vc.step_name AS step_name, SUM(vc.num_visits) AS num_visits, SUM(vc.num_hits) AS num_hits FROM ccdw_aggr_visit_checkout vc JOIN ccdw_dim_site s ON s.site_id = vc.site_id WHERE vc.visit_date >= ${from} AND vc.visit_date <= ${to} AND s.nsite_id = ${siteId} GROUP BY vc.step_number, vc.step_name) SELECT step_number, step_name, num_visits, num_hits, CAST(num_visits * 100.0 / NULLIF(FIRST_VALUE(num_visits) OVER (ORDER BY step_number, num_visits DESC), 0) AS DECIMAL(15,2)) AS pct_of_first_step, CAST((1.0 - num_visits * 1.0 / NULLIF(LAG(num_visits) OVER (ORDER BY step_number, num_visits DESC), 0)) * 100.0 AS DECIMAL(15,2)) AS dropoff_from_prev_pct FROM steps ORDER BY step_number, num_visits DESC`;
534
+ },
535
+ },
536
+ {
537
+ name: 'bot-traffic-share',
538
+ description: 'Daily bot/crawler vs human visit share with the top bot family driving crawler traffic',
539
+ category: 'Traffic Analytics',
540
+ tablesUsed: ['ccdw_aggr_visit_robot', 'ccdw_aggr_visit_user_agent', 'ccdw_dim_site'],
541
+ parameters: [
542
+ { name: 'siteId', description: 'Natural site id', type: 'string', required: true },
543
+ { name: 'from', description: 'Inclusive start date (YYYY-MM-DD)', type: 'date', required: true },
544
+ { name: 'to', description: 'Inclusive end date (YYYY-MM-DD)', type: 'date', required: true },
545
+ { name: 'limit', description: 'Max days returned (1-500)', type: 'number', min: 1, max: 500 },
546
+ ],
547
+ buildSql(params) {
548
+ const siteId = getStringLiteral(params, 'siteId');
549
+ const from = getDateLiteral(params, 'from');
550
+ const to = getDateLiteral(params, 'to');
551
+ const limit = getOptionalIntegerLiteral(params, 'limit', 60, 1, 500);
552
+ // Robot and human (user-agent) visits live in separate daily aggregate tables;
553
+ // FULL OUTER JOIN on visit_date keeps days present in only one table. The top bot
554
+ // family per day comes from a ROW_NUMBER() ranking CTE (ua_family is nullable, so
555
+ // COALESCE to '(unknown)'). visit_date is CAST to VARCHAR for plain-string output.
556
+ return `WITH robot AS (SELECT vr.visit_date AS visit_date, SUM(vr.num_visits) AS robot_visits FROM ccdw_aggr_visit_robot vr JOIN ccdw_dim_site s ON s.site_id = vr.site_id WHERE vr.visit_date >= ${from} AND vr.visit_date <= ${to} AND s.nsite_id = ${siteId} GROUP BY vr.visit_date), human AS (SELECT vu.visit_date AS visit_date, SUM(vu.num_visits) AS human_visits FROM ccdw_aggr_visit_user_agent vu JOIN ccdw_dim_site s ON s.site_id = vu.site_id WHERE vu.visit_date >= ${from} AND vu.visit_date <= ${to} AND s.nsite_id = ${siteId} GROUP BY vu.visit_date), bot_family_ranked AS (SELECT vr.visit_date AS visit_date, COALESCE(vr.ua_family, '(unknown)') AS ua_family, COALESCE(vr.ua_os_family, '(unknown)') AS ua_os_family, ROW_NUMBER() OVER (PARTITION BY vr.visit_date ORDER BY SUM(vr.num_visits) DESC, COALESCE(vr.ua_family, '(unknown)')) AS rn FROM ccdw_aggr_visit_robot vr JOIN ccdw_dim_site s ON s.site_id = vr.site_id WHERE vr.visit_date >= ${from} AND vr.visit_date <= ${to} AND s.nsite_id = ${siteId} GROUP BY vr.visit_date, COALESCE(vr.ua_family, '(unknown)'), COALESCE(vr.ua_os_family, '(unknown)')), top_bot_family AS (SELECT visit_date, ua_family, ua_os_family FROM bot_family_ranked WHERE rn = 1) SELECT CAST(COALESCE(r.visit_date, h.visit_date) AS VARCHAR) AS visit_day, COALESCE(r.robot_visits, 0) AS robot_visits, COALESCE(h.human_visits, 0) AS human_visits, COALESCE(r.robot_visits, 0) + COALESCE(h.human_visits, 0) AS total_visits, CAST(COALESCE(r.robot_visits, 0) * 100.0 / NULLIF(COALESCE(r.robot_visits, 0) + COALESCE(h.human_visits, 0), 0) AS DECIMAL(15,2)) AS bot_share_pct, tbf.ua_family AS top_bot_family, tbf.ua_os_family AS top_bot_os_family FROM robot r FULL OUTER JOIN human h ON r.visit_date = h.visit_date LEFT JOIN top_bot_family tbf ON tbf.visit_date = COALESCE(r.visit_date, h.visit_date) ORDER BY visit_day LIMIT ${limit}`;
557
+ },
558
+ },
559
+ {
560
+ name: 'inventory-stockout-by-location',
561
+ description: 'Surface out-of-stock and low-stock SKUs by location for replenishment',
562
+ category: 'Inventory Analytics',
563
+ tablesUsed: ['ccdw_aggr_inventory_by_location', 'ccdw_dim_location', 'ccdw_dim_product'],
564
+ parameters: [
565
+ { name: 'from', description: 'Inclusive start date (YYYY-MM-DD)', type: 'date', required: true },
566
+ { name: 'to', description: 'Inclusive end date (YYYY-MM-DD)', type: 'date', required: true },
567
+ {
568
+ name: 'threshold',
569
+ description: 'Low-stock cutoff: available_to_order at or below this is flagged (default 10)',
570
+ type: 'number',
571
+ min: 0,
572
+ max: 1000000,
573
+ },
574
+ { name: 'limit', description: 'Max rows (1-500)', type: 'number', min: 1, max: 500 },
575
+ ],
576
+ buildSql(params) {
577
+ const from = getDateLiteral(params, 'from');
578
+ const to = getDateLiteral(params, 'to');
579
+ const threshold = getOptionalIntegerLiteral(params, 'threshold', 10, 0, 1000000);
580
+ const limit = getOptionalIntegerLiteral(params, 'limit', 100, 1, 500);
581
+ // The CIP JDBC service rejects this 3-table join past ~9 projected columns
582
+ // (a service-side query-complexity limit; the error misleadingly names the first
583
+ // column). Keep the operationally essential columns and drop the surrogate id,
584
+ // available_to_fulfill, and soft_reserved to stay within the limit.
585
+ return `SELECT CAST(inv.record_date AS VARCHAR) AS record_date, l.nlocation_id AS location_id, p.nsku_id AS sku_id, p.sku_display_name, COALESCE(inv.on_hand, 0) AS on_hand, COALESCE(inv.available_to_order, 0) AS available_to_order, COALESCE(inv.reserved, 0) AS reserved, CASE WHEN COALESCE(inv.available_to_order, 0) <= 0 THEN 'out_of_stock' ELSE 'low' END AS stock_status, CAST(${threshold} - COALESCE(inv.available_to_order, 0) AS DECIMAL(15,2)) AS shortfall FROM ccdw_aggr_inventory_by_location inv JOIN ccdw_dim_location l ON l.location_id = inv.location_id JOIN ccdw_dim_product p ON p.sku_id = inv.sku_id WHERE inv.record_date >= ${from} AND inv.record_date <= ${to} AND COALESCE(inv.available_to_order, 0) <= ${threshold} ORDER BY shortfall DESC, l.nlocation_id, p.nsku_id LIMIT ${limit}`;
586
+ },
587
+ },
209
588
  ];
210
589
  //# sourceMappingURL=reports.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"reports.js","sourceRoot":"","sources":["../../../../src/operations/cip/reports.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reports.js","sourceRoot":"","sources":["../../../../src/operations/cip/reports.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Escapes single quotes in a value destined for a single-quoted SQL string literal.
3
+ *
4
+ * @param value - Raw string value to escape
5
+ * @returns The value with embedded single quotes doubled per SQL string-literal rules
6
+ */
7
+ export declare function escapeSqlString(value: string): string;
8
+ /**
9
+ * Quotes a SQL identifier if it collides with a Calcite reserved word.
10
+ *
11
+ * Pass a bare column name; if it is a reserved word it is returned double-quoted
12
+ * (for example `method` -> `"method"`), otherwise it is returned unchanged. Use this
13
+ * whenever a report references a column whose name might be reserved.
14
+ *
15
+ * @param name - Bare column or identifier name
16
+ * @returns The identifier, double-quoted only if it is a Calcite reserved word
17
+ */
18
+ export declare function quoteIdentifierIfReserved(name: string): string;
19
+ /**
20
+ * Returns true if the given bare identifier is a Calcite reserved word.
21
+ *
22
+ * @param name - Bare identifier name
23
+ * @returns Whether the name requires double-quoting in Calcite SQL
24
+ */
25
+ export declare function isReservedIdentifier(name: string): boolean;
26
+ /**
27
+ * Builds a quoted, escaped SQL string literal from a raw value.
28
+ *
29
+ * @param value - Raw string value
30
+ * @returns A single-quoted, escaped SQL string literal (for example `O'Brien` -> `'O''Brien'`)
31
+ */
32
+ export declare function stringLiteral(value: string): string;
33
+ /**
34
+ * Validates a `YYYY-MM-DD` date string and returns it as a quoted SQL date literal.
35
+ *
36
+ * @param value - Date string expected in `YYYY-MM-DD` form
37
+ * @returns A quoted SQL date literal
38
+ * @throws {Error} If the value is not a valid `YYYY-MM-DD` date
39
+ */
40
+ export declare function dateLiteral(value: string): string;
41
+ /**
42
+ * Validates a boolean string (`true`/`false`, case-insensitive) and returns the SQL literal.
43
+ *
44
+ * @param value - Boolean string value
45
+ * @returns The lowercase boolean literal `true` or `false`
46
+ * @throws {Error} If the value is not `true` or `false`
47
+ */
48
+ export declare function booleanLiteral(value: string): string;
49
+ /**
50
+ * Validates and returns an integer SQL literal within an inclusive range.
51
+ *
52
+ * @param value - Raw integer string
53
+ * @param min - Inclusive lower bound
54
+ * @param max - Inclusive upper bound
55
+ * @returns The integer rendered as a bare SQL literal
56
+ * @throws {Error} If the value is not an integer within `[min, max]`
57
+ */
58
+ export declare function integerLiteral(value: string, min: number, max: number): string;
59
+ /**
60
+ * Builds a comma-separated, quoted string list for a SQL `IN (...)` clause.
61
+ *
62
+ * @param values - Raw string values
63
+ * @returns The escaped, single-quoted values joined by commas (no surrounding parens)
64
+ * @throws {Error} If `values` is empty
65
+ */
66
+ export declare function stringInList(values: string[]): string;
@@ -0,0 +1,136 @@
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
+ * Shared SQL literal and identifier helpers for CIP report and metadata queries.
8
+ *
9
+ * CIP runs an Apache Calcite (Avatica JDBC) backend. These helpers centralize the
10
+ * single most security-sensitive logic in the CIP subsystem — turning untrusted
11
+ * parameter values into safe SQL literals — plus the Calcite-specific quoting of
12
+ * reserved words used as identifiers. Both report SQL builders and metadata catalog
13
+ * queries import from here so the escaping rules live (and are tested) in one place.
14
+ *
15
+ * @module operations/cip/sql
16
+ */
17
+ /**
18
+ * Apache Calcite reserved words that are also real CIP warehouse column names.
19
+ *
20
+ * Selecting or grouping by any of these as a bare identifier is a parse error; they
21
+ * must be double-quoted. Confirmed against the live JDBC service (for example
22
+ * `SELECT method FROM ...` fails until quoted). Keep lowercase; matching is
23
+ * case-insensitive.
24
+ */
25
+ const CALCITE_RESERVED_IDENTIFIERS = new Set([
26
+ 'date',
27
+ 'method',
28
+ 'rows',
29
+ 'time',
30
+ 'timestamp',
31
+ 'user',
32
+ 'value',
33
+ 'year',
34
+ 'month',
35
+ 'day',
36
+ 'hour',
37
+ 'minute',
38
+ 'second',
39
+ ]);
40
+ /**
41
+ * Escapes single quotes in a value destined for a single-quoted SQL string literal.
42
+ *
43
+ * @param value - Raw string value to escape
44
+ * @returns The value with embedded single quotes doubled per SQL string-literal rules
45
+ */
46
+ export function escapeSqlString(value) {
47
+ return value.replaceAll("'", "''");
48
+ }
49
+ /**
50
+ * Quotes a SQL identifier if it collides with a Calcite reserved word.
51
+ *
52
+ * Pass a bare column name; if it is a reserved word it is returned double-quoted
53
+ * (for example `method` -> `"method"`), otherwise it is returned unchanged. Use this
54
+ * whenever a report references a column whose name might be reserved.
55
+ *
56
+ * @param name - Bare column or identifier name
57
+ * @returns The identifier, double-quoted only if it is a Calcite reserved word
58
+ */
59
+ export function quoteIdentifierIfReserved(name) {
60
+ return CALCITE_RESERVED_IDENTIFIERS.has(name.toLowerCase()) ? `"${name}"` : name;
61
+ }
62
+ /**
63
+ * Returns true if the given bare identifier is a Calcite reserved word.
64
+ *
65
+ * @param name - Bare identifier name
66
+ * @returns Whether the name requires double-quoting in Calcite SQL
67
+ */
68
+ export function isReservedIdentifier(name) {
69
+ return CALCITE_RESERVED_IDENTIFIERS.has(name.toLowerCase());
70
+ }
71
+ /**
72
+ * Builds a quoted, escaped SQL string literal from a raw value.
73
+ *
74
+ * @param value - Raw string value
75
+ * @returns A single-quoted, escaped SQL string literal (for example `O'Brien` -> `'O''Brien'`)
76
+ */
77
+ export function stringLiteral(value) {
78
+ return `'${escapeSqlString(value)}'`;
79
+ }
80
+ /**
81
+ * Validates a `YYYY-MM-DD` date string and returns it as a quoted SQL date literal.
82
+ *
83
+ * @param value - Date string expected in `YYYY-MM-DD` form
84
+ * @returns A quoted SQL date literal
85
+ * @throws {Error} If the value is not a valid `YYYY-MM-DD` date
86
+ */
87
+ export function dateLiteral(value) {
88
+ if (!/^\d{4}-\d{2}-\d{2}$/u.test(value)) {
89
+ throw new Error(`Invalid date: expected YYYY-MM-DD, got "${value}"`);
90
+ }
91
+ return `'${escapeSqlString(value)}'`;
92
+ }
93
+ /**
94
+ * Validates a boolean string (`true`/`false`, case-insensitive) and returns the SQL literal.
95
+ *
96
+ * @param value - Boolean string value
97
+ * @returns The lowercase boolean literal `true` or `false`
98
+ * @throws {Error} If the value is not `true` or `false`
99
+ */
100
+ export function booleanLiteral(value) {
101
+ const normalized = value.toLowerCase();
102
+ if (normalized !== 'true' && normalized !== 'false') {
103
+ throw new Error(`Invalid boolean: expected true or false, got "${value}"`);
104
+ }
105
+ return normalized;
106
+ }
107
+ /**
108
+ * Validates and returns an integer SQL literal within an inclusive range.
109
+ *
110
+ * @param value - Raw integer string
111
+ * @param min - Inclusive lower bound
112
+ * @param max - Inclusive upper bound
113
+ * @returns The integer rendered as a bare SQL literal
114
+ * @throws {Error} If the value is not an integer within `[min, max]`
115
+ */
116
+ export function integerLiteral(value, min, max) {
117
+ const parsed = Number.parseInt(value, 10);
118
+ if (!Number.isInteger(parsed) || String(parsed) !== value.trim() || parsed < min || parsed > max) {
119
+ throw new Error(`Invalid integer: expected ${min}-${max}, got "${value}"`);
120
+ }
121
+ return String(parsed);
122
+ }
123
+ /**
124
+ * Builds a comma-separated, quoted string list for a SQL `IN (...)` clause.
125
+ *
126
+ * @param values - Raw string values
127
+ * @returns The escaped, single-quoted values joined by commas (no surrounding parens)
128
+ * @throws {Error} If `values` is empty
129
+ */
130
+ export function stringInList(values) {
131
+ if (values.length === 0) {
132
+ throw new Error('Cannot build an IN list from an empty value set');
133
+ }
134
+ return values.map((value) => stringLiteral(value)).join(', ');
135
+ }
136
+ //# sourceMappingURL=sql.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sql.js","sourceRoot":"","sources":["../../../../src/operations/cip/sql.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;;;;;GAUG;AAEH;;;;;;;GAOG;AACH,MAAM,4BAA4B,GAAG,IAAI,GAAG,CAAC;IAC3C,MAAM;IACN,QAAQ;IACR,MAAM;IACN,MAAM;IACN,WAAW;IACX,MAAM;IACN,OAAO;IACP,MAAM;IACN,OAAO;IACP,KAAK;IACL,MAAM;IACN,QAAQ;IACR,QAAQ;CACT,CAAC,CAAC;AAEH;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,KAAa;IAC3C,OAAO,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACrC,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,yBAAyB,CAAC,IAAY;IACpD,OAAO,4BAA4B,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AACnF,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC/C,OAAO,4BAA4B,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;AAC9D,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,OAAO,IAAI,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC;AACvC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,2CAA2C,KAAK,GAAG,CAAC,CAAC;IACvE,CAAC;IAED,OAAO,IAAI,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC;AACvC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,KAAa;IAC1C,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IACvC,IAAI,UAAU,KAAK,MAAM,IAAI,UAAU,KAAK,OAAO,EAAE,CAAC;QACpD,MAAM,IAAI,KAAK,CAAC,iDAAiD,KAAK,GAAG,CAAC,CAAC;IAC7E,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,cAAc,CAAC,KAAa,EAAE,GAAW,EAAE,GAAW;IACpE,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC1C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,KAAK,CAAC,IAAI,EAAE,IAAI,MAAM,GAAG,GAAG,IAAI,MAAM,GAAG,GAAG,EAAE,CAAC;QACjG,MAAM,IAAI,KAAK,CAAC,6BAA6B,GAAG,IAAI,GAAG,UAAU,KAAK,GAAG,CAAC,CAAC;IAC7E,CAAC;IAED,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC;AACxB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,MAAgB;IAC3C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACrE,CAAC;IAED,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChE,CAAC"}
@@ -11,6 +11,24 @@ export interface CipReportParamDefinition {
11
11
  required?: boolean;
12
12
  min?: number;
13
13
  max?: number;
14
+ /**
15
+ * Allowed values for an enum-style parameter (for example `['4xx', '5xx']`).
16
+ * When set, {@link CipReportParamType} should be `string` and the value is
17
+ * validated against this set before the report's SQL builder runs.
18
+ */
19
+ options?: string[];
20
+ /**
21
+ * When true, the parameter accepts multiple comma-separated values, suitable
22
+ * for a SQL `IN (...)` clause. Each value is validated against `options` when
23
+ * both are set.
24
+ */
25
+ multiple?: boolean;
26
+ /**
27
+ * Default value applied when the parameter is omitted. For `multiple`
28
+ * parameters this may be a comma-separated string. Defaults are injected
29
+ * before validation so a report can rely on the value being present.
30
+ */
31
+ default?: string;
14
32
  }
15
33
  /**
16
34
  * Curated CIP report definition.
@@ -21,6 +39,11 @@ export interface CipReportDefinition {
21
39
  category: string;
22
40
  parameters: CipReportParamDefinition[];
23
41
  buildSql: (params: Record<string, string>) => string;
42
+ /**
43
+ * Optional list of warehouse tables the report reads, for discoverability in
44
+ * `--describe` output and the report listing command. Does not affect SQL.
45
+ */
46
+ tablesUsed?: string[];
24
47
  }
25
48
  /**
26
49
  * Generated SQL for a curated report execution.
@@ -2,14 +2,15 @@ import type { SkillSet, SkillSourceConfig } from './types.js';
2
2
  /**
3
3
  * Registry mapping skill sets to their source configurations.
4
4
  *
5
- * Each skill set (b2c, b2c-cli, storefront-next, cap-dev) maps to its respective
6
- * GitHub repository and download configuration for artifact retrieval.
5
+ * Each skill set (b2c, b2c-cli, storefront-next, storefront-next-figma, cap-dev)
6
+ * maps to its respective GitHub repository and download configuration for
7
+ * artifact retrieval.
7
8
  */
8
9
  export declare const SKILL_SOURCES: Record<SkillSet, SkillSourceConfig>;
9
10
  /**
10
11
  * Get the source configuration for a specific skill set.
11
12
  *
12
- * @param skillSet - The skill set identifier ('b2c', 'b2c-cli', 'storefront-next', or 'cap-dev')
13
+ * @param skillSet - The skill set identifier ('b2c', 'b2c-cli', 'storefront-next', 'storefront-next-figma', or 'cap-dev')
13
14
  * @returns The source configuration for the skill set
14
15
  * @throws Error if the skill set is not recognized
15
16
  */
@@ -10,8 +10,9 @@ function pluginsTag(version) {
10
10
  /**
11
11
  * Registry mapping skill sets to their source configurations.
12
12
  *
13
- * Each skill set (b2c, b2c-cli, storefront-next, cap-dev) maps to its respective
14
- * GitHub repository and download configuration for artifact retrieval.
13
+ * Each skill set (b2c, b2c-cli, storefront-next, storefront-next-figma, cap-dev)
14
+ * maps to its respective GitHub repository and download configuration for
15
+ * artifact retrieval.
15
16
  */
16
17
  export const SKILL_SOURCES = {
17
18
  b2c: {
@@ -38,6 +39,14 @@ export const SKILL_SOURCES = {
38
39
  assetName: 'storefront-next-skills.zip',
39
40
  tagPattern: pluginsTag,
40
41
  },
42
+ 'storefront-next-figma': {
43
+ id: 'storefront-next-figma',
44
+ displayName: 'Storefront Next Figma design-kit skills (requires the Figma MCP server)',
45
+ type: 'release-artifact',
46
+ repo: 'SalesforceCommerceCloud/b2c-developer-tooling',
47
+ assetName: 'storefront-next-figma-skills.zip',
48
+ tagPattern: pluginsTag,
49
+ },
41
50
  'cap-dev': {
42
51
  id: 'cap-dev',
43
52
  displayName: 'Commerce Apps development skills',
@@ -50,7 +59,7 @@ export const SKILL_SOURCES = {
50
59
  /**
51
60
  * Get the source configuration for a specific skill set.
52
61
  *
53
- * @param skillSet - The skill set identifier ('b2c', 'b2c-cli', 'storefront-next', or 'cap-dev')
62
+ * @param skillSet - The skill set identifier ('b2c', 'b2c-cli', 'storefront-next', 'storefront-next-figma', or 'cap-dev')
54
63
  * @returns The source configuration for the skill set
55
64
  * @throws Error if the skill set is not recognized
56
65
  */
@@ -1 +1 @@
1
- {"version":3,"file":"sources.js","sourceRoot":"","sources":["../../../src/skills/sources.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,SAAS,UAAU,CAAC,OAAe;IACjC,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACvC,OAAO,qBAAqB,IAAI,EAAE,CAAC;AACrC,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,aAAa,GAAwC;IAChE,GAAG,EAAE;QACH,EAAE,EAAE,KAAK;QACT,WAAW,EAAE,mCAAmC;QAChD,IAAI,EAAE,kBAAkB;QACxB,IAAI,EAAE,+CAA+C;QACrD,SAAS,EAAE,gBAAgB;QAC3B,UAAU,EAAE,UAAU;KACvB;IACD,SAAS,EAAE;QACT,EAAE,EAAE,SAAS;QACb,WAAW,EAAE,iCAAiC;QAC9C,IAAI,EAAE,kBAAkB;QACxB,IAAI,EAAE,+CAA+C;QACrD,SAAS,EAAE,oBAAoB;QAC/B,UAAU,EAAE,UAAU;KACvB;IACD,iBAAiB,EAAE;QACjB,EAAE,EAAE,iBAAiB;QACrB,WAAW,EAAE,oCAAoC;QACjD,IAAI,EAAE,kBAAkB;QACxB,IAAI,EAAE,+CAA+C;QACrD,SAAS,EAAE,4BAA4B;QACvC,UAAU,EAAE,UAAU;KACvB;IACD,SAAS,EAAE;QACT,EAAE,EAAE,SAAS;QACb,WAAW,EAAE,kCAAkC;QAC/C,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,uCAAuC;QAC7C,GAAG,EAAE,MAAM;QACX,UAAU,EAAE,gBAAgB;KAC7B;CACF,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,QAAkB;IAC/C,MAAM,MAAM,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IACvC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,sBAAsB,QAAQ,EAAE,CAAC,CAAC;IACpD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAe,MAAM,CAAC,IAAI,CAAC,aAAa,CAAe,CAAC"}
1
+ {"version":3,"file":"sources.js","sourceRoot":"","sources":["../../../src/skills/sources.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,SAAS,UAAU,CAAC,OAAe;IACjC,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACvC,OAAO,qBAAqB,IAAI,EAAE,CAAC;AACrC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,aAAa,GAAwC;IAChE,GAAG,EAAE;QACH,EAAE,EAAE,KAAK;QACT,WAAW,EAAE,mCAAmC;QAChD,IAAI,EAAE,kBAAkB;QACxB,IAAI,EAAE,+CAA+C;QACrD,SAAS,EAAE,gBAAgB;QAC3B,UAAU,EAAE,UAAU;KACvB;IACD,SAAS,EAAE;QACT,EAAE,EAAE,SAAS;QACb,WAAW,EAAE,iCAAiC;QAC9C,IAAI,EAAE,kBAAkB;QACxB,IAAI,EAAE,+CAA+C;QACrD,SAAS,EAAE,oBAAoB;QAC/B,UAAU,EAAE,UAAU;KACvB;IACD,iBAAiB,EAAE;QACjB,EAAE,EAAE,iBAAiB;QACrB,WAAW,EAAE,oCAAoC;QACjD,IAAI,EAAE,kBAAkB;QACxB,IAAI,EAAE,+CAA+C;QACrD,SAAS,EAAE,4BAA4B;QACvC,UAAU,EAAE,UAAU;KACvB;IACD,uBAAuB,EAAE;QACvB,EAAE,EAAE,uBAAuB;QAC3B,WAAW,EAAE,yEAAyE;QACtF,IAAI,EAAE,kBAAkB;QACxB,IAAI,EAAE,+CAA+C;QACrD,SAAS,EAAE,kCAAkC;QAC7C,UAAU,EAAE,UAAU;KACvB;IACD,SAAS,EAAE;QACT,EAAE,EAAE,SAAS;QACb,WAAW,EAAE,kCAAkC;QAC/C,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,uCAAuC;QAC7C,GAAG,EAAE,MAAM;QACX,UAAU,EAAE,gBAAgB;KAC7B;CACF,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,QAAkB;IAC/C,MAAM,MAAM,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IACvC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,sBAAsB,QAAQ,EAAE,CAAC,CAAC;IACpD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAe,MAAM,CAAC,IAAI,CAAC,aAAa,CAAe,CAAC"}
@@ -5,7 +5,7 @@ export type IdeType = 'claude-code' | 'cursor' | 'windsurf' | 'vscode' | 'codex'
5
5
  /**
6
6
  * Skill set categories matching the plugins directory structure.
7
7
  */
8
- export type SkillSet = 'b2c' | 'b2c-cli' | 'cap-dev' | 'storefront-next';
8
+ export type SkillSet = 'b2c' | 'b2c-cli' | 'cap-dev' | 'storefront-next' | 'storefront-next-figma';
9
9
  /**
10
10
  * Configuration for a skill source — defines how to fetch skills from a particular repository.
11
11
  */
@@ -6,7 +6,12 @@
6
6
  import { randomBytes } from 'node:crypto';
7
7
  import fs from 'node:fs';
8
8
  import path from 'node:path';
9
- import appInsights from 'applicationinsights';
9
+ // Namespace import (not default): `applicationinsights` is a legacy CommonJS
10
+ // module whose default-export interop is not synthesized when the file is
11
+ // loaded as native ESM (e.g. mocha 11's tsx loader), leaving the default
12
+ // binding `undefined`. The namespace form resolves `TelemetryClient` correctly
13
+ // under every loader — mocha, tsx, and the production ESM build.
14
+ import * as appInsights from 'applicationinsights';
10
15
  import { getLogger } from '../logging/index.js';
11
16
  const generateRandomId = () => randomBytes(20).toString('hex');
12
17
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../../../src/telemetry/telemetry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../../../src/telemetry/telemetry.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@salesforce/b2c-tooling-sdk",
3
3
  "description": "Core tooling library for Salesforce B2C Commerce CLI",
4
- "version": "1.12.0",
4
+ "version": "1.14.0",
5
5
  "author": "Charles Lavery",
6
6
  "license": "Apache-2.0",
7
7
  "repository": "SalesforceCommerceCloud/b2c-developer-tooling",
@@ -192,7 +192,7 @@
192
192
  "eslint-config-prettier": "^10",
193
193
  "eslint-plugin-header": "^3.1.1",
194
194
  "eslint-plugin-prettier": "^5.5.5",
195
- "mocha": "^10",
195
+ "mocha": "^11",
196
196
  "msw": "^2.12.4",
197
197
  "openapi-typescript": "^7.10.1",
198
198
  "prettier": "^3.8.3",
@@ -248,6 +248,7 @@
248
248
  "pretest": "tsc --noEmit -p test",
249
249
  "test": "c8 mocha --forbid-only \"test/**/*.test.ts\"",
250
250
  "test:ci": "c8 mocha --forbid-only --reporter json --reporter-option output=test-results.json \"test/**/*.test.ts\"",
251
+ "test:ci:win": "c8 --check-coverage=false mocha --forbid-only --reporter json --reporter-option output=test-results.json \"test/**/*.test.ts\"",
251
252
  "test:unit": "mocha --forbid-only \"test/**/*.test.ts\"",
252
253
  "test:agent": "mocha --forbid-only --parallel --jobs 4 --reporter min \"test/**/*.test.ts\"",
253
254
  "test:watch": "mocha --watch \"test/**/*.test.ts\"",