@adobe/aio-commerce-lib-app 1.4.0 → 1.6.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 (59) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/dist/cjs/actions/app-config.cjs +17 -4
  3. package/dist/cjs/actions/app-config.d.cts +3 -4
  4. package/dist/cjs/actions/config.cjs +21 -16
  5. package/dist/cjs/actions/config.d.cts +1 -2
  6. package/dist/cjs/actions/installation.cjs +20 -14
  7. package/dist/cjs/actions/installation.d.cts +4 -5
  8. package/dist/cjs/actions/registration.cjs +1 -2
  9. package/dist/cjs/actions/registration.d.cts +2 -3
  10. package/dist/cjs/actions/scope-tree.cjs +5 -5
  11. package/dist/cjs/actions/scope-tree.d.cts +1 -4
  12. package/dist/cjs/{admin-ui-sdk-BiSopnKI.d.cts → admin-ui-sdk-DZZJCrdT.d.cts} +1 -1
  13. package/dist/cjs/{app-C6kImBl7.d.cts → app-CakwxQvs.d.cts} +129 -20
  14. package/dist/cjs/commands/index.cjs +236 -45
  15. package/dist/cjs/commands/templates/app-management/app-config.js.template +2 -2
  16. package/dist/cjs/config/index.cjs +3 -3
  17. package/dist/cjs/config/index.d.cts +354 -391
  18. package/dist/cjs/{config-ct-qMOGj.cjs → config-FNMclIFO.cjs} +4 -6
  19. package/dist/cjs/{error-C5LNOZ4f.cjs → error-D-N0PKSl.cjs} +0 -1
  20. package/dist/cjs/{index-B5WKJ3hJ.d.cts → index-Dw2NvVOY.d.cts} +2 -2
  21. package/dist/cjs/{logging-BTevALnL.cjs → logging-BVz3weoC.cjs} +1 -1
  22. package/dist/cjs/management/index.cjs +1 -1
  23. package/dist/cjs/management/index.d.cts +3 -3
  24. package/dist/cjs/{management-D1QXg4YU.cjs → management-Cvsz4VMf.cjs} +34 -9
  25. package/dist/cjs/{router-CFErodHU.cjs → router-BOR7T6qR.cjs} +1 -1
  26. package/dist/cjs/{schemas-CukVpc19.cjs → schemas-FngDuIeo.cjs} +1 -1
  27. package/dist/{es/step-0eI2x4C9.d.mts → cjs/step-CKVE0aJi.d.cts} +3 -3
  28. package/dist/cjs/{validate-b_bI4mDb.cjs → validate-DydOAZha.cjs} +4 -4
  29. package/dist/cjs/{webhooks-DS1BtgED.cjs → webhooks-tbZy9G3p.cjs} +4 -4
  30. package/dist/es/actions/app-config.d.mts +3 -4
  31. package/dist/es/actions/app-config.mjs +18 -4
  32. package/dist/es/actions/config.d.mts +1 -2
  33. package/dist/es/actions/config.mjs +20 -15
  34. package/dist/es/actions/installation.d.mts +4 -5
  35. package/dist/es/actions/installation.mjs +19 -13
  36. package/dist/es/actions/registration.d.mts +2 -3
  37. package/dist/es/actions/registration.mjs +1 -1
  38. package/dist/es/actions/scope-tree.d.mts +1 -4
  39. package/dist/es/actions/scope-tree.mjs +4 -4
  40. package/dist/es/{admin-ui-sdk-CCo2SWiL.d.mts → admin-ui-sdk-hu6iWr0A.d.mts} +1 -1
  41. package/dist/es/{app-DcY6dJiQ.d.mts → app-CakwxQvs.d.mts} +129 -20
  42. package/dist/es/commands/index.mjs +218 -27
  43. package/dist/es/commands/templates/app-management/app-config.js.template +2 -2
  44. package/dist/es/config/index.d.mts +354 -391
  45. package/dist/es/config/index.mjs +3 -3
  46. package/dist/es/{config-DGPFTk6w.mjs → config-CcE0EBG7.mjs} +4 -5
  47. package/dist/es/{index-CCov0odd.d.mts → index-Bo0tQsVq.d.mts} +2 -2
  48. package/dist/es/management/index.d.mts +3 -3
  49. package/dist/es/management/index.mjs +1 -1
  50. package/dist/es/{management-CCsOfniv.mjs → management-BZ4Y6lVp.mjs} +33 -8
  51. package/dist/{cjs/step-CWYnKbga.d.cts → es/step-D64mMPrt.d.mts} +3 -3
  52. package/dist/es/{validate-Dn3lLTGj.mjs → validate-Du3LhCre.mjs} +3 -3
  53. package/dist/es/{webhooks-Dhrkkip7.mjs → webhooks-B5oq9ULL.mjs} +3 -3
  54. package/package.json +16 -11
  55. /package/dist/cjs/{chunk-DS2yp5vX.cjs → chunk-Cozy-1ZF.cjs} +0 -0
  56. /package/dist/es/{error-DHlYzkbb.mjs → error-_RMwtrUA.mjs} +0 -0
  57. /package/dist/es/{logging-XIUXDK5T.mjs → logging-DbJHXSKh.mjs} +0 -0
  58. /package/dist/es/{router-BxaxEEu3.mjs → router-D58JJHHA.mjs} +0 -0
  59. /package/dist/es/{schemas-DOcnD16x.mjs → schemas-hRovglBF.mjs} +0 -0
@@ -12,15 +12,13 @@
12
12
  * governing permissions and limitations under the License.
13
13
  */
14
14
 
15
- const require_chunk = require('./chunk-DS2yp5vX.cjs');
16
- const require_validate = require('./validate-b_bI4mDb.cjs');
17
- const require_error = require('./error-C5LNOZ4f.cjs');
15
+ const require_validate = require('./validate-DydOAZha.cjs');
16
+ const require_error = require('./error-D-N0PKSl.cjs');
18
17
  let path = require("path");
19
18
  let fs = require("fs");
20
19
  let fs_promises = require("fs/promises");
