@ordersail/storefront-sdk 0.1.0 → 0.2.0
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 +32 -19
- package/dist/http.d.ts +5 -0
- package/dist/http.d.ts.map +1 -1
- package/dist/http.js +21 -8
- package/dist/http.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -3
- package/dist/index.js.map +1 -1
- package/dist/resources/cart.d.ts.map +1 -1
- package/dist/resources/cart.js +4 -3
- package/dist/resources/cart.js.map +1 -1
- package/dist/resources/checkout.d.ts +2 -2
- package/dist/resources/checkout.d.ts.map +1 -1
- package/dist/resources/checkout.js +10 -7
- package/dist/resources/checkout.js.map +1 -1
- package/dist/resources/customer.d.ts.map +1 -1
- package/dist/resources/customer.js +7 -3
- package/dist/resources/customer.js.map +1 -1
- package/dist/resources/products.d.ts +1 -1
- package/dist/resources/products.d.ts.map +1 -1
- package/dist/resources/products.js +6 -4
- package/dist/resources/products.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -29,7 +29,9 @@ const storefrontApi = new StorefrontClient(
|
|
|
29
29
|
"sfk_...", // your account's app key — see "Auth model" below
|
|
30
30
|
);
|
|
31
31
|
|
|
32
|
-
// reads return the data directly
|
|
32
|
+
// reads return the data directly — most throw ApiError on failure just
|
|
33
|
+
// like mutations; a few return undefined for one specific, expected
|
|
34
|
+
// outcome (see "Resources" below)
|
|
33
35
|
const products = await storefrontApi.products.list({ limit: 20 });
|
|
34
36
|
|
|
35
37
|
// mutations throw a typed ApiError on failure
|
|
@@ -46,27 +48,38 @@ try {
|
|
|
46
48
|
|
|
47
49
|
| Resource | Method | Throws `ApiError`? |
|
|
48
50
|
| ------------------------------ | ---------------------------------------- | ------------------- |
|
|
49
|
-
| `storefrontApi.products` | `list(query?)` |
|
|
50
|
-
| | `getById(id)` |
|
|
51
|
-
| `storefrontApi.cart` | `get()` |
|
|
51
|
+
| `storefrontApi.products` | `list(query?)` | **yes** |
|
|
52
|
+
| | `getById(id)` | only unexpectedly¹ |
|
|
53
|
+
| `storefrontApi.cart` | `get()` | only unexpectedly¹ |
|
|
52
54
|
| | `addItem(body)` | **yes** |
|
|
53
55
|
| | `updateItem(variantId, body)` | **yes** |
|
|
54
56
|
| | `removeItem(variantId)` | **yes** |
|
|
55
57
|
| | `clear()` | **yes** |
|
|
56
|
-
| `storefrontApi.checkout` | `getConfig()` |
|
|
58
|
+
| `storefrontApi.checkout` | `getConfig()` | **yes** |
|
|
57
59
|
| | `createSession(body)` | **yes** |
|
|
58
|
-
| | `getSessionStatus(sessionId)` |
|
|
59
|
-
| | `getShippingOptions(body)` |
|
|
60
|
-
| `storefrontApi.customer` | `get()` |
|
|
60
|
+
| | `getSessionStatus(sessionId)` | only unexpectedly¹ |
|
|
61
|
+
| | `getShippingOptions(body)` | **yes** |
|
|
62
|
+
| `storefrontApi.customer` | `get()` | only unexpectedly² |
|
|
61
63
|
| | `update(params)` | **yes** |
|
|
62
64
|
| `storefrontApi` (top level) | `signUp(dto)` | **yes** |
|
|
63
65
|
| | `signIn(credentials)` | **yes** |
|
|
64
|
-
| | `refreshAccessToken()` |
|
|
66
|
+
| | `refreshAccessToken()` | only unexpectedly² |
|
|
65
67
|
| | `logout()` | no |
|
|
66
68
|
|
|
67
|
-
The convention throughout: a
|
|
68
|
-
|
|
69
|
-
|
|
69
|
+
The convention throughout: a mutation always throws `ApiError` on a non-2xx
|
|
70
|
+
response. A read does too, *unless* it has exactly one well-understood "no
|
|
71
|
+
data" outcome, in which case it returns `undefined` for that one status and
|
|
72
|
+
still throws for everything else:
|
|
73
|
+
|
|
74
|
+
¹ `getById`/`cart.get`/`getSessionStatus` return `undefined` only on a `404`
|
|
75
|
+
(a genuine lookup miss — no such product, no cart yet for this token, no
|
|
76
|
+
such session) — a bad app-key, a `500`, or a network failure throws instead
|
|
77
|
+
of looking identical to "not found."
|
|
78
|
+
|
|
79
|
+
² `customer.get()`/`refreshAccessToken()` return `undefined` only on a `401`
|
|
80
|
+
(not currently signed in — the everyday case for most visitors) — anything
|
|
81
|
+
else, including a `404` (a customer row missing despite a valid token, which
|
|
82
|
+
would be an anomaly, not a normal state), throws instead.
|
|
70
83
|
|
|
71
84
|
Not yet supported: **order history** for customers (`storefront-api` has no
|
|
72
85
|
customer-facing order endpoints yet — see Storefront Builder M5) and
|
|
@@ -105,13 +118,13 @@ Two independent layers, both handled for you by `StorefrontClient`:
|
|
|
105
118
|
cookie the browser sends automatically (`credentials: "include"`). Call
|
|
106
119
|
`refreshAccessToken()` on app start to restore a session from that cookie.
|
|
107
120
|
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
121
|
+
Only `customer.get()`/`customer.update()` retry once on a `401` by calling
|
|
122
|
+
`refreshAccessToken()` and re-issuing the request — `cart` and `checkout`
|
|
123
|
+
methods don't, and don't need to: they never check the customer JWT at all.
|
|
124
|
+
Cart/checkout identity flows entirely through the `x-cart-token` header
|
|
125
|
+
(guest checkout is fully supported), so the only thing that can produce a
|
|
126
|
+
401 there is a missing/invalid/revoked `x-app-key` — an entirely different
|
|
127
|
+
credential that refreshing the customer's access token can't fix.
|
|
115
128
|
|
|
116
129
|
## Regenerating after an API change
|
|
117
130
|
|
package/dist/http.d.ts
CHANGED
|
@@ -17,4 +17,9 @@ export declare function unwrap<T>(result: {
|
|
|
17
17
|
error?: unknown;
|
|
18
18
|
response: Response;
|
|
19
19
|
}): T;
|
|
20
|
+
export declare function unwrapOrUndefinedOn<T>(result: {
|
|
21
|
+
data?: T;
|
|
22
|
+
error?: unknown;
|
|
23
|
+
response: Response;
|
|
24
|
+
}, expectedStatus: number): T | undefined;
|
|
20
25
|
//# sourceMappingURL=http.d.ts.map
|
package/dist/http.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI,MAAM,OAAO,CAAC;IACvC,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,QAAQ,CAAC;CACpB,CAAC,CAAC;AAKH,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,EACnB,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,KAClB,OAAO,CAAC;IAAE,IAAI,CAAC,EAAE,CAAC,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,QAAQ,CAAA;CAAE,CAAC,CAAC;AAIhE,qBAAa,QAAS,SAAQ,KAAK;IAG/B,QAAQ,CAAC,MAAM,EAAE,MAAM;gBADvB,OAAO,EAAE,MAAM,EACN,MAAM,EAAE,MAAM;CAK1B;
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI,MAAM,OAAO,CAAC;IACvC,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,QAAQ,CAAC;CACpB,CAAC,CAAC;AAKH,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,EACnB,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,KAClB,OAAO,CAAC;IAAE,IAAI,CAAC,EAAE,CAAC,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,QAAQ,CAAA;CAAE,CAAC,CAAC;AAIhE,qBAAa,QAAS,SAAQ,KAAK;IAG/B,QAAQ,CAAC,MAAM,EAAE,MAAM;gBADvB,OAAO,EAAE,MAAM,EACN,MAAM,EAAE,MAAM;CAK1B;AAkBD,wBAAgB,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE;IAChC,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,QAAQ,CAAC;CACpB,GAAG,CAAC,CAGJ;AAMD,wBAAgB,mBAAmB,CAAC,CAAC,EACnC,MAAM,EAAE;IAAE,IAAI,CAAC,EAAE,CAAC,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,QAAQ,CAAA;CAAE,EACzD,cAAc,EAAE,MAAM,GACrB,CAAC,GAAG,SAAS,CAIf"}
|
package/dist/http.js
CHANGED
|
@@ -8,21 +8,34 @@ export class ApiError extends Error {
|
|
|
8
8
|
this.name = "ApiError";
|
|
9
9
|
}
|
|
10
10
|
}
|
|
11
|
-
|
|
12
|
-
// methods that mutate use this so callers can `try/catch` and show the API's
|
|
13
|
-
// message instead of a generic string.
|
|
14
|
-
export function unwrap(result) {
|
|
15
|
-
if (result.data !== undefined)
|
|
16
|
-
return result.data;
|
|
11
|
+
function buildErrorMessage(result) {
|
|
17
12
|
const body = result.error;
|
|
18
13
|
const raw = body && typeof body === "object" && "message" in body
|
|
19
14
|
? body.message
|
|
20
15
|
: undefined;
|
|
21
|
-
|
|
16
|
+
return Array.isArray(raw)
|
|
22
17
|
? raw.join(", ")
|
|
23
18
|
: typeof raw === "string" && raw
|
|
24
19
|
? raw
|
|
25
20
|
: `Request failed (${result.response.status})`;
|
|
26
|
-
|
|
21
|
+
}
|
|
22
|
+
// openapi-fetch resolves non-2xx as { error } rather than throwing. Resource
|
|
23
|
+
// methods that mutate use this so callers can `try/catch` and show the API's
|
|
24
|
+
// message instead of a generic string.
|
|
25
|
+
export function unwrap(result) {
|
|
26
|
+
if (result.data !== undefined)
|
|
27
|
+
return result.data;
|
|
28
|
+
throw new ApiError(buildErrorMessage(result), result.response.status);
|
|
29
|
+
}
|
|
30
|
+
// A few reads have exactly one well-understood "no data" outcome (a lookup
|
|
31
|
+
// miss, or "not currently signed in") — anything else is a real failure and
|
|
32
|
+
// should surface as ApiError just like a mutation, not collapse to the same
|
|
33
|
+
// undefined a caller can't distinguish from the expected case.
|
|
34
|
+
export function unwrapOrUndefinedOn(result, expectedStatus) {
|
|
35
|
+
if (result.data !== undefined)
|
|
36
|
+
return result.data;
|
|
37
|
+
if (result.response.status === expectedStatus)
|
|
38
|
+
return undefined;
|
|
39
|
+
throw new ApiError(buildErrorMessage(result), result.response.status);
|
|
27
40
|
}
|
|
28
41
|
//# sourceMappingURL=http.js.map
|
package/dist/http.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAaA,6EAA6E;AAC7E,8EAA8E;AAC9E,MAAM,OAAO,QAAS,SAAQ,KAAK;IAGtB;IAFX,YACE,OAAe,EACN,MAAc;QAEvB,KAAK,CAAC,OAAO,CAAC,CAAC;QAFN,WAAM,GAAN,MAAM,CAAQ;QAGvB,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;IACzB,CAAC;CACF;AAED,
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAaA,6EAA6E;AAC7E,8EAA8E;AAC9E,MAAM,OAAO,QAAS,SAAQ,KAAK;IAGtB;IAFX,YACE,OAAe,EACN,MAAc;QAEvB,KAAK,CAAC,OAAO,CAAC,CAAC;QAFN,WAAM,GAAN,MAAM,CAAQ;QAGvB,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;IACzB,CAAC;CACF;AAED,SAAS,iBAAiB,CAAC,MAA+C;IACxE,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC;IAC1B,MAAM,GAAG,GACP,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,SAAS,IAAI,IAAI;QACnD,CAAC,CAAE,IAA6B,CAAC,OAAO;QACxC,CAAC,CAAC,SAAS,CAAC;IAChB,OAAO,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;QACvB,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;QAChB,CAAC,CAAC,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG;YAC9B,CAAC,CAAC,GAAG;YACL,CAAC,CAAC,mBAAmB,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;AACrD,CAAC;AAED,6EAA6E;AAC7E,6EAA6E;AAC7E,uCAAuC;AACvC,MAAM,UAAU,MAAM,CAAI,MAIzB;IACC,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC,IAAI,CAAC;IAClD,MAAM,IAAI,QAAQ,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACxE,CAAC;AAED,2EAA2E;AAC3E,4EAA4E;AAC5E,4EAA4E;AAC5E,+DAA+D;AAC/D,MAAM,UAAU,mBAAmB,CACjC,MAAyD,EACzD,cAAsB;IAEtB,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC,IAAI,CAAC;IAClD,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,cAAc;QAAE,OAAO,SAAS,CAAC;IAChE,MAAM,IAAI,QAAQ,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACxE,CAAC"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAqB,EAAE,KAAK,MAAM,EAAmB,MAAM,eAAe,CAAC;AAC3E,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAExD,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAEjE,MAAM,MAAM,eAAe,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,iBAAiB,CAAC,CAAC;AACvE,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,mBAAmB,CAAC,CAAC;AAC3E,MAAM,MAAM,aAAa,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,eAAe,CAAC,CAAC;AACnE,MAAM,MAAM,mBAAmB,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,qBAAqB,CAAC,CAAC;AAC/E,MAAM,MAAM,oBAAoB,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,sBAAsB,CAAC,CAAC;AACjF,MAAM,MAAM,IAAI,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC;AACjD,MAAM,MAAM,QAAQ,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC,CAAC;AACzD,MAAM,MAAM,eAAe,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,iBAAiB,CAAC,CAAC;AACvE,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,gBAAgB,CAAC,CAAC;AACrE,MAAM,MAAM,qBAAqB,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,uBAAuB,CAAC,CAAC;AACnF,MAAM,MAAM,QAAQ,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC,CAAC;AACzD,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,mBAAmB,CAAC,CAAC;AAC3E,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,mBAAmB,CAAC,CAAC;AAC3E,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,mBAAmB,CAAC,CAAC;AAI3E,qBAAa,gBAAgB;IAC3B,MAAM,EAAE,MAAM,CAAC;IAGf,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAG9B,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAEtB,QAAQ,EAAE,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAC;IACpD,IAAI,EAAE,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC;IAC5C,QAAQ,EAAE,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAC;IACpD,QAAQ,EAAE,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAC;IAKpD,OAAO,CAAC,cAAc,CAKpB;gBAEU,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM;IA6BzD,MAAM,CAAC,MAAM,EAAE,iBAAiB;IAQhC,MAAM,CAAC,WAAW,EAAE,iBAAiB;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAqB,EAAE,KAAK,MAAM,EAAmB,MAAM,eAAe,CAAC;AAC3E,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAExD,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAEjE,MAAM,MAAM,eAAe,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,iBAAiB,CAAC,CAAC;AACvE,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,mBAAmB,CAAC,CAAC;AAC3E,MAAM,MAAM,aAAa,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,eAAe,CAAC,CAAC;AACnE,MAAM,MAAM,mBAAmB,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,qBAAqB,CAAC,CAAC;AAC/E,MAAM,MAAM,oBAAoB,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,sBAAsB,CAAC,CAAC;AACjF,MAAM,MAAM,IAAI,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC;AACjD,MAAM,MAAM,QAAQ,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC,CAAC;AACzD,MAAM,MAAM,eAAe,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,iBAAiB,CAAC,CAAC;AACvE,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,gBAAgB,CAAC,CAAC;AACrE,MAAM,MAAM,qBAAqB,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,uBAAuB,CAAC,CAAC;AACnF,MAAM,MAAM,QAAQ,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC,CAAC;AACzD,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,mBAAmB,CAAC,CAAC;AAC3E,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,mBAAmB,CAAC,CAAC;AAC3E,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,mBAAmB,CAAC,CAAC;AAI3E,qBAAa,gBAAgB;IAC3B,MAAM,EAAE,MAAM,CAAC;IAGf,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAG9B,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAEtB,QAAQ,EAAE,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAC;IACpD,IAAI,EAAE,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC;IAC5C,QAAQ,EAAE,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAC;IACpD,QAAQ,EAAE,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAC;IAKpD,OAAO,CAAC,cAAc,CAKpB;gBAEU,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM;IA6BzD,MAAM,CAAC,MAAM,EAAE,iBAAiB;IAQhC,MAAM,CAAC,WAAW,EAAE,iBAAiB;IAYrC,kBAAkB;IAQlB,MAAM;YAME,EAAE;CAUjB"}
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import createClient, {} from "openapi-fetch";
|
|
2
|
-
import { unwrap } from "./http.js";
|
|
2
|
+
import { unwrap, unwrapOrUndefinedOn } from "./http.js";
|
|
3
3
|
export { ApiError } from "./http.js";
|
|
4
4
|
import { createProductsResource } from "./resources/products.js";
|
|
5
5
|
import { createCartResource } from "./resources/cart.js";
|
|
@@ -65,9 +65,12 @@ export class StorefrontClient {
|
|
|
65
65
|
this.accessToken = unwrap(result).access_token;
|
|
66
66
|
return this.accessToken;
|
|
67
67
|
}
|
|
68
|
+
// 401 = no valid session cookie, the expected "not signed in" outcome —
|
|
69
|
+
// anything else (a real 500/network failure) should surface, not silently
|
|
70
|
+
// leave accessToken unset
|
|
68
71
|
async refreshAccessToken() {
|
|
69
|
-
const
|
|
70
|
-
this.accessToken =
|
|
72
|
+
const result = await this.client.GET("/auth/token/refresh");
|
|
73
|
+
this.accessToken = unwrapOrUndefinedOn(result, 401)?.access_token;
|
|
71
74
|
return this.accessToken;
|
|
72
75
|
}
|
|
73
76
|
// clears the httpOnly customer_refresh_token cookie server-side — the
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,EAAE,EAAgC,MAAM,eAAe,CAAC;AAE3E,OAAO,EAAE,MAAM,EAAa,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cart.d.ts","sourceRoot":"","sources":["../../src/resources/cart.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAKzD,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,EACrB,YAAY,EAAE,MAAM,MAAM,GAAG,SAAS,EACtC,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI;oBAoBb,UAAU,CAAC,SAAS,CAAC,CAAC,gBAAgB,CAAC;;
|
|
1
|
+
{"version":3,"file":"cart.d.ts","sourceRoot":"","sources":["../../src/resources/cart.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAKzD,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,EACrB,YAAY,EAAE,MAAM,MAAM,GAAG,SAAS,EACtC,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI;oBAoBb,UAAU,CAAC,SAAS,CAAC,CAAC,gBAAgB,CAAC;;eA4C4jN,qBAAsB;;;;;;;;;;;;;;;;;;;;;;4BA7BloN,MAAM,QACX,UAAU,CAAC,SAAS,CAAC,CAAC,mBAAmB,CAAC;;;;;;;;;;;;;;;;;;4BAYpB,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAevC"}
|
package/dist/resources/cart.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { unwrap } from "../http.js";
|
|
1
|
+
import { unwrap, unwrapOrUndefinedOn } from "../http.js";
|
|
2
2
|
const CART_TOKEN_HEADER = "x-cart-token";
|
|
3
3
|
export function createCartResource(client, getCartToken, setCartToken) {
|
|
4
4
|
// x-cart-token isn't a documented OpenAPI header parameter (it's read via
|
|
@@ -24,9 +24,10 @@ export function createCartResource(client, getCartToken, setCartToken) {
|
|
|
24
24
|
});
|
|
25
25
|
return captureToken(unwrap(result));
|
|
26
26
|
},
|
|
27
|
+
// 404 = no cart yet for this token — the everyday first-visit case
|
|
27
28
|
get: async () => {
|
|
28
|
-
const
|
|
29
|
-
return
|
|
29
|
+
const result = await client.GET("/cart", { headers: cartHeaders() });
|
|
30
|
+
return unwrapOrUndefinedOn(result, 404);
|
|
30
31
|
},
|
|
31
32
|
updateItem: async (variantId, body) => {
|
|
32
33
|
const path = { variantId: String(variantId) };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cart.js","sourceRoot":"","sources":["../../src/resources/cart.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"cart.js","sourceRoot":"","sources":["../../src/resources/cart.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEzD,MAAM,iBAAiB,GAAG,cAAc,CAAC;AAEzC,MAAM,UAAU,kBAAkB,CAChC,MAAqB,EACrB,YAAsC,EACtC,YAAqC;IAErC,0EAA0E;IAC1E,wEAAwE;IACxE,gEAAgE;IAChE,SAAS,WAAW;QAClB,MAAM,KAAK,GAAG,YAAY,EAAE,CAAC;QAC7B,OAAO,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,iBAAiB,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACrD,CAAC;IAED,yEAAyE;IACzE,0EAA0E;IAC1E,yEAAyE;IACzE,2EAA2E;IAC3E,SAAS,YAAY,CAAC,IAAmC;QACvD,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QACL,OAAO,EAAE,KAAK,EAAE,IAA6C,EAAE,EAAE;YAC/D,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE;gBAC9C,IAAI;gBACJ,OAAO,EAAE,WAAW,EAAE;aACvB,CAAC,CAAC;YACH,OAAO,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;QACtC,CAAC;QAED,mEAAmE;QACnE,GAAG,EAAE,KAAK,IAAI,EAAE;YACd,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC;YACrE,OAAO,mBAAmB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC1C,CAAC;QAED,UAAU,EAAE,KAAK,EACf,SAAiB,EACjB,IAAgD,EAChD,EAAE;YACF,MAAM,IAAI,GACR,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;YACnC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE;gBAC3D,MAAM,EAAE,EAAE,IAAI,EAAE;gBAChB,IAAI;gBACJ,OAAO,EAAE,WAAW,EAAE;aACvB,CAAC,CAAC;YACH,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC;QACxB,CAAC;QAED,UAAU,EAAE,KAAK,EAAE,SAAiB,EAAE,EAAE;YACtC,MAAM,IAAI,GACR,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;YACnC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,yBAAyB,EAAE;gBAC5D,MAAM,EAAE,EAAE,IAAI,EAAE;gBAChB,OAAO,EAAE,WAAW,EAAE;aACvB,CAAC,CAAC;YACH,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC;QACxB,CAAC;QAED,KAAK,EAAE,KAAK,IAAI,EAAE;YAChB,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC;YACxE,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC;QACxB,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -4,7 +4,7 @@ export declare function createCheckoutResource(client: Client<paths>, getCartTok
|
|
|
4
4
|
getConfig: () => Promise<{
|
|
5
5
|
ready: boolean;
|
|
6
6
|
stripeAccountId: string | null;
|
|
7
|
-
}
|
|
7
|
+
}>;
|
|
8
8
|
createSession: (body: components["schemas"]["CreateCheckoutSessionDto"]) => Promise<{
|
|
9
9
|
clientSecret: string;
|
|
10
10
|
}>;
|
|
@@ -16,6 +16,6 @@ export declare function createCheckoutResource(client: Client<paths>, getCartTok
|
|
|
16
16
|
getShippingOptions: (body: components["schemas"]["GetShippingOptionsDto"]) => Promise<{
|
|
17
17
|
ok: boolean;
|
|
18
18
|
errorMessage?: string;
|
|
19
|
-
}
|
|
19
|
+
}>;
|
|
20
20
|
};
|
|
21
21
|
//# sourceMappingURL=checkout.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkout.d.ts","sourceRoot":"","sources":["../../src/resources/checkout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAKzD,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,EACrB,YAAY,EAAE,MAAM,MAAM,GAAG,SAAS;;;;;
|
|
1
|
+
{"version":3,"file":"checkout.d.ts","sourceRoot":"","sources":["../../src/resources/checkout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAKzD,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,EACrB,YAAY,EAAE,MAAM,MAAM,GAAG,SAAS;;;;;0BAcR,UAAU,CAAC,SAAS,CAAC,CAAC,0BAA0B,CAAC;;;kCASzC,MAAM;;;;;+BAWlC,UAAU,CAAC,SAAS,CAAC,CAAC,uBAAuB,CAAC;;;;EAMzD"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { unwrap } from "../http.js";
|
|
1
|
+
import { unwrap, unwrapOrUndefinedOn } from "../http.js";
|
|
2
2
|
const CART_TOKEN_HEADER = "x-cart-token";
|
|
3
3
|
export function createCheckoutResource(client, getCartToken) {
|
|
4
4
|
function cartHeaders() {
|
|
@@ -6,9 +6,10 @@ export function createCheckoutResource(client, getCartToken) {
|
|
|
6
6
|
return token ? { [CART_TOKEN_HEADER]: token } : {};
|
|
7
7
|
}
|
|
8
8
|
return {
|
|
9
|
+
// no legitimate "empty" case — always returns a body (ready: boolean)
|
|
9
10
|
getConfig: async () => {
|
|
10
|
-
const
|
|
11
|
-
return
|
|
11
|
+
const result = await client.GET("/checkout/config");
|
|
12
|
+
return unwrap(result);
|
|
12
13
|
},
|
|
13
14
|
createSession: async (body) => {
|
|
14
15
|
const result = await client.POST("/checkout/session", {
|
|
@@ -17,16 +18,18 @@ export function createCheckoutResource(client, getCartToken) {
|
|
|
17
18
|
});
|
|
18
19
|
return unwrap(result);
|
|
19
20
|
},
|
|
21
|
+
// 404 = no connected Stripe account, or an unknown/expired session id
|
|
20
22
|
getSessionStatus: async (sessionId) => {
|
|
21
23
|
const path = { sessionId };
|
|
22
|
-
const
|
|
24
|
+
const result = await client.GET("/checkout/session/{sessionId}", {
|
|
23
25
|
params: { path },
|
|
24
26
|
});
|
|
25
|
-
return
|
|
27
|
+
return unwrapOrUndefinedOn(result, 404);
|
|
26
28
|
},
|
|
29
|
+
// no legitimate "empty" case — a computed result, not a lookup
|
|
27
30
|
getShippingOptions: async (body) => {
|
|
28
|
-
const
|
|
29
|
-
return
|
|
31
|
+
const result = await client.POST("/checkout/shipping-options", { body });
|
|
32
|
+
return unwrap(result);
|
|
30
33
|
},
|
|
31
34
|
};
|
|
32
35
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkout.js","sourceRoot":"","sources":["../../src/resources/checkout.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"checkout.js","sourceRoot":"","sources":["../../src/resources/checkout.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEzD,MAAM,iBAAiB,GAAG,cAAc,CAAC;AAEzC,MAAM,UAAU,sBAAsB,CACpC,MAAqB,EACrB,YAAsC;IAEtC,SAAS,WAAW;QAClB,MAAM,KAAK,GAAG,YAAY,EAAE,CAAC;QAC7B,OAAO,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,iBAAiB,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACrD,CAAC;IAED,OAAO;QACL,sEAAsE;QACtE,SAAS,EAAE,KAAK,IAAI,EAAE;YACpB,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;YACpD,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC;QACxB,CAAC;QAED,aAAa,EAAE,KAAK,EAAE,IAAuD,EAAE,EAAE;YAC/E,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE;gBACpD,IAAI;gBACJ,OAAO,EAAE,WAAW,EAAE;aACvB,CAAC,CAAC;YACH,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC;QACxB,CAAC;QAED,sEAAsE;QACtE,gBAAgB,EAAE,KAAK,EAAE,SAAiB,EAAE,EAAE;YAC5C,MAAM,IAAI,GACR,EAAE,SAAS,EAAE,CAAC;YAChB,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,+BAA+B,EAAE;gBAC/D,MAAM,EAAE,EAAE,IAAI,EAAE;aACjB,CAAC,CAAC;YACH,OAAO,mBAAmB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC1C,CAAC;QAED,+DAA+D;QAC/D,kBAAkB,EAAE,KAAK,EACvB,IAAoD,EACpD,EAAE;YACF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,4BAA4B,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;YACzE,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC;QACxB,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"customer.d.ts","sourceRoot":"","sources":["../../src/resources/customer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,
|
|
1
|
+
{"version":3,"file":"customer.d.ts","sourceRoot":"","sources":["../../src/resources/customer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAA+B,KAAK,IAAI,EAAE,MAAM,YAAY,CAAC;AAEpE,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,IAAI;;;;;;;;;;qBAWlD,UAAU,CAAC,SAAS,CAAC,CAAC,mBAAmB,CAAC;;;;;;;;;EAOpE"}
|
|
@@ -1,9 +1,13 @@
|
|
|
1
|
-
import { unwrap } from "../http.js";
|
|
1
|
+
import { unwrap, unwrapOrUndefinedOn } from "../http.js";
|
|
2
2
|
export function createCustomerResource(client, doRequest) {
|
|
3
3
|
return {
|
|
4
|
+
// 401 = not currently signed in (the everyday case) — a lingering 401
|
|
5
|
+
// after do()'s refresh-and-retry means truly not authenticated. A 404
|
|
6
|
+
// here would mean the customer row is missing despite a valid JWT, an
|
|
7
|
+
// anomaly worth throwing on rather than swallowing.
|
|
4
8
|
get: async () => {
|
|
5
|
-
const
|
|
6
|
-
return
|
|
9
|
+
const result = await doRequest(() => client.GET("/customer"));
|
|
10
|
+
return unwrapOrUndefinedOn(result, 401);
|
|
7
11
|
},
|
|
8
12
|
update: async (params) => {
|
|
9
13
|
const result = await doRequest(() => client.PATCH("/customer", { body: params }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"customer.js","sourceRoot":"","sources":["../../src/resources/customer.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAa,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"customer.js","sourceRoot":"","sources":["../../src/resources/customer.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,mBAAmB,EAAa,MAAM,YAAY,CAAC;AAEpE,MAAM,UAAU,sBAAsB,CAAC,MAAqB,EAAE,SAAe;IAC3E,OAAO;QACL,sEAAsE;QACtE,sEAAsE;QACtE,sEAAsE;QACtE,oDAAoD;QACpD,GAAG,EAAE,KAAK,IAAI,EAAE;YACd,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;YAC9D,OAAO,mBAAmB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC1C,CAAC;QAED,MAAM,EAAE,KAAK,EAAE,MAAkD,EAAE,EAAE;YACnE,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE,CAClC,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAC5C,CAAC;YACF,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC;QACxB,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"products.d.ts","sourceRoot":"","sources":["../../src/resources/products.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"products.d.ts","sourceRoot":"","sources":["../../src/resources/products.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAG7C,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC;mBAI/C,KAAK,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;;kBAMrC,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAQ7B"}
|
|
@@ -1,15 +1,17 @@
|
|
|
1
|
+
import { unwrap, unwrapOrUndefinedOn } from "../http.js";
|
|
1
2
|
export function createProductsResource(client) {
|
|
2
3
|
return {
|
|
4
|
+
// no legitimate "empty" case for a list — any non-2xx is a real failure
|
|
3
5
|
list: async (query = {}) => {
|
|
4
|
-
const
|
|
5
|
-
return
|
|
6
|
+
const result = await client.GET("/products", { params: { query } });
|
|
7
|
+
return unwrap(result);
|
|
6
8
|
},
|
|
7
9
|
getById: async (id) => {
|
|
8
10
|
const path = {
|
|
9
11
|
id: String(id),
|
|
10
12
|
};
|
|
11
|
-
const
|
|
12
|
-
return
|
|
13
|
+
const result = await client.GET("/products/{id}", { params: { path } });
|
|
14
|
+
return unwrapOrUndefinedOn(result, 404);
|
|
13
15
|
},
|
|
14
16
|
};
|
|
15
17
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"products.js","sourceRoot":"","sources":["../../src/resources/products.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"products.js","sourceRoot":"","sources":["../../src/resources/products.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEzD,MAAM,UAAU,sBAAsB,CAAC,MAAqB;IAC1D,OAAO;QACL,wEAAwE;QACxE,IAAI,EAAE,KAAK,EACT,QAA0D,EAAE,EAC5D,EAAE;YACF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;YACpE,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC;QACxB,CAAC;QAED,OAAO,EAAE,KAAK,EAAE,EAAU,EAAE,EAAE;YAC5B,MAAM,IAAI,GAAyD;gBACjE,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC;aACf,CAAC;YACF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;YACxE,OAAO,mBAAmB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC1C,CAAC;KACF,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@ordersail/storefront-sdk",
|
|
3
3
|
"description": "Typed client for OrderSail's storefront-api — build and host your own storefront against the same API that powers OrderSail's reference storefront.",
|
|
4
4
|
"private": false,
|
|
5
|
-
"version": "0.
|
|
5
|
+
"version": "0.2.0",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"repository": {
|
|
8
8
|
"type": "git",
|