@settlemint/sdk-cli 1.0.9-prac55277e → 1.0.9-prb617d863

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 (3) hide show
  1. package/dist/cli.js +75 -120
  2. package/dist/cli.js.map +21 -20
  3. package/package.json +12 -10
package/dist/cli.js CHANGED
@@ -34802,7 +34802,7 @@ var require_cjs = __commonJS((exports) => {
34802
34802
  exports.sync = impl.sync;
34803
34803
  });
34804
34804
 
34805
- // ../../node_modules/@npmcli/promise-spawn/node_modules/which/lib/index.js
34805
+ // ../../node_modules/which/lib/index.js
34806
34806
  var require_lib4 = __commonJS((exports, module) => {
34807
34807
  var { isexe, sync: isexeSync } = require_cjs();
34808
34808
  var { join: join4, delimiter, sep: sep2, posix: posix2 } = __require("path");
@@ -35723,93 +35723,9 @@ var require_opts = __commonJS((exports, module) => {
35723
35723
  module.exports.loadGitConfig = loadGitConfig;
35724
35724
  });
35725
35725
 
35726
- // ../../node_modules/@npmcli/git/node_modules/which/lib/index.js
35727
- var require_lib6 = __commonJS((exports, module) => {
35728
- var { isexe, sync: isexeSync } = require_cjs();
35729
- var { join: join4, delimiter, sep: sep2, posix: posix2 } = __require("path");
35730
- var isWindows2 = process.platform === "win32";
35731
- var rSlash = new RegExp(`[${posix2.sep}${sep2 === posix2.sep ? "" : sep2}]`.replace(/(\\)/g, "\\$1"));
35732
- var rRel = new RegExp(`^\\.${rSlash.source}`);
35733
- var getNotFoundError = (cmd) => Object.assign(new Error(`not found: ${cmd}`), { code: "ENOENT" });
35734
- var getPathInfo = (cmd, {
35735
- path: optPath = process.env.PATH,
35736
- pathExt: optPathExt = process.env.PATHEXT,
35737
- delimiter: optDelimiter = delimiter
35738
- }) => {
35739
- const pathEnv = cmd.match(rSlash) ? [""] : [
35740
- ...isWindows2 ? [process.cwd()] : [],
35741
- ...(optPath || "").split(optDelimiter)
35742
- ];
35743
- if (isWindows2) {
35744
- const pathExtExe = optPathExt || [".EXE", ".CMD", ".BAT", ".COM"].join(optDelimiter);
35745
- const pathExt = pathExtExe.split(optDelimiter).flatMap((item) => [item, item.toLowerCase()]);
35746
- if (cmd.includes(".") && pathExt[0] !== "") {
35747
- pathExt.unshift("");
35748
- }
35749
- return { pathEnv, pathExt, pathExtExe };
35750
- }
35751
- return { pathEnv, pathExt: [""] };
35752
- };
35753
- var getPathPart = (raw, cmd) => {
35754
- const pathPart = /^".*"$/.test(raw) ? raw.slice(1, -1) : raw;
35755
- const prefix = !pathPart && rRel.test(cmd) ? cmd.slice(0, 2) : "";
35756
- return prefix + join4(pathPart, cmd);
35757
- };
35758
- var which = async (cmd, opt = {}) => {
35759
- const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt);
35760
- const found = [];
35761
- for (const envPart of pathEnv) {
35762
- const p = getPathPart(envPart, cmd);
35763
- for (const ext2 of pathExt) {
35764
- const withExt = p + ext2;
35765
- const is = await isexe(withExt, { pathExt: pathExtExe, ignoreErrors: true });
35766
- if (is) {
35767
- if (!opt.all) {
35768
- return withExt;
35769
- }
35770
- found.push(withExt);
35771
- }
35772
- }
35773
- }
35774
- if (opt.all && found.length) {
35775
- return found;
35776
- }
35777
- if (opt.nothrow) {
35778
- return null;
35779
- }
35780
- throw getNotFoundError(cmd);
35781
- };
35782
- var whichSync = (cmd, opt = {}) => {
35783
- const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt);
35784
- const found = [];
35785
- for (const pathEnvPart of pathEnv) {
35786
- const p = getPathPart(pathEnvPart, cmd);
35787
- for (const ext2 of pathExt) {
35788
- const withExt = p + ext2;
35789
- const is = isexeSync(withExt, { pathExt: pathExtExe, ignoreErrors: true });
35790
- if (is) {
35791
- if (!opt.all) {
35792
- return withExt;
35793
- }
35794
- found.push(withExt);
35795
- }
35796
- }
35797
- }
35798
- if (opt.all && found.length) {
35799
- return found;
35800
- }
35801
- if (opt.nothrow) {
35802
- return null;
35803
- }
35804
- throw getNotFoundError(cmd);
35805
- };
35806
- module.exports = which;
35807
- which.sync = whichSync;
35808
- });
35809
-
35810
35726
  // ../../node_modules/@npmcli/git/lib/which.js
