@comet/site-nextjs 8.7.0-canary-20251113103327 → 8.7.0-canary-20251113103650

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/lib/index.d.ts CHANGED
@@ -18,7 +18,7 @@ export { SitePreviewIFrameMessageType } from './sitePreview/iframebridge/SitePre
18
18
  export { legacyPagesRouterSitePreviewApiHandler } from './sitePreview/pagesRouter/legacyPagesRouterSitePreviewApiHandler';
19
19
  export { legacyPagesRouterPreviewParams, previewParams, type SitePreviewParams } from './sitePreview/previewUtils';
20
20
  export { SitePreviewProvider } from './sitePreview/SitePreviewProvider';
21
- export { AdminMessageType, type BlockLoader, type BlockLoaderDependencies, BlockPreviewProvider, BlocksBlock, calculateInheritAspectRatio, convertPreviewDataToHeaders, type CookieApi, CookieApiProvider, CookieSafe, createFetchInMemoryCache, createFetchWithPreviewHeaders, createGraphQLFetch, ErrorHandlerBoundary, ErrorHandlerProvider, generateImageUrl, getMaxDimensionsFromArea, gql, type GraphQLFetch, hasRichTextBlockContent, type IAdminContentScopeMessage, type IAdminGraphQLApiUrlMessage, type IAdminHoverComponentMessage, type IAdminShowOnlyVisibleMessage, IFrameBridgeProvider, type IFrameHoverComponentMessage, type IFrameLocationMessage, type IFrameMessage, IFrameMessageType, type IFrameOpenLinkMessage, type IFrameSelectComponentMessage, type ImageDimensions, type IReadyIFrameMessage, isWithPreviewPropsData, ListBlock, OneOfBlock, OptionalBlock, parseAspectRatio, Preview, type PreviewData, PreviewSkeleton, type PropsWithData, recursivelyLoadBlockData,
21
+ export { AdminMessageType, type BlockLoader, type BlockLoaderDependencies, BlockPreviewProvider, BlocksBlock, calculateInheritAspectRatio, convertPreviewDataToHeaders, type CookieApi, CookieApiProvider, CookieSafe, createFetchInMemoryCache, createFetchWithPreviewHeaders, createGraphQLFetch, createPersistedQueryGraphQLFetch, ErrorHandlerBoundary, ErrorHandlerProvider, generateImageUrl, getMaxDimensionsFromArea, gql, type GraphQLFetch, hasRichTextBlockContent, type IAdminContentScopeMessage, type IAdminGraphQLApiUrlMessage, type IAdminHoverComponentMessage, type IAdminShowOnlyVisibleMessage, IFrameBridgeProvider, type IFrameHoverComponentMessage, type IFrameLocationMessage, type IFrameMessage, IFrameMessageType, type IFrameOpenLinkMessage, type IFrameSelectComponentMessage, type ImageDimensions, type IReadyIFrameMessage, isWithPreviewPropsData, ListBlock, OneOfBlock, OptionalBlock, parseAspectRatio, persistedQueryRoute, Preview, type PreviewData, PreviewSkeleton, type PropsWithData, recursivelyLoadBlockData,
22
22
  /** @deprecated Use PreviewData instead. */
23
- type PreviewData as SitePreviewData, type SupportedBlocks, SvgImageBlock, useBlockPreviewFetch, useCookieApi, useCookieBotCookieApi, useIFrameBridge, useIsElementInViewport, useLocalStorageCookieApi, useOneTrustCookieApi, usePreview, withPreview, type WithPreviewProps, } from '@comet/site-react';
23
+ type PreviewData as SitePreviewData, type SupportedBlocks, SvgImageBlock, useBlockPreviewFetch, useCookieApi, useCookieBotCookieApi, useIFrameBridge, useIsElementInViewport, useLocalStorageCookieApi, useOneTrustCookieApi, usePreview, webpackPersistedQueriesLoader, withPreview, type WithPreviewProps, } from '@comet/site-react';
24
24
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,uBAAuB,CAAC;AAE/B,OAAO,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,YAAY,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AACjF,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,oCAAoC,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAC5G,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AAC5E,OAAO,EAAE,4BAA4B,EAAE,MAAM,yDAAyD,CAAC;AACvG,OAAO,EAAE,4BAA4B,EAAE,MAAM,qDAAqD,CAAC;AACnG,OAAO,EAAE,sCAAsC,EAAE,MAAM,kEAAkE,CAAC;AAC1H,OAAO,EAAE,8BAA8B,EAAE,aAAa,EAAE,KAAK,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACnH,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EACH,gBAAgB,EAChB,KAAK,WAAW,EAChB,KAAK,uBAAuB,EAC5B,oBAAoB,EACpB,WAAW,EACX,2BAA2B,EAC3B,2BAA2B,EAC3B,KAAK,SAAS,EACd,iBAAiB,EACjB,UAAU,EACV,wBAAwB,EACxB,6BAA6B,EAC7B,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,gBAAgB,EAChB,wBAAwB,EACxB,GAAG,EACH,KAAK,YAAY,EACjB,uBAAuB,EACvB,KAAK,yBAAyB,EAC9B,KAAK,0BAA0B,EAC/B,KAAK,2BAA2B,EAChC,KAAK,4BAA4B,EACjC,oBAAoB,EACpB,KAAK,2BAA2B,EAChC,KAAK,qBAAqB,EAC1B,KAAK,aAAa,EAClB,iBAAiB,EACjB,KAAK,qBAAqB,EAC1B,KAAK,4BAA4B,EACjC,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,sBAAsB,EACtB,SAAS,EACT,UAAU,EACV,aAAa,EACb,gBAAgB,EAChB,OAAO,EACP,KAAK,WAAW,EAChB,eAAe,EACf,KAAK,aAAa,EAClB,wBAAwB;AACxB,2CAA2C;AAC3C,KAAK,WAAW,IAAI,eAAe,EACnC,KAAK,eAAe,EACpB,aAAa,EACb,oBAAoB,EACpB,YAAY,EACZ,qBAAqB,EACrB,eAAe,EACf,sBAAsB,EACtB,wBAAwB,EACxB,oBAAoB,EACpB,UAAU,EACV,WAAW,EACX,KAAK,gBAAgB,GACxB,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,uBAAuB,CAAC;AAE/B,OAAO,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,YAAY,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AACjF,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,oCAAoC,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAC5G,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AAC5E,OAAO,EAAE,4BAA4B,EAAE,MAAM,yDAAyD,CAAC;AACvG,OAAO,EAAE,4BAA4B,EAAE,MAAM,qDAAqD,CAAC;AACnG,OAAO,EAAE,sCAAsC,EAAE,MAAM,kEAAkE,CAAC;AAC1H,OAAO,EAAE,8BAA8B,EAAE,aAAa,EAAE,KAAK,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACnH,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EACH,gBAAgB,EAChB,KAAK,WAAW,EAChB,KAAK,uBAAuB,EAC5B,oBAAoB,EACpB,WAAW,EACX,2BAA2B,EAC3B,2BAA2B,EAC3B,KAAK,SAAS,EACd,iBAAiB,EACjB,UAAU,EACV,wBAAwB,EACxB,6BAA6B,EAC7B,kBAAkB,EAClB,gCAAgC,EAChC,oBAAoB,EACpB,oBAAoB,EACpB,gBAAgB,EAChB,wBAAwB,EACxB,GAAG,EACH,KAAK,YAAY,EACjB,uBAAuB,EACvB,KAAK,yBAAyB,EAC9B,KAAK,0BAA0B,EAC/B,KAAK,2BAA2B,EAChC,KAAK,4BAA4B,EACjC,oBAAoB,EACpB,KAAK,2BAA2B,EAChC,KAAK,qBAAqB,EAC1B,KAAK,aAAa,EAClB,iBAAiB,EACjB,KAAK,qBAAqB,EAC1B,KAAK,4BAA4B,EACjC,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,sBAAsB,EACtB,SAAS,EACT,UAAU,EACV,aAAa,EACb,gBAAgB,EAChB,mBAAmB,EACnB,OAAO,EACP,KAAK,WAAW,EAChB,eAAe,EACf,KAAK,aAAa,EAClB,wBAAwB;AACxB,2CAA2C;AAC3C,KAAK,WAAW,IAAI,eAAe,EACnC,KAAK,eAAe,EACpB,aAAa,EACb,oBAAoB,EACpB,YAAY,EACZ,qBAAqB,EACrB,eAAe,EACf,sBAAsB,EACtB,wBAAwB,EACxB,oBAAoB,EACpB,UAAU,EACV,6BAA6B,EAC7B,WAAW,EACX,KAAK,gBAAgB,GACxB,MAAM,mBAAmB,CAAC"}
package/lib/index.js CHANGED
@@ -26,6 +26,7 @@ import { convertPreviewDataToHeaders, createFetchWithPreviewHeaders, createGraph
26
26
  import { CookieApiProvider, useCookieApi } from "./site-react/lib/cookies/CookieApiContext.js";
27
27
  import { CookieSafe } from "./site-react/lib/cookies/CookieSafe.js";
28
28
  import { createFetchInMemoryCache } from "./site-react/lib/graphQLFetch/fetchInMemoryCache.js";
29
+ import { createPersistedQueryGraphQLFetch } from "./site-react/lib/persistedQueries/createPersistedQueryGraphQLFetch.js";
29
30
  import { ErrorHandlerBoundary } from "./site-react/lib/errorHandler/ErrorHandlerBoundary.js";
30
31
  import { ErrorHandlerProvider } from "./site-react/lib/errorHandler/ErrorHandlerProvider.js";
31
32
  import { hasRichTextBlockContent } from "./site-react/lib/blocks/helpers/RichTextBlockHelper.js";
@@ -34,6 +35,7 @@ import { isWithPreviewPropsData, withPreview } from "./site-react/lib/iframebrid
34
35
  import { ListBlock } from "./site-react/lib/blocks/factories/ListBlock.js";
35
36
  import { OneOfBlock } from "./site-react/lib/blocks/factories/OneOfBlock.js";
36
37
  import { OptionalBlock } from "./site-react/lib/blocks/factories/OptionalBlock.js";
38
+ import { persistedQueryRoute } from "./site-react/lib/persistedQueries/persistedQueryRoute.js";
37
39
  import { Preview } from "./site-react/lib/iframebridge/Preview.js";
38
40
  import { PreviewSkeleton } from "./site-react/lib/previewskeleton/PreviewSkeleton.js";
39
41
  import { recursivelyLoadBlockData } from "./site-react/lib/blockLoader/blockLoader.js";
@@ -45,6 +47,7 @@ import { useIsElementInViewport } from "./site-react/lib/blocks/helpers/useIsEle
45
47
  import { useLocalStorageCookieApi } from "./site-react/lib/cookies/useLocalStorageCookieApi.js";
46
48
  import { useOneTrustCookieApi } from "./site-react/lib/cookies/useOneTrustCookieApi.js";
47
49
  import { usePreview } from "./site-react/lib/preview/usePreview.js";
50
+ import { default as default2 } from "./site-react/lib/persistedQueries/webpackPersistedQueriesLoader.js";
48
51
  export {
49
52
  AdminMessageType,
50
53
  BlockPreviewProvider,
@@ -82,6 +85,7 @@ export {
82
85
  createFetchWithDefaults,
83
86
  createFetchWithPreviewHeaders,
84
87
  createGraphQLFetch,
88
+ createPersistedQueryGraphQLFetch,
85
89
  generateImageUrl,
86
90
  getMaxDimensionsFromArea,
87
91
  gql,
@@ -90,6 +94,7 @@ export {
90
94
  legacyPagesRouterPreviewParams,
91
95
  legacyPagesRouterSitePreviewApiHandler,
92
96
  parseAspectRatio,
97
+ persistedQueryRoute,
93
98
  previewParams,
94
99
  recursivelyLoadBlockData,
95
100
  sendSitePreviewIFrameMessage,
@@ -102,5 +107,6 @@ export {
102
107
  useLocalStorageCookieApi,
103
108
  useOneTrustCookieApi,
104
109
  usePreview,
110
+ default2 as webpackPersistedQueriesLoader,
105
111
  withPreview
106
112
  };
@@ -0,0 +1,68 @@
1
+ function createPersistedQueryGraphQLFetch(fetch, url) {
2
+ return async function(query, variables, init) {
3
+ if (typeof query === "string") throw new Error("at runtime only hashed queries are supported");
4
+ const hash = query.hash;
5
+ let response;
6
+ if ((init == null ? void 0 : init.method) === "GET") {
7
+ const fetchUrl = new URL(url, window.location.origin);
8
+ fetchUrl.searchParams.append("extensions.persistedQuery.sha256Hash", hash);
9
+ fetchUrl.searchParams.append("variables", JSON.stringify(variables));
10
+ response = await fetch(fetchUrl, {
11
+ ...init,
12
+ headers: {
13
+ /**
14
+ * It's recommended to add the `Apollo-Require-Preflight` header to GET requests, running on an Apollo Server 4.
15
+ *
16
+ * If this header is missing, Apollo Server 4 will return: This operation has been blocked as a potential Cross-Site Request Forgery (CSRF).
17
+ *
18
+ * see: https://www.apollographql.com/docs/graphos/routing/security/csrf#enable-csrf-prevention
19
+ */
20
+ "Apollo-Require-Preflight": "true",
21
+ ...init.headers
22
+ }
23
+ });
24
+ } else {
25
+ response = await fetch(url, {
26
+ method: "POST",
27
+ ...init,
28
+ headers: { "Content-Type": "application/json", ...init == null ? void 0 : init.headers },
29
+ body: JSON.stringify({
30
+ extensions: {
31
+ persistedQuery: {
32
+ version: 1,
33
+ sha256Hash: hash
34
+ }
35
+ },
36
+ variables
37
+ })
38
+ });
39
+ }
40
+ if (!response.ok) {
41
+ let errorMessage = `Network response was not ok. Status: ${response.status}`;
42
+ const body = await response.text();
43
+ try {
44
+ const json = JSON.parse(body);
45
+ const { errors: errors2 } = json;
46
+ if (errors2) {
47
+ errorMessage += `
48
+
49
+ GraphQL error(s):
50
+ - ${errors2.map((error) => error.message).join("\n- ")}`;
51
+ }
52
+ } catch {
53
+ errorMessage += `
54
+ ${body}`;
55
+ }
56
+ throw new Error(errorMessage);
57
+ }
58
+ const { data, errors } = await response.json();
59
+ if (errors) {
60
+ throw new Error(`GraphQL error(s):
61
+ - ${errors.map((error) => error.message).join("\n- ")}`);
62
+ }
63
+ return data;
64
+ };
65
+ }
66
+ export {
67
+ createPersistedQueryGraphQLFetch
68
+ };
@@ -0,0 +1,100 @@
1
+ import { readFile } from "fs/promises";
2
+ let queryMap;
3
+ let fragmentsMap;
4
+ async function loadPersistedQueries(path) {
5
+ const file = await readFile(path, { encoding: "utf-8" });
6
+ queryMap = JSON.parse(file.toString());
7
+ fragmentsMap = {};
8
+ for (const [, query] of Object.entries(queryMap)) {
9
+ const match = query.match(/^\s*fragment\s+(\w+)\s+on\s+\w+/m);
10
+ if (match) {
11
+ const fragmentName = match[1];
12
+ fragmentsMap[fragmentName] = query.replace(/\${.*?}/g, "");
13
+ }
14
+ }
15
+ }
16
+ function injectFragments(query) {
17
+ query = query.replace(/\${.*?}/g, "");
18
+ const injected = /* @__PURE__ */ new Set();
19
+ for (const m of query.matchAll(/^\s*fragment\s+(\w+)\s+on\s+\w+/gm)) {
20
+ injected.add(m[1]);
21
+ }
22
+ function inject(q) {
23
+ const spreads = Array.from(q.matchAll(/\.\.\.(\w+)/g)).map((m) => m[1]);
24
+ let result = q;
25
+ for (const fragmentName of spreads) {
26
+ if (!injected.has(fragmentName) && fragmentsMap[fragmentName]) {
27
+ injected.add(fragmentName);
28
+ result += `
29
+ ${inject(fragmentsMap[fragmentName])}`;
30
+ }
31
+ }
32
+ return result;
33
+ }
34
+ query = inject(query);
35
+ return query;
36
+ }
37
+ async function persistedQueryRoute(req, {
38
+ graphqlTarget,
39
+ headers: headersInit,
40
+ persistedQueriesPath = ".persisted-queries.json",
41
+ cacheMaxAge
42
+ }) {
43
+ var _a, _b;
44
+ if (!queryMap) {
45
+ await loadPersistedQueries(persistedQueriesPath);
46
+ }
47
+ let hash;
48
+ let variables;
49
+ if (req.method === "POST") {
50
+ const body = await req.json();
51
+ hash = (_b = (_a = body.extensions) == null ? void 0 : _a.persistedQuery) == null ? void 0 : _b.sha256Hash;
52
+ variables = body.variables;
53
+ } else if (req.method === "GET") {
54
+ const url = new URL(req.url);
55
+ hash = url.searchParams.get("extensions.persistedQuery.sha256Hash");
56
+ const variablesParam = url.searchParams.get("variables");
57
+ variables = variablesParam ? JSON.parse(variablesParam) : void 0;
58
+ } else {
59
+ return Response.json({ error: "MethodNotAllowed" }, { status: 405 });
60
+ }
61
+ if (!hash) {
62
+ return Response.json({ error: "OnlyPersistedQueriesAllowed" }, { status: 400 });
63
+ }
64
+ let query = queryMap[hash];
65
+ if (!query) {
66
+ return Response.json({ error: "PersistedQueryNotFound", hash }, { status: 400 });
67
+ }
68
+ query = injectFragments(query);
69
+ if (req.method === "GET") {
70
+ const apolloPreflight = req.headers.get("Apollo-Require-Preflight");
71
+ if (apolloPreflight !== "true") {
72
+ return Response.json({ error: "CSRFProtection", message: "Missing Apollo-Require-Preflight header" }, { status: 403 });
73
+ }
74
+ }
75
+ const headers = new Headers(headersInit);
76
+ headers.set("Content-Type", "application/json");
77
+ for (const header of ["x-include-invisible-content", "x-preview-dam-urls"]) {
78
+ const value = req.headers.get(header);
79
+ if (value !== null) {
80
+ headers.set(header, value);
81
+ }
82
+ }
83
+ const upstreamRes = await fetch(graphqlTarget, {
84
+ method: "POST",
85
+ headers,
86
+ body: JSON.stringify({ query, variables })
87
+ });
88
+ const responseHeaders = {
89
+ "Content-Type": "application/json"
90
+ };
91
+ if (req.method === "GET" && upstreamRes.ok && cacheMaxAge !== void 0) {
92
+ responseHeaders["Cache-Control"] = `public, max-age=${cacheMaxAge}`;
93
+ }
94
+ return new Response(upstreamRes.body, {
95
+ headers: responseHeaders
96
+ });
97
+ }
98
+ export {
99
+ persistedQueryRoute
100
+ };
@@ -0,0 +1,51 @@
1
+ import { createHash } from "crypto";
2
+ import * as fs from "fs";
3
+ function loadHashMap(path) {
4
+ if (fs.existsSync(path)) {
5
+ return JSON.parse(fs.readFileSync(path, "utf-8"));
6
+ }
7
+ return {};
8
+ }
9
+ function saveHashMap(path, hashMap) {
10
+ fs.writeFileSync(path, JSON.stringify(hashMap, null, 2));
11
+ }
12
+ function hashQuery(query) {
13
+ return createHash("sha256").update(query).digest("hex");
14
+ }
15
+ const gqlTagRegex = /gql`([\s\S]*?)`/gm;
16
+ const webpackPersistedQueriesLoader = function(source) {
17
+ const options = this.getOptions() || {};
18
+ const persistedQueriesPath = options.persistedQueriesPath || ".persisted-queries.json";
19
+ const hashMap = loadHashMap(persistedQueriesPath);
20
+ const replacements = [];
21
+ let match;
22
+ while ((match = gqlTagRegex.exec(source)) !== null) {
23
+ const query = match[1];
24
+ const hash = hashQuery(query);
25
+ hashMap[hash] = query;
26
+ const fragmentVariables = Array.from(query.matchAll(/\${.*?}/g) ?? []).map((m) => m[0]).join(" ");
27
+ if (query.match(/^\s*fragment\s+(\w+)\s+on\s+\w+/)) {
28
+ replacements.push({
29
+ start: match.index,
30
+ end: match.index + match[0].length,
31
+ replacement: `{ fragment: true, fragmentVariables: \`${fragmentVariables}\` }`
32
+ });
33
+ } else {
34
+ replacements.push({
35
+ start: match.index,
36
+ end: match.index + match[0].length,
37
+ replacement: `{ hash: "${hash}", fragmentVariables: \`${fragmentVariables}\` }`
38
+ });
39
+ }
40
+ }
41
+ let modifiedSource = source;
42
+ for (let i = replacements.length - 1; i >= 0; i--) {
43
+ const { start, end, replacement } = replacements[i];
44
+ modifiedSource = modifiedSource.slice(0, start) + replacement + modifiedSource.slice(end);
45
+ }
46
+ saveHashMap(persistedQueriesPath, hashMap);
47
+ return modifiedSource;
48
+ };
49
+ export {
50
+ webpackPersistedQueriesLoader as default
51
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@comet/site-nextjs",
3
- "version": "8.7.0-canary-20251113103327",
3
+ "version": "8.7.0-canary-20251113103650",
4
4
  "description": "Comet Site Next.js package",
5
5
  "repository": {
6
6
  "type": "git",
@@ -17,7 +17,8 @@
17
17
  "types": "./lib/index.d.ts",
18
18
  "import": "./lib/index.js"
19
19
  },
20
- "./css": "./lib/style.css"
20
+ "./css": "./lib/style.css",
21
+ "./webpackPersistedQueriesLoader": "./lib/site-react/lib/persistedQueries/webpackPersistedQueriesLoader.js"
21
22
  },
22
23
  "module": "./lib/index.js",
23
24
  "types": "lib/index.d.ts",
@@ -28,7 +29,7 @@
28
29
  "clsx": "^2.1.1",
29
30
  "jose": "^5.10.0",
30
31
  "server-only": "^0.0.1",
31
- "@comet/site-react": "8.7.0-canary-20251113103327"
32
+ "@comet/site-react": "8.7.0-canary-20251113103650"
32
33
  },
33
34
  "devDependencies": {
34
35
  "@types/jest": "^29.5.14",
@@ -53,8 +54,8 @@
53
54
  "typescript": "5.8.3",
54
55
  "vite": "^5.4.19",
55
56
  "vite-plugin-dts": "^4.5.4",
56
- "@comet/cli": "8.7.0-canary-20251113103327",
57
- "@comet/eslint-config": "8.7.0-canary-20251113103327"
57
+ "@comet/cli": "8.7.0-canary-20251113103650",
58
+ "@comet/eslint-config": "8.7.0-canary-20251113103650"
58
59
  },
59
60
  "peerDependencies": {
60
61
  "next": "^14.2.0",