@vendure-platform/create 0.1.0 → 0.2.1-nightly.202605190703

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 (97) hide show
  1. package/README.md +37 -27
  2. package/dist/assets/storefront/.env.example +14 -14
  3. package/dist/assets/storefront/messages/de.json +2 -3
  4. package/dist/assets/storefront/messages/en.json +2 -3
  5. package/dist/assets/storefront/next.config.ts +22 -21
  6. package/dist/assets/storefront/package.json +75 -75
  7. package/dist/assets/storefront/public/scenarios/customer/logo.svg +4 -0
  8. package/dist/assets/storefront/src/app/[locale]/layout.tsx +0 -4
  9. package/dist/assets/storefront/src/app/[locale]/sign-in/login-form.tsx +70 -102
  10. package/dist/assets/storefront/src/app/[locale]/sign-in/page.tsx +2 -3
  11. package/dist/assets/storefront/src/config/scenario-meta.ts +3 -7
  12. package/dist/assets/storefront/src/config/scenario.ts +14 -30
  13. package/dist/assets/storefront/src/graphql-env.d.ts +456 -0
  14. package/dist/assets/storefront/src/scenarios/customer/branding.ts +142 -0
  15. package/dist/assets/storefront/src/scenarios/customer/hero.tsx +76 -0
  16. package/dist/assets/storefront/src/scenarios/{default → customer}/index.ts +3 -3
  17. package/dist/assets/storefront/src/scenarios/{default → customer}/meta.ts +1 -1
  18. package/dist/assets/storefront/src/schema.graphql +5852 -0
  19. package/dist/assets/storefront/tsconfig.json +17 -8
  20. package/dist/assets/templates/README.md.hbs +1 -1
  21. package/dist/assets/templates/docker-compose.yml.hbs +0 -4
  22. package/dist/assets/templates/env.hbs +13 -7
  23. package/dist/assets/templates/environment.d.ts.hbs +1 -5
  24. package/dist/assets/templates/npmrc.hbs +1 -1
  25. package/dist/assets/templates/populate.ts.hbs +17 -0
  26. package/dist/assets/templates/server-package.json.hbs +3 -2
  27. package/dist/bin/run.js +17 -3
  28. package/dist/bin/run.js.map +1 -1
  29. package/dist/cli.d.ts +6 -1
  30. package/dist/cli.js +147 -25
  31. package/dist/cli.js.map +1 -1
  32. package/dist/index.d.ts +5 -3
  33. package/dist/index.js +9 -3
  34. package/dist/index.js.map +1 -1
  35. package/dist/plugin-registry.d.ts +43 -6
  36. package/dist/plugin-registry.js +139 -421
  37. package/dist/plugin-registry.js.map +1 -1
  38. package/dist/registry.d.ts +18 -0
  39. package/dist/registry.js +29 -0
  40. package/dist/registry.js.map +1 -0
  41. package/dist/scaffold-shared.d.ts +19 -0
  42. package/dist/scaffold-shared.js +114 -0
  43. package/dist/scaffold-shared.js.map +1 -0
  44. package/dist/scaffold-storefront-only.d.ts +6 -0
  45. package/dist/scaffold-storefront-only.js +101 -0
  46. package/dist/scaffold-storefront-only.js.map +1 -0
  47. package/dist/scaffolder.js +22 -42
  48. package/dist/scaffolder.js.map +1 -1
  49. package/dist/storefront-copier.d.ts +26 -3
  50. package/dist/storefront-copier.js +63 -12
  51. package/dist/storefront-copier.js.map +1 -1
  52. package/dist/template-renderer.d.ts +24 -7
  53. package/dist/template-renderer.js +32 -64
  54. package/dist/template-renderer.js.map +1 -1
  55. package/dist/types.d.ts +46 -27
  56. package/package.json +3 -1
  57. package/dist/assets/storefront/.env.local +0 -1
  58. package/dist/assets/storefront/public/scenarios/b2b-wholesale/hero/hero-bg.webp +0 -0
  59. package/dist/assets/storefront/public/scenarios/b2b-wholesale/logo.svg +0 -4
  60. package/dist/assets/storefront/public/scenarios/default/logo.svg +0 -4
  61. package/dist/assets/storefront/public/scenarios/kaminpro/hero/hero-bg.webp +0 -0
  62. package/dist/assets/storefront/public/scenarios/kaminpro/logo.svg +0 -7
  63. package/dist/assets/storefront/src/components/shared/scenario-paused.tsx +0 -80
  64. package/dist/assets/storefront/src/scenarios/b2b-wholesale/branding.ts +0 -180
  65. package/dist/assets/storefront/src/scenarios/b2b-wholesale/hero.tsx +0 -122
  66. package/dist/assets/storefront/src/scenarios/b2b-wholesale/index.ts +0 -21
  67. package/dist/assets/storefront/src/scenarios/b2b-wholesale/meta.ts +0 -3
  68. package/dist/assets/storefront/src/scenarios/default/branding.ts +0 -148
  69. package/dist/assets/storefront/src/scenarios/default/hero.tsx +0 -107
  70. package/dist/assets/storefront/src/scenarios/kaminpro/auth-gate.tsx +0 -36
  71. package/dist/assets/storefront/src/scenarios/kaminpro/branding.ts +0 -238
  72. package/dist/assets/storefront/src/scenarios/kaminpro/cart-items.tsx +0 -359
  73. package/dist/assets/storefront/src/scenarios/kaminpro/hero.tsx +0 -123
  74. package/dist/assets/storefront/src/scenarios/kaminpro/index.ts +0 -50
  75. package/dist/assets/storefront/src/scenarios/kaminpro/meta.ts +0 -9
  76. package/dist/assets/storefront/src/scenarios/kaminpro/pdp/components/banners.tsx +0 -21
  77. package/dist/assets/storefront/src/scenarios/kaminpro/pdp/components/bom-basket.tsx +0 -221
  78. package/dist/assets/storefront/src/scenarios/kaminpro/pdp/components/btn.tsx +0 -38
  79. package/dist/assets/storefront/src/scenarios/kaminpro/pdp/components/chip.tsx +0 -35
  80. package/dist/assets/storefront/src/scenarios/kaminpro/pdp/components/config-header.tsx +0 -72
  81. package/dist/assets/storefront/src/scenarios/kaminpro/pdp/components/field-row.tsx +0 -126
  82. package/dist/assets/storefront/src/scenarios/kaminpro/pdp/components/info-dot.tsx +0 -38
  83. package/dist/assets/storefront/src/scenarios/kaminpro/pdp/components/login-notice.tsx +0 -81
  84. package/dist/assets/storefront/src/scenarios/kaminpro/pdp/components/module-panel.tsx +0 -144
  85. package/dist/assets/storefront/src/scenarios/kaminpro/pdp/components/quote-dialog.tsx +0 -110
  86. package/dist/assets/storefront/src/scenarios/kaminpro/pdp/components/schematic.tsx +0 -674
  87. package/dist/assets/storefront/src/scenarios/kaminpro/pdp/components/why-panel.tsx +0 -66
  88. package/dist/assets/storefront/src/scenarios/kaminpro/pdp/configurator-pdp.tsx +0 -43
  89. package/dist/assets/storefront/src/scenarios/kaminpro/pdp/configurator-shell.tsx +0 -320
  90. package/dist/assets/storefront/src/scenarios/kaminpro/pdp/lib/data.ts +0 -150
  91. package/dist/assets/storefront/src/scenarios/kaminpro/pdp/lib/types.ts +0 -30
  92. package/dist/assets/storefront/src/scenarios/kaminpro/pdp/styles.css +0 -104
  93. package/dist/assets/storefront/src/scenarios/kaminpro/shop-by-system.tsx +0 -97
  94. package/dist/assets/storefront/src/scenarios/kaminpro/system-finder/decision-tree.ts +0 -261
  95. package/dist/assets/storefront/src/scenarios/kaminpro/system-finder/page.tsx +0 -21
  96. package/dist/assets/storefront/src/scenarios/kaminpro/system-finder/wizard.tsx +0 -600
  97. package/dist/assets/storefront/src/schema.graphql.placeholder +0 -5
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ /**
3
+ * Single source of truth for the @vendure-platform private registry URL.
4
+ *
5
+ * The URL appears in three places at scaffold time:
6
+ * - the project-root `.npmrc` scope mapping (via the `npmrc.hbs` template)
7
+ * - the storefront `.npmrc` scope mapping (written by `storefront-copier`)
8
+ * - the actionable 401 message in `scaffold-shared.ts` (login command +
9
+ * regex that fingerprints private-registry failures in stderr)
10
+ *
11
+ * Keeping the URL in one place means the next registry rename is a single-
12
+ * file edit. The `VENDURE_REGISTRY_URL` override is intended for local
13
+ * Verdaccio testing — set it before invoking the create CLI to scaffold a
14
+ * project pointed at a local registry without needing to patch the template
15
+ * post-scaffold.
16
+ */
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.DEFAULT_REGISTRY_URL = void 0;
19
+ exports.getRegistryUrl = getRegistryUrl;
20
+ exports.getRegistryHostname = getRegistryHostname;
21
+ exports.DEFAULT_REGISTRY_URL = 'https://registry.platform.vendure.io/';
22
+ function getRegistryUrl() {
23
+ var _a;
24
+ return (_a = process.env.VENDURE_REGISTRY_URL) !== null && _a !== void 0 ? _a : exports.DEFAULT_REGISTRY_URL;
25
+ }
26
+ function getRegistryHostname() {
27
+ return new URL(getRegistryUrl()).hostname;
28
+ }
29
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAIH,wCAEC;AAED,kDAEC;AARY,QAAA,oBAAoB,GAAG,uCAAuC,CAAC;AAE5E,SAAgB,cAAc;;IAC1B,OAAO,MAAA,OAAO,CAAC,GAAG,CAAC,oBAAoB,mCAAI,4BAAoB,CAAC;AACpE,CAAC;AAED,SAAgB,mBAAmB;IAC/B,OAAO,IAAI,GAAG,CAAC,cAAc,EAAE,CAAC,CAAC,QAAQ,CAAC;AAC9C,CAAC"}
@@ -0,0 +1,19 @@
1
+ import * as p from '@clack/prompts';
2
+ import { PackageManager } from './types';
3
+ type Spinner = ReturnType<typeof p.spinner>;
4
+ /**
5
+ * Run the package manager's install step inside the scaffolded project.
6
+ * Logs the last few lines of stderr on failure but never throws — install
7
+ * failures are reported as a warning so the customer can retry manually.
8
+ *
9
+ * Special-cases the private-registry 401 because that's the most common
10
+ * first-time failure and the generic "run install manually" message gives
11
+ * no clue about where to look.
12
+ */
13
+ export declare function installDependencies(projectDir: string, packageManager: PackageManager, spinner: Spinner): Promise<void>;
14
+ /**
15
+ * Initialise a git repo in the scaffolded project, optionally pushing to a
16
+ * fresh GitHub repo. Never throws — git/gh failures are reported as a warning.
17
+ */
18
+ export declare function initRepository(projectDir: string, createGithubRepo: boolean, githubOrg: string | undefined, spinner: Spinner): Promise<void>;
19
+ export {};
@@ -0,0 +1,114 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.installDependencies = installDependencies;
37
+ exports.initRepository = initRepository;
38
+ const p = __importStar(require("@clack/prompts"));
39
+ const child_process_1 = require("child_process");
40
+ const util_1 = require("util");
41
+ const git_init_1 = require("./git-init");
42
+ const registry_1 = require("./registry");
43
+ const execAsync = (0, util_1.promisify)(child_process_1.exec);
44
+ /**
45
+ * Run the package manager's install step inside the scaffolded project.
46
+ * Logs the last few lines of stderr on failure but never throws — install
47
+ * failures are reported as a warning so the customer can retry manually.
48
+ *
49
+ * Special-cases the private-registry 401 because that's the most common
50
+ * first-time failure and the generic "run install manually" message gives
51
+ * no clue about where to look.
52
+ */
53
+ async function installDependencies(projectDir, packageManager, spinner) {
54
+ var _a;
55
+ spinner.message(`Installing dependencies with ${packageManager} (this may take a few minutes)...`);
56
+ try {
57
+ await execAsync(`${packageManager} install`, { cwd: projectDir });
58
+ }
59
+ catch (err) {
60
+ spinner.stop(`${packageManager} install failed.`);
61
+ const stderr = err instanceof Error && 'stderr' in err
62
+ ? (_a = err.stderr) === null || _a === void 0 ? void 0 : _a.trim()
63
+ : undefined;
64
+ if (stderr) {
65
+ p.log.error(stderr.split('\n').slice(-5).join('\n'));
66
+ }
67
+ if (stderr && isRegistryAuthFailure(stderr)) {
68
+ p.log.warn(registryAuthFailureMessage(packageManager, projectDir));
69
+ }
70
+ else {
71
+ p.log.warn(`Dependency install failed — run \`${packageManager} install\` manually in the project directory.`);
72
+ }
73
+ spinner.start('Continuing...');
74
+ }
75
+ }
76
+ function isRegistryAuthFailure(stderr) {
77
+ const hostnamePattern = (0, registry_1.getRegistryHostname)().replace(/\./g, '\\.');
78
+ return new RegExp(`\\bE401\\b|401 Unauthorized|${hostnamePattern}`, 'i').test(stderr);
79
+ }
80
+ function registryAuthFailureMessage(packageManager, projectDir) {
81
+ // `npm login` accepts the URL with or without a trailing slash; strip it
82
+ // for the user-facing copy so the command looks tidy.
83
+ const loginUrl = (0, registry_1.getRegistryUrl)().replace(/\/+$/, '');
84
+ return [
85
+ 'Install failed: not authenticated to the Vendure private registry',
86
+ '(or your existing token has expired).',
87
+ '',
88
+ 'To authenticate (or re-authenticate), run:',
89
+ ` npm login --auth-type=web --registry=${loginUrl}`,
90
+ '',
91
+ 'Setup guide: https://portal.vendure.io/getting-started',
92
+ '',
93
+ `Then re-run \`${packageManager} install\` in ${projectDir}.`,
94
+ ].join('\n');
95
+ }
96
+ /**
97
+ * Initialise a git repo in the scaffolded project, optionally pushing to a
98
+ * fresh GitHub repo. Never throws — git/gh failures are reported as a warning.
99
+ */
100
+ async function initRepository(projectDir, createGithubRepo, githubOrg, spinner) {
101
+ spinner.message('Initializing git...');
102
+ try {
103
+ await (0, git_init_1.initGit)(projectDir, createGithubRepo, githubOrg);
104
+ }
105
+ catch (err) {
106
+ spinner.stop('Git setup had issues.');
107
+ const message = err instanceof Error ? err.message : String(err);
108
+ p.log.warn(createGithubRepo
109
+ ? `Git/GitHub setup had issues — make sure the gh CLI is installed and authenticated. (${message})`
110
+ : `Git init had issues — initialise the repo manually if needed. (${message})`);
111
+ spinner.start('Continuing...');
112
+ }
113
+ }
114
+ //# sourceMappingURL=scaffold-shared.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scaffold-shared.js","sourceRoot":"","sources":["../src/scaffold-shared.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { StorefrontOnlyOptions } from './types';
2
+ /**
3
+ * Scaffold a standalone Vendure storefront pointed at an external Shop API.
4
+ * No server, no plugins, no demo data — just the Next.js storefront.
5
+ */
6
+ export declare function scaffoldStorefrontOnly(options: StorefrontOnlyOptions): Promise<void>;
@@ -0,0 +1,101 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.scaffoldStorefrontOnly = scaffoldStorefrontOnly;
37
+ const fs = __importStar(require("fs-extra"));
38
+ const path = __importStar(require("path"));
39
+ const p = __importStar(require("@clack/prompts"));
40
+ const storefront_copier_1 = require("./storefront-copier");
41
+ const scaffold_shared_1 = require("./scaffold-shared");
42
+ /**
43
+ * Scaffold a standalone Vendure storefront pointed at an external Shop API.
44
+ * No server, no plugins, no demo data — just the Next.js storefront.
45
+ */
46
+ async function scaffoldStorefrontOnly(options) {
47
+ const { projectName, apiUrl, scenario, packageManager, skipInstall, skipGit, dryRun } = options;
48
+ const projectDir = path.resolve(process.cwd(), projectName);
49
+ if (await fs.pathExists(projectDir)) {
50
+ const entries = await fs.readdir(projectDir);
51
+ if (entries.length > 0) {
52
+ p.log.error(`Directory "${projectDir}" already exists and is not empty.`);
53
+ process.exit(1);
54
+ }
55
+ }
56
+ if (dryRun) {
57
+ const summary = [
58
+ `Project: ${projectName} → ${projectDir}`,
59
+ '',
60
+ `Mode: storefront-only`,
61
+ `Scenario: ${scenario}`,
62
+ `API URL: ${apiUrl !== null && apiUrl !== void 0 ? apiUrl : '(use default localhost)'}`,
63
+ `Package manager: ${packageManager}`,
64
+ `Install deps: ${skipInstall ? 'no' : 'yes'}`,
65
+ `Git init: ${skipGit ? 'no' : 'yes'}`,
66
+ ].join('\n');
67
+ p.note(summary, 'Dry run');
68
+ p.outro('Dry run complete — no files written.');
69
+ return;
70
+ }
71
+ const s = p.spinner();
72
+ s.start('Creating project directory...');
73
+ await fs.ensureDir(projectDir);
74
+ s.message('Copying storefront...');
75
+ await (0, storefront_copier_1.copyStorefront)(projectDir, {
76
+ mode: 'storefront-only',
77
+ scenario,
78
+ apiUrl,
79
+ packageName: projectName,
80
+ });
81
+ if (!skipInstall) {
82
+ await (0, scaffold_shared_1.installDependencies)(projectDir, packageManager, s);
83
+ }
84
+ if (!skipGit) {
85
+ await (0, scaffold_shared_1.initRepository)(projectDir, false, undefined, s);
86
+ }
87
+ s.stop(`Project "${projectName}" created successfully!`);
88
+ const devCommand = packageManager === 'npm' ? 'npm run dev' : `${packageManager} run dev`;
89
+ const steps = [
90
+ `cd ${projectName}`,
91
+ apiUrl
92
+ ? `# .env.local already points VENDURE_SHOP_API_URL at ${apiUrl}`
93
+ : '# Edit .env.local and set VENDURE_SHOP_API_URL to your Vendure server',
94
+ devCommand,
95
+ '',
96
+ 'Storefront: http://localhost:${STOREFRONT_PORT:-3001}',
97
+ ].join('\n');
98
+ p.note(steps, 'Next steps');
99
+ p.outro('Happy building!');
100
+ }
101
+ //# sourceMappingURL=scaffold-storefront-only.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scaffold-storefront-only.js","sourceRoot":"","sources":["../src/scaffold-storefront-only.ts"],"names":[],"mappings":"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"}
@@ -41,10 +41,7 @@ const p = __importStar(require("@clack/prompts"));
41
41
  const plugin_registry_1 = require("./plugin-registry");
