@adobe/aio-commerce-lib-app 1.9.0 → 1.10.0-beta-20260805105734

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 (56) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/README.md +1 -1
  3. package/dist/cjs/actions/app-config/index.cjs +6 -6
  4. package/dist/cjs/actions/app-config/index.d.cts +1 -1
  5. package/dist/cjs/actions/association/index.cjs +2 -2
  6. package/dist/cjs/actions/config/index.cjs +6 -5
  7. package/dist/cjs/actions/installation/index.cjs +13 -5
  8. package/dist/cjs/actions/installation/index.d.cts +9 -3
  9. package/dist/cjs/actions/scope-tree/index.cjs +8 -6
  10. package/dist/cjs/{app-e4bCHpek.d.cts → app-CSqkACEm.d.cts} +3 -3
  11. package/dist/cjs/commands/index.cjs +384 -242
  12. package/dist/cjs/commands/templates/app-management/custom-scripts.js.template +10 -8
  13. package/dist/cjs/commands/templates/typescript/webpack-config.cjs +37 -0
  14. package/dist/cjs/config/index.browser.cjs +1 -1
  15. package/dist/cjs/config/index.browser.d.cts +1 -1
  16. package/dist/cjs/config/index.node.cjs +5 -4
  17. package/dist/cjs/config/index.node.d.cts +11 -6
  18. package/dist/cjs/{define-B__VyRtO.d.cts → define-BuploXfU.d.cts} +1 -1
  19. package/dist/cjs/{define-hlcQw7Cv.cjs → define-C-Xq1pCa.cjs} +0 -1
  20. package/dist/cjs/{environment-B7EnozSg.cjs → environment-B6533pAY.cjs} +1 -1
  21. package/dist/cjs/{index-Ds7AyoNv.d.cts → index-NxK_-lg1.d.cts} +1 -1
  22. package/dist/cjs/{index.node-Bv_FUgST.cjs → index.node-BDMqlp90.cjs} +85 -12
  23. package/dist/cjs/{logging-udPuAJPt.cjs → logging-QTsrSwPc.cjs} +1 -1
  24. package/dist/cjs/management/index.cjs +1 -1
  25. package/dist/cjs/management/index.d.cts +1 -1
  26. package/dist/cjs/{management-DmH7fVxy.cjs → management-BeVfzKuc.cjs} +25 -16
  27. package/dist/cjs/{openapi-BzRN5Lc6.cjs → openapi-BwlVkeez.cjs} +0 -1
  28. package/dist/cjs/{rolldown-runtime-Cozy-1ZF.cjs → rolldown-runtime-CDQd2xEI.cjs} +1 -2
  29. package/dist/cjs/{router-hA_Y9gZ1.cjs → router-CxDTb6r1.cjs} +3 -2
  30. package/dist/cjs/{schemas-mLxMh_ko.cjs → schemas-3e49M8zz.cjs} +1 -1
  31. package/dist/cjs/{validate-Dt0Fdj1L.cjs → validate-C6424wM6.cjs} +3 -3
  32. package/dist/cjs/{webhooks-CrHGA-sO.cjs → webhooks-uYZZmgTg.cjs} +6 -6
  33. package/dist/es/actions/app-config/index.d.mts +1 -1
  34. package/dist/es/actions/app-config/index.mjs +3 -3
  35. package/dist/es/actions/association/index.mjs +1 -1
  36. package/dist/es/actions/config/index.mjs +3 -2
  37. package/dist/es/actions/installation/index.d.mts +9 -3
  38. package/dist/es/actions/installation/index.mjs +11 -4
  39. package/dist/es/actions/scope-tree/index.mjs +5 -3
  40. package/dist/es/{app-e4bCHpek.d.mts → app-CSqkACEm.d.mts} +3 -3
  41. package/dist/es/commands/index.mjs +382 -240
  42. package/dist/es/commands/templates/app-management/custom-scripts.js.template +10 -8
  43. package/dist/es/commands/templates/typescript/webpack-config.cjs +37 -0
  44. package/dist/es/config/index.browser.d.mts +1 -1
  45. package/dist/es/config/index.node.d.mts +11 -6
  46. package/dist/es/config/index.node.mjs +4 -4
  47. package/dist/es/{define-BEY_Q6rS.d.mts → define-DzMn3tWf.d.mts} +1 -1
  48. package/dist/es/{index-Dsg4LZde.d.mts → index-DsHq4q57.d.mts} +1 -1
  49. package/dist/es/{index.node-DsJ0QRGh.mjs → index.node--IcDg8wI.mjs} +61 -12
  50. package/dist/es/management/index.d.mts +1 -1
  51. package/dist/es/management/index.mjs +1 -1
  52. package/dist/es/{management-BpFkwoig.mjs → management-CfYDBXqP.mjs} +22 -13
  53. package/dist/es/{router-B_h0cvjc.mjs → router-BshIPAR1.mjs} +2 -1
  54. package/dist/es/{validate-yqa8uIyb.mjs → validate-B4S4D4NW.mjs} +1 -1
  55. package/dist/es/{webhooks-CVbZOxYS.mjs → webhooks-DsMMtG05.mjs} +4 -4
  56. package/package.json +23 -8