21
20
  let package_manager_detector = require("package-manager-detector");
22
21
  let package_manager_detector_detect = require("package-manager-detector/detect");
23
- let jiti = require("jiti");
24
22
 
25
23
  //#region source/config/lib/define.ts
26
24
  /**
@@ -170,7 +168,6 @@ function getInstallCommand(packageManager, packages) {
170
168
 
171
169
  //#endregion
172
170
  //#region source/config/lib/parser.ts
173
- const jiti$1 = (0, jiti.createJiti)(require("url").pathToFileURL(__filename).href);
174
171
  const configPaths = Object.freeze([
175
172
  "app.commerce.config.js",
176
173
  "app.commerce.config.ts",
@@ -221,7 +218,8 @@ async function readCommerceAppConfig(cwd = process.cwd()) {
221
218
  if (!configFilePath) throw new Error("Could not find a commerce app config file in the current working directory or its parents.");
222
219
  let config = null;
223
220
  try {
224
- config = await jiti$1.import(configFilePath);
221
+ const { createJiti } = await import("jiti");
222
+ config = await createJiti(require("url").pathToFileURL(__filename).href).import(configFilePath);
225
223
  } catch (error) {
226
224
  const message = require_error.stringifyError(error);
227
225
  throw new Error(`Failed to read commerce app config file at ${configFilePath}: ${message}`, { cause: error });
@@ -12,7 +12,6 @@
12
12
  * governing permissions and limitations under the License.
13
13
  */
14
14
 
15
- const require_chunk = require('./chunk-DS2yp5vX.cjs');
16
15
  let _adobe_aio_commerce_lib_core_error = require("@adobe/aio-commerce-lib-core/error");
17
16
 
18
17
  //#region ../../packages-private/scripting-utils/source/error.ts
@@ -12,8 +12,8 @@
12
12
  * governing permissions and limitations under the License.
13
13
  */
14
14
 
15
- import { n as CommerceAppConfigOutputModel } from "./app-C6kImBl7.cjs";
16
- import { f as StepMetaInfo, h as ValidationIssue, i as ExecutionContext, n as BranchStep, o as InstallationContext, p as ValidationContext } from "./step-CWYnKbga.cjs";
15
+ import { n as CommerceAppConfigOutputModel } from "./app-CakwxQvs.cjs";
16
+ import { f as StepMetaInfo, h as ValidationIssue, i as ExecutionContext, n as BranchStep, o as InstallationContext, p as ValidationContext } from "./step-CKVE0aJi.cjs";
17
17
 
18
18
  //#region source/management/installation/workflow/types.d.ts
19
19
  /** Status of a step execution. */
@@ -12,7 +12,7 @@
12
12
  * governing permissions and limitations under the License.
13
13
  */
14
14
 
15
- const require_chunk = require('./chunk-DS2yp5vX.cjs');
15
+ const require_chunk = require('./chunk-Cozy-1ZF.cjs');
16
16
  let util = require("util");
17
17
  util = require_chunk.__toESM(util, 1);
18
18
 
@@ -13,7 +13,7 @@
13
13
  */
14
14
 
15
15
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
16
- const require_management = require('../management-D1QXg4YU.cjs');
16
+ const require_management = require('../management-Cvsz4VMf.cjs');
17
17
 
18
18
  exports.createInitialInstallationState = require_management.createInitialInstallationState;
19
19
  exports.createInitialUninstallationState = require_management.createInitialUninstallationState;
@@ -12,6 +12,6 @@
12
12
  * governing permissions and limitations under the License.
13
13
  */
14
14
 
