Skip to content

Commit 27826fc

Browse files
WojtekTheWebDevjagorallsliwaradioluz
authored
feat: add middlewareModule to nuxt and next storefront packages (#7058)
* refactor: rename module dir to modules * feat: new SDK module - moduleFromEndpoints * feat: default behaviour of HTTP Client * remove isomorphic-fetch from depts * full implementation of HTTP client * feat: add customizable error handler * await error handler * refactor: improve tsdocs * fix: issue with custom methods in new module * test: additonal tests * fix issue with losing tsdocs * prerelease * fix header type * revert last fix * chore: bump package * refactor: use moduleFromEndpoints in next * refactor: update shared * refactor: update nuxt package * refactor: easeier setup * chore: fix version * Update packages/sdk/src/__tests__/integration/modules/moduleFromEndpoints.spec.ts Co-authored-by: Tomasz Góral <[email protected]> * feat: HTTP Client for moduleForEndpoints (#7053) * feat: default behaviour of HTTP Client * remove isomorphic-fetch from depts * full implementation of HTTP client * test: update tests based on the review * fix issue with URL class and urls as paths * add test for axios * add computed headers to http client * update tsdocs * feat: add customizable error handler (#7054) * feat: default behaviour of HTTP Client * remove isomorphic-fetch from depts * full implementation of HTTP client * feat: add customizable error handler * await error handler * update error handler due to feedback * update tsdocs * refactor default http client * use unknown instead of any * add method name to error handler * update tsdocs * apply review suggestions * refactor: simplification & improve tsdocs (#7055) * feat: default behaviour of HTTP Client * remove isomorphic-fetch from depts * full implementation of HTTP client * feat: add customizable error handler * await error handler * refactor: improve tsdocs * test non-object params * add comment * add module types to api extractor * fix: issue with custom methods in new module (#7056) * feat: default behaviour of HTTP Client * remove isomorphic-fetch from depts * full implementation of HTTP client * feat: add customizable error handler * await error handler * refactor: improve tsdocs * fix: issue with custom methods in new module * test: additonal tests * fix issue with losing tsdocs * rename file * missing import * include credentials * Update packages/sdk/src/modules/moduleFromEndpoints/types.ts Co-authored-by: Łukasz Śliwa <[email protected]> --------- Co-authored-by: Łukasz Śliwa <[email protected]> * bump version * use new version * refactor: use getRequestHeaders naming for both nuxt and next * update tsdocs * rename module to middlewareModule * bump sdk package * use middlewareModule naming * use strict mode in storefront packages * deprecate getCookieHeader * refactor * first try to fix the yarn.lock * add prettier * revert * update sdk package * exit pre mode and refactor * add prettier * add changelogs and bump packages * apply review suggestions * apply review suggestions pt2 --------- Co-authored-by: Tomasz Góral <[email protected]> Co-authored-by: Łukasz Śliwa <[email protected]>
1 parent f5bac3c commit 27826fc

File tree

21 files changed

+152
-881
lines changed

21 files changed

+152
-881
lines changed

packages/storefront/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@
1717
"@vue-storefront/api-extractor-config": "^0.0.4",
1818
"@vue-storefront/eslint-config": "~2.0.0-rc.7",
1919
"@vue-storefront/integrations-tsconfig": "^0.0.4",
20-
"eslint": "^8.55.0"
20+
"eslint": "^8.55.0",
21+
"prettier": "^2.7.1"
2122
},
2223
"workspaces": {
2324
"packages": [

packages/storefront/packages/next/CHANGELOG.md

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,31 @@
11
# Change log
22

3+
## 1.1.0
4+
5+
- **[ADDED]** `middlewareModule` to `createSdk` params.
6+
7+
```diff [sdk.config.ts]
8+
- import { UnifiedApiExtension } from "storefront-middleware/types"
9+
+ import { UnifiedEndpoints } from "storefront-middleware/types"
10+
11+
export const { getSdk } = createSdk(
12+
options,
13+
- ({ buildModule, middlewareUrl, getRequestHeaders }) => ({
14+
- commerce: buildModule(unifiedModule<UnifiedApiExtension>, {
15+
- apiUrl: `${middlewareUrl}/commerce`,
16+
- requestOptions: {
17+
- headers: getRequestHeaders,
18+
+ ({ buildModule, middlewareModule, middlewareUrl, getRequestHeaders }) => ({
19+
+ commerce: buildModule(middlewareModule<UnifiedEndpoints>, {
20+
+ apiUrl: `${middlewareUrl}/commerce`,
21+
+ defaultRequestConfig: {
22+
+ headers: getRequestHeaders(),
23+
},
24+
}),
25+
})
26+
);
27+
```
28+
329
## 1.0.2
430

531
- **[FIXED]** Multi-store URL calculation, now working correctly in the browser.
Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { exampleSdkModule } from "@storefront/shared";
1+
import { Endpoints } from "@storefront/shared";
22
import { CreateSdkOptions, createSdk } from "@vue-storefront/next";
33

44
const options: CreateSdkOptions = {
@@ -9,10 +9,12 @@ const options: CreateSdkOptions = {
99

1010
export const { getSdk } = createSdk(
1111
options,
12-
({ buildModule, middlewareUrl, getRequestHeaders }) => ({
13-
example: buildModule(exampleSdkModule, {
12+
({ buildModule, middlewareModule, middlewareUrl, getRequestHeaders }) => ({
13+
example: buildModule(middlewareModule<Endpoints>, {
1414
apiUrl: `${middlewareUrl}/test_integration`,
15-
headers: getRequestHeaders(),
15+
defaultRequestConfig: {
16+
headers: getRequestHeaders(),
17+
},
1618
}),
1719
})
1820
);
Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { exampleSdkModule } from "@storefront/shared";
1+
import { Endpoints } from "@storefront/shared";
22
import { CreateSdkOptions, createSdk } from "@vue-storefront/next";
33

44
const options: CreateSdkOptions = {
@@ -9,10 +9,12 @@ const options: CreateSdkOptions = {
99

1010
export const { getSdk } = createSdk(
1111
options,
12-
({ buildModule, middlewareUrl, getRequestHeaders }) => ({
13-
example: buildModule(exampleSdkModule, {
12+
({ buildModule, middlewareModule, middlewareUrl, getRequestHeaders }) => ({
13+
example: buildModule(middlewareModule<Endpoints>, {
1414
apiUrl: `${middlewareUrl}/test_integration`,
15-
headers: getRequestHeaders(),
15+
defaultRequestConfig: {
16+
headers: getRequestHeaders(),
17+
},
1618
}),
1719
})
1820
);

packages/storefront/packages/next/package.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"name": "@vue-storefront/next",
33
"description": "Vue Storefront dedicated features for Next.js",
44
"license": "MIT",
5-
"version": "1.0.2",
5+
"version": "1.1.0",
66
"exports": {
77
".": {
88
"import": "./dist/index.mjs",
@@ -36,14 +36,14 @@
3636
"dev:pages-router": "cd __tests__/apps/pages-router && yarn dev",
3737
"dev:middleware": "cd ../../shared/src/__tests__/middleware && yarn dev",
3838
"lint": "eslint . --ext .ts",
39-
"test:app-router": "start-server-and-test dev:middleware localhost:4000/test_integration/success dev:app-router localhost:3000 \"yarn test:e2e\"",
40-
"test:pages-router": "start-server-and-test dev:middleware localhost:4000/test_integration/success dev:pages-router localhost:3000 \"yarn test:e2e\"",
39+
"test:app-router": "start-server-and-test dev:middleware localhost:4000/test_integration/getSuccess dev:app-router localhost:3000 \"yarn test:e2e\"",
40+
"test:pages-router": "start-server-and-test dev:middleware localhost:4000/test_integration/getSuccess dev:pages-router localhost:3000 \"yarn test:e2e\"",
4141
"test": "yarn test:app-router && yarn test:pages-router",
4242
"test:e2e": "cd ../../shared/ && yarn test:e2e",
4343
"test:unit": "vitest run"
4444
},
4545
"dependencies": {
46-
"@vue-storefront/sdk": "^1.0.0"
46+
"@vue-storefront/sdk": "^1.4.0"
4747
},
4848
"devDependencies": {
4949
"@types/react": "^18.2.31",

packages/storefront/packages/next/src/sdk/index.tsx

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import {
22
composeMiddlewareUrl,
33
type CreateSdkOptions,
44
} from "@storefront/shared";
5-
import { buildModule, initSDK } from "@vue-storefront/sdk";
5+
import { buildModule, initSDK, middlewareModule } from "@vue-storefront/sdk";
66
import { resolveDynamicContext } from "./helpers";
77
import { Config, CreateSdkReturn, GetSdkContext } from "./types";
88

@@ -15,13 +15,9 @@ export type { CreateSdkOptions } from "@storefront/shared";
1515
* @returns An object containing the `getSdk` function.
1616
* @example
1717
* ```tsx
18-
* import {
19-
* contentfulModule,
20-
* ContentfulModuleType,
21-
* } from "@vsf-enterprise/contentful-sdk";
22-
* import { unifiedModule } from "@vsf-enterprise/unified-sdk";
18+
* import { contentfulModule } from "@vsf-enterprise/contentful-sdk";
2319
* import { CreateSdkOptions, createSdk } from "@vue-storefront/next";
24-
* import type { UnifiedApiExtension } from "../storefront-middleware/middleware.config";
20+
* import type { UnifiedApiEndpoints } from "../storefront-middleware/types";
2521
*
2622
* const options: CreateSdkOptions = {
2723
* middleware: {
@@ -31,14 +27,14 @@ export type { CreateSdkOptions } from "@storefront/shared";
3127
*
3228
* export const { getSdk, createSdkContext } = createSdk(
3329
* options,
34-
* ({ buildModule, middlewareUrl, getRequestHeaders }) => ({
35-
* unified: buildModule(unifiedModule<UnifiedApiExtension>, {
30+
* ({ buildModule, middlewareModule, middlewareUrl, getRequestHeaders }) => ({
31+
* unified: buildModule(middlewareModule<UnifiedApiEndpoints>, {
3632
* apiUrl: middlewareUrl + "/commerce",
37-
* requestOptions: {
38-
* headers: getRequestHeaders,
33+
* defaultRequestConfig: {
34+
* headers: getRequestHeaders(),
3935
* },
4036
* }),
41-
* contentful: buildModule<ContentfulModuleType>(contentfulModule, {
37+
* contentful: buildModule(contentfulModule, {
4238
* apiUrl: middlewareUrl + "/cntf",
4339
* }),
4440
* }),
@@ -58,6 +54,7 @@ export function createSdk<TConfig extends Record<string, any>>(
5854

5955
const resolvedConfig = configDefinition({
6056
buildModule,
57+
middlewareModule,
6158
getRequestHeaders,
6259
middlewareUrl,
6360
});

packages/storefront/packages/next/src/sdk/types.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { SDKApi, buildModule } from "@vue-storefront/sdk";
1+
import { SDKApi, buildModule, middlewareModule } from "@vue-storefront/sdk";
22
import { ReactNode } from "react";
33

44
export type GetSdkContext = {
@@ -16,6 +16,7 @@ export type DynamicContext = {
1616

1717
export type StaticContext = {
1818
buildModule: typeof buildModule;
19+
middlewareModule: typeof middlewareModule;
1920
middlewareUrl: string;
2021
};
2122

packages/storefront/packages/nuxt/CHANGELOG.md

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,42 @@
11
# Change log
22

3+
## 3.1.0
4+
5+
- **[ADDED]** `middlewareModule` to `defineSdkConfig` params.
6+
7+
```diff [sdk.config.ts]
8+
- import { UnifiedApiExtension } from "storefront-middleware/types"
9+
+ import { UnifiedEndpoints } from "storefront-middleware/types"
10+
11+
export default defineSdkConfig(
12+
- ({ buildModule, middlewareUrl, getRequestHeaders }) => ({
13+
- commerce: buildModule(unifiedModule<UnifiedApiExtension>, {
14+
- apiUrl: `${middlewareUrl}/commerce`,
15+
- requestOptions: { headers: getRequestHeaders },
16+
+ ({ buildModule, middlewareModule, middlewareUrl, getRequestHeaders }) => ({
17+
+ commerce: buildModule(middlewareModule<UnifiedEndpoints>, {
18+
+ apiUrl: `${middlewareUrl}/commerce`,
19+
+ defaultRequestConfig: { headers: getRequestHeaders() },
20+
}),
21+
})
22+
);
23+
```
24+
25+
- **[CHANGED]** deprecate `getCookieHeader`, use `getRequestHeaders` instead
26+
27+
```diff [sdk.config.ts]
28+
export default defineSdkConfig(
29+
- ({ buildModule, middlewareModule, middlewareUrl, getCookieHeader }) => ({
30+
+ ({ buildModule, middlewareModule, middlewareUrl, getRequestHeaders }) => ({
31+
commerce: buildModule(middlewareModule<UnifiedEndpoints>, {
32+
apiUrl: `${middlewareUrl}/commerce`,
33+
- defaultRequestConfig: { headers: getCookieHeader() }, // Only cookie header is included.
34+
+ defaultRequestConfig: { headers: getRequestHeaders() }, // All headers are included.
35+
}),
36+
})
37+
);
38+
```
39+
340
## 3.0.3
441

542
- **[CHANGED]** `@nuxt/kit` locked `3.7.4` version to `@nuxt/kit@^3.7.4`

packages/storefront/packages/nuxt/__tests__/app/package.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
"postinstall": "nuxt prepare"
1010
},
1111
"devDependencies": {
12-
"nuxt": "3.7.4",
13-
"@vue-storefront/sdk": "*"
12+
"nuxt": "3.7.4"
1413
}
1514
}
Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
1-
import { exampleSdkModule } from "../../../../shared";
1+
import { Endpoints } from "@storefront/shared";
22

33
export default defineSdkConfig(
4-
({ buildModule, middlewareUrl, getCookieHeader }) => ({
5-
example: buildModule(exampleSdkModule, {
6-
apiUrl: `${middlewareUrl}/test_integration`,
7-
headers: { cookie: getCookieHeader() },
8-
}),
9-
})
4+
({ buildModule, middlewareModule, middlewareUrl, getRequestHeaders }) => {
5+
return {
6+
example: buildModule(middlewareModule<Endpoints>, {
7+
apiUrl: `${middlewareUrl}/test_integration`,
8+
defaultRequestConfig: { headers: { ...getRequestHeaders() } },
9+
}),
10+
};
11+
}
1012
);

0 commit comments

Comments
 (0)