35811
35727
  var require_which = __commonJS((exports, module) => {
35812
- var which = require_lib6();
35728
+ var which = require_lib4();
35813
35729
  var gitPath;
35814
35730
  try {
35815
35731
  gitPath = which.sync("git");
@@ -37320,7 +37236,7 @@ var require_utils7 = __commonJS((exports) => {
37320
37236
  });
37321
37237
 
37322
37238
  // ../../node_modules/npm-package-arg/node_modules/validate-npm-package-name/lib/index.js
37323
- var require_lib7 = __commonJS((exports, module) => {
37239
+ var require_lib6 = __commonJS((exports, module) => {
37324
37240
  var { builtinModules: builtins } = __require("module");
37325
37241
  var scopedPackagePattern = new RegExp("^(?:@([^/]+?)[/])?([^/]+?)$");
37326
37242
  var blacklist = [
@@ -37412,7 +37328,7 @@ var require_npa = __commonJS((exports, module) => {
37412
37328
  var HostedGit = require_lib3();
37413
37329
  var semver = require_semver2();
37414
37330
  var path5 = global.FAKE_WINDOWS ? __require("path").win32 : __require("path");
37415
- var validatePackageName = require_lib7();
37331
+ var validatePackageName = require_lib6();
37416
37332
  var { homedir } = __require("os");
37417
37333
  var { log } = require_lib2();
37418
37334
  var isWindows2 = process.platform === "win32" || global.FAKE_WINDOWS;
@@ -37951,7 +37867,7 @@ var require_dev_engines = __commonJS((exports, module) => {
37951
37867
  });
37952
37868
 
37953
37869
  // ../../node_modules/npm-install-checks/lib/index.js
37954
- var require_lib8 = __commonJS((exports, module) => {
37870
+ var require_lib7 = __commonJS((exports, module) => {
37955
37871
  var semver = require_semver2();
37956
37872
  var currentEnv = require_current_env();
37957
37873
  var { checkDevEngines } = require_dev_engines();
@@ -38035,7 +37951,7 @@ var require_lib8 = __commonJS((exports, module) => {
38035
37951
  });
38036
37952
 
38037
37953
  // ../../node_modules/npm-normalize-package-bin/lib/index.js
38038
- var require_lib9 = __commonJS((exports, module) => {
37954
+ var require_lib8 = __commonJS((exports, module) => {
38039
37955
  var { join: join4, basename } = __require("path");
38040
37956
  var normalize2 = (pkg) => !pkg.bin ? removeBin(pkg) : typeof pkg.bin === "string" ? normalizeString(pkg) : Array.isArray(pkg.bin) ? normalizeArray(pkg) : typeof pkg.bin === "object" ? normalizeObject(pkg) : removeBin(pkg);
38041
37957
  var normalizeString = (pkg) => {
@@ -38083,11 +37999,11 @@ var require_lib9 = __commonJS((exports, module) => {
38083
37999
  });
38084
38000
 
38085
38001
  // ../../node_modules/npm-pick-manifest/lib/index.js
38086
- var require_lib10 = __commonJS((exports, module) => {
38002
+ var require_lib9 = __commonJS((exports, module) => {
38087
38003
  var npa = require_npa();
38088
38004
  var semver = require_semver2();
38089
- var { checkEngine } = require_lib8();
38090
- var normalizeBin = require_lib9();
38005
+ var { checkEngine } = require_lib7();
38006
+ var normalizeBin = require_lib8();
38091
38007
  var engineOk = (manifest, npmVersion, nodeVersion) => {
38092
38008
  try {
38093
38009
  checkEngine(manifest, npmVersion, nodeVersion);
@@ -38249,7 +38165,7 @@ var require_clone = __commonJS((exports, module) => {
38249
38165
  var getRevs = require_revs();
38250
38166
  var spawn2 = require_spawn();
38251
38167
  var { isWindows: isWindows2 } = require_utils7();
38252
- var pickManifest = require_lib10();
38168
+ var pickManifest = require_lib9();
38253
38169
  var fs3 = __require("fs/promises");
38254
38170
  module.exports = (repo, ref = "HEAD", target = null, opts = {}) => getRevs(repo, opts).then((revs) => clone(repo, revs, ref, resolveRef(revs, ref, opts), target || defaultTarget(repo, opts.cwd), opts));
38255
38171
  var maybeShallow = (repo, opts) => {
@@ -38381,7 +38297,7 @@ var require_is_clean = __commonJS((exports, module) => {
38381
38297
  });
38382
38298
 
38383
38299
  // ../../node_modules/@npmcli/git/lib/index.js
38384
- var require_lib11 = __commonJS((exports, module) => {
38300
+ var require_lib10 = __commonJS((exports, module) => {
38385
38301
  module.exports = {
38386
38302
  clone: require_clone(),
38387
38303
  revs: require_revs(),
@@ -40278,7 +40194,7 @@ var require_normalize = __commonJS((exports, module) => {
40278
40194
  normalizePackageBin(data, changes);
40279
40195
  }
40280
40196
  if (steps.includes("gitHead") && !data.gitHead) {
40281
- const git = require_lib11();
40197
+ const git = require_lib10();
40282
40198
  const gitRoot = await git.find({ cwd: pkg.path, root });
40283
40199
  let head;
40284
40200
  if (gitRoot) {
@@ -40564,7 +40480,7 @@ var require_sort2 = __commonJS((exports, module) => {
40564
40480
  });
40565
40481
 
40566
40482
  // ../../node_modules/@npmcli/package-json/lib/index.js
40567
- var require_lib12 = __commonJS((exports, module) => {
40483
+ var require_lib11 = __commonJS((exports, module) => {
40568
40484
  var { readFile: readFile2, writeFile: writeFile2 } = __require("node:fs/promises");
40569
40485
  var { resolve: resolve2 } = __require("node:path");
40570
40486
  var parseJSON = require_lib();
@@ -228156,7 +228072,7 @@ var require_wrap_ansi = __commonJS((exports, module) => {
228156
228072
  });
228157
228073
 
228158
228074
  // ../../node_modules/mute-stream/lib/index.js
228159
- var require_lib13 = __commonJS((exports, module) => {
228075
+ var require_lib12 = __commonJS((exports, module) => {
228160
228076
  var Stream3 = __require("stream");
228161
228077
 
228162
228078
  class MuteStream extends Stream3 {
@@ -241066,7 +240982,7 @@ var require_dist5 = __commonJS((exports) => {
241066
240982
  });
241067
240983
 
241068
240984
  // ../../node_modules/node-fetch-native/lib/index.cjs
241069
- var require_lib14 = __commonJS((exports, module) => {
240985
+ var require_lib13 = __commonJS((exports, module) => {
241070
240986
  var nodeFetch = require_dist5();
241071
240987
  function fetch2(input, options) {
241072
240988
  return nodeFetch.fetch(input, options);
@@ -241112,7 +241028,7 @@ var require_proxy = __commonJS((exports) => {
241112
241028
  var require$$3 = __require("events");
241113
241029
  var require$$5$4 = __require("url");
241114
241030
  var require$$2 = __require("assert");
241115
- var nodeFetchNative = require_lib14();
241031
+ var nodeFetchNative = require_lib13();
241116
241032
  function _interopDefaultCompat(A5) {
241117
241033
  return A5 && typeof A5 == "object" && "default" in A5 ? A5.default : A5;
241118
241034
  }
@@ -269202,7 +269118,7 @@ function pruneCurrentEnv(currentEnv, env2) {
269202
269118
  var package_default = {
269203
269119
  name: "@settlemint/sdk-cli",
269204
269120
  description: "Command-line interface for SettleMint SDK, providing development tools and project management capabilities",
269205
- version: "1.0.9-prac55277e",
269121
+ version: "1.0.9-prb617d863",
269206
269122
  type: "module",
269207
269123
  private: false,
269208
269124
  license: "FSL-1.1-MIT",
@@ -269245,22 +269161,24 @@ var package_default = {
269245
269161
  tinyexec: "0.3.2"
269246
269162
  },
269247
269163
  devDependencies: {
269248
- "@types/semver": "7.5.8",
269249
- "@types/node": "22.10.10",
269250
- "is-in-ci": "1.0.0",
269251
- semver: "7.6.3",
269252
- slugify: "1.6.6",
269253
- yoctocolors: "2.1.1",
269254
269164
  "@commander-js/extra-typings": "13.1.0",
269255
269165
  "@inquirer/confirm": "5.1.3",
269256
269166
  "@inquirer/input": "4.1.3",
269257
269167
  "@inquirer/password": "4.0.6",
269258
269168
  "@inquirer/select": "4.0.6",
269259
- "@settlemint/sdk-js": "1.0.9-prac55277e",
269260
- "@settlemint/sdk-utils": "1.0.9-prac55277e",
269169
+ "@settlemint/sdk-js": "1.0.9-prb617d863",
269170
+ "@settlemint/sdk-utils": "1.0.9-prb617d863",
269171
+ "@types/node": "22.12.0",
269172
+ "@types/semver": "7.5.8",
269173
+ "@types/which": "3.0.4",
269261
269174
  "get-tsconfig": "4.10.0",
269262
269175
  giget: "1.2.3",
269263
- yaml: "2.7.0"
269176
+ "is-in-ci": "1.0.0",
269177
+ semver: "7.6.3",
269178
+ slugify: "1.6.6",
269179
+ which: "5.0.0",
269180
+ yaml: "2.7.0",
269181
+ yoctocolors: "2.1.1"
269264
269182
  },
269265
269183
  peerDependencies: {
269266
269184
  hardhat: "2.22.18"
@@ -271752,8 +271670,8 @@ async function installPackage(names, options = {}) {
271752
271670
 
271753
271671
  // ../utils/dist/package-manager.mjs
271754
271672
  var import_console_table_printer3 = __toESM(require_dist2(), 1);
271755
- var import_package_json = __toESM(require_lib12(), 1);
271756
- var import_package_json2 = __toESM(require_lib12(), 1);
271673
+ var import_package_json = __toESM(require_lib11(), 1);
271674
+ var import_package_json2 = __toESM(require_lib11(), 1);
271757
271675
  async function projectRoot2(fallbackToCwd = false, cwd) {
271758
271676
  const packageJsonPath = await findUp("package.json", { cwd });
271759
271677
  if (!packageJsonPath) {
@@ -274005,7 +273923,7 @@ function usePagination({ items, active, renderItem, pageSize, loop = true }) {
274005
273923
  `);
274006
273924
  }
274007
273925
  // ../../node_modules/@inquirer/core/dist/esm/lib/create-prompt.js
274008
- var import_mute_stream = __toESM(require_lib13(), 1);
273926
+ var import_mute_stream = __toESM(require_lib12(), 1);
274009
273927
  init_mjs();
274010
273928
  import * as readline2 from "node:readline";
274011
273929
  import { AsyncResource as AsyncResource3 } from "node:async_hooks";
@@ -278850,6 +278768,17 @@ function formatUseCaseName(name2) {
278850
278768
  return name2;
278851
278769
  }
278852
278770
 
278771
+ // src/utils/smart-contract-set/execute-foundry-command.ts
278772
+ var import_which = __toESM(require_lib4(), 1);
278773
+ async function executeFoundryCommand(command, args) {
278774
+ try {
278775
+ await import_which.default(command);
278776
+ } catch (error5) {
278777
+ cancel2("Foundry is not installed. Instructions to install Foundry can be found here: https://book.getfoundry.sh/getting-started/installation");
278778
+ }
278779
+ return executeCommand(command, args);
278780
+ }
278781
+
278853
278782
  // src/commands/smart-contract-set/create.ts
278854
278783
  function createCommand4() {
278855
278784
  return new Command("create").description("Bootstrap your smart contract set").option("-n, --project-name <name>", "The name for your smart contract set project").option("--use-case <useCase>", "Use case for the smart contract set (run `settlemint platform config` to see available use cases)").option("-i, --instance <instance>", "The instance to connect to").action(async ({ projectName, useCase, instance }) => {
@@ -278882,7 +278811,7 @@ function createCommand4() {
278882
278811
  await spinner({
278883
278812
  startMessage: "Scaffolding the smart contract set",
278884
278813
  task: async () => {
278885
- await executeCommand("forge", [
278814
+ await executeFoundryCommand("forge", [
278886
278815
  "init",
278887
278816
  name2,
278888
278817
  "--template",
@@ -278926,7 +278855,7 @@ function foundryBuildCommand() {
278926
278855
  }
278927
278856
  ])).helpOption(false).option("-h, --help", "Get list of possible forge options").passThroughOptions().allowUnknownOption(true).action(async (passThroughOptions, cmd2) => {
278928
278857
  const forgeOptions = mapPassthroughOptions(passThroughOptions, cmd2);
278929
- await executeCommand("forge", ["build", ...forgeOptions]);
278858
+ await executeFoundryCommand("forge", ["build", ...forgeOptions]);
278930
278859
  });
278931
278860
  }
278932
278861
 
@@ -278947,7 +278876,7 @@ function foundryFormatCommand() {
278947
278876
  }
278948
278877
  ])).helpOption(false).option("-h, --help", "Get list of possible forge options").passThroughOptions().allowUnknownOption(true).action(async (passThroughOptions, cmd2) => {
278949
278878
  const forgeOptions = mapPassthroughOptions(passThroughOptions, cmd2);
278950
- await executeCommand("forge", ["fmt", ...forgeOptions]);
278879
+ await executeFoundryCommand("forge", ["fmt", ...forgeOptions]);
278951
278880
  note("Smart contract set formatted successfully!");
278952
278881
  });
278953
278882
  }
@@ -278969,7 +278898,7 @@ function foundryNetworkCommand() {
278969
278898
  }
278970
278899
  ])).helpOption(false).option("-h, --help", "Get list of possible anvil options").passThroughOptions().allowUnknownOption(true).action(async (passThroughOptions, cmd2) => {
278971
278900
  const anvilOptions = mapPassthroughOptions(passThroughOptions, cmd2);
278972
- await executeCommand("anvil", anvilOptions);
278901
+ await executeFoundryCommand("anvil", anvilOptions);
278973
278902
  });
278974
278903
  }
278975
278904
 
@@ -278990,10 +278919,26 @@ function foundryTestCommand() {
278990
278919
  }
278991
278920
  ])).helpOption(false).option("-h, --help", "Get list of possible forge options").passThroughOptions().allowUnknownOption(true).action(async (passThroughOptions, cmd2) => {
278992
278921
  const forgeOptions = mapPassthroughOptions(passThroughOptions, cmd2);
278993
- await executeCommand("forge", ["test", ...forgeOptions]);
278922
+ await executeFoundryCommand("forge", ["test", ...forgeOptions]);
278994
278923
  });
278995
278924
  }
278996
278925
 
278926
+ // src/utils/validate-required-packages.ts
278927
+ var validateIfRequiredPackagesAreInstalled = async (packages, cwd2) => {
278928
+ const results = await Promise.all(packages.map(async (pkg) => {
278929
+ try {
278930
+ const isInstalled = await isPackageInstalled(pkg, cwd2);
278931
+ return { packageName: pkg, isInstalled };
278932
+ } catch (err) {
278933
+ return { packageName: pkg, isInstalled: false };
278934
+ }
278935
+ }));
278936
+ const notInstalled = results.filter((result) => !result.isInstalled);
278937
+ if (notInstalled.length > 0) {
278938
+ cancel2(`The following required npm packages are not installed: ${notInstalled.map((pkg) => pkg.packageName).join(", ")}. Please install them and try again.`);
278939
+ }
278940
+ };
278941
+
278997
278942
  // src/commands/smart-contract-set/hardhat/build.ts
278998
278943
  function hardhatBuildCommand() {
278999
278944
  return new Command("build").description("Build the smart contracts using Hardhat").usage(createExamples([
@@ -279010,6 +278955,7 @@ function hardhatBuildCommand() {
279010
278955
  command: "scs hardhat build --concurrency 2"
279011
278956
  }
279012
278957
  ])).helpOption(false).option("-h, --help", "Get list of possible hardhat compile options").passThroughOptions().allowUnknownOption(true).action(async (passThroughOptions, cmd2) => {
278958
+ await validateIfRequiredPackagesAreInstalled(["hardhat"]);
279013
278959
  const hardhatOptions = mapPassthroughOptions(passThroughOptions, cmd2);
279014
278960
  const { command, args } = await getPackageManagerExecutable();
279015
278961
  await executeCommand(command, [...args, "hardhat", "compile", ...hardhatOptions]);
@@ -279036,6 +278982,7 @@ function hardhatDeployLocalCommand() {
279036
278982
  command: "scs hardhat deploy local --verify"
279037
278983
  }
279038
278984
  ])).option("-m, --module <ignitionmodule>", 'The module to deploy with Ignition, defaults to "ignition/modules/main.ts"').option("-r, --reset", "Wipes the existing deployment state before deploying").option("-v, --verify", "Verify the deployment on Etherscan").action(async ({ module, reset: reset2, verify }) => {
278985
+ await validateIfRequiredPackagesAreInstalled(["hardhat"]);
279039
278986
  const { command, args } = await getPackageManagerExecutable();
279040
278987
  await executeCommand(command, [
279041
278988
  ...args,
@@ -279212,6 +279159,7 @@ function hardhatDeployRemoteCommand() {
279212
279159
  acceptDefaults,
279213
279160
  blockchainNode: blockchainNodeUniqueName
279214
279161
  }) => {
279162
+ await validateIfRequiredPackagesAreInstalled(["hardhat"]);
279215
279163
  const autoAccept = !!acceptDefaults || is_in_ci_default;
279216
279164
  const env2 = await loadEnv(false, !!prod);
279217
279165
  const instance = await instancePrompt(env2, true);
@@ -279282,6 +279230,7 @@ function hardhatNetworkCommand() {
279282
279230
  command: "scs hardhat network --port 3000"
279283
279231
  }
279284
279232
  ])).helpOption(false).option("-h, --help", "Get list of possible hardhat node options").passThroughOptions().allowUnknownOption(true).action(async (passThroughOptions, cmd2) => {
279233
+ await validateIfRequiredPackagesAreInstalled(["hardhat"]);
279285
279234
  const hardhatOptions = mapPassthroughOptions(passThroughOptions, cmd2);
279286
279235
  const { command, args } = await getPackageManagerExecutable();
279287
279236
  await executeCommand(command, [...args, "hardhat", "node", ...hardhatOptions]);
@@ -279291,6 +279240,7 @@ function hardhatNetworkCommand() {
279291
279240
  // src/commands/smart-contract-set/hardhat/script/local.ts
279292
279241
  function hardhatScriptLocalCommand() {
279293
279242
  return new Command("local").description("Run a Hardhat script to deploy a contract on the platform or interact with a deployed contract.").requiredOption("-s, --script <script>", 'The script to run with Hardhat , e.g. "scripts/deploy.ts"').option("--no-compile", "Don't compile before running this task").action(async ({ script, compile }) => {
279243
+ await validateIfRequiredPackagesAreInstalled(["hardhat"]);
279294
279244
  const { command, args } = await getPackageManagerExecutable();
279295
279245
  await executeCommand(command, [
279296
279246
  ...args,
@@ -279308,6 +279258,7 @@ function hardhatScriptLocalCommand() {
279308
279258
  function hardhatScriptRemoteCommand() {
279309
279259
  const cmd2 = new Command("remote").description("Run a Hardhat script to deploy a contract on the platform or interact with a deployed contract.").requiredOption("-s, --script <script>", 'The script to run with Hardhat , e.g. "scripts/deploy.ts"').option("--blockchain-node <blockchainNode>", "Blockchain Node unique name (optional, defaults to the blockchain node in the environment)").option("--prod", "Connect to your production environment").option("-a, --accept-defaults", "Accept the default and previously set values").option("--no-compile", "Don't compile before running this task");
279310
279260
  cmd2.action(async ({ script, prod, blockchainNode: blockchainNodeUniqueName, acceptDefaults, compile }) => {
279261
+ await validateIfRequiredPackagesAreInstalled(["hardhat"]);
279311
279262
  const autoAccept = !!acceptDefaults || is_in_ci_default;
279312
279263
  const env2 = await loadEnv(false, !!prod);
279313
279264
  const instance = await instancePrompt(env2, true);
@@ -279356,6 +279307,7 @@ function hardhatTestCommand() {
279356
279307
  command: "scs hardhat test test/token.test.ts"
279357
279308
  }
279358
279309
  ])).helpOption(false).option("-h, --help", "Get list of possible hardhat test options").passThroughOptions().allowUnknownOption().action(async (options, cmd2) => {
279310
+ await validateIfRequiredPackagesAreInstalled(["hardhat"]);
279359
279311
  const hardhatOptions = mapPassthroughOptions(options, cmd2);
279360
279312
  const { command, args } = await getPackageManagerExecutable();
279361
279313
  await executeCommand(command, [...args, "hardhat", "test", ...hardhatOptions]);
@@ -279424,7 +279376,7 @@ var SETTLEMINT_NETWORK = "settlemint";
279424
279376
  async function subgraphSetup({ network }) {
279425
279377
  const generated = await isGenerated();
279426
279378
  if (generated) {
279427
- await executeCommand("forge", ["build"]);
279379
+ await executeFoundryCommand("forge", ["build"]);
279428
279380
  }
279429
279381
  if (await exists3("./generated")) {
279430
279382
  await rm4("./generated", { recursive: true, force: true });
@@ -279527,6 +279479,7 @@ async function getNodeName({
279527
279479
  // src/commands/smart-contract-set/subgraph/build.ts
279528
279480
  function subgraphBuildCommand() {
279529
279481
  return new Command("build").description("Build the subgraph").action(async () => {
279482
+ await validateIfRequiredPackagesAreInstalled(["@graphprotocol/graph-cli"]);
279530
279483
  await subgraphSetup({
279531
279484
  network: SETTLEMINT_NETWORK
279532
279485
  });
@@ -279542,6 +279495,7 @@ function subgraphBuildCommand() {
279542
279495
  import { dirname as dirname11 } from "node:path";
279543
279496
  function subgraphCodegenCommand() {
279544
279497
  return new Command("codegen").description("Codegen the subgraph types").action(async () => {
279498
+ await validateIfRequiredPackagesAreInstalled(["@graphprotocol/graph-cli"]);
279545
279499
  await subgraphSetup({
279546
279500
  network: SETTLEMINT_NETWORK
279547
279501
  });
@@ -279600,6 +279554,7 @@ function subgraphDeployCommand() {
279600
279554
  command: "scs subgraph deploy my-subgraph"
279601
279555
  }
279602
279556
  ])).option("-a, --accept-defaults", "Accept the default and previously set values").option("--prod", "Connect to your production environment").argument("[subgraph-name]", "The name of the subgraph to deploy (defaults to value in .env if not provided)").action(async (subgraphName, { prod, acceptDefaults }) => {
279557
+ await validateIfRequiredPackagesAreInstalled(["@graphprotocol/graph-cli"]);
279603
279558
  const autoAccept = !!acceptDefaults || is_in_ci_default;
279604
279559
  const env2 = await loadEnv(false, !!prod);
279605
279560
  const instance = await instancePrompt(env2, true);
@@ -279789,4 +279744,4 @@ async function sdkCliCommand(argv = process.argv) {
279789
279744
  // src/cli.ts
279790
279745
  sdkCliCommand();
279791
279746
 
279792
- //# debugId=ED48CCEAACF575EE64756E2164756E21
279747
+ //# debugId=6B456B48DCE5548864756E2164756E21