15
- import { _ as defineBranchStep, a as InferStepOutput, b as isLeafStep, c as LeafStepOptions, d as StepMeta, f as StepMetaInfo, g as ValidationIssueSeverity, h as ValidationIssue, i as ExecutionContext, l as Step, m as ValidationExecutionContext, n as BranchStep, o as InstallationContext, p as ValidationContext, r as BranchStepOptions, s as LeafStep, t as AnyStep, u as StepContextFactory, v as defineLeafStep, y as isBranchStep } from "../step-CWYnKbga.cjs";
16
- import { A as ExecutionStatus, B as isCompletedState, C as executeUninstallWorkflow, D as StepFailedEvent, E as StepEvent, F as InstallationRetryMetadata, H as isInProgressState, I as InstallationState, L as InstallationStatus, M as InProgressInstallationState, N as InstallationData, O as StepStartedEvent, P as InstallationError, R as StepStatus, S as createRetryState, T as InstallationHooks, U as isSucceededState, V as isFailedState, _ as ValidationSummary, a as RunValidationOptions, b as ExecuteWorkflowOptions, c as runInstallation, d as CustomInstallationStepDefinition, f as CustomInstallationStepHandler, g as ValidationResult, h as ValidateStepTreeOptions, i as RunUninstallationOptions, j as FailedInstallationState, k as StepSucceededEvent, l as runUninstallation, m as StepValidationResult, n as CreateInitialUninstallationStateOptions, o as createInitialInstallationState, p as defineCustomInstallationStep, r as RunInstallationOptions, s as createInitialUninstallationState, t as CreateInitialInstallationStateOptions, u as runValidation, v as validateStepTree, w as executeWorkflow, x as createInitialState, y as CreateInitialStateOptions, z as SucceededInstallationState } from "../index-B5WKJ3hJ.cjs";
17
- export { AnyStep, BranchStep, BranchStepOptions, CreateInitialInstallationStateOptions, CreateInitialStateOptions, CreateInitialUninstallationStateOptions, CustomInstallationStepDefinition, CustomInstallationStepHandler, ExecuteWorkflowOptions, ExecutionContext, ExecutionStatus, FailedInstallationState, InProgressInstallationState, InferStepOutput, InstallationContext, InstallationData, InstallationError, InstallationHooks, InstallationRetryMetadata, InstallationState, InstallationStatus, LeafStep, LeafStepOptions, RunInstallationOptions, RunUninstallationOptions, RunValidationOptions, Step, StepContextFactory, StepEvent, StepFailedEvent, StepMeta, StepMetaInfo, StepStartedEvent, StepStatus, StepSucceededEvent, StepValidationResult, SucceededInstallationState, ValidateStepTreeOptions, ValidationContext, ValidationExecutionContext, ValidationIssue, ValidationIssueSeverity, ValidationResult, ValidationSummary, createInitialInstallationState, createInitialState, createInitialUninstallationState, createRetryState, defineBranchStep, defineCustomInstallationStep, defineLeafStep, executeUninstallWorkflow, executeWorkflow, isBranchStep, isCompletedState, isFailedState, isInProgressState, isLeafStep, isSucceededState, runInstallation, runUninstallation, runValidation, validateStepTree };
15
+ import { _ as defineBranchStep, a as InferStepOutput, b as isLeafStep, c as LeafStepOptions, d as StepMeta, f as StepMetaInfo, g as ValidationIssueSeverity, h as ValidationIssue, i as ExecutionContext, l as Step, m as ValidationExecutionContext, n as BranchStep, o as InstallationContext, p as ValidationContext, r as BranchStepOptions, s as LeafStep, t as AnyStep, u as StepContextFactory, v as defineLeafStep, y as isBranchStep } from "../step-CKVE0aJi.cjs";
16
+ import { A as ExecutionStatus, B as isCompletedState, C as executeUninstallWorkflow, D as StepFailedEvent, E as StepEvent, F as InstallationRetryMetadata, H as isInProgressState, I as InstallationState, L as InstallationStatus, M as InProgressInstallationState, N as InstallationData, O as StepStartedEvent, P as InstallationError, R as StepStatus, S as createRetryState, T as InstallationHooks, U as isSucceededState, V as isFailedState, _ as ValidationSummary, a as RunValidationOptions, b as ExecuteWorkflowOptions, c as runInstallation, d as CustomInstallationStepDefinition, f as CustomInstallationStepHandler, g as ValidationResult, h as ValidateStepTreeOptions, i as RunUninstallationOptions, j as FailedInstallationState, k as StepSucceededEvent, l as runUninstallation, m as StepValidationResult, n as CreateInitialUninstallationStateOptions, o as createInitialInstallationState, p as defineCustomInstallationStep, r as RunInstallationOptions, s as createInitialUninstallationState, t as CreateInitialInstallationStateOptions, u as runValidation, v as validateStepTree, w as executeWorkflow, x as createInitialState, y as CreateInitialStateOptions, z as SucceededInstallationState } from "../index-Dw2NvVOY.cjs";
17
+ export { type AnyStep, type BranchStep, type BranchStepOptions, type CreateInitialInstallationStateOptions, type CreateInitialStateOptions, type CreateInitialUninstallationStateOptions, type CustomInstallationStepDefinition, type CustomInstallationStepHandler, type ExecuteWorkflowOptions, type ExecutionContext, type ExecutionStatus, type FailedInstallationState, type InProgressInstallationState, type InferStepOutput, type InstallationContext, type InstallationData, type InstallationError, type InstallationHooks, type InstallationRetryMetadata, type InstallationState, type InstallationStatus, type LeafStep, type LeafStepOptions, type RunInstallationOptions, type RunUninstallationOptions, type RunValidationOptions, type Step, type StepContextFactory, type StepEvent, type StepFailedEvent, type StepMeta, type StepMetaInfo, type StepStartedEvent, type StepStatus, type StepSucceededEvent, type StepValidationResult, type SucceededInstallationState, type ValidateStepTreeOptions, type ValidationContext, type ValidationExecutionContext, type ValidationIssue, type ValidationIssueSeverity, type ValidationResult, type ValidationSummary, createInitialInstallationState, type createInitialState, createInitialUninstallationState, type createRetryState, type defineBranchStep, defineCustomInstallationStep, type defineLeafStep, type executeUninstallWorkflow, type executeWorkflow, type isBranchStep, isCompletedState, isFailedState, isInProgressState, type isLeafStep, isSucceededState, runInstallation, runUninstallation, runValidation, type validateStepTree };
@@ -12,10 +12,10 @@
12
12
  * governing permissions and limitations under the License.
13
13
  */
14
14
 
15
- const require_chunk = require('./chunk-DS2yp5vX.cjs');
16
- const require_webhooks = require('./webhooks-DS1BtgED.cjs');
17
- const require_error = require('./error-C5LNOZ4f.cjs');
18
- const require_logging = require('./logging-BTevALnL.cjs');
15
+ const require_chunk = require('./chunk-Cozy-1ZF.cjs');
16
+ const require_webhooks = require('./webhooks-tbZy9G3p.cjs');
17
+ const require_logging = require('./logging-BVz3weoC.cjs');
18
+ const require_error = require('./error-D-N0PKSl.cjs');
19
19
  let _adobe_aio_commerce_lib_api_utils = require("@adobe/aio-commerce-lib-api/utils");
20
20
  let camelcase = require("camelcase");
21
21
  camelcase = require_chunk.__toESM(camelcase, 1);
