@adobe/aio-commerce-lib-app 0.3.0 → 0.3.2

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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @adobe/aio-commerce-lib-app
2
2
 
3
+ ## 0.3.2
4
+
5
+ ### Patch Changes
6
+
7
+ - [#262](https://github.com/adobe/aio-commerce-sdk/pull/262) [`7cb9252`](https://github.com/adobe/aio-commerce-sdk/commit/7cb9252736acd34f5490e2dc940b74a7ec40f17c) Thanks [@iivvaannxx](https://github.com/iivvaannxx)! - Dependencies should be installed early in the init process.
8
+
9
+ ## 0.3.1
10
+
11
+ ### Patch Changes
12
+
13
+ - [#260](https://github.com/adobe/aio-commerce-sdk/pull/260) [`dbfb82f`](https://github.com/adobe/aio-commerce-sdk/commit/dbfb82fe4af72fe760df005506bec9f9927bbafc) Thanks [@iivvaannxx](https://github.com/iivvaannxx)! - Fix package json detection/creation on `init` script
14
+
3
15
  ## 0.3.0
4
16
 
5
17
  ### Minor Changes
@@ -895,8 +895,7 @@ async function ensureCommerceAppConfig(cwd = process.cwd()) {
895
895
  }
896
896
  }
897
897
  /** Ensure package.json has the postinstall script */
898
- async function ensurePackageJson(execCommand, cwd = process.cwd()) {
899
- const postinstallScript = `${execCommand} aio-commerce-lib-app hooks postinstall`;
898
+ async function ensurePackageJson(cwd = process.cwd()) {
900
899
  const packageJson = await require_config.readPackageJson(cwd);
901
900
  if (!packageJson) {
902
901
  consola.consola.warn("package.json not found. Creating one...");
@@ -904,16 +903,27 @@ async function ensurePackageJson(execCommand, cwd = process.cwd()) {
904
903
  name: "my-commerce-app",
905
904
  version: "1.0.0",
906
905
  private: true,
907
- scripts: { postinstall: postinstallScript }
906
+ scripts: { postinstall: "npx aio-commerce-lib-app hooks postinstall" }
908
907
  };
909
908
  await (0, fs_promises.writeFile)((0, path.join)((0, path.resolve)(cwd), PACKAGE_JSON_FILE), JSON.stringify(packageJsonContent, null, 2), "utf-8");
910
909
  consola.consola.success("Wrote package.json");
911
- return packageJsonContent;
910
+ return {
911
+ packageJson: packageJsonContent,
912
+ packageManager: "npm",
913
+ execCommand: "npx"
914
+ };
912
915
  }
916
+ const packageManager = await require_config.detectPackageManager();
917
+ const execCommand = require_config.getExecCommand(packageManager);
918
+ const postinstallScript = `${execCommand} aio-commerce-lib-app hooks postinstall`;
913
919
  packageJson.scripts ??= {};
914
920
  if (packageJson.scripts.postinstall === postinstallScript || packageJson.scripts.postinstall?.includes(postinstallScript)) {
915
921
  consola.consola.success(`postinstall script already configured in ${PACKAGE_JSON_FILE}`);
916
- return packageJson;
922
+ return {
923
+ packageJson,
924
+ packageManager,
925
+ execCommand
926
+ };
917
927
  }
918
928
  if (packageJson.scripts.postinstall) {
919
929
  consola.consola.warn(`${PACKAGE_JSON_FILE} already has a postinstall script. Adding a new one...`);
@@ -923,7 +933,11 @@ async function ensurePackageJson(execCommand, cwd = process.cwd()) {
923
933
  (0, child_process.execSync)(`npm pkg set scripts.postinstall="${postinstallScript}"`);
924
934
  }
925
935
  consola.consola.success(`Added postinstall script to ${PACKAGE_JSON_FILE}`);
926
- return packageJson;
936
+ return {
937
+ packageJson,
938
+ packageManager,
939
+ execCommand
940
+ };
927
941
  }
928
942
  /** Ensure app.config.yaml has the extension reference */
929
943
  async function ensureAppConfig(domains, cwd = process.cwd()) {
@@ -931,12 +945,11 @@ async function ensureAppConfig(domains, cwd = process.cwd()) {
931
945
  if (domains.has("businessConfig.schema")) await addExtensionPointToAppConfig(CONFIGURATION_EXTENSION_POINT_ID, rootDirectory, " This extension is required for business configuration. Do not remove.");
932
946
  await addExtensionPointToAppConfig(EXTENSIBILITY_EXTENSION_POINT_ID, rootDirectory, " This extension is required for app management. Do not remove.");
933
947
  }
934
- /** Install required dependencies */
935
- function installDependencies(packageManager, domains, cwd = process.cwd()) {
936
- consola.consola.info(`Installing dependencies with ${packageManager}...`);
937
- const packages = ["@adobe/aio-commerce-lib-app", "@adobe/aio-commerce-sdk"];
938
- if (domains.has("businessConfig.schema")) packages.push("@adobe/aio-commerce-lib-config");
939
- const packagesToInstall = packages.join(" ");
948
+ /** Install the given dependencies */
949
+ function runInstall(packageManager, dependencies, cwd = process.cwd()) {
950
+ const dependencyListString = dependencies.map((dependency) => ` - ${dependency}`).join("\n");
951
+ consola.consola.info(`Installing the following dependencies with ${packageManager}:\n${dependencyListString}`);
952
+ const packagesToInstall = dependencies.join(" ");
940
953
  const installCommand = {
941
954
  pnpm: `pnpm add ${packagesToInstall}`,
942
955
  yarn: `yarn add ${packagesToInstall}`,
@@ -953,6 +966,12 @@ function installDependencies(packageManager, domains, cwd = process.cwd()) {
953
966
  throw new Error(`Failed to install dependencies automatically. Please install manually: ${installCommand}`, { cause: error });
954
967
  }
955
968
  }
969
+ /** Install required dependencies */
970
+ function installDependencies(packageManager, domains, cwd = process.cwd()) {
971
+ const packages = [];
972
+ if (domains.has("businessConfig.schema")) packages.push("@adobe/aio-commerce-lib-config");
973
+ runInstall(packageManager, packages, cwd);
974
+ }
956
975
  /** Run the generation command */
957
976
  async function runGeneration(appConfig, execCommand) {
958
977
  try {
@@ -971,21 +990,21 @@ async function ensureInstallYaml(domains, cwd = process.cwd()) {
971
990
 
972
991
  //#endregion
973
992
  //#region source/commands/init/main.ts
993
+ const REQUIRED_DEPENDENCIES = ["@adobe/aio-commerce-lib-app", "@adobe/aio-commerce-sdk"];
974
994
  /** Initialize the project with @adobe/aio-commerce-lib-config */
975
995
  async function exec() {
976
996
  try {
977
997
  consola.consola.start("Initializing app...");
978
- const packageManager = await require_config.detectPackageManager();
979
- const execCommand = require_config.getExecCommand(packageManager);
980
- await ensurePackageJson(execCommand);
998
+ const { execCommand, packageManager } = await ensurePackageJson();
999
+ runInstall(packageManager, REQUIRED_DEPENDENCIES);
981
1000
  const { config: config$1, domains } = await ensureCommerceAppConfig();
1001
+ installDependencies(packageManager, domains);
982
1002
  (0, child_process.execSync)(`npm pkg set name="${config$1.metadata.id}"`);
983
1003
  (0, child_process.execSync)(`npm pkg set version="${config$1.metadata.version}"`);
984
1004
  (0, child_process.execSync)(`npm pkg set description="${config$1.metadata.description}"`);
985
1005
  await runGeneration(config$1, execCommand);
986
1006
  await ensureAppConfig(domains);
987
1007
  await ensureInstallYaml(domains);
988
- installDependencies(packageManager, domains);
989
1008
  consola.consola.success("Initialization complete!");
990
1009
  consola.consola.box([
991
1010
  "Next steps:",
@@ -889,8 +889,7 @@ async function ensureCommerceAppConfig(cwd = process.cwd()) {
889
889
  }
890
890
  }
891
891
  /** Ensure package.json has the postinstall script */
892
- async function ensurePackageJson(execCommand, cwd = process.cwd()) {
893
- const postinstallScript = `${execCommand} aio-commerce-lib-app hooks postinstall`;
892
+ async function ensurePackageJson(cwd = process.cwd()) {
894
893
  const packageJson = await readPackageJson(cwd);
895
894
  if (!packageJson) {
896
895
  consola$1.warn("package.json not found. Creating one...");
@@ -898,16 +897,27 @@ async function ensurePackageJson(execCommand, cwd = process.cwd()) {
898
897
  name: "my-commerce-app",
899
898
  version: "1.0.0",
900
899
  private: true,
901
- scripts: { postinstall: postinstallScript }
900
+ scripts: { postinstall: "npx aio-commerce-lib-app hooks postinstall" }
902
901
  };
903
902
  await writeFile(join(resolve(cwd), PACKAGE_JSON_FILE), JSON.stringify(packageJsonContent, null, 2), "utf-8");
904
903
  consola$1.success("Wrote package.json");
905
- return packageJsonContent;
904
+ return {
905
+ packageJson: packageJsonContent,
906
+ packageManager: "npm",
907
+ execCommand: "npx"
908
+ };
906
909
  }
910
+ const packageManager = await detectPackageManager();
911
+ const execCommand = getExecCommand(packageManager);
912
+ const postinstallScript = `${execCommand} aio-commerce-lib-app hooks postinstall`;
907
913
  packageJson.scripts ??= {};
908
914
  if (packageJson.scripts.postinstall === postinstallScript || packageJson.scripts.postinstall?.includes(postinstallScript)) {
909
915
  consola$1.success(`postinstall script already configured in ${PACKAGE_JSON_FILE}`);
910
- return packageJson;
916
+ return {
917
+ packageJson,
918
+ packageManager,
919
+ execCommand
920
+ };
911
921
  }
912
922
  if (packageJson.scripts.postinstall) {
913
923
  consola$1.warn(`${PACKAGE_JSON_FILE} already has a postinstall script. Adding a new one...`);
@@ -917,7 +927,11 @@ async function ensurePackageJson(execCommand, cwd = process.cwd()) {
917
927
  execSync(`npm pkg set scripts.postinstall="${postinstallScript}"`);
918
928
  }
919
929
  consola$1.success(`Added postinstall script to ${PACKAGE_JSON_FILE}`);
920
- return packageJson;
930
+ return {
931
+ packageJson,
932
+ packageManager,
933
+ execCommand
934
+ };
921
935
  }
922
936
  /** Ensure app.config.yaml has the extension reference */
923
937
  async function ensureAppConfig(domains, cwd = process.cwd()) {
@@ -925,12 +939,11 @@ async function ensureAppConfig(domains, cwd = process.cwd()) {
925
939
  if (domains.has("businessConfig.schema")) await addExtensionPointToAppConfig(CONFIGURATION_EXTENSION_POINT_ID, rootDirectory, " This extension is required for business configuration. Do not remove.");
926
940
  await addExtensionPointToAppConfig(EXTENSIBILITY_EXTENSION_POINT_ID, rootDirectory, " This extension is required for app management. Do not remove.");
927
941
  }
928
- /** Install required dependencies */
929
- function installDependencies(packageManager, domains, cwd = process.cwd()) {
930
- consola$1.info(`Installing dependencies with ${packageManager}...`);
931
- const packages = ["@adobe/aio-commerce-lib-app", "@adobe/aio-commerce-sdk"];
932
- if (domains.has("businessConfig.schema")) packages.push("@adobe/aio-commerce-lib-config");
933
- const packagesToInstall = packages.join(" ");
942
+ /** Install the given dependencies */
943
+ function runInstall(packageManager, dependencies, cwd = process.cwd()) {
944
+ const dependencyListString = dependencies.map((dependency) => ` - ${dependency}`).join("\n");
945
+ consola$1.info(`Installing the following dependencies with ${packageManager}:\n${dependencyListString}`);
946
+ const packagesToInstall = dependencies.join(" ");
934
947
  const installCommand = {
935
948
  pnpm: `pnpm add ${packagesToInstall}`,
936
949
  yarn: `yarn add ${packagesToInstall}`,
@@ -947,6 +960,12 @@ function installDependencies(packageManager, domains, cwd = process.cwd()) {
947
960
  throw new Error(`Failed to install dependencies automatically. Please install manually: ${installCommand}`, { cause: error });
948
961
  }
949
962
  }
963
+ /** Install required dependencies */
964
+ function installDependencies(packageManager, domains, cwd = process.cwd()) {
965
+ const packages = [];
966
+ if (domains.has("businessConfig.schema")) packages.push("@adobe/aio-commerce-lib-config");
967
+ runInstall(packageManager, packages, cwd);
968
+ }
950
969
  /** Run the generation command */
951
970
  async function runGeneration(appConfig, execCommand) {
952
971
  try {
@@ -965,21 +984,21 @@ async function ensureInstallYaml(domains, cwd = process.cwd()) {
965
984
 
966
985
  //#endregion
967
986
  //#region source/commands/init/main.ts
987
+ const REQUIRED_DEPENDENCIES = ["@adobe/aio-commerce-lib-app", "@adobe/aio-commerce-sdk"];
968
988
  /** Initialize the project with @adobe/aio-commerce-lib-config */
969
989
  async function exec() {
970
990
  try {
971
991
  consola$1.start("Initializing app...");
972
- const packageManager = await detectPackageManager();
973
- const execCommand = getExecCommand(packageManager);
974
- await ensurePackageJson(execCommand);
992
+ const { execCommand, packageManager } = await ensurePackageJson();
993
+ runInstall(packageManager, REQUIRED_DEPENDENCIES);
975
994
  const { config: config$1, domains } = await ensureCommerceAppConfig();
995
+ installDependencies(packageManager, domains);
976
996
  execSync(`npm pkg set name="${config$1.metadata.id}"`);
977
997
  execSync(`npm pkg set version="${config$1.metadata.version}"`);
978
998
  execSync(`npm pkg set description="${config$1.metadata.description}"`);
979
999
  await runGeneration(config$1, execCommand);
980
1000
  await ensureAppConfig(domains);
981
1001
  await ensureInstallYaml(domains);
982
- installDependencies(packageManager, domains);
983
1002
  consola$1.success("Initialization complete!");
984
1003
  consola$1.box([
985
1004
  "Next steps:",
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@adobe/aio-commerce-lib-app",
3
3
  "type": "module",
4
4
  "author": "Adobe Inc.",
5
- "version": "0.3.0",
5
+ "version": "0.3.2",
6
6
  "private": false,
7
7
  "engines": {
8
8
  "node": ">=20 <=24"
@@ -81,19 +81,19 @@
81
81
  "@adobe/aio-lib-state": "^5.3.1",
82
82
  "@standard-schema/spec": "^1.1.0",
83
83
  "yaml": "^2.8.2",
84
- "@adobe/aio-commerce-lib-core": "0.6.1",
85
- "@adobe/aio-commerce-lib-events": "0.6.0",
84
+ "@adobe/aio-commerce-lib-api": "0.6.1",
86
85
  "@adobe/aio-commerce-lib-auth": "0.8.1",
87
- "@adobe/aio-commerce-lib-api": "0.6.1"
86
+ "@adobe/aio-commerce-lib-core": "0.6.1",
87
+ "@adobe/aio-commerce-lib-events": "0.6.0"
88
88
  },
89
89
  "devDependencies": {
90
90
  "@adobe/aio-lib-core-logging": "^3.0.2",
91
91
  "@aio-commerce-sdk/common-utils": "0.2.1",
92
+ "@aio-commerce-sdk/config-tsdown": "1.0.0",
92
93
  "@aio-commerce-sdk/config-typedoc": "1.0.0",
94
+ "@aio-commerce-sdk/config-typescript": "1.0.0",
93
95
  "@aio-commerce-sdk/config-vitest": "1.0.0",
94
- "@aio-commerce-sdk/scripting-utils": "0.2.1",
95
- "@aio-commerce-sdk/config-tsdown": "1.0.0",
96
- "@aio-commerce-sdk/config-typescript": "1.0.0"
96
+ "@aio-commerce-sdk/scripting-utils": "0.2.1"
97
97
  },
98
98
  "sideEffects": false,
99
99
  "scripts": {