@adobe/aio-commerce-lib-app 2.0.0-beta-20260820174436 → 2.0.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 (54) hide show
  1. package/CHANGELOG.md +31 -5
  2. package/dist/cjs/actions/app-config/index.cjs +3 -3
  3. package/dist/cjs/actions/app-config/index.d.cts +3 -4
  4. package/dist/cjs/actions/association/index.d.cts +2 -3
  5. package/dist/cjs/actions/config/index.d.cts +2 -3
  6. package/dist/cjs/actions/installation/index.cjs +14 -7
  7. package/dist/cjs/actions/installation/index.d.cts +5 -5
  8. package/dist/cjs/actions/scope-tree/index.d.cts +2 -3
  9. package/dist/cjs/{app-Cf3EmtUh.d.cts → app-DwSqUkJA.d.cts} +122 -16
  10. package/dist/cjs/commands/index.cjs +91 -51
  11. package/dist/cjs/commands/templates/admin-ui/web-src/.babelrc +14 -0
  12. package/dist/cjs/commands/templates/business-configuration/config.js.template +7 -1
  13. package/dist/cjs/{common-B70f39vI.cjs → common-VSsQEHDv.cjs} +15 -2
  14. package/dist/cjs/config/index.browser.d.cts +1 -1
  15. package/dist/cjs/config/index.node.cjs +4 -3
  16. package/dist/cjs/config/index.node.d.cts +104 -50
  17. package/dist/{es/define-DSU8Kgu0.d.mts → cjs/define-Cc3AaVmY.d.cts} +1 -1
  18. package/dist/{es/index-COLnI6Ok.d.mts → cjs/index-C7dqTDHu.d.cts} +25 -3
  19. package/dist/cjs/index.d.cts +10 -10
  20. package/dist/cjs/{index.node-CXeIG8SS.cjs → index.node-vcOo1rt0.cjs} +1 -1
  21. package/dist/cjs/installation-D72LoQ_1.d.cts +39 -0
  22. package/dist/cjs/management/index.cjs +1 -1
  23. package/dist/cjs/management/index.d.cts +1 -1
  24. package/dist/cjs/{management-BhMdRr8i.cjs → management-Bki3hlxL.cjs} +207 -27
  25. package/dist/cjs/{openapi-DVJUTOXY.cjs → openapi-CAXgKam0.cjs} +317 -390
  26. package/dist/cjs/{validate-Dff0nrqM.cjs → validate-CwWYtRsS.cjs} +33 -2
  27. package/dist/cjs/{webhooks-E1KDx3Yu.cjs → webhooks-Bcq2Qy7q.cjs} +69 -8
  28. package/dist/es/actions/app-config/index.d.mts +3 -4
  29. package/dist/es/actions/app-config/index.mjs +3 -3
  30. package/dist/es/actions/association/index.d.mts +2 -3
  31. package/dist/es/actions/config/index.d.mts +2 -3
  32. package/dist/es/actions/installation/index.d.mts +5 -5
  33. package/dist/es/actions/installation/index.mjs +14 -7
  34. package/dist/es/actions/scope-tree/index.d.mts +2 -3
  35. package/dist/es/{app-Cf3EmtUh.d.mts → app-DwSqUkJA.d.mts} +122 -16
  36. package/dist/es/commands/index.mjs +92 -52
  37. package/dist/es/commands/templates/admin-ui/web-src/.babelrc +14 -0
  38. package/dist/es/commands/templates/business-configuration/config.js.template +7 -1
  39. package/dist/es/{common-BVG9tiX0.mjs → common-dy6NrZt8.mjs} +10 -3
  40. package/dist/es/config/index.browser.d.mts +1 -1
  41. package/dist/es/config/index.node.d.mts +104 -50
  42. package/dist/es/config/index.node.mjs +4 -4
  43. package/dist/{cjs/define-B-_oKmCe.d.cts → es/define-Bq1zw9Lr.d.mts} +1 -1
  44. package/dist/{cjs/index-CkwCGvut.d.cts → es/index-BryddQId.d.mts} +25 -3
  45. package/dist/es/index.d.mts +10 -10
  46. package/dist/es/{index.node-DRTF5Hue.mjs → index.node-CW46zuxW.mjs} +1 -1
  47. package/dist/es/installation-DqVDJ1ur.d.mts +39 -0
  48. package/dist/es/management/index.d.mts +1 -1
  49. package/dist/es/management/index.mjs +1 -1
  50. package/dist/es/{management-BTWQdJNO.mjs → management-DgwAhaaJ.mjs} +207 -27
  51. package/dist/es/{openapi-D18LT0Wp.mjs → openapi-BnR9OUac.mjs} +317 -390
  52. package/dist/es/{validate-8AXMGEwr.mjs → validate-NzW1FQwL.mjs} +29 -4
  53. package/dist/es/{webhooks-BQ8kSN2Z.mjs → webhooks-CHZ1SXxw.mjs} +64 -9
  54. package/package.json +19 -19
package/CHANGELOG.md CHANGED
@@ -1,11 +1,11 @@
1
1
  # @adobe/aio-commerce-lib-app
2
2
 
3
- ## 2.0.0-beta-20260820174436
3
+ ## 2.0.0
4
4
 
5
5
  ### Major Changes
6
6
 