@@ -455,6 +455,7 @@ function aggregateSummary(result) {
455
455
 
456
456
  //#endregion
457
457
  //#region source/management/installation/custom-installation/custom-scripts.ts
458
+ const camelcase$1 = camelcase.default.default ?? camelcase.default;
458
459
  function isCustomInstallationStepDefinition(obj) {
459
460
  return typeof obj === "object" && obj !== null && "install" in obj && typeof obj.install === "function";
460
461
  }
@@ -467,7 +468,7 @@ function isCustomInstallationStepHandler(obj) {
467
468
  function createCustomScriptStep(scriptConfig) {
468
469
  const { script, name, description } = scriptConfig;
469
470
  return defineLeafStep({
470
- name: (0, camelcase.default)(name),
471
+ name: camelcase$1(name),
471
472
  meta: { install: {
472
473
  label: name,
473
474
  description
@@ -768,15 +769,37 @@ function getNamespacedEvent(metadata, name) {
768
769
  function getIoEventCode(name, providerType) {
769
770
  return providerType === "dx_commerce_events" ? `com.adobe.commerce.${name}` : name;
770
771
  }
772
+ /** Maps a provider's metadata type to its human-readable label ("Commerce" or "External"). */
773
+ function getProviderTypeLabel(provider) {
774
+ return PROVIDER_TYPE_TO_LABEL[provider.provider_metadata];
775
+ }
771
776
  /**
772
- * Generates a registration name and description based on the provider, events, and runtime action.
777
+ * Generates a registration name based on the provider type, provider label, and runtime action.
778
+ *
779
+ * Prefixes with the provider type label ("Commerce" or "External") for readability, then the
780
+ * provider's own label to ensure uniqueness when multiple providers of the same type route
781
+ * events to the same runtime action.
782
+ *
773
783
  * @param provider - The provider this registration is associated to.
774
784
  * @param runtimeAction - The runtime action this registration points to.
775
785
  */
776
786
  function getRegistrationName(provider, runtimeAction) {
777
- const providerLabel = PROVIDER_TYPE_TO_LABEL[provider.provider_metadata];
778
787
  const [packageName, actionName] = runtimeAction.split("/").map(kebabToTitleCase);
779
- return `${providerLabel} Event Registration: ${actionName} (${packageName})`;
788
+ return `${getProviderTypeLabel(provider)} Event Registration: ${provider.label} - ${actionName} (${packageName})`;
789
+ }
790
+ /**
791
+ * Returns the registration name in the legacy format used by SDK versions that built
792
+ * the name from the generic provider type label ("Commerce" / "External") rather than
793
+ * the provider's own label. Used during uninstall to match registrations that were
794
+ * created before the naming change.
795
+ *
796
+ * @param provider - The provider this registration is associated to.
797
+ * @param runtimeAction - The runtime action this registration points to.
798
+ * @deprecated Use {@link getRegistrationName} for all new registrations.
799
+ */
800
+ function getLegacyRegistrationName(provider, runtimeAction) {
801
+ const [packageName, actionName] = runtimeAction.split("/").map(kebabToTitleCase);
802
+ return `${getProviderTypeLabel(provider)} Event Registration: ${actionName} (${packageName})`;
780
803
  }
781
804
  /**
782
805
  * Generates a registration name and description based on the provider, events, and runtime action.
@@ -1151,6 +1174,7 @@ async function createCommerceEventSubscription(params) {
1151
1174
  name: eventName,
1152
1175
  parent: event.config.name,
1153
1176
  fields: event.config.fields,
1177
+ rules: event.config.rules,
1154
1178
  provider_id: provider.id,
1155
1179
  destination: event.config.destination,
1156
1180
  hipaa_audit_required: event.config.hipaa_audit_required,
@@ -1275,7 +1299,8 @@ async function deleteIoEventRegistrations(providerData, provider, events, regist
1275
1299
  workspaceId: appData.workspaceId
1276
1300
  };
1277
1301
  const actionEventsMap = groupEventsByRuntimeActions(events);
1278
- const registrationNames = new Set(Array.from(actionEventsMap.keys()).map((runtimeAction) => getRegistrationName(providerData, runtimeAction)));
1302
+ const runtimeActions = Array.from(actionEventsMap.keys());
1303
+ const registrationNames = new Set([...runtimeActions.map((runtimeAction) => getRegistrationName(providerData, runtimeAction)), ...runtimeActions.map((runtimeAction) => getLegacyRegistrationName(providerData, runtimeAction))]);
1279
1304
  const providerRegistrations = registrations.filter((reg) => reg.client_id === runtimeParams.AIO_COMMERCE_AUTH_IMS_CLIENT_ID && registrationNames.has(reg.name));
1280
1305
  if (providerRegistrations.length === 0) {
1281
1306
  logger.info(`No I/O Events registrations found for provider "${provider.label}" (instance ID: "${providerData.instance_id}").`);
@@ -12,7 +12,7 @@
12
12
  * governing permissions and limitations under the License.
13
13
  */
14
14
 
15
- const require_chunk = require('./chunk-DS2yp5vX.cjs');
15
+ const require_chunk = require('./chunk-Cozy-1ZF.cjs');
16
16
  let _adobe_aio_commerce_lib_core_responses = require("@adobe/aio-commerce-lib-core/responses");
17
17
  let _adobe_aio_lib_core_logging = require("@adobe/aio-lib-core-logging");
18
18
  _adobe_aio_lib_core_logging = require_chunk.__toESM(_adobe_aio_lib_core_logging, 1);
@@ -12,7 +12,7 @@
12
12
  * governing permissions and limitations under the License.
13
13
  */
14
14
 
15
- const require_chunk = require('./chunk-DS2yp5vX.cjs');
15
+ const require_chunk = require('./chunk-Cozy-1ZF.cjs');
16
16
  let valibot = require("valibot");
17
17
  valibot = require_chunk.__toESM(valibot, 1);
18
18
 
@@ -12,10 +12,10 @@
12
12
  * governing permissions and limitations under the License.
13
13
  */
14
14
 
15
- import { n as CommerceAppConfigOutputModel } from "./app-DcY6dJiQ.mjs";
16
- import AioLogger from "@adobe/aio-lib-core-logging";
17
- import * as v from "valibot";
15
+ import { n as CommerceAppConfigOutputModel } from "./app-CakwxQvs.cjs";
18
16
  import { RuntimeActionParams } from "@adobe/aio-commerce-lib-core/params";
17
+ import * as v from "valibot";
18
+ import AioLogger from "@adobe/aio-lib-core-logging";
19
19
 
20
20
  //#region source/management/installation/schema.d.ts
21
21
  /** Schema for validating Adobe I/O app credentials required for installation. */
@@ -12,13 +12,13 @@
12
12
  * governing permissions and limitations under the License.
13
13
  */
14
14
 
15
- const require_chunk = require('./chunk-DS2yp5vX.cjs');
16
- const require_schemas = require('./schemas-CukVpc19.cjs');
17
- const require_webhooks = require('./webhooks-DS1BtgED.cjs');
15
+ const require_chunk = require('./chunk-Cozy-1ZF.cjs');
16
+ const require_schemas = require('./schemas-FngDuIeo.cjs');
17
+ const require_webhooks = require('./webhooks-tbZy9G3p.cjs');
18
+ let _adobe_aio_commerce_lib_config = require("@adobe/aio-commerce-lib-config");
18
19
  let _adobe_aio_commerce_lib_core_error = require("@adobe/aio-commerce-lib-core/error");
19
20
  let valibot = require("valibot");
20
21
  valibot = require_chunk.__toESM(valibot, 1);
21
- let _adobe_aio_commerce_lib_config = require("@adobe/aio-commerce-lib-config");
22
22
 
23
23
  //#region source/config/schema/business-configuration.ts
24
24
  /**
@@ -12,8 +12,8 @@
12
12
  * governing permissions and limitations under the License.
13
13
  */
14
14
 
15
- const require_chunk = require('./chunk-DS2yp5vX.cjs');
16
- const require_schemas = require('./schemas-CukVpc19.cjs');
15
+ const require_chunk = require('./chunk-Cozy-1ZF.cjs');
16
+ const require_schemas = require('./schemas-FngDuIeo.cjs');
17
17
  let valibot = require("valibot");
18
18
  valibot = require_chunk.__toESM(valibot, 1);
19
19
 
@@ -294,8 +294,8 @@ const ExternalEventSourceSchema = valibot.object({
294
294
  });
295
295
  /** Schema for eventing configuration with separate commerce and external arrays */
296
296
  const EventingSchema = valibot.object({
297
- commerce: valibot.optional(valibot.array(CommerceEventSourceSchema, "Expected an array of Commerce event sources")),
298
- external: valibot.optional(valibot.array(ExternalEventSourceSchema, "Expected an array of external event sources"))
297
+ commerce: valibot.optional(valibot.pipe(valibot.array(CommerceEventSourceSchema, "Expected an array of Commerce event sources"), valibot.check((sources) => new Set(sources.map((s) => s.provider.label)).size === sources.length, "Commerce provider labels must be unique"))),
298
+ external: valibot.optional(valibot.pipe(valibot.array(ExternalEventSourceSchema, "Expected an array of external event sources"), valibot.check((sources) => new Set(sources.map((s) => s.provider.label)).size === sources.length, "External provider labels must be unique")))
299
299
  });
300
300
  /**
301
301
  * Check if config has commerce event sources.
@@ -12,18 +12,17 @@
12
12
  * governing permissions and limitations under the License.
13
13
  */
14
14
 
15
- import { n as CommerceAppConfigOutputModel } from "../app-DcY6dJiQ.mjs";
16
- import * as _$_adobe_aio_commerce_lib_core_responses0 from "@adobe/aio-commerce-lib-core/responses";
15
+ import { t as CommerceAppConfig } from "../app-CakwxQvs.mjs";
17
16
  import { RuntimeActionParams } from "@adobe/aio-commerce-lib-core/params";
18
17
 
19
18
  //#region source/actions/app-config.d.ts
20
19
  /** Arguments for the runtime action factory. */
21
20
  type RuntimeActionFactoryArgs = {
22
- appConfig: CommerceAppConfigOutputModel;
21
+ appConfig: CommerceAppConfig;
23
22
  };
24
23
  /** Factory to create the route handler for the `app-config` action. */
25
24
  declare const appConfigRuntimeAction: ({
26
25
  appConfig
27
- }: RuntimeActionFactoryArgs) => (params: RuntimeActionParams) => Promise<_$_adobe_aio_commerce_lib_core_responses0.ActionResponse>;
26
+ }: RuntimeActionFactoryArgs) => (params: RuntimeActionParams) => Promise<import("@adobe/aio-commerce-lib-core/responses").ActionResponse>;
28
27
  //#endregion
29
28
  export { appConfigRuntimeAction };
@@ -12,17 +12,31 @@
12
12
  * governing permissions and limitations under the License.
13
13
  */
14
14
 
15
- import { n as logger, t as HttpActionRouter } from "../router-BxaxEEu3.mjs";
16
- import { t as validateCommerceAppConfig } from "../validate-Dn3lLTGj.mjs";
17
- import { ok } from "@adobe/aio-commerce-lib-core/responses";
15
+ import { n as logger, t as HttpActionRouter } from "../router-D58JJHHA.mjs";
16
+ import { c as hasBusinessConfigSchema, t as validateCommerceAppConfig } from "../validate-Du3LhCre.mjs";
17
+ import { resolveBusinessConfigSchema } from "@adobe/aio-commerce-lib-config";
18
+ import { internalServerError, ok } from "@adobe/aio-commerce-lib-core/responses";
18
19
 
19
20
  //#region source/actions/app-config.ts
20
21
  /** Router for the app config actions. */
21
22
  const router = new HttpActionRouter().use(logger({ name: () => "app-config" }));
22
23
  /** GET / - Get app config */
23
24
  router.get("/", { handler: async (_req, { logger, rawParams }) => {
25
+ const rawAppConfig = rawParams.appConfig;
26
+ if (!rawAppConfig) return internalServerError("Could not find or parse the app.commerce.manifest.json file, is it present and valid?");
27
+ let appConfig = rawAppConfig;
28
+ if (hasBusinessConfigSchema(rawAppConfig)) {
29
+ logger.debug("Resolving business config schema...");
30
+ const schema = await resolveBusinessConfigSchema(rawAppConfig.businessConfig.schema, rawParams);
31
+ appConfig = {
32
+ ...rawAppConfig,
33
+ businessConfig: {
34
+ ...rawAppConfig.businessConfig,
35
+ schema
36
+ }
37
+ };
38
+ }
24
39
  logger.debug("Validating app config...");
25
- const { appConfig } = rawParams;
26
40
  const config = validateCommerceAppConfig(appConfig);
27
41
  logger.debug("Successfully validated the app config");
28
42
  return ok({ body: config });
@@ -12,7 +12,6 @@
12
12
  * governing permissions and limitations under the License.
13
13
  */
14
14
 
15
- import * as _$_adobe_aio_commerce_lib_core_responses0 from "@adobe/aio-commerce-lib-core/responses";
16
15
  import { BusinessConfigSchema } from "@adobe/aio-commerce-lib-config";
17
16
  import { RuntimeActionParams } from "@adobe/aio-commerce-lib-core/params";
18
17
 
@@ -24,6 +23,6 @@ type ConfigActionFactoryArgs = {
24
23
  /** Factory to create the route handler for the `config` action. */
25
24
  declare const configRuntimeAction: ({
26
25
  configSchema
27
- }: ConfigActionFactoryArgs) => (params: RuntimeActionParams) => Promise<_$_adobe_aio_commerce_lib_core_responses0.ActionResponse>;
26
+ }: ConfigActionFactoryArgs) => (params: RuntimeActionParams) => Promise<import("@adobe/aio-commerce-lib-core/responses").ActionResponse>;
28
27
  //#endregion
29
28
  export { configRuntimeAction };
@@ -12,12 +12,11 @@
12
12
  * governing permissions and limitations under the License.
13
13
  */
14
14
 
15
- import { n as logger, t as HttpActionRouter } from "../router-BxaxEEu3.mjs";
16
- import { r as nonEmptyStringValueSchema } from "../schemas-DOcnD16x.mjs";
17
- import { n as validateCommerceAppConfigDomain } from "../validate-Dn3lLTGj.mjs";
15
+ import { n as logger, t as HttpActionRouter } from "../router-D58JJHHA.mjs";
16
+ import { r as nonEmptyStringValueSchema } from "../schemas-hRovglBF.mjs";
17
+ import { byScopeId, getConfiguration, initialize, setConfiguration } from "@adobe/aio-commerce-lib-config";
18
18
  import { ok } from "@adobe/aio-commerce-lib-core/responses";
19
19
  import * as v from "valibot";
20
- import { byScopeId, getConfiguration, initialize, setConfiguration } from "@adobe/aio-commerce-lib-config";
21
20
 
22
21
  //#region source/actions/config.ts
23
22
  const MASKED_PASSWORD_VALUE = "*****";
@@ -57,19 +56,21 @@ router.get("/", {
57
56
  }),
58
57
  handler: async (req, ctx) => {
59
58
  const { logger, rawParams } = ctx;
60
- const configSchema = rawParams.configSchema;
61
- logger.debug("Validating configuration schema...");
62
- const validatedSchema = validateCommerceAppConfigDomain(configSchema, "businessConfig.schema");
59
+ const { configSchema: rawConfigSchema } = rawParams;
63
60
  const env = req.query.commerceEnv;
64
- const filteredSchema = env ? filterSchemaByEnv(validatedSchema, env) : validatedSchema;
65
- initialize({ schema: filteredSchema });
61
+ const envFilteredSchema = env ? filterSchemaByEnv(rawConfigSchema, env) : rawConfigSchema;
62
+ logger.debug("Initializing configuration");
63
+ const { configSchema } = await initialize({
64
+ schema: envFilteredSchema,
65
+ params: rawParams
66
+ });
66
67
  const { scopeId } = req.query;
67
68
  logger.debug(`Retrieving configuration with scope id: ${scopeId}`);
68
69
  const appConfiguration = await getConfiguration(byScopeId(scopeId), { encryptionKey: rawParams.AIO_COMMERCE_CONFIG_ENCRYPTION_KEY });
69
70
  logger.debug("Masking password values...");
70
- appConfiguration.config = filterPasswordFields(filteredSchema, appConfiguration.config);
71
+ appConfiguration.config = filterPasswordFields(configSchema, appConfiguration.config);
71
72
  return ok({ body: {
72
- schema: filteredSchema,
73
+ schema: configSchema,
73
74
  values: appConfiguration
74
75
  } });
75
76
  }
@@ -89,10 +90,12 @@ router.put("/", {
89
90
  }),
90
91
  handler: async (req, ctx) => {
91
92
  const { logger, rawParams } = ctx;
92
- const { configSchema } = rawParams;
93
93
  logger.debug(`Setting configuration with scope id: ${req.body.scopeId}`);
94
94
  const { scopeId, config } = req.body;
95
- initialize({ schema: validateCommerceAppConfigDomain(configSchema, "businessConfig.schema") });
95
+ const { configSchema } = await initialize({
96
+ schema: rawParams.configSchema,
97
+ params: rawParams
98
+ });
96
99
  const result = await setConfiguration({ config: config.filter((item) => item.value !== MASKED_PASSWORD_VALUE) }, byScopeId(scopeId), { encryptionKey: rawParams.AIO_COMMERCE_CONFIG_ENCRYPTION_KEY });
97
100
  result.config = filterPasswordFields(configSchema, result.config);
98
101
  return ok({
@@ -119,10 +122,12 @@ router.patch("/", {
119
122
  }),
120
123
  handler: async (req, ctx) => {
121
124
  const { logger, rawParams } = ctx;
122
- const { configSchema } = rawParams;
123
125
  logger.debug(`Patching configuration with scope id: ${req.body.scopeId}`);
124
126
  const { scopeId, config } = req.body;
125
- initialize({ schema: validateCommerceAppConfigDomain(configSchema, "businessConfig.schema") });
127
+ const { configSchema } = await initialize({
128
+ schema: rawParams.configSchema,
129
+ params: rawParams
130
+ });
126
131
  const result = await setConfiguration({ config }, byScopeId(scopeId), { encryptionKey: rawParams.AIO_COMMERCE_CONFIG_ENCRYPTION_KEY });
127
132
  result.config = filterPasswordFields(configSchema, result.config);
128
133
  return ok({
@@ -12,22 +12,21 @@
12
12
  * governing permissions and limitations under the License.
13
13
  */
14
14
 
15
- import { n as CommerceAppConfigOutputModel } from "../app-DcY6dJiQ.mjs";
16
- import { o as InstallationContext } from "../step-0eI2x4C9.mjs";
17
- import * as _$_adobe_aio_commerce_lib_core_responses0 from "@adobe/aio-commerce-lib-core/responses";
15
+ import { n as CommerceAppConfigOutputModel, t as CommerceAppConfig } from "../app-CakwxQvs.mjs";
16
+ import { o as InstallationContext } from "../step-D64mMPrt.mjs";
18
17
  import { RuntimeActionParams } from "@adobe/aio-commerce-lib-core/params";
19
18
 
20
19
  //#region source/actions/installation.d.ts
21
20
  type CustomScriptsLoader = (config: CommerceAppConfigOutputModel, logger: InstallationContext["logger"]) => Record<string, unknown>;
22
21
  /** Arguments for the runtime action factory. */
23
22
  type RuntimeActionFactoryArgs = {
24
- appConfig: CommerceAppConfigOutputModel;
23
+ appConfig: CommerceAppConfig;
25
24
  customScriptsLoader?: CustomScriptsLoader;
26
25
  };
27
26
  /** Factory to create the route handler for the `installation` action. */
28
27
  declare const installationRuntimeAction: ({
29
28
  appConfig,
30
29
  customScriptsLoader
31
- }: RuntimeActionFactoryArgs) => (params: RuntimeActionParams) => Promise<_$_adobe_aio_commerce_lib_core_responses0.ActionResponse>;
30
+ }: RuntimeActionFactoryArgs) => (params: RuntimeActionParams) => Promise<import("@adobe/aio-commerce-lib-core/responses").ActionResponse>;
32
31
  //#endregion
33
32
  export { installationRuntimeAction };
@@ -12,9 +12,10 @@
12
12
  * governing permissions and limitations under the License.
13
13
  */
14
14
 
15
- import { n as logger, t as HttpActionRouter } from "../router-BxaxEEu3.mjs";
16
- import { r as nonEmptyStringValueSchema } from "../schemas-DOcnD16x.mjs";
17
- import { a as runValidation, c as isFailedState, i as runUninstallation, l as isInProgressState, n as createInitialUninstallationState, r as runInstallation, s as isCompletedState, t as createInitialInstallationState, u as isSucceededState } from "../management-CCsOfniv.mjs";
15
+ import { n as logger, t as HttpActionRouter } from "../router-D58JJHHA.mjs";
16
+ import { r as nonEmptyStringValueSchema } from "../schemas-hRovglBF.mjs";
17
+ import { t as validateCommerceAppConfig } from "../validate-Du3LhCre.mjs";
18
+ import { a as runValidation, c as isFailedState, i as runUninstallation, l as isInProgressState, n as createInitialUninstallationState, r as runInstallation, s as isCompletedState, t as createInitialInstallationState, u as isSucceededState } from "../management-BZ4Y6lVp.mjs";
18
19
  import { accepted, badRequest, conflict, internalServerError, noContent, ok } from "@adobe/aio-commerce-lib-core/responses";
19
20
  import * as v from "valibot";
20
21
  import { object, string } from "valibot";
@@ -396,8 +397,9 @@ router.post("/", {
396
397
  }
397
398
  logger.debug("Previous installation failed, allowing retry");
398
399
  }
399
- const appConfig = rawParams.appConfig;
400
- if (!appConfig) return internalServerError("Could not find or parse the app.commerce.manifest.json file, is it present and valid?");
400
+ const rawAppConfig = rawParams.appConfig;
401
+ if (!rawAppConfig) return internalServerError("Could not find or parse the app.commerce.manifest.json file, is it present and valid?");
402
+ const appConfig = validateCommerceAppConfig(rawAppConfig);
401
403
  const initialState = createInitialInstallationState({ config: appConfig });
402
404
  logger.debug(`Created initial state: ${initialState.id}`);
403
405
  await store.put(getStorageKey(), initialState);
@@ -431,9 +433,10 @@ router.post("/", {
431
433
  */
432
434
  router.post("/execution", { handler: async (_req, { logger, rawParams }) => {
433
435
  const params = rawParams;
434
- const { initialState, appConfig, appData, AIO_COMMERCE_API_BASE_URL } = params;
436
+ const { initialState, appConfig: rawAppConfig, appData, AIO_COMMERCE_API_BASE_URL } = params;
435
437
  if (!initialState) return badRequest("initialState is required for execution");
436
- if (!appConfig) return badRequest("appConfig is required for execution");
438
+ if (!rawAppConfig) return badRequest("appConfig is required for execution");
439
+ const appConfig = validateCommerceAppConfig(rawAppConfig);
437
440
  const store = await createInstallationStore();
438
441
  const hooks = createInstallationHooks(store, (msg) => logger.debug(msg));
439
442
  const installationContext = buildInstallationContext(params, appConfig, logger);
@@ -469,8 +472,9 @@ router.post("/validation", {
469
472
  body: InstallationRequestBodySchema,
470
473
  handler: async (req, { logger, rawParams }) => {
471
474
  logger.debug("Running pre-installation validation...");
472
- const appConfig = rawParams.appConfig;
473
- if (!appConfig) return internalServerError("Could not find or parse the app.commerce.manifest.json file, is it present and valid?");
475
+ const rawAppConfig = rawParams.appConfig;
476
+ if (!rawAppConfig) return internalServerError("Could not find or parse the app.commerce.manifest.json file, is it present and valid?");
477
+ const appConfig = validateCommerceAppConfig(rawAppConfig);
474
478
  const { appData, ...params } = buildWorkflowParams(req.body, rawParams);
475
479
  const result = await runValidation({
476
480
  validationContext: {
@@ -508,8 +512,9 @@ router.post("/uninstallation", {
508
512
  handler: async (req, { logger, rawParams }) => {
509
513
  const { appData, commerceBaseUrl } = req.body;
510
514
  logger.debug(`Starting uninstallation for app "${appData.projectName}" (workspace: "${appData.workspaceName}", commerce: "${commerceBaseUrl}")`);
511
- const appConfig = rawParams.appConfig;
512
- if (!appConfig) return internalServerError("Could not find or parse the app.commerce.manifest.json file, is it present and valid?");
515
+ const rawAppConfig = rawParams.appConfig;
516
+ if (!rawAppConfig) return internalServerError("Could not find or parse the app.commerce.manifest.json file, is it present and valid?");
517
+ const appConfig = validateCommerceAppConfig(rawAppConfig);
513
518
  const store = await createUninstallationStore();
514
519
  const existingState = await store.get(getStorageKey());
515
520
  if (existingState && isInProgressState(existingState)) {
@@ -552,9 +557,10 @@ router.post("/uninstallation", {
552
557
  */
553
558
  router.post("/uninstallation/execution", { handler: async (_req, { logger, rawParams }) => {
554
559
  const params = rawParams;
555
- const { initialState, appConfig, appData, AIO_COMMERCE_API_BASE_URL } = params;
560
+ const { initialState, appConfig: rawAppConfig, appData, AIO_COMMERCE_API_BASE_URL } = params;
556
561
  if (!initialState) return badRequest("initialState is required for execution");
557
- if (!appConfig) return badRequest("appConfig is required for execution");
562
+ if (!rawAppConfig) return badRequest("appConfig is required for execution");
563
+ const appConfig = validateCommerceAppConfig(rawAppConfig);
558
564
  const store = await createUninstallationStore();
559
565
  const hooks = createInstallationHooks(store, (msg) => logger.debug(msg));
560
566
  const installationContext = buildInstallationContext(params, appConfig, logger);
@@ -12,8 +12,7 @@
12
12
  * governing permissions and limitations under the License.
13
13
  */
14
14
 
15
- import { n as AdminUiSdkRegistration } from "../admin-ui-sdk-CCo2SWiL.mjs";
16
- import * as _$_adobe_aio_commerce_lib_core_responses0 from "@adobe/aio-commerce-lib-core/responses";
15
+ import { n as AdminUiSdkRegistration } from "../admin-ui-sdk-hu6iWr0A.mjs";
17
16
  import { RuntimeActionParams } from "@adobe/aio-commerce-lib-core/params";
18
17
 
19
18
  //#region source/actions/registration.d.ts
@@ -28,6 +27,6 @@ type RegistrationActionArgs = {
28
27
  */
29
28
  declare const registrationRuntimeAction: ({
30
29
  registration
31
- }: RegistrationActionArgs) => (params: RuntimeActionParams) => Promise<_$_adobe_aio_commerce_lib_core_responses0.ActionResponse>;
30
+ }: RegistrationActionArgs) => (params: RuntimeActionParams) => Promise<import("@adobe/aio-commerce-lib-core/responses").ActionResponse>;
32
31
  //#endregion
33
32
  export { registrationRuntimeAction };
@@ -12,7 +12,7 @@
12
12
  * governing permissions and limitations under the License.
13
13
  */
14
14
 
15
- import { n as logger, t as HttpActionRouter } from "../router-BxaxEEu3.mjs";
15
+ import { n as logger, t as HttpActionRouter } from "../router-D58JJHHA.mjs";
16
16
  import { ok } from "@adobe/aio-commerce-lib-core/responses";
17
17
 
18
18
  //#region source/actions/registration.ts
@@ -12,11 +12,8 @@
12
12
  * governing permissions and limitations under the License.
13
13
  */
14
14
 
15
- import * as _$_adobe_aio_commerce_lib_core_responses0 from "@adobe/aio-commerce-lib-core/responses";
16
- import * as _$_adobe_aio_commerce_lib_core_params0 from "@adobe/aio-commerce-lib-core/params";
17
-
18
15
  //#region source/actions/scope-tree.d.ts
19
16
  /** The handler method for the `scope-tree` action. */
20
- declare const scopeTreeRuntimeAction: (args: _$_adobe_aio_commerce_lib_core_params0.RuntimeActionParams) => Promise<_$_adobe_aio_commerce_lib_core_responses0.ActionResponse>;
17
+ declare const scopeTreeRuntimeAction: (args: import("@adobe/aio-commerce-lib-core/params").RuntimeActionParams) => Promise<import("@adobe/aio-commerce-lib-core/responses").ActionResponse>;
21
18
  //#endregion
22
19
  export { scopeTreeRuntimeAction };
@@ -12,12 +12,12 @@
12
12
  * governing permissions and limitations under the License.
13
13
  */
14
14
 
15
- import { n as logger, t as HttpActionRouter } from "../router-BxaxEEu3.mjs";
16
- import { r as nonEmptyStringValueSchema } from "../schemas-DOcnD16x.mjs";
17
- import { t as inspect } from "../logging-XIUXDK5T.mjs";
15
+ import { n as logger, t as HttpActionRouter } from "../router-D58JJHHA.mjs";
16
+ import { r as nonEmptyStringValueSchema } from "../schemas-hRovglBF.mjs";
17
+ import { t as inspect } from "../logging-DbJHXSKh.mjs";
18
+ import { getScopeTree, setCustomScopeTree, syncCommerceScopes, unsyncCommerceScopes } from "@adobe/aio-commerce-lib-config";
18
19
  import { internalServerError, nonAuthoritativeInformation, ok } from "@adobe/aio-commerce-lib-core/responses";
19
20
  import * as v from "valibot";
20
- import { getScopeTree, setCustomScopeTree, syncCommerceScopes, unsyncCommerceScopes } from "@adobe/aio-commerce-lib-config";
21
21
  import { resolveCommerceHttpClientParams } from "@adobe/aio-commerce-lib-api";
22
22
 
23
23
  //#region source/actions/scope-tree.ts
@@ -12,7 +12,7 @@
12
12
  * governing permissions and limitations under the License.
13
13
  */
14
14
 
15
- import { n as CommerceAppConfigOutputModel } from "./app-DcY6dJiQ.mjs";
15
+ import { n as CommerceAppConfigOutputModel } from "./app-CakwxQvs.mjs";
16
16
  import * as v from "valibot";
17
17
  import { AdobeCommerceHttpClient } from "@adobe/aio-commerce-lib-api";
18
18