@salesforce/b2c-tooling-sdk 0.4.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (148) hide show
  1. package/README.md +1 -1
  2. package/data/cip-proto/common.proto +281 -0
  3. package/data/cip-proto/requests.proto +178 -0
  4. package/data/cip-proto/responses.proto +135 -0
  5. package/dist/cjs/cli/am-command.js +2 -0
  6. package/dist/cjs/cli/am-command.js.map +1 -1
  7. package/dist/cjs/cli/base-command.d.ts +3 -1
  8. package/dist/cjs/cli/base-command.js +12 -4
  9. package/dist/cjs/cli/base-command.js.map +1 -1
  10. package/dist/cjs/cli/config.d.ts +1 -1
  11. package/dist/cjs/cli/config.js +5 -3
  12. package/dist/cjs/cli/config.js.map +1 -1
  13. package/dist/cjs/cli/instance-command.d.ts +2 -1
  14. package/dist/cjs/cli/mrt-command.d.ts +1 -0
  15. package/dist/cjs/cli/oauth-command.d.ts +2 -1
  16. package/dist/cjs/cli/oauth-command.js +1 -1
  17. package/dist/cjs/cli/oauth-command.js.map +1 -1
  18. package/dist/cjs/cli/ods-command.d.ts +2 -1
  19. package/dist/cjs/cli/webdav-command.d.ts +2 -1
  20. package/dist/cjs/clients/am-api.d.ts +40 -10
  21. package/dist/cjs/clients/am-api.js +171 -129
  22. package/dist/cjs/clients/am-api.js.map +1 -1
  23. package/dist/cjs/clients/am-users-api.generated.d.ts +63 -0
  24. package/dist/cjs/clients/cip.d.ts +162 -0
  25. package/dist/cjs/clients/cip.js +571 -0
  26. package/dist/cjs/clients/cip.js.map +1 -0
  27. package/dist/cjs/clients/index.d.ts +5 -2
  28. package/dist/cjs/clients/index.js +3 -1
  29. package/dist/cjs/clients/index.js.map +1 -1
  30. package/dist/cjs/clients/middleware-registry.d.ts +1 -1
  31. package/dist/cjs/clients/middleware-registry.js.map +1 -1
  32. package/dist/cjs/config/dw-json.d.ts +10 -8
  33. package/dist/cjs/config/dw-json.js +10 -10
  34. package/dist/cjs/config/dw-json.js.map +1 -1
  35. package/dist/cjs/config/mapping.js +7 -0
  36. package/dist/cjs/config/mapping.js.map +1 -1
  37. package/dist/cjs/config/sources/dw-json-source.js +5 -5
  38. package/dist/cjs/config/sources/dw-json-source.js.map +1 -1
  39. package/dist/cjs/config/sources/package-json-source.js +2 -2
  40. package/dist/cjs/config/sources/package-json-source.js.map +1 -1
  41. package/dist/cjs/config/types.d.ts +5 -1
  42. package/dist/cjs/discovery/patterns/storefront-next.d.ts +4 -8
  43. package/dist/cjs/discovery/patterns/storefront-next.js +53 -8
  44. package/dist/cjs/discovery/patterns/storefront-next.js.map +1 -1
  45. package/dist/cjs/index.d.ts +4 -2
  46. package/dist/cjs/index.js +3 -1
  47. package/dist/cjs/index.js.map +1 -1
  48. package/dist/cjs/logging/index.d.ts +1 -1
  49. package/dist/cjs/logging/index.js +1 -1
  50. package/dist/cjs/operations/cip/index.d.ts +35 -0
  51. package/dist/cjs/operations/cip/index.js +128 -0
  52. package/dist/cjs/operations/cip/index.js.map +1 -0
  53. package/dist/cjs/operations/cip/reports.d.ts +2 -0
  54. package/dist/cjs/operations/cip/reports.js +210 -0
  55. package/dist/cjs/operations/cip/reports.js.map +1 -0
  56. package/dist/cjs/operations/cip/types.d.ts +97 -0
  57. package/dist/cjs/operations/cip/types.js +7 -0
  58. package/dist/cjs/operations/cip/types.js.map +1 -0
  59. package/dist/cjs/operations/content/export.js +2 -5
  60. package/dist/cjs/operations/content/export.js.map +1 -1
  61. package/dist/cjs/operations/jobs/index.d.ts +1 -1
  62. package/dist/cjs/operations/jobs/index.js +1 -1
  63. package/dist/cjs/operations/jobs/index.js.map +1 -1
  64. package/dist/cjs/operations/jobs/site-archive.d.ts +33 -9
  65. package/dist/cjs/operations/jobs/site-archive.js +43 -16
  66. package/dist/cjs/operations/jobs/site-archive.js.map +1 -1
  67. package/dist/cjs/operations/users/index.d.ts +12 -2
  68. package/dist/cjs/operations/users/index.js +22 -24
  69. package/dist/cjs/operations/users/index.js.map +1 -1
  70. package/dist/cjs/schemas/index.d.ts +6 -1
  71. package/dist/cjs/schemas/index.js +7 -1
  72. package/dist/cjs/schemas/index.js.map +1 -1
  73. package/dist/cjs/schemas/security-schemes.d.ts +26 -0
  74. package/dist/cjs/schemas/security-schemes.js +44 -0
  75. package/dist/cjs/schemas/security-schemes.js.map +1 -0
  76. package/dist/esm/cli/am-command.js +2 -0
  77. package/dist/esm/cli/am-command.js.map +1 -1
  78. package/dist/esm/cli/base-command.d.ts +3 -1
  79. package/dist/esm/cli/base-command.js +12 -4
  80. package/dist/esm/cli/base-command.js.map +1 -1
  81. package/dist/esm/cli/config.d.ts +1 -1
  82. package/dist/esm/cli/config.js +5 -3
  83. package/dist/esm/cli/config.js.map +1 -1
  84. package/dist/esm/cli/instance-command.d.ts +2 -1
  85. package/dist/esm/cli/mrt-command.d.ts +1 -0
  86. package/dist/esm/cli/oauth-command.d.ts +2 -1
  87. package/dist/esm/cli/oauth-command.js +1 -1
  88. package/dist/esm/cli/oauth-command.js.map +1 -1
  89. package/dist/esm/cli/ods-command.d.ts +2 -1
  90. package/dist/esm/cli/webdav-command.d.ts +2 -1
  91. package/dist/esm/clients/am-api.d.ts +40 -10
  92. package/dist/esm/clients/am-api.js +171 -129
  93. package/dist/esm/clients/am-api.js.map +1 -1
  94. package/dist/esm/clients/am-users-api.generated.d.ts +63 -0
  95. package/dist/esm/clients/cip.d.ts +162 -0
  96. package/dist/esm/clients/cip.js +571 -0
  97. package/dist/esm/clients/cip.js.map +1 -0
  98. package/dist/esm/clients/index.d.ts +5 -2
  99. package/dist/esm/clients/index.js +3 -1
  100. package/dist/esm/clients/index.js.map +1 -1
  101. package/dist/esm/clients/middleware-registry.d.ts +1 -1
  102. package/dist/esm/clients/middleware-registry.js.map +1 -1
  103. package/dist/esm/config/dw-json.d.ts +10 -8
  104. package/dist/esm/config/dw-json.js +10 -10
  105. package/dist/esm/config/dw-json.js.map +1 -1
  106. package/dist/esm/config/mapping.js +7 -0
  107. package/dist/esm/config/mapping.js.map +1 -1
  108. package/dist/esm/config/sources/dw-json-source.js +5 -5
  109. package/dist/esm/config/sources/dw-json-source.js.map +1 -1
  110. package/dist/esm/config/sources/package-json-source.js +2 -2
  111. package/dist/esm/config/sources/package-json-source.js.map +1 -1
  112. package/dist/esm/config/types.d.ts +5 -1
  113. package/dist/esm/discovery/patterns/storefront-next.d.ts +4 -8
  114. package/dist/esm/discovery/patterns/storefront-next.js +53 -8
  115. package/dist/esm/discovery/patterns/storefront-next.js.map +1 -1
  116. package/dist/esm/index.d.ts +4 -2
  117. package/dist/esm/index.js +3 -1
  118. package/dist/esm/index.js.map +1 -1
  119. package/dist/esm/logging/index.d.ts +1 -1
  120. package/dist/esm/logging/index.js +1 -1
  121. package/dist/esm/operations/cip/index.d.ts +35 -0
  122. package/dist/esm/operations/cip/index.js +128 -0
  123. package/dist/esm/operations/cip/index.js.map +1 -0
  124. package/dist/esm/operations/cip/reports.d.ts +2 -0
  125. package/dist/esm/operations/cip/reports.js +210 -0
  126. package/dist/esm/operations/cip/reports.js.map +1 -0
  127. package/dist/esm/operations/cip/types.d.ts +97 -0
  128. package/dist/esm/operations/cip/types.js +7 -0
  129. package/dist/esm/operations/cip/types.js.map +1 -0
  130. package/dist/esm/operations/content/export.js +2 -5
  131. package/dist/esm/operations/content/export.js.map +1 -1
  132. package/dist/esm/operations/jobs/index.d.ts +1 -1
  133. package/dist/esm/operations/jobs/index.js +1 -1
  134. package/dist/esm/operations/jobs/index.js.map +1 -1
  135. package/dist/esm/operations/jobs/site-archive.d.ts +33 -9
  136. package/dist/esm/operations/jobs/site-archive.js +43 -16
  137. package/dist/esm/operations/jobs/site-archive.js.map +1 -1
  138. package/dist/esm/operations/users/index.d.ts +12 -2
  139. package/dist/esm/operations/users/index.js +22 -24
  140. package/dist/esm/operations/users/index.js.map +1 -1
  141. package/dist/esm/schemas/index.d.ts +6 -1
  142. package/dist/esm/schemas/index.js +7 -1
  143. package/dist/esm/schemas/index.js.map +1 -1
  144. package/dist/esm/schemas/security-schemes.d.ts +26 -0
  145. package/dist/esm/schemas/security-schemes.js +44 -0
  146. package/dist/esm/schemas/security-schemes.js.map +1 -0
  147. package/package.json +21 -9
  148. package/specs/am-users-api-v1.yaml +40 -0