7
7
  - [#637](https://github.com/adobe/aio-commerce-sdk/pull/637) [`9d9888f`](https://github.com/adobe/aio-commerce-sdk/commit/9d9888f95b2cf54d76e33ab75a4599d906f438c4) Thanks [@mariam21arauj](https://github.com/mariam21arauj)! - Remove the deprecated `PUT /config` action endpoint. It overwrote every value for a scope and could not express partial updates or unset a key, which caused data loss when only a subset of keys was meant to change.
8
-
8
+
9
9
  **Migration:** Switch calls from `PUT /config` to `PATCH /config`. The request shape is unchanged (`{ scopeId, config: [{ name, value }] }`), but send only the entries you want to change; `PATCH` leaves unmentioned keys untouched and unsets a key when its value is `null`.
10
10
 
11
11
  ### Minor Changes
@@ -14,6 +14,8 @@
14
14
 
15
15
  - [#627](https://github.com/adobe/aio-commerce-sdk/pull/627) [`e5cbdf1`](https://github.com/adobe/aio-commerce-sdk/commit/e5cbdf14f5bda56430eeeaf495889b8a1a514fe3) Thanks [@obarcelonap](https://github.com/obarcelonap)! - Apply webhook configuration changes during upgrades when fields, conditions, headers, or other mutable settings change without changing webhook identity.
16
16
 
17
+ - [#659](https://github.com/adobe/aio-commerce-sdk/pull/659) [`a1a7ee2`](https://github.com/adobe/aio-commerce-sdk/commit/a1a7ee273a4a0d81e3ed18e3855f1395f7b69e66) Thanks [@jcuerdo](https://github.com/jcuerdo)! - Reconcile custom installation steps during app upgrades, so previously installed steps are not re-run and removed steps are not uninstalled until the app itself is fully uninstalled.
18
+
17
19
  - [#634](https://github.com/adobe/aio-commerce-sdk/pull/634) [`f8f13c1`](https://github.com/adobe/aio-commerce-sdk/commit/f8f13c139d449e7fd96afceddeed33ad103cae89) Thanks [@vinayrao2000](https://github.com/vinayrao2000)! - Reconcile configuration changes to existing Admin UI components during an upgrade. The Admin UI step now detects when a component present in both the installed and target versions has a changed configuration (ACL, labels, descriptions, notifications) and refreshes the extension to apply it, instead of leaving the change unapplied.
18
20
 
19
21
  - [#625](https://github.com/adobe/aio-commerce-sdk/pull/625) [`e0852d1`](https://github.com/adobe/aio-commerce-sdk/commit/e0852d11e1b4f7c23a0c0dfd1d41acf984aeba7a) Thanks [@oshmyheliuk](https://github.com/oshmyheliuk)! - Reconcile Commerce event subscription configuration changes during an app upgrade. When an event that exists in both the installed baseline and the target config changes its fields, rules, priority or HIPAA flag, the upgrade now updates the live subscription instead of leaving it stale.
@@ -26,12 +28,20 @@
26
28
 
27
29
  - [#621](https://github.com/adobe/aio-commerce-sdk/pull/621) [`03c4cc3`](https://github.com/adobe/aio-commerce-sdk/commit/03c4cc3958ccd9425f55c891b352d9804a466269) Thanks [@obarcelonap](https://github.com/obarcelonap)! - Add upgrade planning support for webhook additions and removals: the webhooks step now diffs the baseline snapshot against the target configuration to add newly configured webhooks and remove ones dropped from it.
28
30
 
31
+ - [#650](https://github.com/adobe/aio-commerce-sdk/pull/650) [`f3ea3a6`](https://github.com/adobe/aio-commerce-sdk/commit/f3ea3a64ac59c978f28865274fa282ec991ea529) Thanks [@jcuerdo](https://github.com/jcuerdo)! - Fix uninstallation failing for apps with a `dynamicList` Business Configuration field, caused by revalidating the recorded installation snapshot against a schema that required functions a JSON-serialized snapshot can never have. Uninstallation now validates the recorded config with `validateRecordedCommerceAppConfig`, which accepts a `dynamicList` field without `options`/`default`.
32
+
29
33
  - [#614](https://github.com/adobe/aio-commerce-sdk/pull/614) [`01d5013`](https://github.com/adobe/aio-commerce-sdk/commit/01d5013015cac472220b6c69dcb25f101a682c33) Thanks [@iivvaannxx](https://github.com/iivvaannxx)! - Use `isConfigured` when defining lifecycle steps to identify whether their domain is present in app configuration. The deprecated `when` predicate remains supported for compatibility.
30
34
 
35
+ - [#653](https://github.com/adobe/aio-commerce-sdk/pull/653) [`c04983d`](https://github.com/adobe/aio-commerce-sdk/commit/c04983dfe04926094ab810c070598d5609004a61) Thanks [@oshmyheliuk](https://github.com/oshmyheliuk)! - Add support for declaring custom ACL resources under `adminUi.acl` (flat leaves or one-level groups) that are injected into the Commerce User Roles tree for app-checked permissions. An app declaring only ACL resources does not register a `commerce/backend-ui/2` extension point (in `app.config.yaml`, `install.yaml`, or generated ext.config), since ACL resources reach Commerce through the app-config payload.
36
+
31
37
  ### Patch Changes
32
38
 
39
+ - [#653](https://github.com/adobe/aio-commerce-sdk/pull/653) [`c04983d`](https://github.com/adobe/aio-commerce-sdk/commit/c04983dfe04926094ab810c070598d5609004a61) Thanks [@oshmyheliuk](https://github.com/oshmyheliuk)! - Reject Admin UI ids that would map to the same Commerce permission. Conflicting grid column, mass action, order view button, or custom ACL resource ids now fail config validation instead of silently overwriting one another.
40
+
33
41
  - [#636](https://github.com/adobe/aio-commerce-sdk/pull/636) [`186d245`](https://github.com/adobe/aio-commerce-sdk/commit/186d245015bd405ce5f1ea45d796069ab2f03fac) Thanks [@oshmyheliuk](https://github.com/oshmyheliuk)! - Fix the Admin UI SDK installation step timing out by raising the Commerce HTTP client timeout to 2 minutes, matching the events and webhooks installation steps. Apply the same timeout to the Commerce scope sync endpoint.
34
42
 
43
+ - [#680](https://github.com/adobe/aio-commerce-sdk/pull/680) [`1612b38`](https://github.com/adobe/aio-commerce-sdk/commit/1612b38516e734155c50f545b8f41120f55d5351) Thanks [@iivvaannxx](https://github.com/iivvaannxx)! - Ensure required Admin UI web source support files are present, including an environment-aware Babel configuration that produces compatible production JSX.
44
+
35
45
  - [#639](https://github.com/adobe/aio-commerce-sdk/pull/639) [`74b9a3b`](https://github.com/adobe/aio-commerce-sdk/commit/74b9a3b6274215ba2e97fa56a94e737c62e2b8bb) Thanks [@iivvaannxx](https://github.com/iivvaannxx)! - Ensure CLI commands find the project root before generating files or updating project configuration.
36
46
 
37
47
  - [#642](https://github.com/adobe/aio-commerce-sdk/pull/642) [`79dcda0`](https://github.com/adobe/aio-commerce-sdk/commit/79dcda035d322d47d2e19566ae4a20fd6124682b) Thanks [@iivvaannxx](https://github.com/iivvaannxx)! - Install Node.js type definitions when initializing TypeScript projects.
@@ -39,9 +49,25 @@
39
49
  - [#627](https://github.com/adobe/aio-commerce-sdk/pull/627) [`e5cbdf1`](https://github.com/adobe/aio-commerce-sdk/commit/e5cbdf14f5bda56430eeeaf495889b8a1a514fe3) Thanks [@obarcelonap](https://github.com/obarcelonap)! - Reject webhook configurations with unsupported webhook types or HTTP methods.
40
50
 
41
51
  - [#643](https://github.com/adobe/aio-commerce-sdk/pull/643) [`d13ca97`](https://github.com/adobe/aio-commerce-sdk/commit/d13ca977cbe5c683e0515c24350863a46dc52792) Thanks [@iivvaannxx](https://github.com/iivvaannxx)! - Prune app-owned Commerce webhooks that are absent from the target configuration during upgrades.
42
- - Updated dependencies [[`f012ae0`](https://github.com/adobe/aio-commerce-sdk/commit/f012ae0d8eaac5cac314a62de3902fca842bd936), [`e0852d1`](https://github.com/adobe/aio-commerce-sdk/commit/e0852d11e1b4f7c23a0c0dfd1d41acf984aeba7a)]:
43
- - @adobe/aio-commerce-lib-admin-ui@1.1.0-beta-20260820174436
44
- - @adobe/aio-commerce-lib-events@1.4.0-beta-20260820174436
52
+
53
+ - [#672](https://github.com/adobe/aio-commerce-sdk/pull/672) [`4bed4e3`](https://github.com/adobe/aio-commerce-sdk/commit/4bed4e306f3a889fd1ea81d3f8d3f11609fd2a58) Thanks [@vinayrao2000](https://github.com/vinayrao2000)! - Fix upgrades failing with a 404 "no such event metadata" error when a duplicate event provider exists in the org.
54
+ - Updated dependencies [[`f012ae0`](https://github.com/adobe/aio-commerce-sdk/commit/f012ae0d8eaac5cac314a62de3902fca842bd936), [`c04983d`](https://github.com/adobe/aio-commerce-sdk/commit/c04983dfe04926094ab810c070598d5609004a61), [`e0852d1`](https://github.com/adobe/aio-commerce-sdk/commit/e0852d11e1b4f7c23a0c0dfd1d41acf984aeba7a), [`c04983d`](https://github.com/adobe/aio-commerce-sdk/commit/c04983dfe04926094ab810c070598d5609004a61), [`1837df1`](https://github.com/adobe/aio-commerce-sdk/commit/1837df107bd2b8d2211f77438a07b6e7ee0af03e), [`f3ea3a6`](https://github.com/adobe/aio-commerce-sdk/commit/f3ea3a64ac59c978f28865274fa282ec991ea529)]:
55
+ - @adobe/aio-commerce-lib-admin-ui@1.1.0
56
+ - @adobe/aio-commerce-lib-events@1.4.0
57
+ - @adobe/aio-commerce-lib-api@1.4.0
58
+ - @adobe/aio-commerce-lib-config@1.8.0
59
+ - @adobe/aio-commerce-lib-webhooks@1.2.2
60
+
61
+ ## 1.11.0
62
+
63
+ ### Minor Changes
64
+
65
+ - [#650](https://github.com/adobe/aio-commerce-sdk/pull/650) [`f3ea3a6`](https://github.com/adobe/aio-commerce-sdk/commit/f3ea3a64ac59c978f28865274fa282ec991ea529) Thanks [@jcuerdo](https://github.com/jcuerdo)! - Fix uninstallation failing for apps with a `dynamicList` Business Configuration field, caused by revalidating the recorded installation snapshot against a schema that required functions a JSON-serialized snapshot can never have. Uninstallation now validates the recorded config with `validateRecordedCommerceAppConfig`, which accepts a `dynamicList` field without `options`/`default`.
66
+
67
+ ### Patch Changes
68
+
69
+ - Updated dependencies [[`f3ea3a6`](https://github.com/adobe/aio-commerce-sdk/commit/f3ea3a64ac59c978f28865274fa282ec991ea529)]:
70
+ - @adobe/aio-commerce-lib-config@1.7.0
45
71
 
46
72
  ## 1.10.1
47
73
 
@@ -15,7 +15,7 @@
15
15
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
16
16
  const require_rolldown_runtime = require('../../rolldown-runtime-CDQd2xEI.cjs');
17
17
  const require_environment = require('../../environment-B6533pAY.cjs');
18
- const require_validate = require('../../validate-Dff0nrqM.cjs');
18
+ const require_validate = require('../../validate-CwWYtRsS.cjs');
19
19
  const require_router = require('../../router-CxDTb6r1.cjs');
20
20
  let _adobe_aio_commerce_lib_config = require("@adobe/aio-commerce-lib-config");
21
21
  let valibot = require("valibot");
@@ -29,7 +29,7 @@ let crypto = require("crypto");
29
29
  * Loads the committed OpenAPI spec via dynamic import so it
30
30
  * lands in its own chunk and is not parsed on every cold start.
31
31
  */
32
- const importOpenApi = () => Promise.resolve().then(() => require("../../openapi-DVJUTOXY.cjs"));
32
+ const importOpenApi = () => Promise.resolve().then(() => require("../../openapi-CAXgKam0.cjs"));
33
33
  /** Matches component schema `$ref` strings, capturing the schema name. */
34
34
  const SCHEMA_REF_PATTERN = /"#\/components\/schemas\/(\w+)"/g;
35
35
  /**
@@ -80,7 +80,7 @@ function pruneUnusedTags(spec) {
80
80
  * @param domains - The active config domains.
81
81
  */
82
82
  function getOpenApiCacheKey(domains) {
83
- const input = `2.0.0-beta-20260820174436:${[...domains].sort().join(",")}:3.0.0`;
83
+ const input = `2.0.0:${[...domains].sort().join(",")}:3.0.0`;
84
84
  return (0, crypto.createHash)("sha256").update(input).digest("hex").slice(0, 8);
85
85
  }
86
86
  /** Returns the server URL to be set in the OpenAPI spec, based on the current namespace. */
@@ -13,7 +13,7 @@
13
13
  */
14
14
 
15
15
  import "../../index-DWEigxhy.cjs";
16
- import { n as CommerceAppConfig } from "../../app-Cf3EmtUh.cjs";
16
+ import { n as CommerceAppConfig } from "../../app-DwSqUkJA.cjs";
17
17
  import { RuntimeActionParams } from "@adobe/aio-commerce-lib-core/params";
18
18
  //#region source/actions/app-config/router.d.ts
19
19
  /** The arguments required to create the runtime action for the app-config action. */
@@ -26,6 +26,5 @@ type RuntimeActionFactoryArgs = {
26
26
  * Factory to create the route handler for the `app-config` action.
27
27
  * @param args - The arguments required to create the runtime action.
28
28
  */
29
- declare const appConfigRuntimeAction: (args: RuntimeActionFactoryArgs) => (params: RuntimeActionParams) => Promise<import("@adobe/aio-commerce-lib-core/responses").ActionResponse>;
30
- //#endregion
31
- export { appConfigRuntimeAction };
29
+ export declare const appConfigRuntimeAction: (args: RuntimeActionFactoryArgs) => (params: RuntimeActionParams) => Promise<import("@adobe/aio-commerce-lib-core/responses").ActionResponse>;
30
+ //#endregion
@@ -22,6 +22,5 @@ import { RuntimeActionParams } from "@adobe/aio-commerce-lib-core/params";
22
22
  * and `DELETE /` clears it on unassociation. Runtime actions consume the data
23
23
  * via `getCommerceInstance` / `getCommerceClient` from the root entrypoint.
24
24
  */
25
- declare const associationRuntimeAction: () => (params: RuntimeActionParams) => Promise<import("@adobe/aio-commerce-lib-core/responses").ActionResponse>;
26
- //#endregion
27
- export { associationRuntimeAction };
25
+ export declare const associationRuntimeAction: () => (params: RuntimeActionParams) => Promise<import("@adobe/aio-commerce-lib-core/responses").ActionResponse>;
26
+ //#endregion
@@ -26,6 +26,5 @@ type ConfigActionFactoryArgs = {
26
26
  * Factory to create the route handler for the `config` action.
27
27
  * @param args - The arguments required to create the runtime action.
28
28
  */
29
- declare const configRuntimeAction: (args: ConfigActionFactoryArgs) => (params: RuntimeActionParams) => Promise<import("@adobe/aio-commerce-lib-core/responses").ActionResponse>;
30
- //#endregion
31
- export { configRuntimeAction };
29
+ export declare const configRuntimeAction: (args: ConfigActionFactoryArgs) => (params: RuntimeActionParams) => Promise<import("@adobe/aio-commerce-lib-core/responses").ActionResponse>;
30
+ //#endregion
@@ -16,9 +16,9 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
16
16
  const require_rolldown_runtime = require('../../rolldown-runtime-CDQd2xEI.cjs');
17
17
  const require_repository = require('../../repository-CbceYZqc.cjs');
18
18
  const require_schemas = require('../../schemas-3e49M8zz.cjs');
19
- const require_validate = require('../../validate-Dff0nrqM.cjs');
20
- const require_common = require('../../common-B70f39vI.cjs');
21
- const require_management = require('../../management-BhMdRr8i.cjs');
19
+ const require_validate = require('../../validate-CwWYtRsS.cjs');
20
+ const require_common = require('../../common-VSsQEHDv.cjs');
21
+ const require_management = require('../../management-Bki3hlxL.cjs');
22
22
  const require_router = require('../../router-CxDTb6r1.cjs');
23
23
  let valibot = require("valibot");
24
24
  valibot = require_rolldown_runtime.__toESM(valibot, 1);
@@ -371,11 +371,16 @@ async function startUninstallation({ body, logger, rawParams }) {
371
371
  return (0, _adobe_aio_commerce_lib_core_responses.conflict)("Uninstallation is already in progress. Wait for it to complete.");
372
372
  }
373
373
  const { baselineProvider, stateStore } = await require_common.createLifecyclePersistence();
374
- const baselineAppConfig = (await require_common.getCurrentLifecycleBaseline(stateStore, baselineProvider))?.config;
374
+ const installationSnapshot = await require_common.getCurrentLifecycleBaseline(stateStore, baselineProvider);
375
+ const baselineAppConfig = installationSnapshot?.config;
375
376
  const uninstallConfig = baselineAppConfig ?? rawParams.appConfig;
376
377
  if (!uninstallConfig) return (0, _adobe_aio_commerce_lib_core_responses.internalServerError)("Cannot determine what to uninstall: no recorded lifecycle baseline and no app config was provided.");
377
378
  logger.debug(baselineAppConfig ? "Sourcing uninstallation from recorded lifecycle baseline" : "No recorded lifecycle baseline found; falling back to request config");
378
- const initialState = require_management.createInitialUninstallationState({ config: require_validate.validateCommerceAppConfig(uninstallConfig) });
379
+ const executedCustomInstallationSteps = require_common.getExecutedCustomInstallationSteps(installationSnapshot?.data);
380
+ const initialState = require_management.createInitialUninstallationState({
381
+ config: require_validate.validateRecordedCommerceAppConfig(uninstallConfig),
382
+ executedCustomInstallationSteps
383
+ });
379
384
  logger.debug(`Created initial uninstall state: ${initialState.id}`);
380
385
  await store.put(require_common.getStorageKey(), initialState);
381
386
  const workflowParams = require_common.buildWorkflowParams(body, rawParams);
@@ -387,6 +392,7 @@ async function startUninstallation({ body, logger, rawParams }) {
387
392
  __ow_method: "post",
388
393
  __ow_path: "/uninstallation/execution",
389
394
  appConfig: uninstallConfig,
395
+ executedCustomInstallationSteps,
390
396
  initialState
391
397
  },
392
398
  result: false
@@ -400,16 +406,17 @@ async function startUninstallation({ body, logger, rawParams }) {
400
406
  }
401
407
  /** Runs the uninstallation workflow and clears lifecycle state on success. */
402
408
  async function executeUninstallation({ logger, params }) {
403
- const { initialState, appConfig: rawAppConfig, appData, AIO_COMMERCE_API_BASE_URL } = params;
409
+ const { initialState, appConfig: rawAppConfig, appData, AIO_COMMERCE_API_BASE_URL, executedCustomInstallationSteps = [] } = params;
404
410
  if (!initialState) return (0, _adobe_aio_commerce_lib_core_responses.badRequest)("initialState is required for execution");
405
411
  if (!rawAppConfig) return (0, _adobe_aio_commerce_lib_core_responses.badRequest)("appConfig is required for execution");
406
- const appConfig = require_validate.validateCommerceAppConfig(rawAppConfig);
412
+ const appConfig = require_validate.validateRecordedCommerceAppConfig(rawAppConfig);
407
413
  const store = await require_common.createUninstallationStore();
408
414
  const hooks = require_common.createInstallationHooks(store, (msg) => logger.debug(msg));
409
415
  const installationContext = require_common.buildLifecycleContext(params, appConfig, logger);
410
416
  logger.debug(`Executing uninstallation ${initialState.id} for app "${appData.projectName}" (workspace: "${appData.workspaceName}", commerce: "${AIO_COMMERCE_API_BASE_URL}")`);
411
417
  const result = await require_management.runUninstallation({
412
418
  config: appConfig,
419
+ executedCustomInstallationSteps,
413
420
  hooks,
414
421
  initialState,
415
422
  installationContext
@@ -13,8 +13,8 @@
13
13
  */
14
14
 
15
15
  import "../../index-DWEigxhy.cjs";
16
- import { n as CommerceAppConfig, r as CommerceAppConfigOutputModel } from "../../app-Cf3EmtUh.cjs";
17
- import { J as LifecycleContext } from "../../index-CkwCGvut.cjs";
16
+ import { n as CommerceAppConfig, r as CommerceAppConfigOutputModel } from "../../app-DwSqUkJA.cjs";
17
+ import { J as LifecycleContext } from "../../index-C7dqTDHu.cjs";
18
18
  import { RuntimeActionParams } from "@adobe/aio-commerce-lib-core/params";
19
19
  import "@adobe/aio-commerce-lib-core/responses";
20
20
  //#region source/actions/installation/common.d.ts
@@ -31,11 +31,11 @@ type RuntimeActionFactoryArgs = {
31
31
  * Defines a type-safe custom installation scripts loader.
32
32
  * @param loader - The custom scripts loader implementation.
33
33
  */
34
- declare function defineCustomScriptsLoader(loader: CustomScriptsLoader): CustomScriptsLoader;
34
+ export declare function defineCustomScriptsLoader(loader: CustomScriptsLoader): CustomScriptsLoader;
35
35
  /**
36
36
  * Factory to create the route handler for the `installation` action.
37
37
  * @param args - The arguments required to create the runtime action.
38
38
  */
39
- declare const installationRuntimeAction: (args: RuntimeActionFactoryArgs) => (params: RuntimeActionParams) => Promise<import("@adobe/aio-commerce-lib-core/responses").ActionResponse>;
39
+ export declare const installationRuntimeAction: (args: RuntimeActionFactoryArgs) => (params: RuntimeActionParams) => Promise<import("@adobe/aio-commerce-lib-core/responses").ActionResponse>;
40
40
  //#endregion
41
- export { type CustomScriptsLoader, defineCustomScriptsLoader, installationRuntimeAction };
41
+ export type { CustomScriptsLoader };
@@ -14,6 +14,5 @@
14
14
 
15
15
  //#region source/actions/scope-tree/index.d.ts
16
16
  /** The handler method for the `scope-tree` action. */
17
- declare const scopeTreeRuntimeAction: (args: import("@adobe/aio-commerce-lib-core/params").RuntimeActionParams) => Promise<import("@adobe/aio-commerce-lib-core/responses").ActionResponse>;
18
- //#endregion
19
- export { scopeTreeRuntimeAction };
17
+ export declare const scopeTreeRuntimeAction: (args: import("@adobe/aio-commerce-lib-core/params").RuntimeActionParams) => Promise<import("@adobe/aio-commerce-lib-core/responses").ActionResponse>;
18
+ //#endregion
@@ -17,6 +17,41 @@ import * as v from "valibot";
17
17
  /** The individual validatable domains of the app config. */
18
18
  declare const CommerceAppConfigSchemas: {
19
19
  readonly adminUi: v.ObjectSchema<{
20
+ readonly acl: v.OptionalSchema<v.SchemaWithPipe<readonly [v.ArraySchema<v.StrictObjectSchema<{
21
+ readonly children: v.OptionalSchema<v.SchemaWithPipe<readonly [v.ArraySchema<v.StrictObjectSchema<{
22
+ readonly id: v.SchemaWithPipe<readonly [v.SchemaWithPipe<readonly [v.StringSchema<`Expected a string value for '${string}'`>, v.NonEmptyAction<string, `The value of "${string}" must not be empty`>]>, v.RegexAction<string, "ACL resource ID may contain only lowercase letters, digits, and \"_\"">]>;
23
+ readonly label: v.SchemaWithPipe<readonly [v.SchemaWithPipe<readonly [v.StringSchema<`Expected a string value for '${string}'`>, v.NonEmptyAction<string, `The value of "${string}" must not be empty`>]>, v.MinLengthAction<string, 3, "acl resource label must be at least 3 characters">, v.MaxLengthAction<string, 50, "acl resource label must be at most 50 characters">]>;
24
+ }, undefined>, undefined>, v.MinLengthAction<{
25
+ id: string;
26
+ label: string;
27
+ }[], 1, "An ACL resource group must contain at least one child">, v.CheckAction<{
28
+ id: string;
29
+ label: string;
30
+ }[], "Child ACL resource ids must be unique within a group.">]>, undefined>;
31
+ readonly id: v.SchemaWithPipe<readonly [v.SchemaWithPipe<readonly [v.StringSchema<`Expected a string value for '${string}'`>, v.NonEmptyAction<string, `The value of "${string}" must not be empty`>]>, v.RegexAction<string, "ACL resource ID may contain only lowercase letters, digits, and \"_\"">]>;
32
+ readonly label: v.SchemaWithPipe<readonly [v.SchemaWithPipe<readonly [v.StringSchema<`Expected a string value for '${string}'`>, v.NonEmptyAction<string, `The value of "${string}" must not be empty`>]>, v.MinLengthAction<string, 3, "acl resource label must be at least 3 characters">, v.MaxLengthAction<string, 50, "acl resource label must be at most 50 characters">]>;
33
+ }, undefined>, undefined>, v.MinLengthAction<{
34
+ children?: {
35
+ id: string;
36
+ label: string;
37
+ }[] | undefined;
38
+ id: string;
39
+ label: string;
40
+ }[], 1, "At least one ACL resource is required when acl is defined">, v.CheckAction<{
41
+ children?: {
42
+ id: string;
43
+ label: string;
44
+ }[] | undefined;
45
+ id: string;
46
+ label: string;
47
+ }[], "Top-level ACL resource ids must be unique.">, v.CheckAction<{
48
+ children?: {
49
+ id: string;
50
+ label: string;
51
+ }[] | undefined;
52
+ id: string;
53
+ label: string;
54
+ }[], "Custom ACL resource ids must stay unique after Commerce derivation: a top-level resource id must not equal a group's \"<group>_<child>\" combination.">]>, undefined>;
20
55
  readonly customer: v.OptionalSchema<v.ObjectSchema<{
21
56
  readonly gridColumns: v.OptionalSchema<v.ObjectSchema<{
22
57
  readonly columns: v.SchemaWithPipe<readonly [v.ArraySchema<v.StrictObjectSchema<{
@@ -31,7 +66,13 @@ declare const CommerceAppConfigSchemas: {
31
66
  id: string;
32
67
  label: string;
33
68
  type: "string" | "boolean" | "date" | "datetime" | "float" | "integer";
34
- }[], 1, "At least one grid column is required">]>;
69
+ }[], 1, "At least one grid column is required">, v.CheckAction<{
70
+ aclProtected?: boolean | undefined;
71
+ align: "left" | "right" | "center";
72
+ id: string;
73
+ label: string;
74
+ type: "string" | "boolean" | "date" | "datetime" | "float" | "integer";
75
+ }[], "Grid column ids must be unique after Commerce id sanitization.">]>;
35
76
  readonly description: v.SchemaWithPipe<readonly [v.StringSchema<`Expected a string value for '${string}'`>, v.NonEmptyAction<string, `The value of "${string}" must not be empty`>]>;
36
77
  readonly label: v.SchemaWithPipe<readonly [v.StringSchema<`Expected a string value for '${string}'`>, v.NonEmptyAction<string, `The value of "${string}" must not be empty`>]>;
37
78
  readonly runtimeAction: v.SchemaWithPipe<readonly [v.StringSchema<`Expected a string value for '${string}'`>, v.NonEmptyAction<string, `The value of "${string}" must not be empty`>]>;
@@ -108,7 +149,7 @@ declare const CommerceAppConfigSchemas: {
108
149
  } | undefined;
109
150
  selectionLimit?: number | undefined;
110
151
  title?: string | undefined;
111
- })[], "Mass action ids must be unique.">]>, undefined>;
152
+ })[], "Mass action ids must be unique after Commerce id sanitization.">]>, undefined>;
112
153
  }, undefined>, undefined>;
113
154
  readonly menu: v.OptionalSchema<v.ObjectSchema<{
114
155
  readonly aclProtected: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
@@ -133,7 +174,13 @@ declare const CommerceAppConfigSchemas: {
133
174
  id: string;
134
175
  label: string;
135
176
  type: "string" | "boolean" | "date" | "datetime" | "float" | "integer";
136
- }[], 1, "At least one grid column is required">]>;
177
+ }[], 1, "At least one grid column is required">, v.CheckAction<{
178
+ aclProtected?: boolean | undefined;
179
+ align: "left" | "right" | "center";
180
+ id: string;
181
+ label: string;
182
+ type: "string" | "boolean" | "date" | "datetime" | "float" | "integer";
183
+ }[], "Grid column ids must be unique after Commerce id sanitization.">]>;
137
184
  readonly description: v.SchemaWithPipe<readonly [v.StringSchema<`Expected a string value for '${string}'`>, v.NonEmptyAction<string, `The value of "${string}" must not be empty`>]>;
138
185
  readonly label: v.SchemaWithPipe<readonly [v.StringSchema<`Expected a string value for '${string}'`>, v.NonEmptyAction<string, `The value of "${string}" must not be empty`>]>;
139
186
  readonly runtimeAction: v.SchemaWithPipe<readonly [v.StringSchema<`Expected a string value for '${string}'`>, v.NonEmptyAction<string, `The value of "${string}" must not be empty`>]>;
@@ -210,7 +257,7 @@ declare const CommerceAppConfigSchemas: {
210
257
  } | undefined;
211
258
  selectionLimit?: number | undefined;
212
259
  title?: string | undefined;
213
- })[], "Mass action ids must be unique.">]>, undefined>;
260
+ })[], "Mass action ids must be unique after Commerce id sanitization.">]>, undefined>;
214
261
  readonly viewButtons: v.OptionalSchema<v.SchemaWithPipe<readonly [v.ArraySchema<v.VariantSchema<"type", [v.StrictObjectSchema<{
215
262
  readonly aclProtected: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
216
263
  readonly confirm: v.OptionalSchema<v.ObjectSchema<{
@@ -283,7 +330,7 @@ declare const CommerceAppConfigSchemas: {
283
330
  sortOrder?: number | undefined;
284
331
  timeout?: number | undefined;
285
332
  type: "worker";
286
- })[], "Order view button ids must be unique.">]>, undefined>;
333
+ })[], "Order view button ids must be unique after Commerce id sanitization.">]>, undefined>;
287
334
  }, undefined>, undefined>;
288
335
  readonly product: v.OptionalSchema<v.ObjectSchema<{
289
336
  readonly gridColumns: v.OptionalSchema<v.ObjectSchema<{
@@ -299,7 +346,13 @@ declare const CommerceAppConfigSchemas: {
299
346
  id: string;
300
347
  label: string;
301
348
  type: "string" | "boolean" | "date" | "datetime" | "float" | "integer";
302
- }[], 1, "At least one grid column is required">]>;
349
+ }[], 1, "At least one grid column is required">, v.CheckAction<{
350
+ aclProtected?: boolean | undefined;
351
+ align: "left" | "right" | "center";
352
+ id: string;
353
+ label: string;
354
+ type: "string" | "boolean" | "date" | "datetime" | "float" | "integer";
355
+ }[], "Grid column ids must be unique after Commerce id sanitization.">]>;
303
356
  readonly description: v.SchemaWithPipe<readonly [v.StringSchema<`Expected a string value for '${string}'`>, v.NonEmptyAction<string, `The value of "${string}" must not be empty`>]>;
304
357
  readonly label: v.SchemaWithPipe<readonly [v.StringSchema<`Expected a string value for '${string}'`>, v.NonEmptyAction<string, `The value of "${string}" must not be empty`>]>;
305
358
  readonly runtimeAction: v.SchemaWithPipe<readonly [v.StringSchema<`Expected a string value for '${string}'`>, v.NonEmptyAction<string, `The value of "${string}" must not be empty`>]>;
@@ -376,7 +429,7 @@ declare const CommerceAppConfigSchemas: {
376
429
  } | undefined;
377
430
  selectionLimit?: number | undefined;
378
431
  title?: string | undefined;
379
- })[], "Mass action ids must be unique.">]>, undefined>;
432
+ })[], "Mass action ids must be unique after Commerce id sanitization.">]>, undefined>;
380
433
  }, undefined>, undefined>;
381
434
  }, undefined>;
382
435
  readonly businessConfig: v.ObjectSchema<{
@@ -1091,7 +1144,7 @@ declare const CommerceAppConfigSchemas: {
1091
1144
  readonly description: v.SchemaWithPipe<readonly [v.SchemaWithPipe<readonly [v.StringSchema<`Expected a string for the ${string}`>, v.NonEmptyAction<string, `The ${string} must not be empty`>]>, v.MaxLengthAction<string, 255, "The metadata description must not be longer than 255 characters">]>;
1092
1145
  readonly displayName: v.SchemaWithPipe<readonly [v.SchemaWithPipe<readonly [v.StringSchema<`Expected a string for the ${string}`>, v.NonEmptyAction<string, `The ${string} must not be empty`>]>, v.MaxLengthAction<string, 50, "The application display name must not be longer than 50 characters">]>;
1093
1146
  readonly id: v.SchemaWithPipe<readonly [v.SchemaWithPipe<readonly [v.StringSchema<`Expected a string value for '${string}'`>, v.RegexAction<string, `Only alphanumeric characters and hyphens are allowed in string value of "${string}"${string}`>]>, v.MaxLengthAction<string, 100, "The application id must not be longer than 100 characters">]>;
1094
- readonly upgradeMode: v.OptionalSchema<v.PicklistSchema<["auto", "manual"], undefined>, "auto">;
1147
+ readonly upgradeMode: v.OptionalSchema<v.PicklistSchema<["auto", "manual"], undefined>, "manual">;
1095
1148
  readonly version: v.SchemaWithPipe<readonly [v.SchemaWithPipe<readonly [v.StringSchema<`Expected a string for the ${string}`>, v.NonEmptyAction<string, `The ${string} must not be empty`>]>, v.RegexAction<string, "The version must follow semantic versioning (semver) format: Major.Minor.Patch (e.g., '1.0.0', '2.3.1')">]>;
1096
1149
  }, undefined>;
1097
1150
  readonly webhooks: v.OptionalSchema<v.SchemaWithPipe<readonly [v.ArraySchema<v.UnionSchema<[v.ObjectSchema<{
@@ -1248,6 +1301,41 @@ declare function hasConfigDomain(config: AnyCommerceAppConfig, domain: CommerceA
1248
1301
  /** The schema used to validate the commerce app config file. */
1249
1302
  declare const CommerceAppConfigSchema: v.LooseObjectSchema<{
1250
1303
  readonly adminUi: v.OptionalSchema<v.ObjectSchema<{
1304
+ readonly acl: v.OptionalSchema<v.SchemaWithPipe<readonly [v.ArraySchema<v.StrictObjectSchema<{
1305
+ readonly children: v.OptionalSchema<v.SchemaWithPipe<readonly [v.ArraySchema<v.StrictObjectSchema<{
1306
+ readonly id: v.SchemaWithPipe<readonly [v.SchemaWithPipe<readonly [v.StringSchema<`Expected a string value for '${string}'`>, v.NonEmptyAction<string, `The value of "${string}" must not be empty`>]>, v.RegexAction<string, "ACL resource ID may contain only lowercase letters, digits, and \"_\"">]>;
1307
+ readonly label: v.SchemaWithPipe<readonly [v.SchemaWithPipe<readonly [v.StringSchema<`Expected a string value for '${string}'`>, v.NonEmptyAction<string, `The value of "${string}" must not be empty`>]>, v.MinLengthAction<string, 3, "acl resource label must be at least 3 characters">, v.MaxLengthAction<string, 50, "acl resource label must be at most 50 characters">]>;
1308
+ }, undefined>, undefined>, v.MinLengthAction<{
1309
+ id: string;
1310
+ label: string;
1311
+ }[], 1, "An ACL resource group must contain at least one child">, v.CheckAction<{
1312
+ id: string;
1313
+ label: string;
1314
+ }[], "Child ACL resource ids must be unique within a group.">]>, undefined>;
1315
+ readonly id: v.SchemaWithPipe<readonly [v.SchemaWithPipe<readonly [v.StringSchema<`Expected a string value for '${string}'`>, v.NonEmptyAction<string, `The value of "${string}" must not be empty`>]>, v.RegexAction<string, "ACL resource ID may contain only lowercase letters, digits, and \"_\"">]>;
1316
+ readonly label: v.SchemaWithPipe<readonly [v.SchemaWithPipe<readonly [v.StringSchema<`Expected a string value for '${string}'`>, v.NonEmptyAction<string, `The value of "${string}" must not be empty`>]>, v.MinLengthAction<string, 3, "acl resource label must be at least 3 characters">, v.MaxLengthAction<string, 50, "acl resource label must be at most 50 characters">]>;
1317
+ }, undefined>, undefined>, v.MinLengthAction<{
1318
+ children?: {
1319
+ id: string;
1320
+ label: string;
1321
+ }[] | undefined;
1322
+ id: string;
1323
+ label: string;
1324
+ }[], 1, "At least one ACL resource is required when acl is defined">, v.CheckAction<{
1325
+ children?: {
1326
+ id: string;
1327
+ label: string;
1328
+ }[] | undefined;
1329
+ id: string;
1330
+ label: string;
1331
+ }[], "Top-level ACL resource ids must be unique.">, v.CheckAction<{
1332
+ children?: {
1333
+ id: string;
1334
+ label: string;
1335
+ }[] | undefined;
1336
+ id: string;
1337
+ label: string;
1338
+ }[], "Custom ACL resource ids must stay unique after Commerce derivation: a top-level resource id must not equal a group's \"<group>_<child>\" combination.">]>, undefined>;
1251
1339
  readonly customer: v.OptionalSchema<v.ObjectSchema<{
1252
1340
  readonly gridColumns: v.OptionalSchema<v.ObjectSchema<{
1253
1341
  readonly columns: v.SchemaWithPipe<readonly [v.ArraySchema<v.StrictObjectSchema<{
@@ -1262,7 +1350,13 @@ declare const CommerceAppConfigSchema: v.LooseObjectSchema<{
1262
1350
  id: string;
1263
1351
  label: string;
1264
1352
  type: "string" | "boolean" | "date" | "datetime" | "float" | "integer";
1265
- }[], 1, "At least one grid column is required">]>;
1353
+ }[], 1, "At least one grid column is required">, v.CheckAction<{
1354
+ aclProtected?: boolean | undefined;
1355
+ align: "left" | "right" | "center";
1356
+ id: string;
1357
+ label: string;
1358
+ type: "string" | "boolean" | "date" | "datetime" | "float" | "integer";
1359
+ }[], "Grid column ids must be unique after Commerce id sanitization.">]>;
1266
1360
  readonly description: v.SchemaWithPipe<readonly [v.StringSchema<`Expected a string value for '${string}'`>, v.NonEmptyAction<string, `The value of "${string}" must not be empty`>]>;
1267
1361
  readonly label: v.SchemaWithPipe<readonly [v.StringSchema<`Expected a string value for '${string}'`>, v.NonEmptyAction<string, `The value of "${string}" must not be empty`>]>;
1268
1362
  readonly runtimeAction: v.SchemaWithPipe<readonly [v.StringSchema<`Expected a string value for '${string}'`>, v.NonEmptyAction<string, `The value of "${string}" must not be empty`>]>;
@@ -1339,7 +1433,7 @@ declare const CommerceAppConfigSchema: v.LooseObjectSchema<{
1339
1433
  } | undefined;
1340
1434
  selectionLimit?: number | undefined;
1341
1435
  title?: string | undefined;
1342
- })[], "Mass action ids must be unique.">]>, undefined>;
1436
+ })[], "Mass action ids must be unique after Commerce id sanitization.">]>, undefined>;
1343
1437
  }, undefined>, undefined>;
1344
1438
  readonly menu: v.OptionalSchema<v.ObjectSchema<{
1345
1439
  readonly aclProtected: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
@@ -1364,7 +1458,13 @@ declare const CommerceAppConfigSchema: v.LooseObjectSchema<{
1364
1458
  id: string;
1365
1459
  label: string;
1366
1460
  type: "string" | "boolean" | "date" | "datetime" | "float" | "integer";
1367
- }[], 1, "At least one grid column is required">]>;
1461
+ }[], 1, "At least one grid column is required">, v.CheckAction<{
1462
+ aclProtected?: boolean | undefined;
1463
+ align: "left" | "right" | "center";
1464
+ id: string;
1465
+ label: string;
1466
+ type: "string" | "boolean" | "date" | "datetime" | "float" | "integer";
1467
+ }[], "Grid column ids must be unique after Commerce id sanitization.">]>;
1368
1468
  readonly description: v.SchemaWithPipe<readonly [v.StringSchema<`Expected a string value for '${string}'`>, v.NonEmptyAction<string, `The value of "${string}" must not be empty`>]>;
1369
1469
  readonly label: v.SchemaWithPipe<readonly [v.StringSchema<`Expected a string value for '${string}'`>, v.NonEmptyAction<string, `The value of "${string}" must not be empty`>]>;
1370
1470
  readonly runtimeAction: v.SchemaWithPipe<readonly [v.StringSchema<`Expected a string value for '${string}'`>, v.NonEmptyAction<string, `The value of "${string}" must not be empty`>]>;
@@ -1441,7 +1541,7 @@ declare const CommerceAppConfigSchema: v.LooseObjectSchema<{
1441
1541
  } | undefined;
1442
1542
  selectionLimit?: number | undefined;
1443
1543
  title?: string | undefined;
1444
- })[], "Mass action ids must be unique.">]>, undefined>;
1544
+ })[], "Mass action ids must be unique after Commerce id sanitization.">]>, undefined>;
1445
1545
  readonly viewButtons: v.OptionalSchema<v.SchemaWithPipe<readonly [v.ArraySchema<v.VariantSchema<"type", [v.StrictObjectSchema<{
1446
1546
  readonly aclProtected: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
1447
1547
  readonly confirm: v.OptionalSchema<v.ObjectSchema<{
@@ -1514,7 +1614,7 @@ declare const CommerceAppConfigSchema: v.LooseObjectSchema<{
1514
1614
  sortOrder?: number | undefined;
1515
1615
  timeout?: number | undefined;
1516
1616
  type: "worker";
1517
- })[], "Order view button ids must be unique.">]>, undefined>;
1617
+ })[], "Order view button ids must be unique after Commerce id sanitization.">]>, undefined>;
1518
1618
  }, undefined>, undefined>;
