@vendure-platform/create 0.5.1 → 1.0.0-major.202609160652.120.4
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/README.md +48 -36
- package/dist/add-to-existing.d.ts +20 -14
- package/dist/add-to-existing.js +1 -1
- package/dist/assets/demo-data/assets/branding/logo.svg +4 -0
- package/dist/assets/demo-data/assets/images/absorbent-pad.webp +0 -0
- package/dist/assets/demo-data/assets/images/adjustable-wrench.webp +0 -0
- package/dist/assets/demo-data/assets/images/anchor-bolt.webp +0 -0
- package/dist/assets/demo-data/assets/images/angle-grinder.webp +0 -0
- package/dist/assets/demo-data/assets/images/barrier-tape.webp +0 -0
- package/dist/assets/demo-data/assets/images/bench-grinder.webp +0 -0
- package/dist/assets/demo-data/assets/images/bracket.webp +0 -0
- package/dist/assets/demo-data/assets/images/broom.webp +0 -0
- package/dist/assets/demo-data/assets/images/bucket.webp +0 -0
- package/dist/assets/demo-data/assets/images/cable-gland.webp +0 -0
- package/dist/assets/demo-data/assets/images/cable-tie.webp +0 -0
- package/dist/assets/demo-data/assets/images/cable-tray.webp +0 -0
- package/dist/assets/demo-data/assets/images/cable.webp +0 -0
- package/dist/assets/demo-data/assets/images/chimney-base-kit.webp +0 -0
- package/dist/assets/demo-data/assets/images/chimney-cowl-bird-guard.webp +0 -0
- package/dist/assets/demo-data/assets/images/chimney-cowl-open.webp +0 -0
- package/dist/assets/demo-data/assets/images/chimney-storm-collar.webp +0 -0
- package/dist/assets/demo-data/assets/images/chimney-wall-bracket.webp +0 -0
- package/dist/assets/demo-data/assets/images/circular-saw.webp +0 -0
- package/dist/assets/demo-data/assets/images/cleaning-spray.webp +0 -0
- package/dist/assets/demo-data/assets/images/conduit.webp +0 -0
- package/dist/assets/demo-data/assets/images/cordless-drill.webp +0 -0
- package/dist/assets/demo-data/assets/images/drill-bits.webp +0 -0
- package/dist/assets/demo-data/assets/images/dust-mask.webp +0 -0
- package/dist/assets/demo-data/assets/images/ear-defenders.webp +0 -0
- package/dist/assets/demo-data/assets/images/ear-plugs.webp +0 -0
- package/dist/assets/demo-data/assets/images/extension-lead.webp +0 -0
- package/dist/assets/demo-data/assets/images/eye-wash-station.webp +0 -0
- package/dist/assets/demo-data/assets/images/face-shield.webp +0 -0
- package/dist/assets/demo-data/assets/images/file-set.webp +0 -0
- package/dist/assets/demo-data/assets/images/first-aid-kit.webp +0 -0
- package/dist/assets/demo-data/assets/images/floor-sign.webp +0 -0
- package/dist/assets/demo-data/assets/images/flue-bend-45.webp +0 -0
- package/dist/assets/demo-data/assets/images/flue-bend-90.webp +0 -0
- package/dist/assets/demo-data/assets/images/flue-section-1000mm.webp +0 -0
- package/dist/assets/demo-data/assets/images/flue-section-250mm.webp +0 -0
- package/dist/assets/demo-data/assets/images/flue-section-500mm.webp +0 -0
- package/dist/assets/demo-data/assets/images/fuse.webp +0 -0
- package/dist/assets/demo-data/assets/images/glove-dispenser.webp +0 -0
- package/dist/assets/demo-data/assets/images/grinding-disc.webp +0 -0
- package/dist/assets/demo-data/assets/images/hacksaw.webp +0 -0
- package/dist/assets/demo-data/assets/images/hammer.webp +0 -0
- package/dist/assets/demo-data/assets/images/hand-sanitiser.webp +0 -0
- package/dist/assets/demo-data/assets/images/head-torch.webp +0 -0
- package/dist/assets/demo-data/assets/images/heat-gun.webp +0 -0
- package/dist/assets/demo-data/assets/images/hex-bolt.webp +0 -0
- package/dist/assets/demo-data/assets/images/hex-key-set.webp +0 -0
- package/dist/assets/demo-data/assets/images/hex-nut.webp +0 -0
- package/dist/assets/demo-data/assets/images/hi-vis-jacket.webp +0 -0
- package/dist/assets/demo-data/assets/images/hi-vis-vest.webp +0 -0
- package/dist/assets/demo-data/assets/images/hose-clamp.webp +0 -0
- package/dist/assets/demo-data/assets/images/impact-driver.webp +0 -0
- package/dist/assets/demo-data/assets/images/jigsaw.webp +0 -0
- package/dist/assets/demo-data/assets/images/junction-box.webp +0 -0
- package/dist/assets/demo-data/assets/images/knee-pads.webp +0 -0
- package/dist/assets/demo-data/assets/images/machine-screw.webp +0 -0
- package/dist/assets/demo-data/assets/images/made-to-order-configurable-chimney.webp +0 -0
- package/dist/assets/demo-data/assets/images/mallet.webp +0 -0
- package/dist/assets/demo-data/assets/images/mcb.webp +0 -0
- package/dist/assets/demo-data/assets/images/mop.webp +0 -0
- package/dist/assets/demo-data/assets/images/paper-towels.webp +0 -0
- package/dist/assets/demo-data/assets/images/pipe-wrench.webp +0 -0
- package/dist/assets/demo-data/assets/images/pliers-set.webp +0 -0
- package/dist/assets/demo-data/assets/images/pry-bar.webp +0 -0
- package/dist/assets/demo-data/assets/images/rcd.webp +0 -0
- package/dist/assets/demo-data/assets/images/reciprocating-saw.webp +0 -0
- package/dist/assets/demo-data/assets/images/rivet.webp +0 -0
- package/dist/assets/demo-data/assets/images/roof-flashing-high-pitch.webp +0 -0
- package/dist/assets/demo-data/assets/images/roof-flashing-low-pitch.webp +0 -0
- package/dist/assets/demo-data/assets/images/safety-boots.webp +0 -0
- package/dist/assets/demo-data/assets/images/safety-glasses.webp +0 -0
- package/dist/assets/demo-data/assets/images/safety-harness.webp +0 -0
- package/dist/assets/demo-data/assets/images/safety-helmet.webp +0 -0
- package/dist/assets/demo-data/assets/images/safety-sign.webp +0 -0
- package/dist/assets/demo-data/assets/images/sanding-disc.webp +0 -0
- package/dist/assets/demo-data/assets/images/saw-blade.webp +0 -0
- package/dist/assets/demo-data/assets/images/screwdriver-set.webp +0 -0
- package/dist/assets/demo-data/assets/images/screwdriver.webp +0 -0
- package/dist/assets/demo-data/assets/images/self-tapping-screw.webp +0 -0
- package/dist/assets/demo-data/assets/images/socket-set.webp +0 -0
- package/dist/assets/demo-data/assets/images/socket.webp +0 -0
- package/dist/assets/demo-data/assets/images/spanner-set.webp +0 -0
- package/dist/assets/demo-data/assets/images/spanner.webp +0 -0
- package/dist/assets/demo-data/assets/images/spill-kit.webp +0 -0
- package/dist/assets/demo-data/assets/images/spirit-level.webp +0 -0
- package/dist/assets/demo-data/assets/images/switch.webp +0 -0
- package/dist/assets/demo-data/assets/images/tape-measure.webp +0 -0
- package/dist/assets/demo-data/assets/images/terminal-block.webp +0 -0
- package/dist/assets/demo-data/assets/images/threaded-rod.webp +0 -0
- package/dist/assets/demo-data/assets/images/torque-wrench.webp +0 -0
- package/dist/assets/demo-data/assets/images/utility-knife.webp +0 -0
- package/dist/assets/demo-data/assets/images/wall-pass-sleeve.webp +0 -0
- package/dist/assets/demo-data/assets/images/wall-plug.webp +0 -0
- package/dist/assets/demo-data/assets/images/washer.webp +0 -0
- package/dist/assets/demo-data/assets/images/waste-bin.webp +0 -0
- package/dist/assets/demo-data/assets/images/wire-connector.webp +0 -0
- package/dist/assets/demo-data/assets/images/wire-cutters.webp +0 -0
- package/dist/assets/demo-data/assets/images/wood-screw.webp +0 -0
- package/dist/assets/demo-data/assets/images/work-gloves.webp +0 -0
- package/dist/assets/demo-data/assets/images/work-light.webp +0 -0
- package/dist/assets/demo-data/assets/initial-data.json +667 -0
- package/dist/assets/demo-data/assets/products.csv +779 -0
- package/dist/assets/storefront/.env.example +7 -0
- package/dist/assets/storefront/next-env.d.ts +2 -1
- package/dist/assets/storefront/next.config.ts +14 -13
- package/dist/assets/storefront/package.json +3 -2
- package/dist/assets/storefront/src/app/[locale]/account/addresses/page.tsx +2 -0
- package/dist/assets/storefront/src/app/[locale]/account/approvals/page.tsx +2 -0
- package/dist/assets/storefront/src/app/[locale]/account/company/business-units/page.tsx +2 -0
- package/dist/assets/storefront/src/app/[locale]/account/company/page.tsx +2 -0
- package/dist/assets/storefront/src/app/[locale]/account/company/payment-methods/page.tsx +2 -0
- package/dist/assets/storefront/src/app/[locale]/account/company/roles/page.tsx +2 -0
- package/dist/assets/storefront/src/app/[locale]/account/company/users/page.tsx +2 -0
- package/dist/assets/storefront/src/app/[locale]/account/profile/page.tsx +2 -0
- package/dist/assets/storefront/src/app/[locale]/account/quick-order/page.tsx +2 -0
- package/dist/assets/storefront/src/app/[locale]/account/quotes/[id]/page.tsx +10 -6
- package/dist/assets/storefront/src/app/[locale]/cart/order-summary.tsx +8 -5
- package/dist/assets/storefront/src/app/[locale]/cart/promotion-code.tsx +9 -6
- package/dist/assets/storefront/src/app/[locale]/checkout/page.tsx +2 -0
- package/dist/assets/storefront/src/app/[locale]/layout.tsx +3 -3
- package/dist/assets/storefront/src/app/[locale]/order-confirmation/[code]/order-confirmation.tsx +2 -60
- package/dist/assets/storefront/src/components/commerce/product-card-list.tsx +4 -2
- package/dist/assets/storefront/src/components/commerce/product-card.tsx +4 -2
- package/dist/assets/storefront/src/components/commerce/quote-action-buttons.tsx +31 -14
- package/dist/assets/storefront/src/config/capabilities.ts +49 -0
- package/dist/assets/storefront/src/config/scenario.ts +10 -0
- package/dist/assets/storefront/src/graphql-env.d.ts +47 -41
- package/dist/assets/storefront/src/i18n/server.ts +33 -5
- package/dist/assets/storefront/src/lib/backend-health.ts +11 -3
- package/dist/assets/storefront/src/lib/vendure/api.ts +7 -4
- package/dist/assets/storefront/src/lib/vendure/capability-documents.ts +252 -0
- package/dist/assets/storefront/src/lib/vendure/capability-drift.ts +187 -0
- package/dist/assets/storefront/src/lib/vendure/capability-schema.ts +358 -0
- package/dist/assets/storefront/src/lib/vendure/capability-ui.ts +15 -0
- package/dist/assets/storefront/src/lib/vendure/mutations.ts +835 -532
- package/dist/assets/storefront/src/lib/vendure/queries.ts +862 -519
- package/dist/assets/storefront/src/proxy.ts +11 -0
- package/dist/assets/storefront/src/schema.graphql +337 -243
- package/dist/assets/templates/CLAUDE.md.hbs +1 -0
- package/dist/assets/templates/README.md.hbs +24 -1
- package/dist/assets/templates/docker-compose.yml.hbs +4 -0
- package/dist/assets/templates/env.hbs +34 -9
- package/dist/assets/templates/environment.d.ts.hbs +3 -0
- package/dist/assets/templates/gitignore.hbs +7 -4
- package/dist/assets/templates/index.ts.hbs +1 -1
- package/dist/assets/templates/migrate.ts.hbs +55 -0
- package/dist/assets/templates/npmrc.hbs +7 -2
- package/dist/assets/templates/platform-edition.ts.hbs +23 -0
- package/dist/assets/templates/populate.ts.hbs +3 -3
- package/dist/assets/templates/server-package.json.hbs +15 -8
- package/dist/assets/templates/vendure-config.ts.hbs +25 -2
- package/dist/assets/templates/vite.config.mts.hbs +5 -0
- package/dist/bin/run.js +1 -1
- package/dist/cli.js +1 -1
- package/dist/console-onboarding.d.ts +44 -0
- package/dist/console-onboarding.js +1 -0
- package/dist/hub-projects.d.ts +48 -0
- package/dist/hub-projects.js +1 -0
- package/dist/plugin-registry.d.ts +65 -5
- package/dist/plugin-registry.js +1 -1
- package/dist/registry.d.ts +16 -13
- package/dist/registry.js +1 -1
- package/dist/scaffold-shared.js +1 -1
- package/dist/scaffold-storefront-only.js +1 -1
- package/dist/scaffolder.js +1 -1
- package/dist/storefront-copier.d.ts +9 -2
- package/dist/storefront-copier.js +1 -1
- package/dist/template-renderer.d.ts +31 -9
- package/dist/template-renderer.js +1 -1
- package/dist/types.d.ts +75 -24
- package/package.json +14 -2
- package/dist/assets/storefront/src/middleware.ts +0 -11
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Build-time capability set for the storefront.
|
|
3
|
+
*
|
|
4
|
+
* The server composes its GraphQL schema from the capability modules the
|
|
5
|
+
* deployment is entitled to, so a document that selects a field belonging to an
|
|
6
|
+
* absent module fails validation on every request. The storefront therefore has
|
|
7
|
+
* to know which capability-gated fields it may select before it builds its
|
|
8
|
+
* documents.
|
|
9
|
+
*
|
|
10
|
+
* `NEXT_PUBLIC_VENDURE_CAPABILITIES` is a comma-separated list of the capability
|
|
11
|
+
* keys the target deployment is granted, baked at build time like
|
|
12
|
+
* `NEXT_PUBLIC_SCENARIO`. It is a composition hint, not an authorization
|
|
13
|
+
* boundary: the server remains authoritative and rejects anything this list
|
|
14
|
+
* gets wrong.
|
|
15
|
+
*
|
|
16
|
+
* The variable is required. No default is safe: assuming every capability makes
|
|
17
|
+
* a Starter storefront select fields its server does not expose. An empty value
|
|
18
|
+
* is a deliberate choice and means the server grants none of the capabilities
|
|
19
|
+
* the storefront selects.
|
|
20
|
+
*/
|
|
21
|
+
const RAW_CAPABILITIES = process.env.NEXT_PUBLIC_VENDURE_CAPABILITIES;
|
|
22
|
+
|
|
23
|
+
function parseCapabilities(raw: string | undefined): ReadonlySet<string> {
|
|
24
|
+
if (raw === undefined) {
|
|
25
|
+
throw new Error(
|
|
26
|
+
'NEXT_PUBLIC_VENDURE_CAPABILITIES is not set. Set it to the comma-separated capability keys ' +
|
|
27
|
+
'of the Vendure server this storefront connects to, which are the keys of that ' +
|
|
28
|
+
"server's capability profile, and build again. @vendure-platform/create writes them to " +
|
|
29
|
+
'the storefront .env.local. Set an empty value only when the server grants none of the ' +
|
|
30
|
+
'capabilities the storefront selects.',
|
|
31
|
+
);
|
|
32
|
+
}
|
|
33
|
+
return new Set(
|
|
34
|
+
raw
|
|
35
|
+
.split(',')
|
|
36
|
+
.map((key) => key.trim())
|
|
37
|
+
.filter((key) => key.length > 0),
|
|
38
|
+
);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
const GRANTED = parseCapabilities(RAW_CAPABILITIES);
|
|
42
|
+
|
|
43
|
+
/** True when the deployment is expected to expose `key`'s schema. */
|
|
44
|
+
export function hasCapability(key: string): boolean {
|
|
45
|
+
return GRANTED.has(key);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/** Configurator forms, rules, saved configurations, and the configured order journey. */
|
|
49
|
+
export const hasConfiguratorForms = hasCapability('configurator.forms');
|
|
@@ -141,6 +141,16 @@ export interface CartSlotOverrides {
|
|
|
141
141
|
*/
|
|
142
142
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
143
143
|
CartItems?: ServerComponent<any>;
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
* Banner slot rendered above the cart content. Receives the active order
|
|
147
|
+
* (or null when empty/awaiting approval). Use for scenario-specific
|
|
148
|
+
* call-outs.
|
|
149
|
+
*
|
|
150
|
+
* `app/[locale]/cart/cart.tsx` reads this slot unconditionally, so the
|
|
151
|
+
* declaration has to be here even though no customer scenario fills it.
|
|
152
|
+
*/
|
|
153
|
+
Banner?: ServerComponent;
|
|
144
154
|
}
|
|
145
155
|
|
|
146
156
|
// =============================================================
|