package/CHANGELOG.md CHANGED
@@ -1,5 +1,26 @@
1
1
  # @adobe/aio-commerce-lib-app
2
2
 
3
+ ## 1.10.0-beta-20260805105734
4
+ ### Minor Changes
5
+
6
+
7
+
8
+ - [#606](https://github.com/adobe/aio-commerce-sdk/pull/606) [`a18a250`](https://github.com/adobe/aio-commerce-sdk/commit/a18a2506b9d6fafb0b96ca8b7960208e51546dc3) Thanks [@iivvaannxx](https://github.com/iivvaannxx)! - Custom installation step scripts can now be TypeScript (`.ts`) files, not just JavaScript.
9
+
10
+
11
+
12
+ - [#606](https://github.com/adobe/aio-commerce-sdk/pull/606) [`a18a250`](https://github.com/adobe/aio-commerce-sdk/commit/a18a2506b9d6fafb0b96ca8b7960208e51546dc3) Thanks [@iivvaannxx](https://github.com/iivvaannxx)! - Add TypeScript project scaffolding and support TypeScript Commerce configuration in generated Runtime actions.
13
+
14
+
15
+ ### Patch Changes
16
+
17
+ - Updated dependencies []:
18
+ - @adobe/aio-commerce-lib-admin-ui@1.0.0
19
+ - @adobe/aio-commerce-lib-auth@1.1.2
20
+ - @adobe/aio-commerce-lib-config@1.6.0
21
+ - @adobe/aio-commerce-lib-events@1.3.0
22
+ - @adobe/aio-commerce-lib-webhooks@1.2.0
23
+
3
24
  ## 1.9.0
4
25
 
5
26
  ### Minor Changes
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  App configuration management library for Adobe Commerce applications.
4
4
 
5
- This library provides tools for defining, validating, and managing configurations for Adobe Commerce applications. It defines the configuration schema, provides validation, and supports multiple configuration file formats with built-in TypeScript support.
5
+ This library provides tools for defining, validating, and managing configurations for Adobe Commerce applications. It defines the configuration schema, provides validation, and can scaffold App Builder projects with TypeScript configuration support, build configuration, and type checking.
6
6
 
7
7
  ## Installation
8
8
 
@@ -13,10 +13,10 @@
13
13
  */
14
14
 
15
15
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
16
- const require_rolldown_runtime = require('../../rolldown-runtime-Cozy-1ZF.cjs');
17
- const require_environment = require('../../environment-B7EnozSg.cjs');
18
- const require_validate = require('../../validate-Dt0Fdj1L.cjs');
19
- const require_router = require('../../router-hA_Y9gZ1.cjs');
16
+ const require_rolldown_runtime = require('../../rolldown-runtime-CDQd2xEI.cjs');
17
+ const require_environment = require('../../environment-B6533pAY.cjs');
18
+ const require_validate = require('../../validate-C6424wM6.cjs');
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");
22
22
  valibot = require_rolldown_runtime.__toESM(valibot, 1);
@@ -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-BzRN5Lc6.cjs"));
32
+ const importOpenApi = () => Promise.resolve().then(() => require("../../openapi-BwlVkeez.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 = `1.9.0:${[...domains].sort().join(",")}:2.0.0`;
83
+ const input = `1.10.0-beta-20260805105734:${[...domains].sort().join(",")}:2.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-e4bCHpek.cjs";
16
+ import { n as CommerceAppConfig } from "../../app-CSqkACEm.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. */
@@ -13,9 +13,9 @@
13
13
  */
14
14
 
15
15
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
16
- const require_rolldown_runtime = require('../../rolldown-runtime-Cozy-1ZF.cjs');
16
+ const require_rolldown_runtime = require('../../rolldown-runtime-CDQd2xEI.cjs');
17
17
  const require_repository = require('../../repository-CbceYZqc.cjs');
18
- const require_router = require('../../router-hA_Y9gZ1.cjs');
18
+ const require_router = require('../../router-CxDTb6r1.cjs');
19
19
  let valibot = require("valibot");
20
20
  valibot = require_rolldown_runtime.__toESM(valibot, 1);
21
21
  let _adobe_aio_commerce_lib_core_commerce = require("@adobe/aio-commerce-lib-core/commerce");
@@ -13,10 +13,10 @@
13
13
  */
14
14
 
15
15
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
16
- const require_rolldown_runtime = require('../../rolldown-runtime-Cozy-1ZF.cjs');
17
- const require_schemas = require('../../schemas-mLxMh_ko.cjs');
18
- const require_environment = require('../../environment-B7EnozSg.cjs');
19
- const require_router = require('../../router-hA_Y9gZ1.cjs');
16
+ const require_rolldown_runtime = require('../../rolldown-runtime-CDQd2xEI.cjs');
17
+ const require_schemas = require('../../schemas-3e49M8zz.cjs');
18
+ const require_environment = require('../../environment-B6533pAY.cjs');
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");
22
22
  valibot = require_rolldown_runtime.__toESM(valibot, 1);
@@ -118,7 +118,8 @@ router.put("/", {
118
118
  params: rawParams,
119
119
  schema: rawParams.configSchema
120
120
  });
121
- const result = await (0, _adobe_aio_commerce_lib_config.setConfiguration)({ config: config.filter((item) => item.value !== MASKED_PASSWORD_VALUE) }, (0, _adobe_aio_commerce_lib_config.byScopeId)(scopeId), { encryptionKey: rawParams.AIO_COMMERCE_CONFIG_ENCRYPTION_KEY });
121
+ const updatedFields = config.filter((item) => item.value !== MASKED_PASSWORD_VALUE);
122
+ const result = await (0, _adobe_aio_commerce_lib_config.setConfiguration)({ config: updatedFields }, (0, _adobe_aio_commerce_lib_config.byScopeId)(scopeId), { encryptionKey: rawParams.AIO_COMMERCE_CONFIG_ENCRYPTION_KEY });
122
123
  result.config = filterPasswordFields(configSchema, result.config);
123
124
  return (0, _adobe_aio_commerce_lib_core_responses.ok)({
124
125
  body: result,
@@ -13,11 +13,11 @@
13
13
  */
14
14
 
15
15
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
16
- const require_rolldown_runtime = require('../../rolldown-runtime-Cozy-1ZF.cjs');
17
- const require_schemas = require('../../schemas-mLxMh_ko.cjs');
18
- const require_validate = require('../../validate-Dt0Fdj1L.cjs');
19
- const require_management = require('../../management-DmH7fVxy.cjs');
20
- const require_router = require('../../router-hA_Y9gZ1.cjs');
16
+ const require_rolldown_runtime = require('../../rolldown-runtime-CDQd2xEI.cjs');
17
+ const require_schemas = require('../../schemas-3e49M8zz.cjs');
18
+ const require_validate = require('../../validate-C6424wM6.cjs');
19
+ const require_management = require('../../management-BeVfzKuc.cjs');
20
+ const require_router = require('../../router-CxDTb6r1.cjs');
21
21
  let _adobe_aio_lib_state = require("@adobe/aio-lib-state");
22
22
  let valibot = require("valibot");
23
23
  valibot = require_rolldown_runtime.__toESM(valibot, 1);
@@ -628,6 +628,13 @@ async function getInstallationSnapshot() {
628
628
  //#endregion
629
629
  //#region source/actions/installation/index.ts
630
630
  /**
631
+ * Defines a type-safe custom installation scripts loader.
632
+ * @param loader - The custom scripts loader implementation.
633
+ */
634
+ function defineCustomScriptsLoader(loader) {
635
+ return loader;
636
+ }
637
+ /**
631
638
  * Factory to create the route handler for the `installation` action.
632
639
  * @param args - The arguments required to create the runtime action.
633
640
  */
@@ -642,4 +649,5 @@ const installationRuntimeAction = (args) => async (params) => {
642
649
  };
643
650
 
644
651
  //#endregion
652
+ exports.defineCustomScriptsLoader = defineCustomScriptsLoader;
645
653
  exports.installationRuntimeAction = installationRuntimeAction;
@@ -13,10 +13,11 @@
13
13
  */
14
14
 
15
15
  import "../../index-DWEigxhy.cjs";
16
- import { n as CommerceAppConfig, r as CommerceAppConfigOutputModel } from "../../app-e4bCHpek.cjs";
17
- import { Y as InstallationContext } from "../../index-Ds7AyoNv.cjs";
16
+ import { n as CommerceAppConfig, r as CommerceAppConfigOutputModel } from "../../app-CSqkACEm.cjs";
17
+ import { Y as InstallationContext } from "../../index-NxK_-lg1.cjs";
18
18
  import { RuntimeActionParams } from "@adobe/aio-commerce-lib-core/params";
19
19
  //#region source/actions/installation/router.d.ts
20
+ /** Loads generated custom installation script modules. */
20
21
  type CustomScriptsLoader = (config: CommerceAppConfigOutputModel, logger: InstallationContext["logger"]) => Record<string, unknown>;
21
22
  /** Arguments for the runtime action factory. */
22
23
  type RuntimeActionFactoryArgs = {
@@ -25,10 +26,15 @@ type RuntimeActionFactoryArgs = {
25
26
  };
26
27
  //#endregion
27
28
  //#region source/actions/installation/index.d.ts
29
+ /**
30
+ * Defines a type-safe custom installation scripts loader.
31
+ * @param loader - The custom scripts loader implementation.
32
+ */
33
+ declare function defineCustomScriptsLoader(loader: CustomScriptsLoader): CustomScriptsLoader;
28
34
  /**
29
35
  * Factory to create the route handler for the `installation` action.
30
36
  * @param args - The arguments required to create the runtime action.
31
37
  */
32
38
  declare const installationRuntimeAction: (args: RuntimeActionFactoryArgs) => (params: RuntimeActionParams) => Promise<import("@adobe/aio-commerce-lib-core/responses").ActionResponse>;
33
39
  //#endregion
34
- export { installationRuntimeAction };
40
+ export { type CustomScriptsLoader, defineCustomScriptsLoader, installationRuntimeAction };
@@ -13,10 +13,10 @@
13
13
  */
14
14
 
15
15
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
16
- const require_rolldown_runtime = require('../../rolldown-runtime-Cozy-1ZF.cjs');
17
- const require_schemas = require('../../schemas-mLxMh_ko.cjs');
18
- const require_logging = require('../../logging-udPuAJPt.cjs');
19
- const require_router = require('../../router-hA_Y9gZ1.cjs');
16
+ const require_rolldown_runtime = require('../../rolldown-runtime-CDQd2xEI.cjs');
17
+ const require_schemas = require('../../schemas-3e49M8zz.cjs');
18
+ const require_logging = require('../../logging-QTsrSwPc.cjs');
19
+ const require_router = require('../../router-CxDTb6r1.cjs');
20
20
  let _adobe_aio_commerce_lib_api = require("@adobe/aio-commerce-lib-api");
21
21
  let _adobe_aio_commerce_lib_config = require("@adobe/aio-commerce-lib-config");
22
22
  let valibot = require("valibot");
@@ -97,11 +97,13 @@ router.post("/commerce", {
97
97
  const { logger } = ctx;
98
98
  logger.debug("Syncing commerce scopes...");
99
99
  const { commerceBaseUrl, commerceEnv } = req.body;
100
- const result = await (0, _adobe_aio_commerce_lib_config.syncCommerceScopes)((0, _adobe_aio_commerce_lib_api.resolveCommerceHttpClientParams)({
100
+ const paramsWithCommerceConfig = {
101
101
  ...ctx.rawParams,
102
102
  AIO_COMMERCE_API_BASE_URL: commerceBaseUrl,
103
103
  ...commerceEnv && { AIO_COMMERCE_API_FLAVOR: commerceEnv }
104
- }, { tryForwardAuthProvider: true }));
104
+ };
105
+ const commerceConfig = (0, _adobe_aio_commerce_lib_api.resolveCommerceHttpClientParams)(paramsWithCommerceConfig, { tryForwardAuthProvider: true });
106
+ const result = await (0, _adobe_aio_commerce_lib_config.syncCommerceScopes)(commerceConfig);
105
107
  if (result.error) {
106
108
  logger.error(`Error syncing commerce scopes: ${require_logging.inspect(result.error)}`);
107
109
  return (0, _adobe_aio_commerce_lib_core_responses.internalServerError)({ body: {
@@ -927,7 +927,7 @@ declare const CommerceAppConfigSchemas: {
927
927
  readonly customInstallationSteps: v.SchemaWithPipe<readonly [v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
928
928
  readonly description: 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.MaxLengthAction<string, 255, "The step description must not be longer than 255 characters">]>;
929
929
  readonly name: 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.MaxLengthAction<string, 255, "The step name must not be longer than 255 characters">]>;
930
- readonly script: 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, "Script path must end with .js (e.g., \"./setup.js\", \"./scripts/setup.js\", or \"../../scripts/setup.js\")">]>;
930
+ readonly script: 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, "Script path must end with .js or .ts (e.g., \"./setup.js\", \"./scripts/setup.ts\", or \"../../scripts/setup.js\")">]>;
931
931
  }, undefined>, "Expected an array of custom installation steps">, undefined>, v.CheckAction<{
932
932
  description: string;
933
933
  name: string;
@@ -941,7 +941,7 @@ declare const CommerceAppConfigSchemas: {
941
941
  readonly "installation.customInstallationSteps": v.ArraySchema<v.ObjectSchema<{
942
942
  readonly description: 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.MaxLengthAction<string, 255, "The step description must not be longer than 255 characters">]>;
943
943
  readonly name: 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.MaxLengthAction<string, 255, "The step name must not be longer than 255 characters">]>;
944
- readonly script: 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, "Script path must end with .js (e.g., \"./setup.js\", \"./scripts/setup.js\", or \"../../scripts/setup.js\")">]>;
944
+ readonly script: 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, "Script path must end with .js or .ts (e.g., \"./setup.js\", \"./scripts/setup.ts\", or \"../../scripts/setup.js\")">]>;
945
945
  }, undefined>, "Expected an array of custom installation steps">;
946
946
  readonly metadata: v.ObjectSchema<{
947
947
  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">]>;
@@ -1671,7 +1671,7 @@ declare const CommerceAppConfigSchema: v.LooseObjectSchema<{
1671
1671
  readonly customInstallationSteps: v.SchemaWithPipe<readonly [v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
1672
1672
  readonly description: 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.MaxLengthAction<string, 255, "The step description must not be longer than 255 characters">]>;
1673
1673
  readonly name: 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.MaxLengthAction<string, 255, "The step name must not be longer than 255 characters">]>;
1674
- readonly script: 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, "Script path must end with .js (e.g., \"./setup.js\", \"./scripts/setup.js\", or \"../../scripts/setup.js\")">]>;
1674
+ readonly script: 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, "Script path must end with .js or .ts (e.g., \"./setup.js\", \"./scripts/setup.ts\", or \"../../scripts/setup.js\")">]>;
1675
1675
  }, undefined>, "Expected an array of custom installation steps">, undefined>, v.CheckAction<{
1676
1676
  description: string;
1677
1677
  name: string;