1519
1619
  readonly product: v.OptionalSchema<v.ObjectSchema<{
1520
1620
  readonly gridColumns: v.OptionalSchema<v.ObjectSchema<{
@@ -1530,7 +1630,13 @@ declare const CommerceAppConfigSchema: v.LooseObjectSchema<{
1530
1630
  id: string;
1531
1631
  label: string;
1532
1632
  type: "string" | "boolean" | "date" | "datetime" | "float" | "integer";
1533
- }[], 1, "At least one grid column is required">]>;
1633
+ }[], 1, "At least one grid column is required">, v.CheckAction<{
1634
+ aclProtected?: boolean | undefined;
1635
+ align: "left" | "right" | "center";
1636
+ id: string;
1637
+ label: string;
1638
+ type: "string" | "boolean" | "date" | "datetime" | "float" | "integer";
1639
+ }[], "Grid column ids must be unique after Commerce id sanitization.">]>;
1534
1640
  readonly description: v.SchemaWithPipe<readonly [v.StringSchema<`Expected a string value for '${string}'`>, v.NonEmptyAction<string, `The value of "${string}" must not be empty`>]>;
1535
1641
  readonly label: v.SchemaWithPipe<readonly [v.StringSchema<`Expected a string value for '${string}'`>, v.NonEmptyAction<string, `The value of "${string}" must not be empty`>]>;
