@doswiftly/cli 0.2.1 → 0.2.6
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 +260 -0
- package/README.md +1 -1
- package/bin/doswiftly.js +0 -0
- package/dist/commands/dev.d.ts +7 -1
- package/dist/commands/dev.d.ts.map +1 -1
- package/dist/commands/dev.js +110 -51
- package/dist/commands/dev.js.map +1 -1
- package/dist/commands/env.d.ts.map +1 -1
- package/dist/commands/env.js +11 -1
- package/dist/commands/env.js.map +1 -1
- package/dist/commands/init.js +2 -2
- package/dist/commands/inspect.d.ts.map +1 -1
- package/dist/commands/inspect.js +5 -1
- package/dist/commands/inspect.js.map +1 -1
- package/dist/commands/proxy.d.ts.map +1 -1
- package/dist/commands/proxy.js +7 -1
- package/dist/commands/proxy.js.map +1 -1
- package/dist/commands/template.js +1 -1
- package/dist/config/types.d.ts +8 -0
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/api-url.d.ts +77 -8
- package/dist/lib/api-url.d.ts.map +1 -1
- package/dist/lib/api-url.js +54 -12
- package/dist/lib/api-url.js.map +1 -1
- package/dist/lib/config.d.ts +1 -0
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +9 -12
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/i18n.d.ts +24 -0
- package/dist/lib/i18n.d.ts.map +1 -1
- package/dist/lib/i18n.js +48 -0
- package/dist/lib/i18n.js.map +1 -1
- package/dist/lib/proxy-server.d.ts +26 -0
- package/dist/lib/proxy-server.d.ts.map +1 -1
- package/dist/lib/proxy-server.js +70 -0
- package/dist/lib/proxy-server.js.map +1 -1
- package/package.json +13 -12
- package/templates/storefront-nextjs-shadcn/app/[locale]/products/[slug]/product-client.tsx +87 -2
- package/templates/storefront-nextjs-shadcn/app/[locale]/products/products-client.tsx +1 -1
- package/templates/storefront-nextjs-shadcn/codegen.ts +1 -1
- package/templates/storefront-nextjs-shadcn/components/cart/cart-item.tsx +18 -0
- package/templates/storefront-nextjs-shadcn/components/cart/cart-line.fragment.graphql +17 -1
- package/templates/storefront-nextjs-shadcn/components/home/collection-card.fragment.graphql +2 -1
- package/templates/storefront-nextjs-shadcn/components/layout/category-node.fragment.graphql +2 -1
- package/templates/storefront-nextjs-shadcn/components/product/add-to-cart-button.tsx +23 -3
- package/templates/storefront-nextjs-shadcn/components/product/filter-active-pills.tsx +1 -1
- package/templates/storefront-nextjs-shadcn/components/product/filter-mobile-sheet.tsx +1 -1
- package/templates/storefront-nextjs-shadcn/components/product/product-card.fragment.graphql +2 -1
- package/templates/storefront-nextjs-shadcn/components/product/product-configurator.fragment.graphql +43 -0
- package/templates/storefront-nextjs-shadcn/components/product/product-configurator.tsx +282 -0
- package/templates/storefront-nextjs-shadcn/components/product/product-detail.fragment.graphql +8 -1
- package/templates/storefront-nextjs-shadcn/components/product/product-image.tsx +7 -3
- package/templates/storefront-nextjs-shadcn/components/product/product-variant.fragment.graphql +2 -1
- package/templates/storefront-nextjs-shadcn/graphql/custom.example.graphql +100 -0
- package/templates/storefront-nextjs-shadcn/hooks/use-cart-actions.ts +26 -5
- package/templates/storefront-nextjs-shadcn/hooks/use-cart-sync.ts +26 -0
- package/templates/storefront-nextjs-shadcn/lib/image-loader.ts +12 -0
- package/templates/storefront-nextjs-shadcn/next.config.ts +6 -17
- package/templates/storefront-nextjs-shadcn/package.json +2 -2
package/dist/lib/i18n.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../src/lib/i18n.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../src/lib/i18n.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/i18n.js
CHANGED
|
@@ -86,6 +86,30 @@ const en = {
|
|
|
86
86
|
failedFetchTeams: (e) => `Failed to fetch teams: ${e}`,
|
|
87
87
|
failedFetchProjects: (e) => `Failed to fetch projects: ${e}`,
|
|
88
88
|
failedCreateProject: 'Failed to create project',
|
|
89
|
+
devHeader: 'DoSwiftly Dev Server',
|
|
90
|
+
devLabelStorefront: 'Storefront:',
|
|
91
|
+
devLabelApiProxy: 'API Proxy:',
|
|
92
|
+
devLabelApi: 'API:',
|
|
93
|
+
devLabelShop: 'Shop:',
|
|
94
|
+
devProxyStarting: 'Starting API proxy...',
|
|
95
|
+
devProxyStarted: 'API proxy started',
|
|
96
|
+
devProxyFailed: 'Failed to start proxy',
|
|
97
|
+
devProxyContinuingNoProxy: 'Continuing without proxy - CORS errors may occur.',
|
|
98
|
+
devStopping: 'Stopping dev server...',
|
|
99
|
+
devExitedCode: (code) => `Dev server exited with code ${code}`,
|
|
100
|
+
devPortFallback: (from, to) => `Port ${from} is in use, using ${to} instead`,
|
|
101
|
+
devPortFallbackHint: 'Pass --strict-port to fail fast instead of auto-falling back.',
|
|
102
|
+
devPortInUseStrict: (port) => `Port ${port} is in use (strict-port mode)`,
|
|
103
|
+
devPortInUseStrictHint: 'Stop the conflicting process, pass --port <N>, or drop --strict-port.',
|
|
104
|
+
devPortRangeExhausted: (from, to) => `No free port found in range ${from}-${to}`,
|
|
105
|
+
devPortRangeHint: 'Stop a conflicting process or pass --port <N>.',
|
|
106
|
+
devScriptsDevHardcodedPort: (arg) => `Your package.json "dev" script contains a hardcoded ${arg} — this may override the CLI --port / PORT env.`,
|
|
107
|
+
devApiSourceProfile: (name) => `from profile "${name}"`,
|
|
108
|
+
devApiSourceEnv: (name) => `from env ${name}`,
|
|
109
|
+
devApiSourceLocalConfig: 'from doswiftly.config.ts',
|
|
110
|
+
devApiSourceDotEnvLocal: 'from .env.local',
|
|
111
|
+
devApiSourceFallback: 'default',
|
|
112
|
+
envProfileOverridesConfig: 'This profile overrides api.url from doswiftly.config.ts for dev, inspect, and proxy.',
|
|
89
113
|
};
|
|
90
114
|
const pl = {
|
|
91
115
|
wizardTitle: 'DoSwiftly CLI - Inicjalizacja projektu',
|
|
@@ -171,6 +195,30 @@ const pl = {
|
|
|
171
195
|
failedFetchTeams: (e) => `Nie udalo sie pobrac zespolow: ${e}`,
|
|
172
196
|
failedFetchProjects: (e) => `Nie udalo sie pobrac projektow: ${e}`,
|
|
173
197
|
failedCreateProject: 'Nie udalo sie utworzyc projektu',
|
|
198
|
+
devHeader: 'Serwer deweloperski DoSwiftly',
|
|
199
|
+
devLabelStorefront: 'Sklep:',
|
|
200
|
+
devLabelApiProxy: 'Proxy API:',
|
|
201
|
+
devLabelApi: 'API:',
|
|
202
|
+
devLabelShop: 'Sklep (slug):',
|
|
203
|
+
devProxyStarting: 'Uruchamiam proxy API...',
|
|
204
|
+
devProxyStarted: 'Proxy API uruchomione',
|
|
205
|
+
devProxyFailed: 'Nie udalo sie uruchomic proxy',
|
|
206
|
+
devProxyContinuingNoProxy: 'Kontynuuje bez proxy - mozliwe bledy CORS.',
|
|
207
|
+
devStopping: 'Zatrzymuje serwer deweloperski...',
|
|
208
|
+
devExitedCode: (code) => `Serwer deweloperski zakonczony z kodem ${code}`,
|
|
209
|
+
devPortFallback: (from, to) => `Port ${from} jest zajety, uzywam ${to}`,
|
|
210
|
+
devPortFallbackHint: 'Uzyj --strict-port aby zamiast auto-fallbacku przerwac od razu.',
|
|
211
|
+
devPortInUseStrict: (port) => `Port ${port} jest zajety (tryb --strict-port)`,
|
|
212
|
+
devPortInUseStrictHint: 'Zatrzymaj konfliktujacy proces, uzyj --port <N> albo usun --strict-port.',
|
|
213
|
+
devPortRangeExhausted: (from, to) => `Brak wolnego portu w zakresie ${from}-${to}`,
|
|
214
|
+
devPortRangeHint: 'Zatrzymaj konfliktujacy proces albo uzyj --port <N>.',
|
|
215
|
+
devScriptsDevHardcodedPort: (arg) => `Skrypt "dev" w package.json zawiera na stale ${arg} - moze nadpisac --port / PORT env.`,
|
|
216
|
+
devApiSourceProfile: (name) => `z profilu "${name}"`,
|
|
217
|
+
devApiSourceEnv: (name) => `ze zmiennej ${name}`,
|
|
218
|
+
devApiSourceLocalConfig: 'z doswiftly.config.ts',
|
|
219
|
+
devApiSourceDotEnvLocal: 'z .env.local',
|
|
220
|
+
devApiSourceFallback: 'domyslny',
|
|
221
|
+
envProfileOverridesConfig: 'Ten profil nadpisuje api.url z doswiftly.config.ts dla komend dev, inspect i proxy.',
|
|
174
222
|
};
|
|
175
223
|
const messages = { en, pl };
|
|
176
224
|
let currentLocale = 'en';
|
package/dist/lib/i18n.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"i18n.js","sourceRoot":"","sources":["../../src/lib/i18n.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"i18n.js","sourceRoot":"","sources":["../../src/lib/i18n.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,8 +20,34 @@ interface RequestLogEntry {
|
|
|
20
20
|
export declare function isRemoteUrl(url: string): boolean;
|
|
21
21
|
/**
|
|
22
22
|
* Find a free TCP port. Tries `preferred` first; falls back to OS-assigned.
|
|
23
|
+
*
|
|
24
|
+
* Semantics are intentionally "preferred, or anything free" — suitable for
|
|
25
|
+
* internal services (e.g. the API proxy port) where the exact number is
|
|
26
|
+
* unimportant. For user-facing ports (storefront dev server) prefer
|
|
27
|
+
* {@link findSequentialFreePort}, which keeps the port close to the requested
|
|
28
|
+
* value so developer muscle memory is preserved.
|
|
23
29
|
*/
|
|
24
30
|
export declare function findFreePort(preferred?: number): Promise<number>;
|
|
31
|
+
/**
|
|
32
|
+
* Thrown by {@link findSequentialFreePort} when no port in the probed range
|
|
33
|
+
* could be bound. Holds the inclusive start + end of the range so callers can
|
|
34
|
+
* render an actionable error for the user.
|
|
35
|
+
*/
|
|
36
|
+
export declare class PortRangeExhaustedError extends Error {
|
|
37
|
+
readonly start: number;
|
|
38
|
+
readonly end: number;
|
|
39
|
+
constructor(start: number, end: number);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Try `preferred`, then `preferred+1`, `preferred+2`, … up to `maxAttempts`
|
|
43
|
+
* total ports. Returns the first port that is free on `host`.
|
|
44
|
+
*
|
|
45
|
+
* Use this for user-facing ports where the developer expects a small, legible
|
|
46
|
+
* fallback (3000 → 3001 → 3002) instead of a random OS-assigned port.
|
|
47
|
+
*
|
|
48
|
+
* @throws {PortRangeExhaustedError} When all probed ports are in use.
|
|
49
|
+
*/
|
|
50
|
+
export declare function findSequentialFreePort(preferred: number, maxAttempts?: number, host?: string): Promise<number>;
|
|
25
51
|
/**
|
|
26
52
|
* Build request headers for the upstream target.
|
|
27
53
|
* Forwards everything except hop-by-hop and `origin`.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxy-server.d.ts","sourceRoot":"","sources":["../../src/lib/proxy-server.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,eAAe,EAAkB,MAAM,MAAM,CAAC;AAQrE,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,4FAA4F;IAC5F,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,UAAU,eAAe;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AA+CD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAUhD;AAED
|
|
1
|
+
{"version":3,"file":"proxy-server.d.ts","sourceRoot":"","sources":["../../src/lib/proxy-server.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,eAAe,EAAkB,MAAM,MAAM,CAAC;AAQrE,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,4FAA4F;IAC5F,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,UAAU,eAAe;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AA+CD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAUhD;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,SAAS,GAAE,MAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAuBtE;AAED;;;;GAIG;AACH,qBAAa,uBAAwB,SAAQ,KAAK;IAChD,SAAgB,KAAK,EAAE,MAAM,CAAC;IAC9B,SAAgB,GAAG,EAAE,MAAM,CAAC;gBAEhB,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM;CAMvC;AAqCD;;;;;;;;GAQG;AACH,wBAAsB,sBAAsB,CAC1C,SAAS,EAAE,MAAM,EACjB,WAAW,GAAE,MAAW,EACxB,IAAI,GAAE,MAAkB,GACvB,OAAO,CAAC,MAAM,CAAC,CASjB;AAaD;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,eAAe,EAAE,eAAe,CAAC,SAAS,CAAC,EAC3C,UAAU,EAAE,MAAM,EAClB,eAAe,EAAE,MAAM,GACtB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAoBxB;AA+ID;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC,CA2BhG;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,eAAe,EAAE,CAElD"}
|
package/dist/lib/proxy-server.js
CHANGED
|
@@ -60,6 +60,12 @@ export function isRemoteUrl(url) {
|
|
|
60
60
|
}
|
|
61
61
|
/**
|
|
62
62
|
* Find a free TCP port. Tries `preferred` first; falls back to OS-assigned.
|
|
63
|
+
*
|
|
64
|
+
* Semantics are intentionally "preferred, or anything free" — suitable for
|
|
65
|
+
* internal services (e.g. the API proxy port) where the exact number is
|
|
66
|
+
* unimportant. For user-facing ports (storefront dev server) prefer
|
|
67
|
+
* {@link findSequentialFreePort}, which keeps the port close to the requested
|
|
68
|
+
* value so developer muscle memory is preserved.
|
|
63
69
|
*/
|
|
64
70
|
export function findFreePort(preferred = 4001) {
|
|
65
71
|
return new Promise((resolve, reject) => {
|
|
@@ -83,6 +89,70 @@ export function findFreePort(preferred = 4001) {
|
|
|
83
89
|
});
|
|
84
90
|
});
|
|
85
91
|
}
|
|
92
|
+
/**
|
|
93
|
+
* Thrown by {@link findSequentialFreePort} when no port in the probed range
|
|
94
|
+
* could be bound. Holds the inclusive start + end of the range so callers can
|
|
95
|
+
* render an actionable error for the user.
|
|
96
|
+
*/
|
|
97
|
+
export class PortRangeExhaustedError extends Error {
|
|
98
|
+
start;
|
|
99
|
+
end;
|
|
100
|
+
constructor(start, end) {
|
|
101
|
+
super(`No free TCP port found in range ${start}-${end}`);
|
|
102
|
+
this.name = 'PortRangeExhaustedError';
|
|
103
|
+
this.start = start;
|
|
104
|
+
this.end = end;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Check whether a specific TCP port is bindable on both IPv4 and IPv6.
|
|
109
|
+
*
|
|
110
|
+
* Next.js and most Node.js dev servers call `server.listen(port)` without a
|
|
111
|
+
* host argument — Node then binds dual-stack IPv6 (`::`). On Windows that
|
|
112
|
+
* exclusively holds the port, so a single-family probe on `0.0.0.0` would
|
|
113
|
+
* report "free" and the framework would immediately crash with
|
|
114
|
+
* `EADDRINUSE :::<port>`. Require BOTH families free to match what the
|
|
115
|
+
* spawned framework will actually do.
|
|
116
|
+
*
|
|
117
|
+
* Hosts passing an IPv6 address already go through the `::` probe below, so
|
|
118
|
+
* the caller-supplied `host` is only used as the IPv4 target.
|
|
119
|
+
*/
|
|
120
|
+
function isPortFree(port, host) {
|
|
121
|
+
const probe = (target) => new Promise((resolve) => {
|
|
122
|
+
const server = net.createServer();
|
|
123
|
+
server.unref();
|
|
124
|
+
server.once('error', (err) => {
|
|
125
|
+
// EADDRNOTAVAIL = address family not available (e.g. IPv6 disabled on
|
|
126
|
+
// the host). Treat as "free" so we don't falsely reject ports on
|
|
127
|
+
// IPv4-only systems. Every other error (EADDRINUSE, EACCES, …) means
|
|
128
|
+
// the port really is busy.
|
|
129
|
+
resolve(err.code === 'EADDRNOTAVAIL');
|
|
130
|
+
});
|
|
131
|
+
server.listen(port, target, () => {
|
|
132
|
+
server.close(() => resolve(true));
|
|
133
|
+
});
|
|
134
|
+
});
|
|
135
|
+
return Promise.all([probe(host), probe('::')]).then(([v4Free, v6Free]) => v4Free && v6Free);
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Try `preferred`, then `preferred+1`, `preferred+2`, … up to `maxAttempts`
|
|
139
|
+
* total ports. Returns the first port that is free on `host`.
|
|
140
|
+
*
|
|
141
|
+
* Use this for user-facing ports where the developer expects a small, legible
|
|
142
|
+
* fallback (3000 → 3001 → 3002) instead of a random OS-assigned port.
|
|
143
|
+
*
|
|
144
|
+
* @throws {PortRangeExhaustedError} When all probed ports are in use.
|
|
145
|
+
*/
|
|
146
|
+
export async function findSequentialFreePort(preferred, maxAttempts = 10, host = '0.0.0.0') {
|
|
147
|
+
const attempts = Math.max(1, maxAttempts);
|
|
148
|
+
for (let offset = 0; offset < attempts; offset++) {
|
|
149
|
+
const candidate = preferred + offset;
|
|
150
|
+
if (await isPortFree(candidate, host)) {
|
|
151
|
+
return candidate;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
throw new PortRangeExhaustedError(preferred, preferred + attempts - 1);
|
|
155
|
+
}
|
|
86
156
|
/**
|
|
87
157
|
* Returns `true` if the origin matches localhost (any port).
|
|
88
158
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxy-server.js","sourceRoot":"","sources":["../../src/lib/proxy-server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"proxy-server.js","sourceRoot":"","sources":["../../src/lib/proxy-server.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@doswiftly/cli",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.6",
|
|
4
4
|
"description": "DoSwiftly CLI - Scaffold and deploy e-commerce storefronts",
|
|
5
5
|
"homepage": "https://doswiftly.pl",
|
|
6
6
|
"publishConfig": {
|
|
@@ -27,16 +27,10 @@
|
|
|
27
27
|
"files": [
|
|
28
28
|
"dist",
|
|
29
29
|
"bin",
|
|
30
|
-
"templates"
|
|
30
|
+
"templates",
|
|
31
|
+
"CHANGELOG.md",
|
|
32
|
+
"README.md"
|
|
31
33
|
],
|
|
32
|
-
"scripts": {
|
|
33
|
-
"build": "tsc",
|
|
34
|
-
"dev": "tsc --watch",
|
|
35
|
-
"clean": "rimraf dist",
|
|
36
|
-
"prepublishOnly": "pnpm run clean && pnpm run build",
|
|
37
|
-
"test": "vitest run",
|
|
38
|
-
"test:watch": "vitest"
|
|
39
|
-
},
|
|
40
34
|
"keywords": [
|
|
41
35
|
"doswiftly",
|
|
42
36
|
"cli",
|
|
@@ -50,7 +44,7 @@
|
|
|
50
44
|
"@clack/core": "^0.4.1",
|
|
51
45
|
"@clack/prompts": "^0.10.0",
|
|
52
46
|
"@inquirer/prompts": "^7.2.0",
|
|
53
|
-
"axios": "^1.
|
|
47
|
+
"axios": "^1.15.0",
|
|
54
48
|
"chalk": "^5.3.0",
|
|
55
49
|
"picocolors": "^1.1.1",
|
|
56
50
|
"chokidar": "^4.0.1",
|
|
@@ -81,5 +75,12 @@
|
|
|
81
75
|
"engines": {
|
|
82
76
|
"node": ">=18.0.0",
|
|
83
77
|
"pnpm": ">=9.0.0"
|
|
78
|
+
},
|
|
79
|
+
"scripts": {
|
|
80
|
+
"build": "tsc",
|
|
81
|
+
"dev": "tsc --watch",
|
|
82
|
+
"clean": "rimraf dist",
|
|
83
|
+
"test": "vitest run",
|
|
84
|
+
"test:watch": "vitest"
|
|
84
85
|
}
|
|
85
|
-
}
|
|
86
|
+
}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
|
-
import { useState, useEffect } from "react";
|
|
3
|
+
import { useState, useEffect, useMemo, useCallback } from "react";
|
|
4
4
|
import { useTranslations } from "next-intl";
|
|
5
|
+
import { toast } from "sonner";
|
|
5
6
|
import { useProduct } from "@/lib/graphql/hooks";
|
|
6
7
|
import { useCurrencyStore } from "@doswiftly/storefront-sdk/react";
|
|
7
8
|
import { ProductGallery } from "@/components/product/product-gallery";
|
|
@@ -9,6 +10,12 @@ import { ProductPrice } from "@/components/product/product-price";
|
|
|
9
10
|
import { ProductVariantSelector } from "@/components/product/product-variant-selector";
|
|
10
11
|
import { ProductQuantitySelector } from "@/components/product/product-quantity-selector";
|
|
11
12
|
import { AddToCartButton } from "@/components/product/add-to-cart-button";
|
|
13
|
+
import {
|
|
14
|
+
ProductConfigurator,
|
|
15
|
+
computeConfiguratorSurcharge,
|
|
16
|
+
findMissingRequiredFields,
|
|
17
|
+
type ProductConfiguratorSelection,
|
|
18
|
+
} from "@/components/product/product-configurator";
|
|
12
19
|
import { StockIndicator } from "@/components/product/stock-indicator";
|
|
13
20
|
import { SimilarProducts } from "@/components/product/similar-products";
|
|
14
21
|
import { Tabs, TabsList, TabsTrigger, TabsContent } from "@/components/ui/tabs";
|
|
@@ -39,6 +46,12 @@ export function ProductClient({ product: initialProduct, similarProducts = [] }:
|
|
|
39
46
|
const t = useTranslations("productPage");
|
|
40
47
|
const [selectedVariant, setSelectedVariant] = useState(initialProduct.variants[0]);
|
|
41
48
|
const [quantity, setQuantity] = useState(1);
|
|
49
|
+
// Faza 1 — state konfiguratora (Finiszer, nr telefonu itd.) per attributeDefinitionId.
|
|
50
|
+
// Wysyłany do cartLinesAdd jako `attributeSelections`, backend waliduje + snapshotuje.
|
|
51
|
+
const [configuratorSelections, setConfiguratorSelections] = useState<
|
|
52
|
+
Record<string, ProductConfiguratorSelection>
|
|
53
|
+
>({});
|
|
54
|
+
const [showConfigValidation, setShowConfigValidation] = useState(false);
|
|
42
55
|
|
|
43
56
|
// Get user's preferred currency from store
|
|
44
57
|
const currency = useCurrencyStore((s) => s.currency);
|
|
@@ -102,6 +115,59 @@ export function ProductClient({ product: initialProduct, similarProducts = [] }:
|
|
|
102
115
|
parseFloat(selectedVariant.compareAtPrice.amount) >
|
|
103
116
|
parseFloat(selectedVariant.price.amount);
|
|
104
117
|
|
|
118
|
+
// Faza 1 — Customer-filled attributes z Product.attributes (CUSTOMER + BOTH).
|
|
119
|
+
// Puste gdy sklep nie używa konfiguratorów — sekcja nie renderuje się wtedy.
|
|
120
|
+
const configuratorAttributes = product.attributes ?? [];
|
|
121
|
+
|
|
122
|
+
const handleConfiguratorChange = useCallback(
|
|
123
|
+
(definitionId: string, selection: ProductConfiguratorSelection) => {
|
|
124
|
+
setConfiguratorSelections((prev) => ({ ...prev, [definitionId]: selection }));
|
|
125
|
+
// Wyczyść validation stan po każdej zmianie — użytkownik dostaje drugą szansę
|
|
126
|
+
// zamiast utrzymujących się czerwonych ramek.
|
|
127
|
+
if (showConfigValidation) setShowConfigValidation(false);
|
|
128
|
+
},
|
|
129
|
+
[showConfigValidation],
|
|
130
|
+
);
|
|
131
|
+
|
|
132
|
+
// Live surcharge preview — doliczane do ceny wariantu na przycisku (jak Shopify Dynamic Checkout).
|
|
133
|
+
const surcharge = useMemo(
|
|
134
|
+
() => computeConfiguratorSurcharge(configuratorAttributes, configuratorSelections),
|
|
135
|
+
[configuratorAttributes, configuratorSelections],
|
|
136
|
+
);
|
|
137
|
+
|
|
138
|
+
const displayPrice = useMemo(() => {
|
|
139
|
+
if (surcharge === 0) return selectedVariant.price;
|
|
140
|
+
const base = parseFloat(selectedVariant.price.amount);
|
|
141
|
+
const total = base + surcharge / 100;
|
|
142
|
+
return {
|
|
143
|
+
amount: total.toFixed(2),
|
|
144
|
+
currencyCode: selectedVariant.price.currencyCode,
|
|
145
|
+
};
|
|
146
|
+
}, [selectedVariant.price, surcharge]);
|
|
147
|
+
|
|
148
|
+
const attributeSelectionsForCart = useMemo(
|
|
149
|
+
() =>
|
|
150
|
+
Object.values(configuratorSelections)
|
|
151
|
+
.filter((s) => s.optionId || s.textValue)
|
|
152
|
+
.map((s) => ({
|
|
153
|
+
attributeDefinitionId: s.attributeDefinitionId,
|
|
154
|
+
optionId: s.optionId ?? undefined,
|
|
155
|
+
optionIds: s.optionIds ?? undefined,
|
|
156
|
+
textValue: s.textValue ?? undefined,
|
|
157
|
+
})),
|
|
158
|
+
[configuratorSelections],
|
|
159
|
+
);
|
|
160
|
+
|
|
161
|
+
const validateConfiguratorBeforeAdd = useCallback(() => {
|
|
162
|
+
const missing = findMissingRequiredFields(configuratorAttributes, configuratorSelections);
|
|
163
|
+
if (missing.length > 0) {
|
|
164
|
+
setShowConfigValidation(true);
|
|
165
|
+
toast.error(`Wypełnij wymagane pola: ${missing.join(", ")}`);
|
|
166
|
+
return false;
|
|
167
|
+
}
|
|
168
|
+
return true;
|
|
169
|
+
}, [configuratorAttributes, configuratorSelections]);
|
|
170
|
+
|
|
105
171
|
return (
|
|
106
172
|
<div className="space-y-16">
|
|
107
173
|
{/* Product Details */}
|
|
@@ -138,13 +204,19 @@ export function ProductClient({ product: initialProduct, similarProducts = [] }:
|
|
|
138
204
|
</div>
|
|
139
205
|
|
|
140
206
|
{/* Price - suppressHydrationWarning prevents mismatch during currency switch */}
|
|
207
|
+
{/* Faza 1 — displayPrice uwzględnia doliczone surcharge z konfiguratora (live preview). */}
|
|
141
208
|
<div suppressHydrationWarning>
|
|
142
209
|
<ProductPrice
|
|
143
|
-
price={
|
|
210
|
+
price={displayPrice}
|
|
144
211
|
compareAtPrice={selectedVariant.compareAtPrice || undefined}
|
|
145
212
|
showCompareAt
|
|
146
213
|
size="xl"
|
|
147
214
|
/>
|
|
215
|
+
{surcharge > 0 && (
|
|
216
|
+
<p className="mt-1 text-xs text-muted-foreground">
|
|
217
|
+
Cena zawiera dopłaty z konfiguratora poniżej.
|
|
218
|
+
</p>
|
|
219
|
+
)}
|
|
148
220
|
</div>
|
|
149
221
|
|
|
150
222
|
{/* Stock */}
|
|
@@ -169,6 +241,17 @@ export function ProductClient({ product: initialProduct, similarProducts = [] }:
|
|
|
169
241
|
/>
|
|
170
242
|
)}
|
|
171
243
|
|
|
244
|
+
{/* Faza 1 — Customer configurator (Finiszer, nr telefonu serwisu, itd.). */}
|
|
245
|
+
{configuratorAttributes.length > 0 && (
|
|
246
|
+
<ProductConfigurator
|
|
247
|
+
attributes={configuratorAttributes}
|
|
248
|
+
selections={configuratorSelections}
|
|
249
|
+
onChange={handleConfiguratorChange}
|
|
250
|
+
currency={selectedVariant.price.currencyCode}
|
|
251
|
+
showValidation={showConfigValidation}
|
|
252
|
+
/>
|
|
253
|
+
)}
|
|
254
|
+
|
|
172
255
|
{/* Quantity & Add to Cart */}
|
|
173
256
|
<div className="space-y-4">
|
|
174
257
|
<div className="flex items-center gap-4">
|
|
@@ -189,6 +272,8 @@ export function ProductClient({ product: initialProduct, similarProducts = [] }:
|
|
|
189
272
|
image={selectedVariant.image || product.images[0]}
|
|
190
273
|
available={selectedVariant.available}
|
|
191
274
|
quantity={quantity}
|
|
275
|
+
attributeSelections={attributeSelectionsForCart}
|
|
276
|
+
onBeforeAdd={validateConfiguratorBeforeAdd}
|
|
192
277
|
fullWidth
|
|
193
278
|
size="lg"
|
|
194
279
|
/>
|
|
@@ -25,7 +25,7 @@ import { cn } from "@/lib/utils";
|
|
|
25
25
|
/**
|
|
26
26
|
* ProductsClient — Dynamic product listing with API-driven filters.
|
|
27
27
|
*
|
|
28
|
-
* UX patterns
|
|
28
|
+
* UX patterns:
|
|
29
29
|
* - useTransition wraps all filter updates (non-blocking UI)
|
|
30
30
|
* - keepPreviousData prevents skeleton flash on filter changes
|
|
31
31
|
* - data-pending CSS opacity dimming during transitions
|
|
@@ -11,7 +11,7 @@ import type { CodegenConfig } from '@graphql-codegen/cli';
|
|
|
11
11
|
* No running backend needed — schema is synced as a file.
|
|
12
12
|
*
|
|
13
13
|
* Architecture decision: https://github.com/dotansimha/graphql-typed-document-node
|
|
14
|
-
*
|
|
14
|
+
* Approach: client-preset + TypedDocumentString (no runtime GraphQL dep).
|
|
15
15
|
*
|
|
16
16
|
* To update schema after backend changes:
|
|
17
17
|
* cd packages/@doswiftly/storefront-operations && pnpm run sync
|
|
@@ -66,6 +66,24 @@ export function CartItem({
|
|
|
66
66
|
{item.variantTitle}
|
|
67
67
|
</p>
|
|
68
68
|
)}
|
|
69
|
+
{/* Faza 1 — configurator selections z Product.attributes.
|
|
70
|
+
SEPARATE_LINE items są osobnymi fakturowanymi pozycjami; tutaj
|
|
71
|
+
pokazujemy snapshot dla klarownego feedback-u w koszyku. */}
|
|
72
|
+
{item.attributeSelections.length > 0 && (
|
|
73
|
+
<ul className="mt-2 space-y-0.5 text-xs text-muted-foreground">
|
|
74
|
+
{item.attributeSelections.map((sel) => (
|
|
75
|
+
<li key={sel.attributeDefinitionId} className="flex items-center gap-1">
|
|
76
|
+
<span className="font-medium text-foreground/80">{sel.attributeName}:</span>
|
|
77
|
+
<span>{sel.optionLabel ?? sel.textValue ?? "—"}</span>
|
|
78
|
+
{sel.billingMode === "SEPARATE_LINE" && sel.surchargeAmount > 0 && (
|
|
79
|
+
<span className="text-[10px] text-muted-foreground/80">
|
|
80
|
+
(+{formatAmount(sel.surchargeAmount / 100, item.price.currencyCode)} — osobna pozycja faktury)
|
|
81
|
+
</span>
|
|
82
|
+
)}
|
|
83
|
+
</li>
|
|
84
|
+
))}
|
|
85
|
+
</ul>
|
|
86
|
+
)}
|
|
69
87
|
</div>
|
|
70
88
|
|
|
71
89
|
{/* Remove button */}
|
|
@@ -28,8 +28,9 @@ fragment CartLineFields on CartLine {
|
|
|
28
28
|
currencyCode
|
|
29
29
|
}
|
|
30
30
|
image {
|
|
31
|
-
url
|
|
31
|
+
url(transform: { maxWidth: 300 })
|
|
32
32
|
altText
|
|
33
|
+
thumbhash
|
|
33
34
|
}
|
|
34
35
|
selectedOptions {
|
|
35
36
|
name
|
|
@@ -50,4 +51,19 @@ fragment CartLineFields on CartLine {
|
|
|
50
51
|
currencyCode
|
|
51
52
|
}
|
|
52
53
|
}
|
|
54
|
+
# Faza 1 — Customer-filled attributes snapshot per cart line.
|
|
55
|
+
# Rendered in cart-item.tsx so the shopper sees their configurator choices
|
|
56
|
+
# (Finiszer, service phone, etc.) with surcharge contribution to line total.
|
|
57
|
+
attributeSelections {
|
|
58
|
+
attributeDefinitionId
|
|
59
|
+
attributeName
|
|
60
|
+
type
|
|
61
|
+
fillingMode
|
|
62
|
+
billingMode
|
|
63
|
+
optionId
|
|
64
|
+
optionLabel
|
|
65
|
+
textValue
|
|
66
|
+
surchargeAmount
|
|
67
|
+
surchargeType
|
|
68
|
+
}
|
|
53
69
|
}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
import { useState, useRef, useEffect } from "react";
|
|
4
4
|
import { useTranslations } from "next-intl";
|
|
5
5
|
import { ShoppingCart, Check } from "lucide-react";
|
|
6
|
+
import type { CartAttributeSelectionInput } from "@doswiftly/storefront-sdk";
|
|
6
7
|
import { Button } from "@/components/ui/button";
|
|
7
8
|
import { Spinner } from "@/components/ui/spinner";
|
|
8
9
|
import { cn } from "@/lib/utils";
|
|
@@ -31,7 +32,21 @@ export interface AddToCartButtonProps {
|
|
|
31
32
|
className?: string;
|
|
32
33
|
size?: "sm" | "md" | "lg";
|
|
33
34
|
fullWidth?: boolean;
|
|
34
|
-
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Faza 1 — configurator selections captured on the product page.
|
|
38
|
+
* Przekazywane jako `cartLinesAdd.lines[].attributeSelections` do backendu
|
|
39
|
+
* (walidacja + snapshot surcharge/taxRate server-side).
|
|
40
|
+
*/
|
|
41
|
+
attributeSelections?: CartAttributeSelectionInput[];
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Called before firing the mutation. Zwrócenie `false` anuluje dodanie —
|
|
45
|
+
* używane gdy rodzic waliduje required-fields konfiguratora i pokazuje błąd
|
|
46
|
+
* zamiast wywoływać backend.
|
|
47
|
+
*/
|
|
48
|
+
onBeforeAdd?: () => boolean;
|
|
49
|
+
|
|
35
50
|
// Optional custom handler (overrides default GraphQL behavior)
|
|
36
51
|
onAddToCart?: (variantId: string, quantity: number) => Promise<void>;
|
|
37
52
|
}
|
|
@@ -70,6 +85,8 @@ export function AddToCartButton({
|
|
|
70
85
|
available = true,
|
|
71
86
|
quantity = 1,
|
|
72
87
|
disabled = false,
|
|
88
|
+
attributeSelections,
|
|
89
|
+
onBeforeAdd,
|
|
73
90
|
onAddToCart,
|
|
74
91
|
className,
|
|
75
92
|
size = "md",
|
|
@@ -92,14 +109,17 @@ export function AddToCartButton({
|
|
|
92
109
|
const handleClick = async () => {
|
|
93
110
|
if (disabled || isLoading) return;
|
|
94
111
|
|
|
112
|
+
// Rodzic ma możliwość anulować akcję — np. configurator required-field walidacja.
|
|
113
|
+
if (onBeforeAdd && onBeforeAdd() === false) return;
|
|
114
|
+
|
|
95
115
|
try {
|
|
96
116
|
// Use custom handler if provided, otherwise use GraphQL integration
|
|
97
117
|
if (onAddToCart) {
|
|
98
118
|
await onAddToCart(variantId, quantity);
|
|
99
119
|
} else {
|
|
100
|
-
await addToCart(variantId, quantity);
|
|
120
|
+
await addToCart(variantId, quantity, attributeSelections);
|
|
101
121
|
}
|
|
102
|
-
|
|
122
|
+
|
|
103
123
|
setIsAdded(true);
|
|
104
124
|
|
|
105
125
|
// Clear any existing timeout
|
|
@@ -21,7 +21,7 @@ interface FilterActivePillsProps {
|
|
|
21
21
|
/**
|
|
22
22
|
* FilterActivePills - Shows active filters as removable badges
|
|
23
23
|
*
|
|
24
|
-
* Pattern
|
|
24
|
+
* Pattern:
|
|
25
25
|
* - Each pill shows "Label: Value" with X button
|
|
26
26
|
* - "Clear all" link at the end
|
|
27
27
|
* - Horizontally scrollable on mobile
|