From 9703ef93553ccdc197e3de7ca3896e6ecf24342f Mon Sep 17 00:00:00 2001 From: Michael Kurowski <2772942+michaelKurowski@users.noreply.github.com> Date: Mon, 17 Jun 2024 11:09:44 +0300 Subject: [PATCH] Updated @vue-storefront/nuxt to latest sdk version & set cdnCacheBustingId as optional for sdk (#7189) * updated @vue-storefront/nuxt to latest sdk version & set cdnCacheBustingId option in sdk as optional * chore: changed planned version * docs: regenerated changeset * feat: cr tweaks * feat: cdnCacheBustingId is not being attached to the url when not provided * feat: adjusted code to match types --- .changeset/four-walls-fail.md | 5 +++++ .changeset/grumpy-boats-thank.md | 5 +++++ .changeset/thin-grapes-exist.md | 7 +++++++ packages/next/src/sdk/index.tsx | 6 +++++- packages/next/src/sdk/types.ts | 4 ++++ packages/nuxt/package.json | 2 +- packages/nuxt/src/module.ts | 6 ++++++ .../nuxt/src/runtime/defineSdkConfig.template | 16 +++++++++++++--- packages/nuxt/src/runtime/utils/defaults.ts | 5 +++++ packages/nuxt/tsconfig.json | 7 ++++++- .../sdk/src/modules/middlewareModule/types.ts | 2 +- .../middlewareModule/utils/getRequestSender.ts | 8 +++++--- yarn.lock | 5 ----- 13 files changed, 63 insertions(+), 15 deletions(-) create mode 100644 .changeset/four-walls-fail.md create mode 100644 .changeset/grumpy-boats-thank.md create mode 100644 .changeset/thin-grapes-exist.md create mode 100644 packages/nuxt/src/runtime/utils/defaults.ts diff --git a/.changeset/four-walls-fail.md b/.changeset/four-walls-fail.md new file mode 100644 index 0000000000..6279c53720 --- /dev/null +++ b/.changeset/four-walls-fail.md @@ -0,0 +1,5 @@ +--- +"@vue-storefront/next": minor +--- + +- **[ADDED]** Added .config parameter in createSdk callback diff --git a/.changeset/grumpy-boats-thank.md b/.changeset/grumpy-boats-thank.md new file mode 100644 index 0000000000..c342acd2ea --- /dev/null +++ b/.changeset/grumpy-boats-thank.md @@ -0,0 +1,5 @@ +--- +"@vue-storefront/sdk": minor +--- + +- **[CHANGED]** cdnCacheBustingId is now optional diff --git a/.changeset/thin-grapes-exist.md b/.changeset/thin-grapes-exist.md new file mode 100644 index 0000000000..9c7ac4746c --- /dev/null +++ b/.changeset/thin-grapes-exist.md @@ -0,0 +1,7 @@ +--- +"@vue-storefront/nuxt": major +--- + +- **[CHANGED]** Updated core sdk dependency to latest version +- **[ADDED]** Added .config parameter in createSdk callback + diff --git a/packages/next/src/sdk/index.tsx b/packages/next/src/sdk/index.tsx index a83506d962..891037688b 100644 --- a/packages/next/src/sdk/index.tsx +++ b/packages/next/src/sdk/index.tsx @@ -58,7 +58,11 @@ export function createSdk>( buildModule, middlewareModule, getRequestHeaders, - middlewareUrl + middlewareUrl, + config: { + middlewareUrl, + defaults: contextConfig, + } }); return initSDK(resolvedConfig); diff --git a/packages/next/src/sdk/types.ts b/packages/next/src/sdk/types.ts index 7914adeeef..1a88e42412 100644 --- a/packages/next/src/sdk/types.ts +++ b/packages/next/src/sdk/types.ts @@ -19,6 +19,10 @@ export type StaticContext = { middlewareModule: typeof middlewareModule; middlewareUrl: string; defaults: typeof contextConfig; + config: { + middlewareUrl: string; + defaults: typeof contextConfig; + }; }; type InjectedContext = DynamicContext & StaticContext; diff --git a/packages/nuxt/package.json b/packages/nuxt/package.json index e073de8989..41cac96ada 100644 --- a/packages/nuxt/package.json +++ b/packages/nuxt/package.json @@ -30,7 +30,7 @@ "dependencies": { "@nuxt/kit": "^3.7.4", "@nuxt/schema": "^3.7.4", - "@vue-storefront/sdk": "^1.4.0", + "@vue-storefront/sdk": "^3.0.0", "knitwork": "^1.0.0", "defu": "^6.0.0" }, diff --git a/packages/nuxt/src/module.ts b/packages/nuxt/src/module.ts index 21a041250c..d50a5d6400 100644 --- a/packages/nuxt/src/module.ts +++ b/packages/nuxt/src/module.ts @@ -67,6 +67,12 @@ export type SdkConfig = ${genInlineTypeImport( from: localResolver.resolve("./runtime/utils/composeMiddlewareUrl"), }); + addImports({ + name: "getDefaults", + as: "getDefaults", + from: localResolver.resolve("./runtime/utils/defaults"), + }); + addTemplate({ src: localResolver.resolve("./runtime/useSdk.template"), filename: "useSdk.ts", diff --git a/packages/nuxt/src/runtime/defineSdkConfig.template b/packages/nuxt/src/runtime/defineSdkConfig.template index 3df21fb71e..1de6550a79 100644 --- a/packages/nuxt/src/runtime/defineSdkConfig.template +++ b/packages/nuxt/src/runtime/defineSdkConfig.template @@ -1,5 +1,5 @@ import { buildModule, middlewareModule } from "@vue-storefront/sdk"; -import { composeMiddlewareUrl, useNuxtApp, useRequestHeaders } from "#imports"; +import { composeMiddlewareUrl, useNuxtApp, useRequestHeaders, getDefaults } from "#imports"; import { SdkModuleOptions } from "./vsfModule"; type InjectedContext = { @@ -12,6 +12,11 @@ type InjectedContext = { */ getCookieHeader: () => Record; getRequestHeaders: () => Record; + defaults: ReturnType; + config: { + middlewareUrl: string; + defaults: ReturnType; + }; }; type Config = (context: InjectedContext) => TConfig; @@ -61,9 +66,14 @@ export function defineSdkConfig(config: Config) { return config({ buildModule, middlewareModule, - middlewareUrl, getCookieHeader, - getRequestHeaders + getRequestHeaders, + defaults: getDefaults(), + middlewareUrl, + config: { + defaults: getDefaults(), + middlewareUrl, + } }); } } diff --git a/packages/nuxt/src/runtime/utils/defaults.ts b/packages/nuxt/src/runtime/utils/defaults.ts new file mode 100644 index 0000000000..b31d4e612b --- /dev/null +++ b/packages/nuxt/src/runtime/utils/defaults.ts @@ -0,0 +1,5 @@ +import { contextConfig } from "@storefront/shared"; + +export function getDefaults() { + return contextConfig; +} diff --git a/packages/nuxt/tsconfig.json b/packages/nuxt/tsconfig.json index 4b34df1571..b00d600364 100644 --- a/packages/nuxt/tsconfig.json +++ b/packages/nuxt/tsconfig.json @@ -1,3 +1,8 @@ { - "extends": "./.nuxt/tsconfig.json" + "extends": "./.nuxt/tsconfig.json", + "compilerOptions": { + "paths": { + "@storefront/shared": ["../shared"] + } + }, } diff --git a/packages/sdk/src/modules/middlewareModule/types.ts b/packages/sdk/src/modules/middlewareModule/types.ts index 94fe565916..1a832db183 100644 --- a/packages/sdk/src/modules/middlewareModule/types.ts +++ b/packages/sdk/src/modules/middlewareModule/types.ts @@ -263,7 +263,7 @@ export type Options< /** * Unique identifier for CDN cache busting. */ - cdnCacheBustingId: string; + cdnCacheBustingId?: string; }; /** diff --git a/packages/sdk/src/modules/middlewareModule/utils/getRequestSender.ts b/packages/sdk/src/modules/middlewareModule/utils/getRequestSender.ts index b2305021b1..659e232b50 100644 --- a/packages/sdk/src/modules/middlewareModule/utils/getRequestSender.ts +++ b/packages/sdk/src/modules/middlewareModule/utils/getRequestSender.ts @@ -22,7 +22,7 @@ export const getRequestSender = (options: Options): RequestSender => { ssrApiUrl, defaultRequestConfig = {}, methodsRequestConfig = {}, - cdnCacheBustingId, + cdnCacheBustingId = undefined, } = options; const getUrl = ( @@ -48,9 +48,11 @@ export const getRequestSender = (options: Options): RequestSender => { // If there are query params, append them to the URL as `?body=[]` const serializedBody = encodeURIComponent(JSON.stringify(params)); // Serialize CDN cache busting ID - const serializedCdnCacheBustingId = encodeURIComponent(cdnCacheBustingId); + const serializedCdnCacheBustingId = cdnCacheBustingId + ? `&cdnCacheBustingId=${encodeURIComponent(cdnCacheBustingId)}` + : ""; - return `${url}?body=${serializedBody}&cdnCacheBustingId=${serializedCdnCacheBustingId}`; + return `${url}?body=${serializedBody}${serializedCdnCacheBustingId}`; }; const getConfig = ( diff --git a/yarn.lock b/yarn.lock index 0fbcf0d5a4..8015c1f6b6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5038,11 +5038,6 @@ rollup "^2.59.0" rollup-plugin-typescript2 "^0.35.0" -"@vue-storefront/sdk@^1.4.0": - version "1.5.0" - resolved "https://registry.yarnpkg.com/@vue-storefront/sdk/-/sdk-1.5.0.tgz#f283eb57a5113e355206a0590dab874a6739e8e8" - integrity sha512-dV6CBCx3XcEdd9EmAtvyY5sPecRMYMDCpMcbbDKvRgzAh+VjCjvSr11PvRqHx3lSYeKQcQdQZtgkk95lEz07YQ== - "@vue-storefront/theme-utilities@^0.2.0": version "0.2.0" resolved "https://registry.npmjs.org/@vue-storefront/theme-utilities/-/theme-utilities-0.2.0.tgz#c4dde4801c4413b51e354d9b0df7064d34c9572e"