1536
1642
  readonly runtimeAction: v.SchemaWithPipe<readonly [v.StringSchema<`Expected a string value for '${string}'`>, v.NonEmptyAction<string, `The value of "${string}" must not be empty`>]>;
@@ -1607,7 +1713,7 @@ declare const CommerceAppConfigSchema: v.LooseObjectSchema<{
1607
1713
  } | undefined;
1608
1714
  selectionLimit?: number | undefined;
1609
1715
  title?: string | undefined;
1610
- })[], "Mass action ids must be unique.">]>, undefined>;
1716
+ })[], "Mass action ids must be unique after Commerce id sanitization.">]>, undefined>;
1611
1717
  }, undefined>, undefined>;
1612
1718
  }, undefined>, undefined>;
1613
1719
  readonly businessConfig: v.OptionalSchema<v.ObjectSchema<{
@@ -1975,7 +2081,7 @@ declare const CommerceAppConfigSchema: v.LooseObjectSchema<{
1975
2081
  readonly description: v.SchemaWithPipe<readonly [v.SchemaWithPipe<readonly [v.StringSchema<`Expected a string for the ${string}`>, v.NonEmptyAction<string, `The ${string} must not be empty`>]>, v.MaxLengthAction<string, 255, "The metadata description must not be longer than 255 characters">]>;
1976
2082
  readonly displayName: v.SchemaWithPipe<readonly [v.SchemaWithPipe<readonly [v.StringSchema<`Expected a string for the ${string}`>, v.NonEmptyAction<string, `The ${string} must not be empty`>]>, v.MaxLengthAction<string, 50, "The application display name must not be longer than 50 characters">]>;
1977
2083
  readonly id: v.SchemaWithPipe<readonly [v.SchemaWithPipe<readonly [v.StringSchema<`Expected a string value for '${string}'`>, v.RegexAction<string, `Only alphanumeric characters and hyphens are allowed in string value of "${string}"${string}`>]>, v.MaxLengthAction<string, 100, "The application id must not be longer than 100 characters">]>;
1978
- readonly upgradeMode: v.OptionalSchema<v.PicklistSchema<["auto", "manual"], undefined>, "auto">;
2084
+ readonly upgradeMode: v.OptionalSchema<v.PicklistSchema<["auto", "manual"], undefined>, "manual">;
1979
2085
  readonly version: v.SchemaWithPipe<readonly [v.SchemaWithPipe<readonly [v.StringSchema<`Expected a string for the ${string}`>, v.NonEmptyAction<string, `The ${string} must not be empty`>]>, v.RegexAction<string, "The version must follow semantic versioning (semver) format: Major.Minor.Patch (e.g., '1.0.0', '2.3.1')">]>;
1980
2086
  }, undefined>;
1981
2087
  readonly webhooks: v.OptionalSchema<v.OptionalSchema<v.SchemaWithPipe<readonly [v.ArraySchema<v.UnionSchema<[v.ObjectSchema<{