42
42
  const template_renderer_1 = require("./template-renderer");
43
43
  const storefront_copier_1 = require("./storefront-copier");
44
- const git_init_1 = require("./git-init");
45
- const child_process_1 = require("child_process");
46
- const util_1 = require("util");
47
- const execAsync = (0, util_1.promisify)(child_process_1.exec);
44
+ const scaffold_shared_1 = require("./scaffold-shared");
48
45
  /** Template-to-output mapping used by the scaffolder. */
49
46
  exports.TEMPLATE_FILES = [
50
47
  { template: 'vendure-config.ts.hbs', output: 'server/src/vendure-config.ts' },
@@ -69,14 +66,13 @@ exports.TEMPLATE_FILES = [
69
66
  * Scaffold a complete Vendure demo project.
70
67
  */
71
68
  async function scaffold(options) {
72
- var _a;
73
- const { projectName, companyName, selectedPlugins, includeStorefront, createGithubRepo, githubOrg, skipInstall, skipGit, dryRun } = options;
69
+ const { projectName, companyName, selectedPlugins, includeStorefront, createGithubRepo, githubOrg, packageManager = 'bun', skipInstall, skipGit, dryRun } = options;
74
70
  const projectDir = path.resolve(process.cwd(), projectName);
75
- // 1. Resolve plugin dependencies
76
- const resolvedPluginKeys = (0, plugin_registry_1.resolvePluginDependencies)(selectedPlugins);
77
- const autoIncluded = resolvedPluginKeys.filter((k) => !selectedPlugins.includes(k));
78
- if (autoIncluded.length > 0) {
79
- p.log.warn(`Auto-including dependencies: ${autoIncluded.map((k) => { var _a, _b; return (_b = (_a = (0, plugin_registry_1.getPlugin)(k)) === null || _a === void 0 ? void 0 : _a.displayName) !== null && _b !== void 0 ? _b : k; }).join(', ')}`);
71
+ // 1. Resolve active plugins (always-on core + user-selected)
72
+ const resolvedPluginKeys = (0, plugin_registry_1.resolveActivePluginKeys)(selectedPlugins);
73
+ const alwaysOnNames = plugin_registry_1.ALWAYS_ACTIVE_KEYS.map((k) => (0, plugin_registry_1.getPlugin)(k).displayName);
74
+ if (alwaysOnNames.length > 0) {
75
+ p.log.info(`Always-on core plugins: ${alwaysOnNames.join(', ')}`);
80
76
  }
81
77
  // 2. Create project directory (abort if it already has content)
82
78
  if (await fs.pathExists(projectDir)) {
@@ -88,7 +84,7 @@ async function scaffold(options) {
88
84
  }
89
85
  // Dry-run: print summary and exit without writing anything
90
86
  if (dryRun) {
91
- const resolvedPlugins = resolvedPluginKeys.map((k) => { var _a, _b; return (_b = (_a = (0, plugin_registry_1.getPlugin)(k)) === null || _a === void 0 ? void 0 : _a.displayName) !== null && _b !== void 0 ? _b : k; });
87
+ const resolvedPlugins = resolvedPluginKeys.map((k) => (0, plugin_registry_1.getPlugin)(k).displayName);
92
88
  const fileList = exports.TEMPLATE_FILES.map((f) => ` ${f.output}`).join('\n');
93
89
  const demoDataFiles = [
94
90
  ' server/src/demo-data/products.csv',
@@ -107,7 +103,7 @@ async function scaffold(options) {
107
103
  ` ${resolvedPlugins.join(', ')}`,
108
104
  '',
109
105
  `Storefront: ${includeStorefront ? 'yes' : 'no'}`,
110
- `npm install: ${skipInstall ? 'no' : 'yes'}`,
106
+ `Install deps with ${packageManager}: ${skipInstall ? 'no' : 'yes'}`,
111
107
  `Git init: ${skipGit ? 'no' : 'yes'}`,
112
108
  `GitHub repo: ${createGithubRepo ? 'yes' : 'no'}`,
113
109
  ].join('\n');
@@ -119,7 +115,7 @@ async function scaffold(options) {
119
115
  s.start('Creating project directory...');
120
116
  await fs.ensureDir(projectDir);
121
117
  // 3. Build template context
122
- const { context, hbs } = (0, template_renderer_1.buildTemplateContext)(projectName, companyName, resolvedPluginKeys, includeStorefront);
118
+ const { context, hbs } = (0, template_renderer_1.buildTemplateContext)(projectName, companyName, selectedPlugins, includeStorefront);
123
119
  // 4. Render and write server files
124
120
  s.message('Generating server files...');
125
121
  const serverDir = path.join(projectDir, 'server');
@@ -141,51 +137,35 @@ async function scaffold(options) {
141
137
  if (includeStorefront) {
142
138
  s.message('Copying storefront...');
143
139
  try {
144
- await (0, storefront_copier_1.copyStorefront)(projectDir);
140
+ await (0, storefront_copier_1.copyStorefront)(projectDir, {
141
+ mode: 'full-project',
142
+ scenario: 'default',
143
+ packageName: `${projectName}-storefront`,
144
+ });
145
145
  }
146
146
  catch (err) {
147
147
  s.stop('Storefront copy failed.');
148
- p.log.warn('Storefront copy failed — you can set it up manually later.');
148
+ const message = err instanceof Error ? err.message : String(err);
149
+ p.log.warn(`Storefront copy failed — you can set it up manually later. (${message})`);
149
150
  s.start('Continuing...');
150
151
  }
151
152
  }
152
153
  // 8. Install dependencies
153
154
  if (!skipInstall) {
154
- s.message('Installing dependencies (this may take a few minutes)...');
155
- try {
156
- await execAsync('npm install', { cwd: projectDir });
157
- }
158
- catch (err) {
159
- s.stop('npm install failed.');
160
- const stderr = err instanceof Error && 'stderr' in err
161
- ? (_a = err.stderr) === null || _a === void 0 ? void 0 : _a.trim()
162
- : undefined;
163
- if (stderr) {
164
- p.log.error(stderr.split('\n').slice(-5).join('\n'));
165
- }
166
- p.log.warn('npm install failed — run `npm install` manually in the project directory.');
167
- s.start('Continuing...');
168
- }
155
+ await (0, scaffold_shared_1.installDependencies)(projectDir, packageManager, s);
169
156
  }
170
157
  // 9. Git init + GitHub repo
171
158
  if (!skipGit) {
172
- s.message('Initializing git...');
173
- try {
174
- await (0, git_init_1.initGit)(projectDir, createGithubRepo, githubOrg);
175
- }
176
- catch {
177
- s.stop('Git setup had issues.');
178
- p.log.warn('Git/GitHub setup had issues. Make sure the gh CLI is installed and authenticated.');
179
- s.start('Continuing...');
180
- }
159
+ await (0, scaffold_shared_1.initRepository)(projectDir, createGithubRepo, githubOrg, s);
181
160
  }
182
161
  s.stop(`Project "${projectName}" created successfully!`);
183
162
  // 10. Print next steps
163
+ const runPrefix = packageManager === 'npm' ? 'npm run' : `${packageManager} run`;
184
164
  const steps = [
185
165
  `cd ${projectName}`,
186
166
  'docker compose up -d',
187
- 'npm run populate',
188
- 'npm run dev',
167
+ `${runPrefix} populate`,
168
+ `${runPrefix} dev`,
189
169
  '',
190
170
  `Dashboard: http://localhost:3500/dashboard`,
191
171
  includeStorefront ? `Storefront: http://localhost:3001` : '',
@@ -1 +1 @@
1
- {"version":3,"file":"scaffolder.js","sourceRoot":"","sources":["../src/scaffolder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scaffolder.js","sourceRoot":"","sources":["../src/scaffolder.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,29 @@
1
+ export type StorefrontMode = 'full-project' | 'storefront-only';
2
+ export interface CopyStorefrontOptions {
3
+ /**
4
+ * `full-project` — storefront lives at `<projectDir>/storefront/` alongside `server/`.
5
+ * `storefront-only` — storefront IS the project root.
6
+ */
7
+ mode: StorefrontMode;
8
+ /**
9
+ * Scenario name baked into `NEXT_PUBLIC_SCENARIO`. Defaults to `default`.
10
+ */
11
+ scenario?: string;
12
+ /**
13
+ * Vendure Shop API URL written to `.env.local`. Required for `storefront-only`,
14
+ * optional for `full-project` (defaults to `http://localhost:3500/shop-api`
15
+ * for the locally-scaffolded server).
16
+ */
17
+ apiUrl?: string;
18
+ /**
19
+ * Override package.json `name`. Defaults to the directory name of the
20
+ * storefront target.
21
+ */
22
+ packageName?: string;
23
+ }
1
24
  /**
2
25
  * Copy the bundled storefront from dist/assets/storefront/ into the scaffolded project.
3
- * The build-time script (tools/scripts/copy-storefront.js) already handles exclusions
4
- * and next.config.ts dotenv patching, so this is a straight copy.
26
+ * Generates a project-scoped `.env.local` (random REVALIDATION_SECRET, optional
27
+ * API URL override, scenario selection) and patches `package.json` `name`.
5
28
  */
6
- export declare function copyStorefront(projectDir: string): Promise<void>;
29
+ export declare function copyStorefront(projectDir: string, options: CopyStorefrontOptions): Promise<void>;
@@ -34,35 +34,86 @@ var __importStar = (this && this.__importStar) || (function () {
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.copyStorefront = copyStorefront;
37
+ const crypto = __importStar(require("crypto"));
37
38
  const fs = __importStar(require("fs-extra"));
38
39
  const path = __importStar(require("path"));
40
+ const registry_1 = require("./registry");
39
41
  /**
40
42
  * Copy the bundled storefront from dist/assets/storefront/ into the scaffolded project.
41
- * The build-time script (tools/scripts/copy-storefront.js) already handles exclusions
42
- * and next.config.ts dotenv patching, so this is a straight copy.
43
+ * Generates a project-scoped `.env.local` (random REVALIDATION_SECRET, optional
44
+ * API URL override, scenario selection) and patches `package.json` `name`.
43
45
  */
44
- async function copyStorefront(projectDir) {
46
+ async function copyStorefront(projectDir, options) {
47
+ var _a;
45
48
  const bundledStorefrontPath = getBundledStorefrontPath();
46
- const destPath = path.join(projectDir, 'storefront');
49
+ const destPath = options.mode === 'storefront-only'
50
+ ? projectDir
51
+ : path.join(projectDir, 'storefront');
47
52
  await fs.copy(bundledStorefrontPath, destPath);
48
- // Remove the placeholder file left by the build script
49
- const placeholderPath = path.join(destPath, 'src/schema.graphql.placeholder');
50
- if (await fs.pathExists(placeholderPath)) {
51
- await fs.remove(placeholderPath);
53
+ await writeStorefrontEnv(destPath, options);
54
+ await writeStorefrontNpmrc(destPath);
55
+ await patchPackageName(destPath, (_a = options.packageName) !== null && _a !== void 0 ? _a : path.basename(destPath));
56
+ }
57
+ /**
58
+ * `npm pack` hard-excludes any file named `.npmrc` from tarballs (regardless
59
+ * of `files`/`.npmignore`), so we cannot bundle it. Storefront-only scaffolds
60
+ * have no surrounding project root, so this scope mapping must be written at
61
+ * scaffold time — without it `${pm} install` 401s on @vendure-platform/*
62
+ * packages even when the user has a valid token in ~/.npmrc.
63
+ */
64
+ async function writeStorefrontNpmrc(storefrontDir) {
65
+ await fs.writeFile(path.join(storefrontDir, '.npmrc'), `@vendure-platform:registry=${(0, registry_1.getRegistryUrl)()}\n`);
66
+ }
67
+ async function writeStorefrontEnv(storefrontDir, options) {
68
+ var _a, _b;
69
+ const secret = crypto.randomBytes(32).toString('hex');
70
+ const scenario = (_a = options.scenario) !== null && _a !== void 0 ? _a : 'default';
71
+ const apiUrl = (_b = options.apiUrl) !== null && _b !== void 0 ? _b : '';
72
+ const lines = [
73
+ '# Generated by @vendure-platform/create. Safe to edit.',
74
+ '',
75
+ '# Used to authenticate revalidation webhooks. Treat as a secret.',
76
+ `REVALIDATION_SECRET=${secret}`,
77
+ '',
78
+ `NEXT_PUBLIC_SCENARIO=${scenario}`,
79
+ '',
80
+ ];
81
+ if (apiUrl) {
82
+ lines.push('# Vendure Shop API URL.', `VENDURE_SHOP_API_URL=${apiUrl}`, '');
83
+ }
84
+ else {
85
+ lines.push('# Vendure Shop API URL. Defaults to http://localhost:3500/shop-api when unset.', '# VENDURE_SHOP_API_URL=https://shop.example.com/shop-api', '');
52
86
  }
87
+ await fs.writeFile(path.join(storefrontDir, '.env.local'), lines.join('\n'));
88
+ }
89
+ async function patchPackageName(storefrontDir, name) {
90
+ const pkgPath = path.join(storefrontDir, 'package.json');
91
+ if (!(await fs.pathExists(pkgPath)))
92
+ return;
93
+ const pkg = await fs.readJson(pkgPath);
94
+ pkg.name = sanitizePackageName(name);
95
+ await fs.writeJson(pkgPath, pkg, { spaces: 4 });
96
+ }
97
+ function sanitizePackageName(name) {
98
+ return name
99
+ .toLowerCase()
100
+ .replace(/[^a-z0-9._-]/g, '-')
101
+ .replace(/^-+|-+$/g, '')
102
+ || 'storefront';
53
103
  }
54
104
  function getBundledStorefrontPath() {
105
+ // Installed/published package: __dirname is dist/, bundled storefront at dist/assets/storefront/
106
+ // Local dev (running from src/): __dirname is src/, bundled storefront at dist/assets/storefront/
55
107
  const candidates = [
56
- // When running from dist/ (installed package): dist/assets/storefront/
57
108
  path.join(__dirname, 'assets', 'storefront'),
58
- // When running from src/ during development/tests: assets/storefront/
59
- path.join(__dirname, '..', 'assets', 'storefront'),
109
+ path.join(__dirname, '..', 'dist', 'assets', 'storefront'),
60
110
  ];
61
111
  for (const candidate of candidates) {
62
112
  if (fs.existsSync(candidate)) {
63
113
  return candidate;
64
114
  }
65
115
  }
66
- throw new Error('Bundled storefront not found. The package may not have been built correctly.');
116
+ throw new Error('Bundled storefront not found. Build @vendure-platform/create first ' +
117
+ '(`bunx nx run @vendure-platform/create:build`).');
67
118
  }
68
119
  //# sourceMappingURL=storefront-copier.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"storefront-copier.js","sourceRoot":"","sources":["../src/storefront-copier.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,wCAWC;AAnBD,6CAA+B;AAC/B,2CAA6B;AAE7B;;;;GAIG;AACI,KAAK,UAAU,cAAc,CAAC,UAAkB;IACnD,MAAM,qBAAqB,GAAG,wBAAwB,EAAE,CAAC;IACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IAErD,MAAM,EAAE,CAAC,IAAI,CAAC,qBAAqB,EAAE,QAAQ,CAAC,CAAC;IAE/C,uDAAuD;IACvD,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,gCAAgC,CAAC,CAAC;IAC9E,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QACvC,MAAM,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;IACrC,CAAC;AACL,CAAC;AAED,SAAS,wBAAwB;IAC7B,MAAM,UAAU,GAAG;QACf,uEAAuE;QACvE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,YAAY,CAAC;QAC5C,sEAAsE;QACtE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,CAAC;KACrD,CAAC;IACF,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACjC,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC3B,OAAO,SAAS,CAAC;QACrB,CAAC;IACL,CAAC;IACD,MAAM,IAAI,KAAK,CACX,8EAA8E,CACjF,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"storefront-copier.js","sourceRoot":"","sources":["../src/storefront-copier.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCA,wCAeC;AAnDD,+CAAiC;AACjC,6CAA+B;AAC/B,2CAA6B;AAE7B,yCAA4C;AA2B5C;;;;GAIG;AACI,KAAK,UAAU,cAAc,CAChC,UAAkB,EAClB,OAA8B;;IAE9B,MAAM,qBAAqB,GAAG,wBAAwB,EAAE,CAAC;IACzD,MAAM,QAAQ,GACV,OAAO,CAAC,IAAI,KAAK,iBAAiB;QAC9B,CAAC,CAAC,UAAU;QACZ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IAE9C,MAAM,EAAE,CAAC,IAAI,CAAC,qBAAqB,EAAE,QAAQ,CAAC,CAAC;IAE/C,MAAM,kBAAkB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC5C,MAAM,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IACrC,MAAM,gBAAgB,CAAC,QAAQ,EAAE,MAAA,OAAO,CAAC,WAAW,mCAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;AACrF,CAAC;AAED;;;;;;GAMG;AACH,KAAK,UAAU,oBAAoB,CAAC,aAAqB;IACrD,MAAM,EAAE,CAAC,SAAS,CACd,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,EAClC,8BAA8B,IAAA,yBAAc,GAAE,IAAI,CACrD,CAAC;AACN,CAAC;AAED,KAAK,UAAU,kBAAkB,CAC7B,aAAqB,EACrB,OAA8B;;IAE9B,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACtD,MAAM,QAAQ,GAAG,MAAA,OAAO,CAAC,QAAQ,mCAAI,SAAS,CAAC;IAC/C,MAAM,MAAM,GAAG,MAAA,OAAO,CAAC,MAAM,mCAAI,EAAE,CAAC;IAEpC,MAAM,KAAK,GAAa;QACpB,wDAAwD;QACxD,EAAE;QACF,kEAAkE;QAClE,uBAAuB,MAAM,EAAE;QAC/B,EAAE;QACF,wBAAwB,QAAQ,EAAE;QAClC,EAAE;KACL,CAAC;IAEF,IAAI,MAAM,EAAE,CAAC;QACT,KAAK,CAAC,IAAI,CACN,yBAAyB,EACzB,wBAAwB,MAAM,EAAE,EAChC,EAAE,CACL,CAAC;IACN,CAAC;SAAM,CAAC;QACJ,KAAK,CAAC,IAAI,CACN,gFAAgF,EAChF,0DAA0D,EAC1D,EAAE,CACL,CAAC;IACN,CAAC;IAED,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACjF,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,aAAqB,EAAE,IAAY;IAC/D,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;IACzD,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAAE,OAAO;IAC5C,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACvC,GAAG,CAAC,IAAI,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;AACpD,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAY;IACrC,OAAO,IAAI;SACN,WAAW,EAAE;SACb,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC;SAC7B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;WACrB,YAAY,CAAC;AACxB,CAAC;AAED,SAAS,wBAAwB;IAC7B,iGAAiG;IACjG,kGAAkG;IAClG,MAAM,UAAU,GAAG;QACf,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,YAAY,CAAC;QAC5C,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,CAAC;KAC7D,CAAC;IACF,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACjC,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC3B,OAAO,SAAS,CAAC;QACrB,CAAC;IACL,CAAC;IACD,MAAM,IAAI,KAAK,CACX,qEAAqE;QACrE,iDAAiD,CACpD,CAAC;AACN,CAAC"}