@@ -0,0 +1,571 @@
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
+ import path from 'node:path';
7
+ import { randomUUID } from 'node:crypto';
8
+ import { createRequire } from 'node:module';
9
+ import protobuf from 'protobufjs';
10
+ import { OAuthStrategy } from '../auth/oauth.js';
11
+ import { getLogger } from '../logging/logger.js';
12
+ import { globalMiddlewareRegistry } from './middleware-registry.js';
13
+ const require = createRequire(import.meta.url);
14
+ const packageRoot = path.dirname(require.resolve('@salesforce/b2c-tooling-sdk/package.json'));
15
+ /** Default CIP Avatica host. */
16
+ export const DEFAULT_CIP_HOST = 'jdbc.analytics.commercecloud.salesforce.com';
17
+ /** Default CIP Avatica host for staging/non-production analytics. */
18
+ export const DEFAULT_CIP_STAGING_HOST = 'jdbc.stg.analytics.commercecloud.salesforce.com';
19
+ const CIP_CLIENT_VERSION = '2.11.0';
20
+ const PROTOBUF_PREVIEW_BYTES = 48;
21
+ const CIP_PROTO_FILES = [
22
+ path.join(packageRoot, 'data/cip-proto/common.proto'),
23
+ path.join(packageRoot, 'data/cip-proto/requests.proto'),
24
+ path.join(packageRoot, 'data/cip-proto/responses.proto'),
25
+ ];
26
+ const REP = {
27
+ PRIMITIVE_BOOLEAN: 0,
28
+ BOOLEAN: 8,
29
+ STRING: 21,
30
+ LONG: 13,
31
+ INTEGER: 12,
32
+ PRIMITIVE_INT: 4,
33
+ PRIMITIVE_LONG: 5,
34
+ NUMBER: 22,
35
+ BIG_INTEGER: 25,
36
+ FLOAT: 14,
37
+ DOUBLE: 15,
38
+ PRIMITIVE_FLOAT: 6,
39
+ PRIMITIVE_DOUBLE: 7,
40
+ BIG_DECIMAL: 26,
41
+ BYTE_STRING: 20,
42
+ JAVA_SQL_DATE: 18,
43
+ JAVA_SQL_TIME: 16,
44
+ JAVA_SQL_TIMESTAMP: 17,
45
+ JAVA_UTIL_DATE: 19,
46
+ ARRAY: 27,
47
+ };
48
+ function hasOwn(value, key) {
49
+ return typeof value === 'object' && value !== null && Object.prototype.hasOwnProperty.call(value, key);
50
+ }
51
+ function normalizeCipHost(host) {
52
+ if (!host) {
53
+ return DEFAULT_CIP_HOST;
54
+ }
55
+ const withoutProtocol = host.replace(/^https?:\/\//u, '');
56
+ return withoutProtocol.replace(/\/.*$/u, '');
57
+ }
58
+ function toNumber(value) {
59
+ if (typeof value === 'number') {
60
+ return value;
61
+ }
62
+ if (typeof value === 'bigint') {
63
+ return Number(value);
64
+ }
65
+ if (typeof value === 'object' && value !== null && 'toNumber' in value) {
66
+ return Number(value.toNumber());
67
+ }
68
+ return Number(value ?? 0);
69
+ }
70
+ /**
71
+ * CIP Avatica client with protobuf transport.
72
+ *
73
+ * Use this client for raw SQL execution against B2C Commerce Intelligence
74
+ * (CIP/CCAC) data.
75
+ *
76
+ * See {@link createCipClient} for the recommended construction helper.
77
+ *
78
+ * @example
79
+ * ```ts
80
+ * import {OAuthStrategy} from '@salesforce/b2c-tooling-sdk/auth';
81
+ * import {createCipClient} from '@salesforce/b2c-tooling-sdk/clients';
82
+ *
83
+ * const auth = new OAuthStrategy({
84
+ * clientId: process.env.SFCC_CLIENT_ID!,
85
+ * clientSecret: process.env.SFCC_CLIENT_SECRET!,
86
+ * });
87
+ *
88
+ * const cip = createCipClient({instance: 'zzxy_prd'}, auth);
89
+ *
90
+ * const result = await cip.query(
91
+ * 'SELECT submit_date, num_orders FROM ccdw_aggr_sales_summary LIMIT 10',
92
+ * {fetchSize: 500},
93
+ * );
94
+ *
95
+ * console.log(result.rowCount, result.columns, result.rows[0]);
96
+ * ```
97
+ */
98
+ export class CipClient {
99
+ config;
100
+ auth;
101
+ baseUrl;
102
+ middlewareRegistry;
103
+ protoRoot;
104
+ connectionId;
105
+ sessionId;
106
+ signatureByStatementId = new Map();
107
+ constructor(config, auth) {
108
+ this.config = config;
109
+ this.auth = auth;
110
+ this.baseUrl = `https://${normalizeCipHost(config.host)}/${config.instance}`;
111
+ this.middlewareRegistry = config.middlewareRegistry ?? globalMiddlewareRegistry;
112
+ }
113
+ /**
114
+ * Opens a new Avatica connection.
115
+ */
116
+ async openConnection(info = {}) {
117
+ if (this.connectionId) {
118
+ throw new Error('CIP connection is already open');
119
+ }
120
+ const connectionId = randomUUID();
121
+ await this.sendRequest('OpenConnectionRequest', { connectionId, info });
122
+ this.connectionId = connectionId;
123
+ }
124
+ /**
125
+ * Closes the current Avatica connection (no-op if not open).
126
+ */
127
+ async closeConnection() {
128
+ if (!this.connectionId) {
129
+ return;
130
+ }
131
+ const connectionId = this.connectionId;
132
+ try {
133
+ await this.sendRequest('CloseConnectionRequest', { connectionId });
134
+ }
135
+ finally {
136
+ this.connectionId = undefined;
137
+ this.sessionId = undefined;
138
+ this.signatureByStatementId.clear();
139
+ }
140
+ }
141
+ /**
142
+ * Creates a statement in the currently open connection.
143
+ */
144
+ async createStatement() {
145
+ this.requireConnection();
146
+ const response = (await this.sendRequest('CreateStatementRequest', {
147
+ connectionId: this.connectionId,
148
+ }));
149
+ if (typeof response.statementId !== 'number') {
150
+ throw new Error('CIP create statement failed: missing statement id');
151
+ }
152
+ return response.statementId;
153
+ }
154
+ /**
155
+ * Closes a statement.
156
+ */
157
+ async closeStatement(statementId) {
158
+ this.requireConnection();
159
+ try {
160
+ await this.sendRequest('CloseStatementRequest', {
161
+ connectionId: this.connectionId,
162
+ statementId,
163
+ });
164
+ }
165
+ finally {
166
+ this.signatureByStatementId.delete(statementId);
167
+ }
168
+ }
169
+ /**
170
+ * Executes SQL and returns the first decoded frame.
171
+ */
172
+ async execute(statementId, sql, firstFrameMaxSize = 1000) {
173
+ this.requireConnection();
174
+ getLogger().debug({ statementId, sql }, `[CIP SQL] statement=${statementId}`);
175
+ const response = (await this.sendRequest('PrepareAndExecuteRequest', {
176
+ connectionId: this.connectionId,
177
+ statementId,
178
+ sql,
179
+ maxRowCount: firstFrameMaxSize,
180
+ firstFrameMaxSize,
181
+ }));
182
+ const result = response.results?.[0];
183
+ if (!result) {
184
+ return { statementId };
185
+ }
186
+ const resolvedStatementId = result.statementId ?? statementId;
187
+ if (result.signature) {
188
+ this.signatureByStatementId.set(resolvedStatementId, result.signature);
189
+ }
190
+ return {
191
+ statementId: resolvedStatementId,
192
+ frame: this.decodeFrame(result.signature ?? this.signatureByStatementId.get(resolvedStatementId), result.firstFrame),
193
+ };
194
+ }
195
+ /**
196
+ * Fetches an additional frame for an existing statement.
197
+ */
198
+ async fetch(statementId, offset, fetchMaxRowCount = 1000) {
199
+ this.requireConnection();
200
+ const response = (await this.sendRequest('FetchRequest', {
201
+ connectionId: this.connectionId,
202
+ statementId,
203
+ offset,
204
+ fetchMaxRowCount,
205
+ }));
206
+ return {
207
+ frame: this.decodeFrame(this.signatureByStatementId.get(statementId), response.frame),
208
+ };
209
+ }
210
+ /**
211
+ * Executes SQL and returns the full decoded row set.
212
+ *
213
+ * This helper opens and closes the connection automatically.
214
+ */
215
+ async query(sql, options = {}) {
216
+ const fetchSize = options.fetchSize ?? 1000;
217
+ const rows = [];
218
+ let columns = [];
219
+ await this.openConnection(options.connectionProperties);
220
+ const statementId = await this.createStatement();
221
+ try {
222
+ const executeResponse = await this.execute(statementId, sql, fetchSize);
223
+ let frame = executeResponse.frame;
224
+ if (frame) {
225
+ rows.push(...frame.rows);
226
+ columns = frame.columns.map((column) => column.label);
227
+ }
228
+ while (frame && !frame.done) {
229
+ const nextOffset = frame.offset + frame.rows.length;
230
+ const fetchResponse = await this.fetch(executeResponse.statementId, nextOffset, fetchSize);
231
+ frame = fetchResponse.frame;
232
+ if (frame) {
233
+ rows.push(...frame.rows);
234
+ if (columns.length === 0) {
235
+ columns = frame.columns.map((column) => column.label);
236
+ }
237
+ }
238
+ }
239
+ return {
240
+ columns,
241
+ rows,
242
+ rowCount: rows.length,
243
+ };
244
+ }
245
+ finally {
246
+ await this.closeStatement(statementId).catch((error) => {
247
+ const message = error instanceof Error ? error.message : String(error);
248
+ getLogger().debug({ error: message }, 'Failed to close CIP statement during cleanup');
249
+ });
250
+ await this.closeConnection().catch((error) => {
251
+ const message = error instanceof Error ? error.message : String(error);
252
+ getLogger().debug({ error: message }, 'Failed to close CIP connection during cleanup');
253
+ });
254
+ }
255
+ }
256
+ requireConnection() {
257
+ if (!this.connectionId) {
258
+ throw new Error('No CIP connection is open. Call openConnection() first.');
259
+ }
260
+ }
261
+ getMiddleware() {
262
+ return this.middlewareRegistry.getMiddleware('cip');
263
+ }
264
+ async getProtoRoot() {
265
+ if (!this.protoRoot) {
266
+ this.protoRoot = await protobuf.load(CIP_PROTO_FILES);
267
+ }
268
+ return this.protoRoot;
269
+ }
270
+ async sendRequest(requestTypeName, payload) {
271
+ const logger = getLogger();
272
+ const root = await this.getProtoRoot();
273
+ const requestType = root.lookupType(requestTypeName);
274
+ const requestMessage = requestType.create(payload);
275
+ const serializedRequest = requestType.encode(requestMessage).finish();
276
+ const wireType = root.lookupType('WireMessage');
277
+ const wireRequest = wireType.create({
278
+ name: `org.apache.calcite.avatica.proto.Requests$${requestTypeName}`,
279
+ wrappedMessage: serializedRequest,
280
+ });
281
+ const serializedWireRequest = wireType.encode(wireRequest).finish();
282
+ let request = new Request(this.baseUrl, {
283
+ method: 'POST',
284
+ headers: {
285
+ 'Content-Type': 'application/x-protobuf',
286
+ 'X-Client-Version': CIP_CLIENT_VERSION,
287
+ InstanceId: this.config.instance,
288
+ ...(this.sessionId ? { 'x-session-id': this.sessionId } : {}),
289
+ },
290
+ body: serializedWireRequest,
291
+ });
292
+ const middleware = this.getMiddleware();
293
+ const middlewareParams = {
294
+ request,
295
+ schemaPath: '/cip',
296
+ options: { baseUrl: this.baseUrl },
297
+ params: {},
298
+ id: 'cip',
299
+ };
300
+ for (const middlewareItem of middleware) {
301
+ if (!middlewareItem.onRequest)
302
+ continue;
303
+ const nextRequest = await middlewareItem.onRequest(middlewareParams);
304
+ if (nextRequest instanceof Request) {
305
+ request = nextRequest;
306
+ middlewareParams.request = nextRequest;
307
+ }
308
+ }
309
+ let body = serializedWireRequest;
310
+ if (request.body) {
311
+ body = await request.clone().arrayBuffer();
312
+ }
313
+ const requestStartTime = Date.now();
314
+ logger.debug({ type: requestTypeName, url: request.url }, `[CIP REQ] ${requestTypeName}`);
315
+ logger.trace({
316
+ method: request.method,
317
+ url: request.url,
318
+ headers: this.headersToObject(request.headers),
319
+ body: this.formatProtobufBody(body, {
320
+ requestTypeName,
321
+ wireMessageName: `org.apache.calcite.avatica.proto.Requests$${requestTypeName}`,
322
+ payload,
323
+ }),
324
+ }, `[CIP REQ BODY] ${request.method} ${request.url}`);
325
+ let response = await this.auth.fetch(request.url, {
326
+ method: request.method,
327
+ headers: request.headers,
328
+ body,
329
+ });
330
+ const duration = Date.now() - requestStartTime;
331
+ const responseParams = {
332
+ ...middlewareParams,
333
+ request,
334
+ response,
335
+ };
336
+ for (const middlewareItem of middleware) {
337
+ if (!middlewareItem.onResponse)
338
+ continue;
339
+ const nextResponse = await middlewareItem.onResponse(responseParams);
340
+ if (nextResponse instanceof Response) {
341
+ response = nextResponse;
342
+ responseParams.response = nextResponse;
343
+ }
344
+ }
345
+ const sessionId = response.headers.get('x-session-id');
346
+ if (sessionId) {
347
+ this.sessionId = sessionId;
348
+ }
349
+ if (!response.ok) {
350
+ const bodyText = await response.text();
351
+ logger.debug({ method: request.method, url: request.url, status: response.status, duration }, `[CIP RESP] ${requestTypeName} ${response.status} ${duration}ms`);
352
+ logger.trace({
353
+ method: request.method,
354
+ url: request.url,
355
+ status: response.status,
356
+ headers: this.headersToObject(response.headers),
357
+ body: bodyText,
358
+ }, `[CIP RESP BODY] ${request.method} ${request.url}`);
359
+ throw new Error(`CIP Avatica request failed (${response.status} ${response.statusText}): ${bodyText}`);
360
+ }
361
+ const responseBytes = new Uint8Array(await response.arrayBuffer());
362
+ const wireResponse = wireType.decode(responseBytes);
363
+ const responseClassName = wireResponse.name ?? '';
364
+ const responseTypeName = responseClassName.split('$').pop() ?? '';
365
+ const wrappedResponse = wireResponse.wrappedMessage;
366
+ logger.debug({ method: request.method, url: request.url, status: response.status, duration, responseTypeName }, `[CIP RESP] ${requestTypeName} ${response.status} ${duration}ms`);
367
+ logger.trace({
368
+ method: request.method,
369
+ url: request.url,
370
+ status: response.status,
371
+ headers: this.headersToObject(response.headers),
372
+ body: this.formatProtobufBody(responseBytes, {
373
+ wireMessageName: wireResponse.name,
374
+ responseTypeName,
375
+ }),
376
+ }, `[CIP RESP BODY] ${request.method} ${request.url}`);
377
+ if (!wrappedResponse) {
378
+ throw new Error('CIP Avatica response did not contain a wrapped protobuf message');
379
+ }
380
+ if (responseTypeName === 'ErrorResponse') {
381
+ const errorType = root.lookupType('ErrorResponse');
382
+ const decodedError = errorType.decode(wrappedResponse);
383
+ const errorMessage = decodedError.errorMessage ?? 'Unknown Avatica error';
384
+ const sqlState = decodedError.sqlState ? ` SQLState=${decodedError.sqlState}` : '';
385
+ const errorCode = decodedError.errorCode !== undefined ? ` ErrorCode=${decodedError.errorCode}` : '';
386
+ throw new Error(`CIP Avatica error: ${errorMessage}${sqlState}${errorCode}`);
387
+ }
388
+ const responseType = root.lookupType(responseTypeName);
389
+ return responseType.decode(wrappedResponse);
390
+ }
391
+ decodeFrame(signature, frame) {
392
+ if (!frame) {
393
+ return undefined;
394
+ }
395
+ const columns = this.getColumnsFromSignature(signature);
396
+ const rows = (frame.rows ?? []).map((row) => {
397
+ const values = Array.isArray(row.value) ? row.value : [];
398
+ const decoded = {};
399
+ for (let index = 0; index < columns.length; index++) {
400
+ const column = columns[index];
401
+ const value = values[index];
402
+ const columnMeta = signature?.columns?.[index];
403
+ decoded[column.label] = this.decodeColumnValue(value, columnMeta);
404
+ }
405
+ return decoded;
406
+ });
407
+ return {
408
+ offset: toNumber(frame.offset),
409
+ done: Boolean(frame.done),
410
+ columns,
411
+ rows,
412
+ };
413
+ }
414
+ getColumnsFromSignature(signature) {
415
+ const columns = signature?.columns;
416
+ if (!columns || columns.length === 0) {
417
+ return [];
418
+ }
419
+ return columns.map((column, index) => {
420
+ const label = typeof column.label === 'string' && column.label.length > 0 ? column.label : undefined;
421
+ const columnName = typeof column.columnName === 'string' && column.columnName.length > 0 ? column.columnName : undefined;
422
+ return {
423
+ label: label ?? columnName ?? `column_${index + 1}`,
424
+ name: columnName,
425
+ typeName: this.getColumnTypeName(column),
426
+ };
427
+ });
428
+ }
429
+ getColumnTypeName(column) {
430
+ if (typeof column.type === 'object' &&
431
+ column.type !== null &&
432
+ typeof column.type.name === 'string') {
433
+ return column.type.name;
434
+ }
435
+ return undefined;
436
+ }
437
+ decodeColumnValue(columnValue, columnMetadata) {
438
+ if (!columnValue) {
439
+ return null;
440
+ }
441
+ if (columnValue.hasArrayValue === true && Array.isArray(columnValue.arrayValue)) {
442
+ return columnValue.arrayValue.map((value) => this.decodeTypedValue(value, columnMetadata));
443
+ }
444
+ if (typeof columnValue.scalarValue === 'object' && columnValue.scalarValue !== null) {
445
+ return this.decodeTypedValue(columnValue.scalarValue, columnMetadata);
446
+ }
447
+ if (Array.isArray(columnValue.value) && columnValue.value.length > 0) {
448
+ return this.decodeTypedValue(columnValue.value[0], columnMetadata);
449
+ }
450
+ return null;
451
+ }
452
+ decodeTypedValue(typedValue, columnMetadata) {
453
+ if (typeof typedValue !== 'object' || typedValue === null) {
454
+ return null;
455
+ }
456
+ const typed = typedValue;
457
+ const rep = hasOwn(typed, 'type') ? toNumber(typed.type) : undefined;
458
+ if (typed.null === true || typed.implicitlyNull === true) {
459
+ return null;
460
+ }
461
+ if (rep === REP.ARRAY && Array.isArray(typed.arrayValue)) {
462
+ return typed.arrayValue.map((value) => this.decodeTypedValue(value, undefined));
463
+ }
464
+ if (rep === REP.BOOLEAN || rep === REP.PRIMITIVE_BOOLEAN) {
465
+ return Boolean(typed.boolValue);
466
+ }
467
+ if (rep === REP.STRING) {
468
+ return hasOwn(typed, 'stringValue') ? typed.stringValue : '';
469
+ }
470
+ if (rep === REP.LONG ||
471
+ rep === REP.INTEGER ||
472
+ rep === REP.PRIMITIVE_INT ||
473
+ rep === REP.PRIMITIVE_LONG ||
474
+ rep === REP.NUMBER ||
475
+ rep === REP.BIG_INTEGER) {
476
+ return this.decodeNumericValue(typed.numberValue, columnMetadata);
477
+ }
478
+ if (rep === REP.FLOAT || rep === REP.DOUBLE || rep === REP.PRIMITIVE_FLOAT || rep === REP.PRIMITIVE_DOUBLE) {
479
+ return hasOwn(typed, 'doubleValue') ? Number(typed.doubleValue) : Number(typed.numberValue ?? 0);
480
+ }
481
+ if (rep === REP.BIG_DECIMAL) {
482
+ if (hasOwn(typed, 'stringValue') && typeof typed.stringValue === 'string') {
483
+ return Number.parseFloat(typed.stringValue);
484
+ }
485
+ return Number(typed.doubleValue ?? typed.numberValue ?? 0);
486
+ }
487
+ if (rep === REP.BYTE_STRING && typed.bytesValue instanceof Uint8Array) {
488
+ return Buffer.from(typed.bytesValue).toString('base64');
489
+ }
490
+ if (rep === REP.JAVA_SQL_DATE || rep === REP.JAVA_UTIL_DATE || rep === REP.JAVA_SQL_TIMESTAMP) {
491
+ return new Date(toNumber(typed.numberValue));
492
+ }
493
+ if (rep === REP.JAVA_SQL_TIME) {
494
+ return toNumber(typed.numberValue);
495
+ }
496
+ if (hasOwn(typed, 'stringValue')) {
497
+ return typed.stringValue;
498
+ }
499
+ if (hasOwn(typed, 'doubleValue')) {
500
+ return Number(typed.doubleValue);
501
+ }
502
+ if (hasOwn(typed, 'numberValue')) {
503
+ return Number(typed.numberValue);
504
+ }
505
+ if (hasOwn(typed, 'boolValue')) {
506
+ return Boolean(typed.boolValue);
507
+ }
508
+ return null;
509
+ }
510
+ decodeNumericValue(value, columnMetadata) {
511
+ const numeric = toNumber(value);
512
+ if (typeof columnMetadata === 'object' && columnMetadata !== null) {
513
+ const column = columnMetadata;
514
+ const typeName = typeof column.type?.name === 'string' ? column.type.name.toUpperCase() : undefined;
515
+ const typeId = column.type?.id !== undefined ? toNumber(column.type.id) : undefined;
516
+ if (typeName === 'DATE' || typeId === 91) {
517
+ return new Date(numeric * 24 * 60 * 60 * 1000);
518
+ }
519
+ if (typeName === 'TIMESTAMP' || typeId === 93) {
520
+ return new Date(numeric);
521
+ }
522
+ }
523
+ return numeric;
524
+ }
525
+ formatProtobufBody(body, metadata) {
526
+ if (!body) {
527
+ return undefined;
528
+ }
529
+ const bytes = body instanceof Uint8Array ? body : new Uint8Array(body);
530
+ const preview = bytes.subarray(0, PROTOBUF_PREVIEW_BYTES);
531
+ return {
532
+ kind: 'protobuf',
533
+ sizeBytes: bytes.byteLength,
534
+ previewHex: Buffer.from(preview).toString('hex'),
535
+ previewBase64: Buffer.from(preview).toString('base64'),
536
+ previewSize: preview.byteLength,
537
+ truncated: bytes.byteLength > preview.byteLength,
538
+ ...metadata,
539
+ };
540
+ }
541
+ headersToObject(headers) {
542
+ const result = {};
543
+ headers.forEach((value, key) => {
544
+ result[key] = value;
545
+ });
546
+ return result;
547
+ }
548
+ }
549
+ /**
550
+ * Creates a CIP client and ensures the required CIP scope on OAuth strategies.
551
+ *
552
+ * @example
553
+ * ```ts
554
+ * import {OAuthStrategy} from '@salesforce/b2c-tooling-sdk/auth';
555
+ * import {createCipClient} from '@salesforce/b2c-tooling-sdk/clients';
556
+ *
557
+ * const auth = new OAuthStrategy({
558
+ * clientId: process.env.SFCC_CLIENT_ID!,
559
+ * clientSecret: process.env.SFCC_CLIENT_SECRET!,
560
+ * });
561
+ *
562
+ * const cip = createCipClient({instance: 'zzxy_prd'}, auth);
563
+ * const query = await cip.query('SELECT submit_date FROM ccdw_aggr_sales_summary LIMIT 1');
564
+ * ```
565
+ */
566
+ export function createCipClient(config, auth) {
567
+ const cipScope = `SALESFORCE_COMMERCE_API:${config.instance}`;
568
+ const scopedAuth = auth instanceof OAuthStrategy ? auth.withAdditionalScopes([cipScope]) : auth;
569
+ return new CipClient(config, scopedAuth);
570
+ }
571
+ //# sourceMappingURL=cip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cip.js","sourceRoot":"","sources":["../../../src/clients/cip.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,7 @@
10
10
  * - {@link OcapiClient} - Data API operations via OCAPI (openapi-fetch Client)
11
11
  * - {@link SlasClient} - SLAS Admin API for managing tenants and clients
12
12
  * - {@link OdsClient} - On-Demand Sandbox API for managing developer sandboxes
13
+ * - {@link CipClient} - B2C Commerce Intelligence (CIP/CCAC) query client
13
14
  * - {@link CustomApisClient} - Custom APIs DX API for retrieving endpoint status
14
15
  * - {@link ScapiSchemasClient} - SCAPI Schemas API for discovering and retrieving OpenAPI schemas
15
16
  *
@@ -129,12 +130,14 @@ export { createCustomApisClient, toOrganizationId, toTenantId, buildTenantScope,
129
130
  export type { CustomApisClient, CustomApisClientConfig, CustomApisError, CustomApisResponse, paths as CustomApisPaths, components as CustomApisComponents, } from './custom-apis.js';
130
131
  export { createScapiSchemasClient, SCAPI_SCHEMAS_DEFAULT_SCOPES } from './scapi-schemas.js';
131
132
  export type { ScapiSchemasClient, ScapiSchemasClientConfig, ScapiSchemasError, ScapiSchemasResponse, SchemaListItem, SchemaListResult, OpenApiSchema, paths as ScapiSchemasPaths, components as ScapiSchemasComponents, } from './scapi-schemas.js';
132
- export { createAccountManagerClient, createAccountManagerUsersClient, getUser, listUsers, createUser, updateUser, deleteUser, purgeUser, resetUser, findUserByLogin, mapToInternalRole, mapFromInternalRole, ROLE_NAMES_MAP, ROLE_NAMES_MAP_REVERSE, createAccountManagerRolesClient, getRole, listRoles, createAccountManagerApiClientsClient, createAccountManagerOrgsClient, isValidRoleTenantFilter, ROLE_TENANT_FILTER_PATTERN, } from './am-api.js';
133
- export type { AccountManagerClient, AccountManagerClientConfig, AccountManagerUsersClient, AccountManagerUser, AccountManagerResponse, AccountManagerError, UserExpandOption, UserCreate, UserUpdate, UserCollection, UserState, ListUsersOptions, AccountManagerRolesClient, AccountManagerRole, AccountManagerRolesResponse, AccountManagerRolesError, RoleCollection, ListRolesOptions, AccountManagerApiClientsClient, AccountManagerApiClient, APIClientCreate, APIClientUpdate, APIClientCollection, ApiClientExpandOption, ListApiClientsOptions, AccountManagerOrgsClient, AccountManagerOrganization, OrganizationCollection, ListOrgsOptions, } from './am-api.js';
133
+ export { createAccountManagerClient, createAccountManagerUsersClient, getUser, listUsers, createUser, updateUser, deleteUser, purgeUser, resetUser, findUserByLogin, fetchRoleMapping, resolveToInternalRole, resolveFromInternalRole, createAccountManagerRolesClient, getRole, listRoles, createAccountManagerApiClientsClient, createAccountManagerOrgsClient, isValidRoleTenantFilter, ROLE_TENANT_FILTER_PATTERN, } from './am-api.js';
134
+ export type { AccountManagerClient, AccountManagerClientConfig, AccountManagerUsersClient, AccountManagerUser, AccountManagerResponse, AccountManagerError, UserExpandOption, UserCreate, UserUpdate, UserCollection, UserState, ListUsersOptions, AccountManagerRolesClient, AccountManagerRole, AccountManagerRolesResponse, AccountManagerRolesError, RoleCollection, ListRolesOptions, RoleMapping, OrgMapping, AccountManagerApiClientsClient, AccountManagerApiClient, APIClientCreate, APIClientUpdate, APIClientCollection, ApiClientExpandOption, ListApiClientsOptions, AccountManagerOrgsClient, AccountManagerOrganization, OrganizationCollection, ListOrgsOptions, } from './am-api.js';
134
135
  export { createCdnZonesClient, CDN_ZONES_READ_SCOPES, CDN_ZONES_RW_SCOPES } from './cdn-zones.js';
135
136
  export type { CdnZonesClient, CdnZonesClientConfig, CdnZonesClientOptions, CdnZonesError, CdnZonesResponse, Zone, ZonesEnvelope, Certificate, SecuritySetting, SpeedSetting, paths as CdnZonesPaths, components as CdnZonesComponents, } from './cdn-zones.js';
136
137
  export { createMrtB2CClient, DEFAULT_MRT_B2C_ORIGIN } from './mrt-b2c.js';
137
138
  export type { MrtB2CClient, MrtB2CClientConfig, MrtB2CError, MrtB2CResponse, B2COrgInfo, B2CTargetInfo, PatchedB2CTargetInfo, paths as MrtB2CPaths, components as MrtB2CComponents, } from './mrt-b2c.js';
139
+ export { createCipClient, CipClient, DEFAULT_CIP_HOST, DEFAULT_CIP_STAGING_HOST } from './cip.js';
140
+ export type { CipClientConfig, CipColumn, CipExecuteResponse, CipFetchResponse, CipFrame, CipQueryOptions, CipQueryResult, } from './cip.js';
138
141
  export { getApiErrorMessage } from './error-utils.js';
139
142
  export { createTlsDispatcher } from './tls-dispatcher.js';
140
143
  export type { TlsOptions } from './tls-dispatcher.js';
@@ -15,6 +15,7 @@
15
15
  * - {@link OcapiClient} - Data API operations via OCAPI (openapi-fetch Client)
16
16
  * - {@link SlasClient} - SLAS Admin API for managing tenants and clients
17
17
  * - {@link OdsClient} - On-Demand Sandbox API for managing developer sandboxes
18
+ * - {@link CipClient} - B2C Commerce Intelligence (CIP/CCAC) query client
18
19
  * - {@link CustomApisClient} - Custom APIs DX API for retrieving endpoint status
19
20
  * - {@link ScapiSchemasClient} - SCAPI Schemas API for discovering and retrieving OpenAPI schemas
20
21
  *
@@ -126,9 +127,10 @@ export { createOdsClient } from './ods.js';
126
127
  export { createMrtClient, DEFAULT_MRT_ORIGIN } from './mrt.js';
127
128
  export { createCustomApisClient, toOrganizationId, toTenantId, buildTenantScope, ORGANIZATION_ID_PREFIX, SCAPI_TENANT_SCOPE_PREFIX, CUSTOM_APIS_DEFAULT_SCOPES, } from './custom-apis.js';
128
129
  export { createScapiSchemasClient, SCAPI_SCHEMAS_DEFAULT_SCOPES } from './scapi-schemas.js';
129
- export { createAccountManagerClient, createAccountManagerUsersClient, getUser, listUsers, createUser, updateUser, deleteUser, purgeUser, resetUser, findUserByLogin, mapToInternalRole, mapFromInternalRole, ROLE_NAMES_MAP, ROLE_NAMES_MAP_REVERSE, createAccountManagerRolesClient, getRole, listRoles, createAccountManagerApiClientsClient, createAccountManagerOrgsClient, isValidRoleTenantFilter, ROLE_TENANT_FILTER_PATTERN, } from './am-api.js';
130
+ export { createAccountManagerClient, createAccountManagerUsersClient, getUser, listUsers, createUser, updateUser, deleteUser, purgeUser, resetUser, findUserByLogin, fetchRoleMapping, resolveToInternalRole, resolveFromInternalRole, createAccountManagerRolesClient, getRole, listRoles, createAccountManagerApiClientsClient, createAccountManagerOrgsClient, isValidRoleTenantFilter, ROLE_TENANT_FILTER_PATTERN, } from './am-api.js';
130
131
  export { createCdnZonesClient, CDN_ZONES_READ_SCOPES, CDN_ZONES_RW_SCOPES } from './cdn-zones.js';
131
132
  export { createMrtB2CClient, DEFAULT_MRT_B2C_ORIGIN } from './mrt-b2c.js';
133
+ export { createCipClient, CipClient, DEFAULT_CIP_HOST, DEFAULT_CIP_STAGING_HOST } from './cip.js';
132
134
  export { getApiErrorMessage } from './error-utils.js';
133
135
  export { createTlsDispatcher } from './tls-dispatcher.js';
134
136
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/clients/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+GG;AACH,OAAO,EAAC,YAAY,EAAC,MAAM,aAAa,CAAC;AAGzC,OAAO,EACL,oBAAoB,EACpB,yBAAyB,EACzB,uBAAuB,EACvB,2BAA2B,EAC3B,yBAAyB,GAC1B,MAAM,iBAAiB,CAAC;AAQzB,iDAAiD;AACjD,OAAO,EAAC,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,iBAAiB,EAAC,MAAM,iBAAiB,CAAC;AAE9F,OAAO,EAAC,kBAAkB,EAAE,wBAAwB,EAAC,MAAM,0BAA0B,CAAC;AAGtF,OAAO,EAAC,iBAAiB,EAAC,MAAM,YAAY,CAAC;AAU7C,OAAO,EAAC,gBAAgB,EAAC,MAAM,iBAAiB,CAAC;AAUjD,OAAO,EAAC,eAAe,EAAC,MAAM,UAAU,CAAC;AAUzC,OAAO,EAAC,eAAe,EAAE,kBAAkB,EAAC,MAAM,UAAU,CAAC;AAW7D,OAAO,EACL,sBAAsB,EACtB,gBAAgB,EAChB,UAAU,EACV,gBAAgB,EAChB,sBAAsB,EACtB,yBAAyB,EACzB,0BAA0B,GAC3B,MAAM,kBAAkB,CAAC;AAU1B,OAAO,EAAC,wBAAwB,EAAE,4BAA4B,EAAC,MAAM,oBAAoB,CAAC;AAa1F,OAAO,EACL,0BAA0B,EAC1B,+BAA+B,EAC/B,OAAO,EACP,SAAS,EACT,UAAU,EACV,UAAU,EACV,UAAU,EACV,SAAS,EACT,SAAS,EACT,eAAe,EACf,iBAAiB,EACjB,mBAAmB,EACnB,cAAc,EACd,sBAAsB,EACtB,+BAA+B,EAC/B,OAAO,EACP,SAAS,EACT,oCAAoC,EACpC,8BAA8B,EAC9B,uBAAuB,EACvB,0BAA0B,GAC3B,MAAM,aAAa,CAAC;AAiCrB,OAAO,EAAC,oBAAoB,EAAE,qBAAqB,EAAE,mBAAmB,EAAC,MAAM,gBAAgB,CAAC;AAgBhG,OAAO,EAAC,kBAAkB,EAAE,sBAAsB,EAAC,MAAM,cAAc,CAAC;AAaxE,OAAO,EAAC,kBAAkB,EAAC,MAAM,kBAAkB,CAAC;AAEpD,OAAO,EAAC,mBAAmB,EAAC,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/clients/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgHG;AACH,OAAO,EAAC,YAAY,EAAC,MAAM,aAAa,CAAC;AAGzC,OAAO,EACL,oBAAoB,EACpB,yBAAyB,EACzB,uBAAuB,EACvB,2BAA2B,EAC3B,yBAAyB,GAC1B,MAAM,iBAAiB,CAAC;AAQzB,iDAAiD;AACjD,OAAO,EAAC,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,iBAAiB,EAAC,MAAM,iBAAiB,CAAC;AAE9F,OAAO,EAAC,kBAAkB,EAAE,wBAAwB,EAAC,MAAM,0BAA0B,CAAC;AAGtF,OAAO,EAAC,iBAAiB,EAAC,MAAM,YAAY,CAAC;AAU7C,OAAO,EAAC,gBAAgB,EAAC,MAAM,iBAAiB,CAAC;AAUjD,OAAO,EAAC,eAAe,EAAC,MAAM,UAAU,CAAC;AAUzC,OAAO,EAAC,eAAe,EAAE,kBAAkB,EAAC,MAAM,UAAU,CAAC;AAW7D,OAAO,EACL,sBAAsB,EACtB,gBAAgB,EAChB,UAAU,EACV,gBAAgB,EAChB,sBAAsB,EACtB,yBAAyB,EACzB,0BAA0B,GAC3B,MAAM,kBAAkB,CAAC;AAU1B,OAAO,EAAC,wBAAwB,EAAE,4BAA4B,EAAC,MAAM,oBAAoB,CAAC;AAa1F,OAAO,EACL,0BAA0B,EAC1B,+BAA+B,EAC/B,OAAO,EACP,SAAS,EACT,UAAU,EACV,UAAU,EACV,UAAU,EACV,SAAS,EACT,SAAS,EACT,eAAe,EACf,gBAAgB,EAChB,qBAAqB,EACrB,uBAAuB,EACvB,+BAA+B,EAC/B,OAAO,EACP,SAAS,EACT,oCAAoC,EACpC,8BAA8B,EAC9B,uBAAuB,EACvB,0BAA0B,GAC3B,MAAM,aAAa,CAAC;AAmCrB,OAAO,EAAC,oBAAoB,EAAE,qBAAqB,EAAE,mBAAmB,EAAC,MAAM,gBAAgB,CAAC;AAgBhG,OAAO,EAAC,kBAAkB,EAAE,sBAAsB,EAAC,MAAM,cAAc,CAAC;AAaxE,OAAO,EAAC,eAAe,EAAE,SAAS,EAAE,gBAAgB,EAAE,wBAAwB,EAAC,MAAM,UAAU,CAAC;AAWhG,OAAO,EAAC,kBAAkB,EAAC,MAAM,kBAAkB,CAAC;AAEpD,OAAO,EAAC,mBAAmB,EAAC,MAAM,qBAAqB,CAAC"}