create-brainerce-store 1.41.0 → 1.41.1

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/dist/index.js CHANGED
@@ -31,7 +31,7 @@ var require_package = __commonJS({
31
31
  "package.json"(exports2, module2) {
32
32
  module2.exports = {
33
33
  name: "create-brainerce-store",
34
- version: "1.41.0",
34
+ version: "1.41.1",
35
35
  description: "Scaffold a production-ready e-commerce storefront connected to Brainerce",
36
36
  bin: {
37
37
  "create-brainerce-store": "dist/index.js"
@@ -65,7 +65,7 @@ var require_package = __commonJS({
65
65
  typescript: "^5.4.0"
66
66
  },
67
67
  engines: {
68
- node: ">=18"
68
+ node: "^20.19.0 || ^22.13.0 || >=24.0.0"
69
69
  },
70
70
  keywords: [
71
71
  "brainerce",
@@ -124,6 +124,25 @@ function validateProjectName(name) {
124
124
  }
125
125
  return null;
126
126
  }
127
+ var MIN_NODE_RANGE = {
128
+ description: "^20.19.0 || ^22.13.0 || >=24.0.0",
129
+ ranges: [
130
+ { major: 20, minMinor: 19 },
131
+ { major: 22, minMinor: 13 }
132
+ ],
133
+ minMajor: 24
134
+ };
135
+ function validateNodeVersion(versionString) {
136
+ const match = /^v?(\d+)\.(\d+)\.(\d+)/.exec(versionString);
137
+ if (!match) return null;
138
+ const major = Number(match[1]);
139
+ const minor = Number(match[2]);
140
+ if (major >= MIN_NODE_RANGE.minMajor) return null;
141
+ for (const range of MIN_NODE_RANGE.ranges) {
142
+ if (major === range.major && minor >= range.minMinor) return null;
143
+ }
144
+ return `Node ${versionString} is not supported. Brainerce storefronts depend on jsdom@29 (via isomorphic-dompurify), which requires Node ${MIN_NODE_RANGE.description}. Please upgrade Node \u2014 older versions cannot \`require()\` the ESM \`@exodus/bytes\` module and the dev server will crash on first request.`;
145
+ }
127
146
  function validateApiUrl(url) {
128
147
  if (!url) return null;
129
148
  let parsed;
@@ -679,6 +698,11 @@ program.name("create-brainerce-store").description("Scaffold a production-ready
679
698
  ).option("--language <lang>", "Store language (en, he)").option("--framework <framework>", "Framework to use", "nextjs").option("--theme <theme>", "Theme to apply", "minimal").option("--pkg-manager <manager>", "Package manager (npm, pnpm, yarn, bun)").option("--no-git", "Skip git initialization").option("--no-install", "Skip dependency installation").action(async (projectNameArg, options) => {
680
699
  try {
681
700
  logger.banner(pkg.version);
701
+ const nodeError = validateNodeVersion(process.versions.node);
702
+ if (nodeError) {
703
+ logger.error(nodeError);
704
+ process.exit(1);
705
+ }
682
706
  const updateCheck = checkForUpdate(pkg.name, pkg.version);
683
707
  let projectName = projectNameArg;
684
708
  let scaffoldInPlace = false;