From dae54576d8fb77246be0cc0197991cd765679c9b Mon Sep 17 00:00:00 2001 From: Tim Benniks Date: Fri, 16 Jan 2026 09:57:12 +0100 Subject: [PATCH 1/2] refactor: implement getStack function for isolated Contentstack SDK instances and update getPage to accept stack instance in ssr --- app/page.tsx | 6 ++- lib/contentstack.ts | 96 +++++++++++++++++++++++++++++++++++---------- 2 files changed, 80 insertions(+), 22 deletions(-) diff --git a/app/page.tsx b/app/page.tsx index 597b098..0b126f0 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -1,5 +1,5 @@ import DOMPurify from "isomorphic-dompurify"; -import { getPage, stack } from "@/lib/contentstack"; +import { getPage, getStack } from "@/lib/contentstack"; import { headers } from "next/headers"; import Image from "next/image"; @@ -17,6 +17,8 @@ export default async function Home({ const { live_preview, entry_uid, content_type_uid, preview_timestamp } = await searchParams; + const stack = getStack(); + if (live_preview) { stack.livePreviewQuery({ live_preview, @@ -26,7 +28,7 @@ export default async function Home({ }); } - const page = await getPage("/"); + const page = await getPage("/", stack); return (
diff --git a/lib/contentstack.ts b/lib/contentstack.ts index 6226320..177ea31 100644 --- a/lib/contentstack.ts +++ b/lib/contentstack.ts @@ -3,31 +3,62 @@ import ContentstackLivePreview, { IStackSdk } from "@contentstack/live-preview-u import { getContentstackEndpoints, getRegionForString } from "@timbenniks/contentstack-endpoints"; import { Page } from "./types"; +// Region and endpoint configuration - computed once at module load time const region = getRegionForString(process.env.NEXT_PUBLIC_CONTENTSTACK_REGION as string) const endpoints = getContentstackEndpoints(region, true) -export const stack = contentstack.stack({ - apiKey: process.env.NEXT_PUBLIC_CONTENTSTACK_API_KEY as string, - deliveryToken: process.env.NEXT_PUBLIC_CONTENTSTACK_DELIVERY_TOKEN as string, - environment: process.env.NEXT_PUBLIC_CONTENTSTACK_ENVIRONMENT as string, - // Setting the region - // if the region doesnt exist, fall back to a custom region given by the env vars - // for internal testing purposes at Contentstack we look for a custom region in the env vars, you do not have to do this. - region: region ? region : process.env.NEXT_PUBLIC_CONTENTSTACK_REGION as any, - // Setting the host for content delivery based on the region or environment variables - // This is done for internal testing purposes at Contentstack, you can omit this if you have set a region above. - host: process.env.NEXT_PUBLIC_CONTENTSTACK_CONTENT_DELIVERY || endpoints && endpoints.contentDelivery, +/** + * Creates a new Contentstack SDK instance for each request. + * + * IMPORTANT: This function MUST be called for each server-side request to ensure isolation. + * + * Why isolated instances are critical: + * - When Live Preview is enabled, the SDK modifies its configuration (API endpoints, etc.) + * for specific requests via livePreviewQuery() + * - Sharing a single SDK instance across concurrent requests causes configuration changes + * from one user (User A) to affect others (User B), leading to incorrect content delivery + * - Each request gets its own isolated stack instance, preventing cross-request interference + * + * Usage: + * - Server-side: Always call getStack() at the start of each request handler + * - Client-side: Can reuse instances as there's no concurrent request handling + */ +export function getStack() { + // Create a fresh stack instance with base configuration + return contentstack.stack({ + apiKey: process.env.NEXT_PUBLIC_CONTENTSTACK_API_KEY as string, + deliveryToken: process.env.NEXT_PUBLIC_CONTENTSTACK_DELIVERY_TOKEN as string, + environment: process.env.NEXT_PUBLIC_CONTENTSTACK_ENVIRONMENT as string, + // Setting the region + // if the region doesnt exist, fall back to a custom region given by the env vars + // for internal testing purposes at Contentstack we look for a custom region in the env vars, you do not have to do this. + region: region ? region : process.env.NEXT_PUBLIC_CONTENTSTACK_REGION as any, + // Setting the host for content delivery based on the region or environment variables + // This is done for internal testing purposes at Contentstack, you can omit this if you have set a region above. + host: process.env.NEXT_PUBLIC_CONTENTSTACK_CONTENT_DELIVERY || endpoints && endpoints.contentDelivery, - live_preview: { - enable: process.env.NEXT_PUBLIC_CONTENTSTACK_PREVIEW === 'true', - preview_token: process.env.NEXT_PUBLIC_CONTENTSTACK_PREVIEW_TOKEN, - // Setting the host for live preview based on the region - // for internal testing purposes at Contentstack we look for a custom host in the env vars, you do not have to do this. - host: process.env.NEXT_PUBLIC_CONTENTSTACK_PREVIEW_HOST || endpoints && endpoints.preview - } -}); + live_preview: { + enable: process.env.NEXT_PUBLIC_CONTENTSTACK_PREVIEW === 'true', + preview_token: process.env.NEXT_PUBLIC_CONTENTSTACK_PREVIEW_TOKEN, + // Setting the host for live preview based on the region + // for internal testing purposes at Contentstack we look for a custom host in the env vars, you do not have to do this. + host: process.env.NEXT_PUBLIC_CONTENTSTACK_PREVIEW_HOST || endpoints && endpoints.preview + } + }); +} +/** + * Initializes Contentstack Live Preview for client-side editing. + * + * This function is called once on the client-side (via ContentstackLivePreview component) + * to enable the visual editing interface. It creates a stack instance to read configuration + * but doesn't perform any server-side queries, so it's safe to call getStack() here. + * + * Note: This is client-side only and doesn't affect server-side request isolation. + */ export function initLivePreview() { + // Create a stack instance to read configuration for Live Preview initialization + const stack = getStack(); ContentstackLivePreview.init({ ssr: true, enable: process.env.NEXT_PUBLIC_CONTENTSTACK_PREVIEW === 'true', @@ -50,7 +81,30 @@ export function initLivePreview() { }); } -export async function getPage(url: string) { +/** + * Fetches a page entry from Contentstack by URL. + * + * This function is focused solely on fetching page data - it does not handle Live Preview + * configuration. Live Preview setup should be done by the caller before passing the stack instance. + * + * @param url - The URL path to match against the page entry's url field + * @param stackInstance - Optional pre-configured stack instance. If provided, uses this instance + * (useful when Live Preview has been configured). If not provided, creates + * a new isolated stack instance via getStack(). + * + * Usage pattern for Live Preview: + * 1. Create a stack: const stack = getStack() + * 2. Configure Live Preview: stack.livePreviewQuery({ ... }) + * 3. Pass to getPage: const page = await getPage("/", stack) + * + * Usage pattern without Live Preview: + * const page = await getPage("/") // Creates its own isolated stack + */ +export async function getPage(url: string, stackInstance?: ReturnType) { + // Use provided stack instance (with Live Preview config) or create a new isolated one + const stack = stackInstance || getStack(); + + // Query Contentstack for the page entry matching the URL const result = await stack .contentType("page") .entry() @@ -61,6 +115,8 @@ export async function getPage(url: string) { if (result.entries) { const entry = result.entries[0] + // Add editable tags for Live Preview if enabled + // These tags enable the visual editing interface to identify editable fields if (process.env.NEXT_PUBLIC_CONTENTSTACK_PREVIEW === 'true') { contentstack.Utils.addEditableTags(entry, 'page', true); } From ce57c12d3f7ebe179326a5c4e3e94bbfd2c52235 Mon Sep 17 00:00:00 2001 From: "harshitha.d" Date: Mon, 19 Jan 2026 16:07:43 +0530 Subject: [PATCH 2/2] patch version bump --- package-lock.json | 130 +++++++++++++++++++++++----------------------- package.json | 2 +- 2 files changed, 66 insertions(+), 66 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1127c20..518c3ed 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "kickstart-next-ssr", - "version": "1.0.13", + "version": "1.0.14", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "kickstart-next-ssr", - "version": "1.0.13", + "version": "1.0.14", "license": "MIT", "dependencies": { "@contentstack/delivery-sdk": "^4.10.6", @@ -701,18 +701,18 @@ } }, "node_modules/@exodus/bytes": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@exodus/bytes/-/bytes-1.8.0.tgz", - "integrity": "sha512-8JPn18Bcp8Uo1T82gR8lh2guEOa5KKU/IEKvvdp0sgmi7coPBWf1Doi1EXsGZb2ehc8ym/StJCjffYV+ne7sXQ==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@exodus/bytes/-/bytes-1.9.0.tgz", + "integrity": "sha512-lagqsvnk09NKogQaN/XrtlWeUF8SRhT12odMvbTIIaVObqzwAogL6jhR4DAp0gPuKoM1AOVrKUshJpRdpMFrww==", "license": "MIT", "engines": { "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@exodus/crypto": "^1.0.0-rc.4" + "@noble/hashes": "^1.8.0 || ^2.0.0" }, "peerDependenciesMeta": { - "@exodus/crypto": { + "@noble/hashes": { "optional": true } } @@ -1324,15 +1324,15 @@ } }, "node_modules/@next/env": { - "version": "16.1.1", - "resolved": "https://registry.npmjs.org/@next/env/-/env-16.1.1.tgz", - "integrity": "sha512-3oxyM97Sr2PqiVyMyrZUtrtM3jqqFxOQJVuKclDsgj/L728iZt/GyslkN4NwarledZATCenbk4Offjk1hQmaAA==", + "version": "16.1.3", + "resolved": "https://registry.npmjs.org/@next/env/-/env-16.1.3.tgz", + "integrity": "sha512-BLP14oBOvZWXgfdJf9ao+VD8O30uE+x7PaV++QtACLX329WcRSJRO5YJ+Bcvu0Q+c/lei41TjSiFf6pXqnpbQA==", "license": "MIT" }, "node_modules/@next/eslint-plugin-next": { - "version": "16.1.1", - "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-16.1.1.tgz", - "integrity": "sha512-Ovb/6TuLKbE1UiPcg0p39Ke3puyTCIKN9hGbNItmpQsp+WX3qrjO3WaMVSi6JHr9X1NrmthqIguVHodMJbh/dw==", + "version": "16.1.3", + "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-16.1.3.tgz", + "integrity": "sha512-MqBh3ltFAy0AZCRFVdjVjjeV7nEszJDaVIpDAnkQcn8U9ib6OEwkSnuK6xdYxMGPhV/Y4IlY6RbDipPOpLfBqQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1340,9 +1340,9 @@ } }, "node_modules/@next/swc-darwin-arm64": { - "version": "16.1.1", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-16.1.1.tgz", - "integrity": "sha512-JS3m42ifsVSJjSTzh27nW+Igfha3NdBOFScr9C80hHGrWx55pTrVL23RJbqir7k7/15SKlrLHhh/MQzqBBYrQA==", + "version": "16.1.3", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-16.1.3.tgz", + "integrity": "sha512-CpOD3lmig6VflihVoGxiR/l5Jkjfi4uLaOR4ziriMv0YMDoF6cclI+p5t2nstM8TmaFiY6PCTBgRWB57/+LiBA==", "cpu": [ "arm64" ], @@ -1356,9 +1356,9 @@ } }, "node_modules/@next/swc-darwin-x64": { - "version": "16.1.1", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-16.1.1.tgz", - "integrity": "sha512-hbyKtrDGUkgkyQi1m1IyD3q4I/3m9ngr+V93z4oKHrPcmxwNL5iMWORvLSGAf2YujL+6HxgVvZuCYZfLfb4bGw==", + "version": "16.1.3", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-16.1.3.tgz", + "integrity": "sha512-aF4us2JXh0zn3hNxvL1Bx3BOuh8Lcw3p3Xnurlvca/iptrDH1BrpObwkw9WZra7L7/0qB9kjlREq3hN/4x4x+Q==", "cpu": [ "x64" ], @@ -1372,9 +1372,9 @@ } }, "node_modules/@next/swc-linux-arm64-gnu": { - "version": "16.1.1", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-16.1.1.tgz", - "integrity": "sha512-/fvHet+EYckFvRLQ0jPHJCUI5/B56+2DpI1xDSvi80r/3Ez+Eaa2Yq4tJcRTaB1kqj/HrYKn8Yplm9bNoMJpwQ==", + "version": "16.1.3", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-16.1.3.tgz", + "integrity": "sha512-8VRkcpcfBtYvhGgXAF7U3MBx6+G1lACM1XCo1JyaUr4KmAkTNP8Dv2wdMq7BI+jqRBw3zQE7c57+lmp7jCFfKA==", "cpu": [ "arm64" ], @@ -1388,9 +1388,9 @@ } }, "node_modules/@next/swc-linux-arm64-musl": { - "version": "16.1.1", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-16.1.1.tgz", - "integrity": "sha512-MFHrgL4TXNQbBPzkKKur4Fb5ICEJa87HM7fczFs2+HWblM7mMLdco3dvyTI+QmLBU9xgns/EeeINSZD6Ar+oLg==", + "version": "16.1.3", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-16.1.3.tgz", + "integrity": "sha512-UbFx69E2UP7MhzogJRMFvV9KdEn4sLGPicClwgqnLht2TEi204B71HuVfps3ymGAh0c44QRAF+ZmvZZhLLmhNg==", "cpu": [ "arm64" ], @@ -1404,9 +1404,9 @@ } }, "node_modules/@next/swc-linux-x64-gnu": { - "version": "16.1.1", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-16.1.1.tgz", - "integrity": "sha512-20bYDfgOQAPUkkKBnyP9PTuHiJGM7HzNBbuqmD0jiFVZ0aOldz+VnJhbxzjcSabYsnNjMPsE0cyzEudpYxsrUQ==", + "version": "16.1.3", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-16.1.3.tgz", + "integrity": "sha512-SzGTfTjR5e9T+sZh5zXqG/oeRQufExxBF6MssXS7HPeZFE98JDhCRZXpSyCfWrWrYrzmnw/RVhlP2AxQm+wkRQ==", "cpu": [ "x64" ], @@ -1420,9 +1420,9 @@ } }, "node_modules/@next/swc-linux-x64-musl": { - "version": "16.1.1", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-16.1.1.tgz", - "integrity": "sha512-9pRbK3M4asAHQRkwaXwu601oPZHghuSC8IXNENgbBSyImHv/zY4K5udBusgdHkvJ/Tcr96jJwQYOll0qU8+fPA==", + "version": "16.1.3", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-16.1.3.tgz", + "integrity": "sha512-HlrDpj0v+JBIvQex1mXHq93Mht5qQmfyci+ZNwGClnAQldSfxI6h0Vupte1dSR4ueNv4q7qp5kTnmLOBIQnGow==", "cpu": [ "x64" ], @@ -1436,9 +1436,9 @@ } }, "node_modules/@next/swc-win32-arm64-msvc": { - "version": "16.1.1", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-16.1.1.tgz", - "integrity": "sha512-bdfQkggaLgnmYrFkSQfsHfOhk/mCYmjnrbRCGgkMcoOBZ4n+TRRSLmT/CU5SATzlBJ9TpioUyBW/vWFXTqQRiA==", + "version": "16.1.3", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-16.1.3.tgz", + "integrity": "sha512-3gFCp83/LSduZMSIa+lBREP7+5e7FxpdBoc9QrCdmp+dapmTK9I+SLpY60Z39GDmTXSZA4huGg9WwmYbr6+WRw==", "cpu": [ "arm64" ], @@ -1452,9 +1452,9 @@ } }, "node_modules/@next/swc-win32-x64-msvc": { - "version": "16.1.1", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-16.1.1.tgz", - "integrity": "sha512-Ncwbw2WJ57Al5OX0k4chM68DKhEPlrXBaSXDCi2kPi5f4d8b3ejr3RRJGfKBLrn2YJL5ezNS7w2TZLHSti8CMw==", + "version": "16.1.3", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-16.1.3.tgz", + "integrity": "sha512-1SZVfFT8zmMB+Oblrh5OKDvUo5mYQOkX2We6VGzpg7JUVZlqe4DYOFGKYZKTweSx1gbMixyO1jnFT4thU+nNHQ==", "cpu": [ "x64" ], @@ -1889,9 +1889,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "24.10.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.7.tgz", - "integrity": "sha512-+054pVMzVTmRQV8BhpGv3UyfZ2Llgl8rdpDTon+cUH9+na0ncBVXj3wTUKh14+Kiz18ziM3b4ikpP5/Pc0rQEQ==", + "version": "24.10.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.9.tgz", + "integrity": "sha512-ne4A0IpG3+2ETuREInjPNhUGis1SFjv1d5asp8MzEAGtOZeTeHVDOYqOgqfhvseqg/iXty2hjBf1zAOb7RNiNw==", "dev": true, "license": "MIT", "dependencies": { @@ -2796,9 +2796,9 @@ "license": "MIT" }, "node_modules/baseline-browser-mapping": { - "version": "2.9.14", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.14.tgz", - "integrity": "sha512-B0xUquLkiGLgHhpPBqvl7GWegWBUNuujQ6kXd/r1U38ElPT6Ok8KZ8e+FpUGEc2ZoRQUzq/aUnaKFc/svWUGSg==", + "version": "2.9.15", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.15.tgz", + "integrity": "sha512-kX8h7K2srmDyYnXRIppo4AH/wYgzWVCs+eKr3RusRSQ5PvRYoEFmR/I0PbdTjKFAoKqp5+kbxnNTFO9jOfSVJg==", "license": "Apache-2.0", "bin": { "baseline-browser-mapping": "dist/cli.js" @@ -2930,9 +2930,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001764", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001764.tgz", - "integrity": "sha512-9JGuzl2M+vPL+pz70gtMF9sHdMFbY9FJaQBi186cHKH3pSzDvzoUJUPV6fqiKIMyXbud9ZLg4F3Yza1vJ1+93g==", + "version": "1.0.30001765", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001765.tgz", + "integrity": "sha512-LWcNtSyZrakjECqmpP4qdg0MMGdN368D7X8XvvAqOcqMv0RxnlqVKZl2V6/mBR68oYMxOZPLw/gO7DuisMHUvQ==", "funding": [ { "type": "opencollective", @@ -3606,13 +3606,13 @@ } }, "node_modules/eslint-config-next": { - "version": "16.1.1", - "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-16.1.1.tgz", - "integrity": "sha512-55nTpVWm3qeuxoQKLOjQVciKZJUphKrNM0fCcQHAIOGl6VFXgaqeMfv0aKJhs7QtcnlAPhNVqsqRfRjeKBPIUA==", + "version": "16.1.3", + "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-16.1.3.tgz", + "integrity": "sha512-q2Z87VSsoJcv+vgR+Dm8NPRf+rErXcRktuBR5y3umo/j5zLjIWH7rqBCh3X804gUGKbOrqbgsLUkqDE35C93Gw==", "dev": true, "license": "MIT", "dependencies": { - "@next/eslint-plugin-next": "16.1.1", + "@next/eslint-plugin-next": "16.1.3", "eslint-import-resolver-node": "^0.3.6", "eslint-import-resolver-typescript": "^3.5.2", "eslint-plugin-import": "^2.32.0", @@ -5703,12 +5703,12 @@ "license": "MIT" }, "node_modules/next": { - "version": "16.1.1", - "resolved": "https://registry.npmjs.org/next/-/next-16.1.1.tgz", - "integrity": "sha512-QI+T7xrxt1pF6SQ/JYFz95ro/mg/1Znk5vBebsWwbpejj1T0A23hO7GYEaVac9QUOT2BIMiuzm0L99ooq7k0/w==", + "version": "16.1.3", + "resolved": "https://registry.npmjs.org/next/-/next-16.1.3.tgz", + "integrity": "sha512-gthG3TRD+E3/mA0uDQb9lqBmx1zVosq5kIwxNN6+MRNd085GzD+9VXMPUs+GGZCbZ+GDZdODUq4Pm7CTXK6ipw==", "license": "MIT", "dependencies": { - "@next/env": "16.1.1", + "@next/env": "16.1.3", "@swc/helpers": "0.5.15", "baseline-browser-mapping": "^2.8.3", "caniuse-lite": "^1.0.30001579", @@ -5722,14 +5722,14 @@ "node": ">=20.9.0" }, "optionalDependencies": { - "@next/swc-darwin-arm64": "16.1.1", - "@next/swc-darwin-x64": "16.1.1", - "@next/swc-linux-arm64-gnu": "16.1.1", - "@next/swc-linux-arm64-musl": "16.1.1", - "@next/swc-linux-x64-gnu": "16.1.1", - "@next/swc-linux-x64-musl": "16.1.1", - "@next/swc-win32-arm64-msvc": "16.1.1", - "@next/swc-win32-x64-msvc": "16.1.1", + "@next/swc-darwin-arm64": "16.1.3", + "@next/swc-darwin-x64": "16.1.3", + "@next/swc-linux-arm64-gnu": "16.1.3", + "@next/swc-linux-arm64-musl": "16.1.3", + "@next/swc-linux-x64-gnu": "16.1.3", + "@next/swc-linux-x64-musl": "16.1.3", + "@next/swc-win32-arm64-msvc": "16.1.3", + "@next/swc-win32-x64-msvc": "16.1.3", "sharp": "^0.34.4" }, "peerDependencies": { @@ -7376,9 +7376,9 @@ } }, "node_modules/which-typed-array": { - "version": "1.1.19", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", - "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", + "version": "1.1.20", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.20.tgz", + "integrity": "sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==", "dev": true, "license": "MIT", "dependencies": { diff --git a/package.json b/package.json index e8fc1d5..e6ecf92 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "kickstart-next-ssr", - "version": "1.0.13", + "version": "1.0.14", "private": false, "repository": { "type": "git",