@plasmicapp/loader-nextjs 1.0.388 → 1.0.389

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/dist/index.esm.js CHANGED
@@ -20,13 +20,6 @@ var __spreadValues = (a, b) => {
20
20
  return a;
21
21
  };
22
22
  var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
23
- var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
24
- get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
25
- }) : x)(function(x) {
26
- if (typeof require !== "undefined")
27
- return require.apply(this, arguments);
28
- throw new Error('Dynamic require of "' + x + '" is not supported');
29
- });
30
23
  var __objRest = (source, exclude) => {
31
24
  var target = {};
32
25
  for (var prop in source)
@@ -118,6 +111,27 @@ function serverRequire(module) {
118
111
  return secretRequire(module);
119
112
  });
120
113
  }
114
+ function tryServerRequire(module) {
115
+ return __async(this, null, function* () {
116
+ try {
117
+ const require2 = yield serverRequire(module);
118
+ return require2;
119
+ } catch (e) {
120
+ return void 0;
121
+ }
122
+ });
123
+ }
124
+ function tryServerRequires(modules) {
125
+ return __async(this, null, function* () {
126
+ for (const module of modules) {
127
+ const require2 = yield tryServerRequire(module);
128
+ if (require2 != null) {
129
+ return require2;
130
+ }
131
+ }
132
+ return void 0;
133
+ });
134
+ }
121
135
  function serverRequireFs() {
122
136
  return __async(this, null, function* () {
123
137
  return serverRequire("fs");
@@ -173,15 +187,15 @@ function makeCache(opts) {
173
187
  cacheDir,
174
188
  `plasmic-${hashString(
175
189
  [...opts.projects.map((p) => {
176
- var _a2;
177
- return `${p.id}@${(_a2 = p.version) != null ? _a2 : ""}`;
190
+ var _a;
191
+ return `${p.id}@${(_a = p.version) != null ? _a : ""}`;
178
192
  })].sort().join("-")
179
193
  )}${opts.preview ? "-preview" : ""}-cache.json`
180
194
  );
181
195
  return new FileCache(cachePath);
182
196
  }
183
- function initPlasmicLoaderWithCache(initFn, _a2) {
184
- var _b = _a2, { nextNavigation } = _b, opts = __objRest(_b, ["nextNavigation"]);
197
+ function initPlasmicLoaderWithCache(initFn, _a) {
198
+ var _b = _a, { nextNavigation } = _b, opts = __objRest(_b, ["nextNavigation"]);
185
199
  const isBrowser = typeof window !== "undefined";
186
200
  const isProd = process.env.NODE_ENV === "production";
187
201
  const isBuildPhase = process.env.NEXT_PHASE === PHASE_PRODUCTION_BUILD;
@@ -258,15 +272,6 @@ function initPlasmicLoaderWithCache(initFn, _a2) {
258
272
 
259
273
  // src/mocks.tsx
260
274
  import * as React from "react";
261
- function tryRequire(module) {
262
- try {
263
- return __require(module);
264
- } catch (e) {
265
- return void 0;
266
- }
267
- }
268
- var _a;
269
- var RouterImport = (_a = tryRequire("next/dist/shared/lib/router-context.shared-runtime")) != null ? _a : tryRequire("next/dist/shared/lib/router-context");
270
275
  var fakeRouter = {
271
276
  push: () => __async(void 0, null, function* () {
272
277
  return true;
@@ -304,8 +309,14 @@ var fakeRouter = {
304
309
  isPreview: false
305
310
  };
306
311
  function wrapRouterContext(element) {
307
- var _a2;
308
- return !!((_a2 = RouterImport.RouterContext) == null ? void 0 : _a2.Provider) ? /* @__PURE__ */ React.createElement(RouterImport.RouterContext.Provider, { value: fakeRouter }, element) : element;
312
+ return __async(this, null, function* () {
313
+ var _a;
314
+ const RouterContext = (_a = yield tryServerRequires([
315
+ "next/dist/shared/lib/router-context.shared-runtime",
316
+ "next/dist/shared/lib/router-context"
317
+ ])) == null ? void 0 : _a.RouterContext;
318
+ return !!(RouterContext == null ? void 0 : RouterContext.Provider) ? /* @__PURE__ */ React.createElement(RouterContext.Provider, { value: fakeRouter }, element) : element;
319
+ });
309
320
  }
310
321
 
311
322
  // src/index.tsx
@@ -334,9 +345,9 @@ var NextJsPlasmicComponentLoader = class extends PlasmicComponentLoader {
334
345
  getActiveVariation(opts) {
335
346
  return __async(this, null, function* () {
336
347
  const extractBuiltinTraits = () => {
337
- var _a2, _b, _c, _d;
348
+ var _a, _b, _c, _d;
338
349
  const url = new URL(
339
- (_b = (_a2 = opts.req) == null ? void 0 : _a2.url) != null ? _b : "/",
350
+ (_b = (_a = opts.req) == null ? void 0 : _a.url) != null ? _b : "/",
340
351
  `https://${(_d = (_c = opts.req) == null ? void 0 : _c.headers.host) != null ? _d : "server.side"}`
341
352
  );
342
353
  return {
@@ -346,18 +357,18 @@ var NextJsPlasmicComponentLoader = class extends PlasmicComponentLoader {
346
357
  return this._getActiveVariation({
347
358
  traits: __spreadValues(__spreadValues({}, extractBuiltinTraits()), opts.traits),
348
359
  getKnownValue: (key) => {
349
- var _a2, _b;
360
+ var _a, _b;
350
361
  if (opts.known) {
351
362
  return opts.known[key];
352
363
  } else {
353
- return (_b = (_a2 = opts.req) == null ? void 0 : _a2.cookies[`plasmic:${key}`]) != null ? _b : void 0;
364
+ return (_b = (_a = opts.req) == null ? void 0 : _a.cookies[`plasmic:${key}`]) != null ? _b : void 0;
354
365
  }
355
366
  },
356
367
  updateKnownValue: (key, value) => {
357
- var _a2, _b, _c;
368
+ var _a, _b, _c;
358
369
  if (opts.res) {
359
370
  const cookie = `plasmic:${key}=${value}`;
360
- const resCookie = (_b = (_a2 = opts.res) == null ? void 0 : _a2.getHeader("Set-Cookie")) != null ? _b : [];
371
+ const resCookie = (_b = (_a = opts.res) == null ? void 0 : _a.getHeader("Set-Cookie")) != null ? _b : [];
361
372
  let newCookies = [];
362
373
  if (Array.isArray(resCookie)) {
363
374
  newCookies = [...resCookie, `plasmic:${key}=${value}`];
@@ -423,11 +434,13 @@ function initPlasmicLoader(opts) {
423
434
  return loader;
424
435
  }
425
436
  function extractPlasmicQueryData(element) {
426
- return internalExtractPlasmicQueryData(wrapRouterContext(element));
437
+ return __async(this, null, function* () {
438
+ return internalExtractPlasmicQueryData(yield wrapRouterContext(element));
439
+ });
427
440
  }
428
441
  var PlasmicNextLink = React2.forwardRef(function PlasmicNextLink2(props, ref) {
429
442
  if (props.href) {
430
- const _a2 = props, {
443
+ const _a = props, {
431
444
  href,
432
445
  replace,
433
446
  scroll,
@@ -435,7 +448,7 @@ var PlasmicNextLink = React2.forwardRef(function PlasmicNextLink2(props, ref) {
435
448
  passHref,
436
449
  prefetch,
437
450
  locale
438
- } = _a2, rest = __objRest(_a2, [
451
+ } = _a, rest = __objRest(_a, [
439
452
  "href",
440
453
  "replace",
441
454
  "scroll",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/index.tsx", "../src/cache.ts", "../src/server-require.ts", "../src/mocks.tsx"],
4
- "sourcesContent": ["import type { CodeModule } from \"@plasmicapp/loader-core\";\nimport {\n ComponentLookupSpec,\n extractPlasmicQueryData as internalExtractPlasmicQueryData,\n FetchComponentDataOpts as InternalFetchComponentDataOpts,\n InternalPlasmicComponentLoader,\n PlasmicComponentLoader,\n PlasmicRootProvider as CommonPlasmicRootProvider,\n} from \"@plasmicapp/loader-react\";\nimport { IncomingMessage, ServerResponse } from \"http\";\nexport {\n DataCtxReader,\n DataProvider,\n GlobalActionsContext,\n GlobalActionsProvider,\n PageParamsProvider,\n PlasmicCanvasContext,\n PlasmicCanvasHost,\n PlasmicComponent,\n plasmicPrepass,\n repeatedElement,\n useDataEnv,\n usePlasmicCanvasContext,\n usePlasmicComponent,\n usePlasmicQueryData,\n useSelector,\n useSelectors,\n} from \"@plasmicapp/loader-react\";\nexport type {\n CodeComponentMeta,\n PlasmicTranslator,\n PropType,\n TokenRegistration,\n} from \"@plasmicapp/loader-react\";\nexport { ExtractPlasmicQueryData as __EXPERMIENTAL__ExtractPlasmicQueryData } from \"@plasmicapp/nextjs-app-router\";\nexport * from \"./shared-exports\";\n// NextHead and NextLink must be default imported (`import Pkg`) instead of a namespace import (`import * as Pkg`).\n// Otherwise, there's a Next.js 12 bug when referencing these dependencies due to default import interop.\n// The transpiled CommonJS code would create a `default` field on the package,\n// causing React to think it's an invalid React object:\n// ```\n// const NextHead = __defaultInterop(require('next/head.js'))\n// assert(typeof NextHead === 'object')\n// assert(typeof NextHead.default === 'function')\n// ```\nimport NextHead from \"next/head.js\";\nimport NextLink from \"next/link.js\";\nimport * as NextRouter from \"next/router.js\";\nimport Script from \"next/script\";\nimport * as React from \"react\";\nimport { initPlasmicLoaderWithCache } from \"./cache\";\nimport { wrapRouterContext } from \"./mocks\";\nimport type { ComponentRenderData, NextInitOptions } from \"./shared-exports\";\n\ntype ServerRequest = IncomingMessage & {\n cookies: {\n [key: string]: string;\n };\n};\n\nconst reactMajorVersion = +React.version.split(\".\")[0];\n\nfunction filterCodeFromRenderData(data: ComponentRenderData) {\n if (reactMajorVersion >= 18 && !!data.bundle.bundleKey) {\n // Keep the entrypoints\n const entrypoints = new Set([\n ...data.entryCompMetas.map((compMeta) => compMeta.entry),\n \"root-provider.js\",\n ...data.bundle.projects\n .map((x) => x.globalContextsProviderFileName)\n .filter((x) => !!x),\n ...data.bundle.components\n .filter((c) => c.isGlobalContextProvider)\n .map((c) => c.entry),\n ...data.bundle.globalGroups.map((g) => g.contextFile),\n ]);\n\n data.bundle.modules.browser = data.bundle.modules.browser.map((module) => {\n if (module.type !== \"code\" || entrypoints.has(module.fileName)) {\n return module;\n }\n return { ...module, code: \"\" };\n });\n }\n}\n\nexport interface FetchComponentDataOpts extends InternalFetchComponentDataOpts {\n /**\n * Defer loading code chunks to script tags, reducing initial payload size.\n */\n deferChunks?: boolean;\n}\n\nexport class NextJsPlasmicComponentLoader extends PlasmicComponentLoader {\n constructor(internal: InternalPlasmicComponentLoader) {\n super(internal);\n }\n\n async getActiveVariation(opts: {\n req?: ServerRequest;\n res?: ServerResponse;\n known?: Record<string, string>;\n traits: Record<string, string | number | boolean>;\n }) {\n const extractBuiltinTraits = () => {\n const url = new URL(\n opts.req?.url ?? \"/\",\n `https://${opts.req?.headers.host ?? \"server.side\"}`\n );\n return {\n pageUrl: url.href,\n };\n };\n\n return this._getActiveVariation({\n traits: {\n ...extractBuiltinTraits(),\n ...opts.traits,\n },\n getKnownValue: (key: string) => {\n if (opts.known) {\n return opts.known[key];\n } else {\n return opts.req?.cookies[`plasmic:${key}`] ?? undefined;\n }\n },\n updateKnownValue: (key: string, value: string) => {\n if (opts.res) {\n const cookie = `plasmic:${key}=${value}`;\n const resCookie = opts.res?.getHeader(\"Set-Cookie\") ?? [];\n let newCookies: string[] = [];\n if (Array.isArray(resCookie)) {\n newCookies = [...resCookie, `plasmic:${key}=${value}`];\n } else {\n newCookies = [`${resCookie}`, cookie];\n }\n\n opts.res?.setHeader(\"Set-Cookie\", newCookies);\n }\n },\n });\n }\n\n maybeFetchComponentData(\n specs: ComponentLookupSpec[],\n opts?: FetchComponentDataOpts\n ): Promise<ComponentRenderData | null>;\n maybeFetchComponentData(\n ...specs: ComponentLookupSpec[]\n ): Promise<ComponentRenderData | null>;\n async maybeFetchComponentData(\n ...args: any[]\n ): Promise<ComponentRenderData | null> {\n const data = await super.maybeFetchComponentData(...args);\n const { opts } = parseFetchComponentDataArgs(...args);\n if (\n data &&\n (opts?.deferChunks ||\n (opts?.deferChunks === undefined && data.bundle.deferChunksByDefault))\n ) {\n filterCodeFromRenderData(data);\n }\n return data;\n }\n\n fetchComponentData(\n ...specs: ComponentLookupSpec[]\n ): Promise<ComponentRenderData>;\n fetchComponentData(\n specs: ComponentLookupSpec[],\n opts?: FetchComponentDataOpts\n ): Promise<ComponentRenderData>;\n async fetchComponentData(...args: any[]): Promise<ComponentRenderData> {\n const data = await super.fetchComponentData(...args);\n const { opts } = parseFetchComponentDataArgs(...args);\n if (\n opts?.deferChunks ||\n (opts?.deferChunks === undefined && data.bundle.deferChunksByDefault)\n ) {\n filterCodeFromRenderData(data);\n }\n return data;\n }\n}\n\nfunction parseFetchComponentDataArgs(\n specs: ComponentLookupSpec[],\n opts?: FetchComponentDataOpts\n): { specs: ComponentLookupSpec[]; opts?: FetchComponentDataOpts };\nfunction parseFetchComponentDataArgs(...specs: ComponentLookupSpec[]): {\n specs: ComponentLookupSpec[];\n opts?: FetchComponentDataOpts;\n};\nfunction parseFetchComponentDataArgs(...args: any[]) {\n let specs: ComponentLookupSpec[];\n let opts: FetchComponentDataOpts | undefined;\n if (Array.isArray(args[0])) {\n specs = args[0];\n opts = args[1];\n } else {\n specs = args;\n opts = undefined;\n }\n return { specs, opts };\n}\n\nexport function initPlasmicLoader(opts: NextInitOptions) {\n const loader = initPlasmicLoaderWithCache<NextJsPlasmicComponentLoader>(\n (opts) =>\n new NextJsPlasmicComponentLoader(\n new InternalPlasmicComponentLoader(opts)\n ),\n opts\n );\n loader.registerModules({\n \"next/head\": NextHead,\n \"next/link\": NextLink,\n \"next/router\": NextRouter,\n });\n if (opts.nextNavigation) {\n loader.registerModules({\n \"next/navigation\": opts.nextNavigation,\n });\n }\n return loader;\n}\n\n/**\n * Performs a prepass over Plasmic content, kicking off the necessary\n * data fetches, and populating the fetched data into a cache. This\n * cache can be passed as prefetchedQueryData into PlasmicRootProvider.\n *\n * To limit rendering errors that can occur when you do this, we recommend\n * that you pass in _only_ the PlasmicComponents that you are planning to use\n * as the argument. For example:\n *\n * const cache = await extractPlasmicQueryData(\n * <PlasmicRootProvider loader={PLASMIC} prefetchedData={plasmicData}>\n * <PlasmicComponent component=\"Home\" componentProps={{\n * // Specify the component prop overrides you are planning to use\n * // to render the page, as they may change what data is fetched.\n * ...\n * }} />\n * <PlasmicComponent component=\"NavBar\" componentProps={{\n * ...\n * }} />\n * ...\n * </PlasmicRootProvider>\n * );\n *\n * If your PlasmicComponent will be wrapping components that require special\n * context set up, you should also wrap the element above with those context\n * providers.\n *\n * You should avoid passing in elements that are not related to Plasmic, as any\n * rendering errors from those elements during the prepass may result in data\n * not being populated in the cache.\n *\n * @param element a React element containing instances of PlasmicComponent.\n * Will attempt to satisfy all data needs from usePlasmicDataQuery()\n * in this element tree.\n * @returns an object mapping query key to fetched data\n */\nexport function extractPlasmicQueryData(element: React.ReactElement) {\n return internalExtractPlasmicQueryData(wrapRouterContext(element));\n}\n\nconst PlasmicNextLink = React.forwardRef(function PlasmicNextLink(\n props: React.ComponentProps<typeof NextLink>,\n ref: React.Ref<HTMLAnchorElement>\n) {\n // Basically renders NextLink, except when href is undefined,\n // which freaks out NextLink :-/\n if (props.href) {\n const {\n href,\n replace,\n scroll,\n shallow,\n passHref,\n prefetch,\n locale,\n ...rest\n } = props;\n // If this is a fragment identifier link, then we set\n // scroll={false} so that smooth scrolling works\n const isFragment = typeof href === \"string\" && href.startsWith(\"#\");\n // We use legacyBehavior, because we don't know which\n // version of next the user has installed\n return (\n <NextLink\n href={href}\n replace={replace}\n scroll={scroll != null ? scroll : isFragment ? false : undefined}\n shallow={shallow}\n passHref={passHref}\n prefetch={prefetch}\n locale={locale}\n {...({ legacyBehavior: true } as any)}\n >\n <a {...rest} ref={ref} />\n </NextLink>\n );\n } else {\n return <a {...props} href={undefined} ref={ref} />;\n }\n});\n\nexport function PlasmicRootProvider(\n // We omit Head but still allow override for Link\n props: Omit<\n React.ComponentProps<typeof CommonPlasmicRootProvider>,\n \"Head\"\n > & { skipChunks?: boolean }\n) {\n return (\n <>\n {!props.skipChunks &&\n renderDynamicPayloadScripts(props.loader, props.prefetchedData)}\n <CommonPlasmicRootProvider\n Head={NextHead}\n Link={PlasmicNextLink}\n {...props}\n />\n </>\n );\n}\n\nfunction renderDynamicPayloadScripts(\n loader: PlasmicComponentLoader,\n prefetchedData: ComponentRenderData | undefined\n) {\n const missingModulesData =\n prefetchedData &&\n prefetchedData.bundle.modules.browser.filter(\n (module): module is CodeModule => module.type === \"code\" && !module.code\n );\n if (!missingModulesData || missingModulesData.length === 0) {\n return null;\n }\n\n const isBrowser = typeof window !== \"undefined\";\n\n if (isBrowser) {\n // `next/script` seems to not be correctly added to `<head>` in the initial\n // HTML sometimes when using custom documents:\n // https://linear.app/plasmic/issue/PLA-10652\n\n // Make sure to create the promises in this case - the script to actually fetch\n // the chunks will be added once hydration is completed.\n if (!(globalThis as any).__PlasmicBundlePromises) {\n (globalThis as any).__PlasmicBundlePromises = {};\n }\n for (const { fileName } of missingModulesData) {\n if (!(globalThis as any).__PlasmicBundlePromises[fileName]) {\n (globalThis as any).__PlasmicBundlePromises[fileName] = new Promise(\n (resolve) => {\n (globalThis as any).__PlasmicBundlePromises[\n \"__promise_resolve_\" + fileName\n ] = resolve;\n }\n );\n }\n }\n }\n\n return (\n <>\n <Script\n strategy=\"beforeInteractive\"\n key={\"init:\" + missingModulesData.map((m) => m.fileName).join(\";\")}\n id={\"init:\" + missingModulesData.map((m) => m.fileName).join(\";\")}\n dangerouslySetInnerHTML={{\n __html: `\n if (!globalThis.__PlasmicBundlePromises) {\n globalThis.__PlasmicBundlePromises = {};\n }\n ${missingModulesData\n .map(\n (\n module\n ) => `if (!globalThis.__PlasmicBundlePromises[${JSON.stringify(\n module.fileName\n )}]) {\n globalThis.__PlasmicBundlePromises[${JSON.stringify(\n module.fileName\n )}] = new Promise((resolve) => {\n globalThis.__PlasmicBundlePromises[${JSON.stringify(\n \"__promise_resolve_\" + module.fileName\n )}] = resolve;\n })\n }\n `\n )\n .join(\"\\n\")}`.trim(),\n }}\n ></Script>\n <Script\n strategy=\"beforeInteractive\"\n key={\"load:\" + missingModulesData.map((m) => m.fileName).join(\";\")}\n id={\"load:\" + missingModulesData.map((m) => m.fileName).join(\";\")}\n defer\n async\n src={loader.getChunksUrl(prefetchedData.bundle, missingModulesData)}\n />\n </>\n );\n}\n", "import { LoaderBundleOutput } from \"@plasmicapp/loader-core\";\nimport type { InitOptions } from \"@plasmicapp/loader-react/react-server-conditional\";\nimport type * as Watcher from \"@plasmicapp/watcher\";\nimport { PHASE_PRODUCTION_BUILD } from \"next/constants\";\nimport path from \"path\";\nimport { serverRequire, serverRequireFs } from \"./server-require\";\nimport type { NextInitOptions } from \"./shared-exports\";\n\nclass FileCache {\n constructor(private filePath: string) {}\n\n async get() {\n const fs = await serverRequireFs();\n try {\n await fs.promises.mkdir(path.dirname(this.filePath), { recursive: true });\n const data = (await fs.promises.readFile(this.filePath)).toString();\n return JSON.parse(data);\n } catch {\n return undefined;\n }\n }\n\n async set(data: LoaderBundleOutput) {\n const fs = await serverRequireFs();\n try {\n await fs.promises.writeFile(this.filePath, JSON.stringify(data));\n } catch (err) {\n console.warn(`Error writing to Plasmic cache: ${err}`);\n }\n }\n\n async clear() {\n const fs = await serverRequireFs();\n try {\n fs.promises.unlink(this.filePath);\n } catch (err) {\n // noop\n }\n }\n}\n\nfunction hashString(str: string) {\n let h = 0,\n i = 0;\n for (; i < str.length; h &= h) h = 31 * h + str.charCodeAt(i++);\n return Math.abs(h);\n}\n\nfunction makeCache(opts: InitOptions) {\n const cacheDir = path.resolve(process.cwd(), \".next\", \".plasmic\");\n const cachePath = path.join(\n cacheDir,\n `plasmic-${hashString(\n [...opts.projects.map((p) => `${p.id}@${p.version ?? \"\"}`)]\n .sort()\n .join(\"-\")\n )}${opts.preview ? \"-preview\" : \"\"}-cache.json`\n );\n return new FileCache(cachePath);\n}\n\nexport function initPlasmicLoaderWithCache<\n T extends {\n clearCache(): void;\n }\n>(\n initFn: (opts: InitOptions) => T,\n { nextNavigation, ...opts }: NextInitOptions\n): T {\n const isBrowser = typeof window !== \"undefined\";\n const isProd = process.env.NODE_ENV === \"production\";\n const isBuildPhase = process.env.NEXT_PHASE === PHASE_PRODUCTION_BUILD;\n const cache = isBrowser || isProd ? undefined : makeCache(opts);\n const loader = initFn({\n onClientSideFetch: \"warn\",\n ...opts,\n cache,\n platform: \"nextjs\",\n platformOptions: {\n nextjs: {\n appDir: !!nextNavigation,\n },\n },\n // For Nextjs 12, revalidate may in fact re-use an existing instance\n // of PlasmicComponentLoader that's already in memory, so we need to\n // make sure we don't re-use the data cached in memory.\n // We also enforce this for dev mode, so that we don't have to restart\n // the dev server, in case getStaticProps() re-uses the same PlasmicComponentLoader\n // We also enforce that during build phase, we re-use the data cached in memory\n // to avoid re-fetching the data from Plasmic servers.\n alwaysFresh: !isBuildPhase && !isBrowser,\n });\n\n if (!isProd) {\n const stringOpts = JSON.stringify(opts);\n\n if (process.env.PLASMIC_OPTS && process.env.PLASMIC_OPTS !== stringOpts) {\n console.warn(\n `PLASMIC: We detected that you created a new PlasmicLoader with different configurations. You may need to restart your dev server.\\n`\n );\n }\n\n process.env.PLASMIC_OPTS = stringOpts;\n }\n\n if (cache) {\n if (!isProd) {\n if (process.env.PLASMIC_WATCHED !== \"true\") {\n (async () => {\n process.env.PLASMIC_WATCHED = \"true\";\n console.log(`Subscribing to Plasmic changes...`);\n\n // Import using serverRequire, so webpack doesn't bundle us into client bundle\n try {\n const PlasmicRemoteChangeWatcher = (\n await serverRequire<typeof Watcher>(\"@plasmicapp/watcher\")\n ).PlasmicRemoteChangeWatcher;\n const watcher = new PlasmicRemoteChangeWatcher({\n projects: opts.projects,\n host: opts.host,\n });\n\n const clearCache = () => {\n cache.clear();\n loader.clearCache();\n };\n\n watcher.subscribe({\n onUpdate: () => {\n if (opts.preview) {\n clearCache();\n }\n },\n onPublish: () => {\n if (!opts.preview) {\n clearCache();\n }\n },\n });\n } catch (e) {\n console.warn(\"Couldn't subscribe to Plasmic changes\", e);\n }\n })();\n }\n } else {\n cache.clear();\n loader.clearCache();\n }\n }\n return loader;\n}\n", "import type * as FS from \"fs\";\n\nlet secretRequire: ((module: string) => any) | undefined;\ntry {\n // Secretly use require/import without webpack knowing\n // eslint-disable-next-line\n secretRequire = eval(\"require\");\n} catch (err) {\n try {\n // eslint-disable-next-line\n secretRequire = eval(\"(module) => import(module)\");\n } catch (err) {\n secretRequire = undefined;\n }\n}\n\nexport async function serverRequire<T>(module: string): Promise<T> {\n if (!secretRequire) {\n throw new Error(\n `Unexpected serverRequire() -- can only do this from a Node server!`\n );\n }\n return secretRequire(module) as Promise<T>;\n}\n\nexport async function serverRequireFs() {\n return serverRequire<typeof FS>(\"fs\");\n}\n", "import type { NextRouter } from \"next/router\";\nimport * as React from \"react\";\n\nfunction tryRequire(module: string) {\n try {\n return require(module);\n } catch {\n return undefined;\n }\n}\n\nconst RouterImport: any =\n tryRequire(\"next/dist/shared/lib/router-context.shared-runtime\") ??\n tryRequire(\"next/dist/shared/lib/router-context\");\n\nconst fakeRouter: NextRouter = {\n push: async () => {\n return true;\n },\n replace: async () => {\n return true;\n },\n reload: () => {},\n back: () => {},\n forward: () => {},\n prefetch: async () => {\n return;\n },\n beforePopState: () => {},\n events: {\n on: () => {},\n off: () => {},\n emit: () => {},\n },\n route: \"/\",\n asPath: \"/\",\n basePath: \"/\",\n pathname: \"/\",\n query: {},\n isFallback: false,\n isLocaleDomain: false,\n isReady: true,\n isPreview: false,\n};\n\nexport function wrapRouterContext(element: React.ReactElement) {\n return !!RouterImport.RouterContext?.Provider ? (\n <RouterImport.RouterContext.Provider value={fakeRouter}>\n {element}\n </RouterImport.RouterContext.Provider>\n ) : (\n element\n );\n}\n"],
5
- "mappings": "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",
6
- "names": ["React", "err", "err", "_a", "_a", "_a", "opts", "PlasmicNextLink"]
4
+ "sourcesContent": ["import type { CodeModule } from \"@plasmicapp/loader-core\";\nimport {\n ComponentLookupSpec,\n extractPlasmicQueryData as internalExtractPlasmicQueryData,\n FetchComponentDataOpts as InternalFetchComponentDataOpts,\n InternalPlasmicComponentLoader,\n PlasmicComponentLoader,\n PlasmicRootProvider as CommonPlasmicRootProvider,\n} from \"@plasmicapp/loader-react\";\nimport { IncomingMessage, ServerResponse } from \"http\";\nexport {\n DataCtxReader,\n DataProvider,\n GlobalActionsContext,\n GlobalActionsProvider,\n PageParamsProvider,\n PlasmicCanvasContext,\n PlasmicCanvasHost,\n PlasmicComponent,\n plasmicPrepass,\n repeatedElement,\n useDataEnv,\n usePlasmicCanvasContext,\n usePlasmicComponent,\n usePlasmicQueryData,\n useSelector,\n useSelectors,\n} from \"@plasmicapp/loader-react\";\nexport type {\n CodeComponentMeta,\n PlasmicTranslator,\n PropType,\n TokenRegistration,\n} from \"@plasmicapp/loader-react\";\nexport { ExtractPlasmicQueryData as __EXPERMIENTAL__ExtractPlasmicQueryData } from \"@plasmicapp/nextjs-app-router\";\nexport * from \"./shared-exports\";\n// NextHead and NextLink must be default imported (`import Pkg`) instead of a namespace import (`import * as Pkg`).\n// Otherwise, there's a Next.js 12 bug when referencing these dependencies due to default import interop.\n// The transpiled CommonJS code would create a `default` field on the package,\n// causing React to think it's an invalid React object:\n// ```\n// const NextHead = __defaultInterop(require('next/head.js'))\n// assert(typeof NextHead === 'object')\n// assert(typeof NextHead.default === 'function')\n// ```\nimport NextHead from \"next/head.js\";\nimport NextLink from \"next/link.js\";\nimport * as NextRouter from \"next/router.js\";\nimport Script from \"next/script\";\nimport * as React from \"react\";\nimport { initPlasmicLoaderWithCache } from \"./cache\";\nimport { wrapRouterContext } from \"./mocks\";\nimport type { ComponentRenderData, NextInitOptions } from \"./shared-exports\";\n\ntype ServerRequest = IncomingMessage & {\n cookies: {\n [key: string]: string;\n };\n};\n\nconst reactMajorVersion = +React.version.split(\".\")[0];\n\nfunction filterCodeFromRenderData(data: ComponentRenderData) {\n if (reactMajorVersion >= 18 && !!data.bundle.bundleKey) {\n // Keep the entrypoints\n const entrypoints = new Set([\n ...data.entryCompMetas.map((compMeta) => compMeta.entry),\n \"root-provider.js\",\n ...data.bundle.projects\n .map((x) => x.globalContextsProviderFileName)\n .filter((x) => !!x),\n ...data.bundle.components\n .filter((c) => c.isGlobalContextProvider)\n .map((c) => c.entry),\n ...data.bundle.globalGroups.map((g) => g.contextFile),\n ]);\n\n data.bundle.modules.browser = data.bundle.modules.browser.map((module) => {\n if (module.type !== \"code\" || entrypoints.has(module.fileName)) {\n return module;\n }\n return { ...module, code: \"\" };\n });\n }\n}\n\nexport interface FetchComponentDataOpts extends InternalFetchComponentDataOpts {\n /**\n * Defer loading code chunks to script tags, reducing initial payload size.\n */\n deferChunks?: boolean;\n}\n\nexport class NextJsPlasmicComponentLoader extends PlasmicComponentLoader {\n constructor(internal: InternalPlasmicComponentLoader) {\n super(internal);\n }\n\n async getActiveVariation(opts: {\n req?: ServerRequest;\n res?: ServerResponse;\n known?: Record<string, string>;\n traits: Record<string, string | number | boolean>;\n }) {\n const extractBuiltinTraits = () => {\n const url = new URL(\n opts.req?.url ?? \"/\",\n `https://${opts.req?.headers.host ?? \"server.side\"}`\n );\n return {\n pageUrl: url.href,\n };\n };\n\n return this._getActiveVariation({\n traits: {\n ...extractBuiltinTraits(),\n ...opts.traits,\n },\n getKnownValue: (key: string) => {\n if (opts.known) {\n return opts.known[key];\n } else {\n return opts.req?.cookies[`plasmic:${key}`] ?? undefined;\n }\n },\n updateKnownValue: (key: string, value: string) => {\n if (opts.res) {\n const cookie = `plasmic:${key}=${value}`;\n const resCookie = opts.res?.getHeader(\"Set-Cookie\") ?? [];\n let newCookies: string[] = [];\n if (Array.isArray(resCookie)) {\n newCookies = [...resCookie, `plasmic:${key}=${value}`];\n } else {\n newCookies = [`${resCookie}`, cookie];\n }\n\n opts.res?.setHeader(\"Set-Cookie\", newCookies);\n }\n },\n });\n }\n\n maybeFetchComponentData(\n specs: ComponentLookupSpec[],\n opts?: FetchComponentDataOpts\n ): Promise<ComponentRenderData | null>;\n maybeFetchComponentData(\n ...specs: ComponentLookupSpec[]\n ): Promise<ComponentRenderData | null>;\n async maybeFetchComponentData(\n ...args: any[]\n ): Promise<ComponentRenderData | null> {\n const data = await super.maybeFetchComponentData(...args);\n const { opts } = parseFetchComponentDataArgs(...args);\n if (\n data &&\n (opts?.deferChunks ||\n (opts?.deferChunks === undefined && data.bundle.deferChunksByDefault))\n ) {\n filterCodeFromRenderData(data);\n }\n return data;\n }\n\n fetchComponentData(\n ...specs: ComponentLookupSpec[]\n ): Promise<ComponentRenderData>;\n fetchComponentData(\n specs: ComponentLookupSpec[],\n opts?: FetchComponentDataOpts\n ): Promise<ComponentRenderData>;\n async fetchComponentData(...args: any[]): Promise<ComponentRenderData> {\n const data = await super.fetchComponentData(...args);\n const { opts } = parseFetchComponentDataArgs(...args);\n if (\n opts?.deferChunks ||\n (opts?.deferChunks === undefined && data.bundle.deferChunksByDefault)\n ) {\n filterCodeFromRenderData(data);\n }\n return data;\n }\n}\n\nfunction parseFetchComponentDataArgs(\n specs: ComponentLookupSpec[],\n opts?: FetchComponentDataOpts\n): { specs: ComponentLookupSpec[]; opts?: FetchComponentDataOpts };\nfunction parseFetchComponentDataArgs(...specs: ComponentLookupSpec[]): {\n specs: ComponentLookupSpec[];\n opts?: FetchComponentDataOpts;\n};\nfunction parseFetchComponentDataArgs(...args: any[]) {\n let specs: ComponentLookupSpec[];\n let opts: FetchComponentDataOpts | undefined;\n if (Array.isArray(args[0])) {\n specs = args[0];\n opts = args[1];\n } else {\n specs = args;\n opts = undefined;\n }\n return { specs, opts };\n}\n\nexport function initPlasmicLoader(opts: NextInitOptions) {\n const loader = initPlasmicLoaderWithCache<NextJsPlasmicComponentLoader>(\n (opts) =>\n new NextJsPlasmicComponentLoader(\n new InternalPlasmicComponentLoader(opts)\n ),\n opts\n );\n loader.registerModules({\n \"next/head\": NextHead,\n \"next/link\": NextLink,\n \"next/router\": NextRouter,\n });\n if (opts.nextNavigation) {\n loader.registerModules({\n \"next/navigation\": opts.nextNavigation,\n });\n }\n return loader;\n}\n\n/**\n * Performs a prepass over Plasmic content, kicking off the necessary\n * data fetches, and populating the fetched data into a cache. This\n * cache can be passed as prefetchedQueryData into PlasmicRootProvider.\n *\n * To limit rendering errors that can occur when you do this, we recommend\n * that you pass in _only_ the PlasmicComponents that you are planning to use\n * as the argument. For example:\n *\n * const cache = await extractPlasmicQueryData(\n * <PlasmicRootProvider loader={PLASMIC} prefetchedData={plasmicData}>\n * <PlasmicComponent component=\"Home\" componentProps={{\n * // Specify the component prop overrides you are planning to use\n * // to render the page, as they may change what data is fetched.\n * ...\n * }} />\n * <PlasmicComponent component=\"NavBar\" componentProps={{\n * ...\n * }} />\n * ...\n * </PlasmicRootProvider>\n * );\n *\n * If your PlasmicComponent will be wrapping components that require special\n * context set up, you should also wrap the element above with those context\n * providers.\n *\n * You should avoid passing in elements that are not related to Plasmic, as any\n * rendering errors from those elements during the prepass may result in data\n * not being populated in the cache.\n *\n * @param element a React element containing instances of PlasmicComponent.\n * Will attempt to satisfy all data needs from usePlasmicDataQuery()\n * in this element tree.\n * @returns an object mapping query key to fetched data\n */\nexport async function extractPlasmicQueryData(element: React.ReactElement) {\n return internalExtractPlasmicQueryData(await wrapRouterContext(element));\n}\n\nconst PlasmicNextLink = React.forwardRef(function PlasmicNextLink(\n props: React.ComponentProps<typeof NextLink>,\n ref: React.Ref<HTMLAnchorElement>\n) {\n // Basically renders NextLink, except when href is undefined,\n // which freaks out NextLink :-/\n if (props.href) {\n const {\n href,\n replace,\n scroll,\n shallow,\n passHref,\n prefetch,\n locale,\n ...rest\n } = props;\n // If this is a fragment identifier link, then we set\n // scroll={false} so that smooth scrolling works\n const isFragment = typeof href === \"string\" && href.startsWith(\"#\");\n // We use legacyBehavior, because we don't know which\n // version of next the user has installed\n return (\n <NextLink\n href={href}\n replace={replace}\n scroll={scroll != null ? scroll : isFragment ? false : undefined}\n shallow={shallow}\n passHref={passHref}\n prefetch={prefetch}\n locale={locale}\n {...({ legacyBehavior: true } as any)}\n >\n <a {...rest} ref={ref} />\n </NextLink>\n );\n } else {\n return <a {...props} href={undefined} ref={ref} />;\n }\n});\n\nexport function PlasmicRootProvider(\n // We omit Head but still allow override for Link\n props: Omit<\n React.ComponentProps<typeof CommonPlasmicRootProvider>,\n \"Head\"\n > & { skipChunks?: boolean }\n) {\n return (\n <>\n {!props.skipChunks &&\n renderDynamicPayloadScripts(props.loader, props.prefetchedData)}\n <CommonPlasmicRootProvider\n Head={NextHead}\n Link={PlasmicNextLink}\n {...props}\n />\n </>\n );\n}\n\nfunction renderDynamicPayloadScripts(\n loader: PlasmicComponentLoader,\n prefetchedData: ComponentRenderData | undefined\n) {\n const missingModulesData =\n prefetchedData &&\n prefetchedData.bundle.modules.browser.filter(\n (module): module is CodeModule => module.type === \"code\" && !module.code\n );\n if (!missingModulesData || missingModulesData.length === 0) {\n return null;\n }\n\n const isBrowser = typeof window !== \"undefined\";\n\n if (isBrowser) {\n // `next/script` seems to not be correctly added to `<head>` in the initial\n // HTML sometimes when using custom documents:\n // https://linear.app/plasmic/issue/PLA-10652\n\n // Make sure to create the promises in this case - the script to actually fetch\n // the chunks will be added once hydration is completed.\n if (!(globalThis as any).__PlasmicBundlePromises) {\n (globalThis as any).__PlasmicBundlePromises = {};\n }\n for (const { fileName } of missingModulesData) {\n if (!(globalThis as any).__PlasmicBundlePromises[fileName]) {\n (globalThis as any).__PlasmicBundlePromises[fileName] = new Promise(\n (resolve) => {\n (globalThis as any).__PlasmicBundlePromises[\n \"__promise_resolve_\" + fileName\n ] = resolve;\n }\n );\n }\n }\n }\n\n return (\n <>\n <Script\n strategy=\"beforeInteractive\"\n key={\"init:\" + missingModulesData.map((m) => m.fileName).join(\";\")}\n id={\"init:\" + missingModulesData.map((m) => m.fileName).join(\";\")}\n dangerouslySetInnerHTML={{\n __html: `\n if (!globalThis.__PlasmicBundlePromises) {\n globalThis.__PlasmicBundlePromises = {};\n }\n ${missingModulesData\n .map(\n (\n module\n ) => `if (!globalThis.__PlasmicBundlePromises[${JSON.stringify(\n module.fileName\n )}]) {\n globalThis.__PlasmicBundlePromises[${JSON.stringify(\n module.fileName\n )}] = new Promise((resolve) => {\n globalThis.__PlasmicBundlePromises[${JSON.stringify(\n \"__promise_resolve_\" + module.fileName\n )}] = resolve;\n })\n }\n `\n )\n .join(\"\\n\")}`.trim(),\n }}\n ></Script>\n <Script\n strategy=\"beforeInteractive\"\n key={\"load:\" + missingModulesData.map((m) => m.fileName).join(\";\")}\n id={\"load:\" + missingModulesData.map((m) => m.fileName).join(\";\")}\n defer\n async\n src={loader.getChunksUrl(prefetchedData.bundle, missingModulesData)}\n />\n </>\n );\n}\n", "import { LoaderBundleOutput } from \"@plasmicapp/loader-core\";\nimport type { InitOptions } from \"@plasmicapp/loader-react/react-server-conditional\";\nimport type * as Watcher from \"@plasmicapp/watcher\";\nimport { PHASE_PRODUCTION_BUILD } from \"next/constants\";\nimport path from \"path\";\nimport { serverRequire, serverRequireFs } from \"./server-require\";\nimport type { NextInitOptions } from \"./shared-exports\";\n\nclass FileCache {\n constructor(private filePath: string) {}\n\n async get() {\n const fs = await serverRequireFs();\n try {\n await fs.promises.mkdir(path.dirname(this.filePath), { recursive: true });\n const data = (await fs.promises.readFile(this.filePath)).toString();\n return JSON.parse(data);\n } catch {\n return undefined;\n }\n }\n\n async set(data: LoaderBundleOutput) {\n const fs = await serverRequireFs();\n try {\n await fs.promises.writeFile(this.filePath, JSON.stringify(data));\n } catch (err) {\n console.warn(`Error writing to Plasmic cache: ${err}`);\n }\n }\n\n async clear() {\n const fs = await serverRequireFs();\n try {\n fs.promises.unlink(this.filePath);\n } catch (err) {\n // noop\n }\n }\n}\n\nfunction hashString(str: string) {\n let h = 0,\n i = 0;\n for (; i < str.length; h &= h) h = 31 * h + str.charCodeAt(i++);\n return Math.abs(h);\n}\n\nfunction makeCache(opts: InitOptions) {\n const cacheDir = path.resolve(process.cwd(), \".next\", \".plasmic\");\n const cachePath = path.join(\n cacheDir,\n `plasmic-${hashString(\n [...opts.projects.map((p) => `${p.id}@${p.version ?? \"\"}`)]\n .sort()\n .join(\"-\")\n )}${opts.preview ? \"-preview\" : \"\"}-cache.json`\n );\n return new FileCache(cachePath);\n}\n\nexport function initPlasmicLoaderWithCache<\n T extends {\n clearCache(): void;\n }\n>(\n initFn: (opts: InitOptions) => T,\n { nextNavigation, ...opts }: NextInitOptions\n): T {\n const isBrowser = typeof window !== \"undefined\";\n const isProd = process.env.NODE_ENV === \"production\";\n const isBuildPhase = process.env.NEXT_PHASE === PHASE_PRODUCTION_BUILD;\n const cache = isBrowser || isProd ? undefined : makeCache(opts);\n const loader = initFn({\n onClientSideFetch: \"warn\",\n ...opts,\n cache,\n platform: \"nextjs\",\n platformOptions: {\n nextjs: {\n appDir: !!nextNavigation,\n },\n },\n // For Nextjs 12, revalidate may in fact re-use an existing instance\n // of PlasmicComponentLoader that's already in memory, so we need to\n // make sure we don't re-use the data cached in memory.\n // We also enforce this for dev mode, so that we don't have to restart\n // the dev server, in case getStaticProps() re-uses the same PlasmicComponentLoader\n // We also enforce that during build phase, we re-use the data cached in memory\n // to avoid re-fetching the data from Plasmic servers.\n alwaysFresh: !isBuildPhase && !isBrowser,\n });\n\n if (!isProd) {\n const stringOpts = JSON.stringify(opts);\n\n if (process.env.PLASMIC_OPTS && process.env.PLASMIC_OPTS !== stringOpts) {\n console.warn(\n `PLASMIC: We detected that you created a new PlasmicLoader with different configurations. You may need to restart your dev server.\\n`\n );\n }\n\n process.env.PLASMIC_OPTS = stringOpts;\n }\n\n if (cache) {\n if (!isProd) {\n if (process.env.PLASMIC_WATCHED !== \"true\") {\n (async () => {\n process.env.PLASMIC_WATCHED = \"true\";\n console.log(`Subscribing to Plasmic changes...`);\n\n // Import using serverRequire, so webpack doesn't bundle us into client bundle\n try {\n const PlasmicRemoteChangeWatcher = (\n await serverRequire<typeof Watcher>(\"@plasmicapp/watcher\")\n ).PlasmicRemoteChangeWatcher;\n const watcher = new PlasmicRemoteChangeWatcher({\n projects: opts.projects,\n host: opts.host,\n });\n\n const clearCache = () => {\n cache.clear();\n loader.clearCache();\n };\n\n watcher.subscribe({\n onUpdate: () => {\n if (opts.preview) {\n clearCache();\n }\n },\n onPublish: () => {\n if (!opts.preview) {\n clearCache();\n }\n },\n });\n } catch (e) {\n console.warn(\"Couldn't subscribe to Plasmic changes\", e);\n }\n })();\n }\n } else {\n cache.clear();\n loader.clearCache();\n }\n }\n return loader;\n}\n", "import type * as FS from \"fs\";\n\nlet secretRequire: ((module: string) => any) | undefined;\ntry {\n // Secretly use require/import without webpack knowing\n // eslint-disable-next-line\n secretRequire = eval(\"require\");\n} catch (err) {\n try {\n // eslint-disable-next-line\n secretRequire = eval(\"(module) => import(module)\");\n } catch (err) {\n secretRequire = undefined;\n }\n}\n\nexport async function serverRequire<T>(module: string): Promise<T> {\n if (!secretRequire) {\n throw new Error(\n `Unexpected serverRequire() -- can only do this from a Node server!`\n );\n }\n return secretRequire(module) as Promise<T>;\n}\n\nexport async function tryServerRequire<T>(\n module: string\n): Promise<T | undefined> {\n try {\n const require = await serverRequire<T>(module);\n return require;\n } catch {\n return undefined;\n }\n}\n\nexport async function tryServerRequires<T>(\n modules: string[]\n): Promise<T | undefined> {\n for (const module of modules) {\n const require = await tryServerRequire<T>(module);\n if (require != null) {\n return require;\n }\n }\n return undefined;\n}\n\nexport async function serverRequireFs() {\n return serverRequire<typeof FS>(\"fs\");\n}\n", "import type * as RouterContextType from \"next/dist/shared/lib/router-context.shared-runtime\";\nimport type { NextRouter } from \"next/router\";\nimport * as React from \"react\";\nimport { tryServerRequires } from \"./server-require\";\n\nconst fakeRouter: NextRouter = {\n push: async () => {\n return true;\n },\n replace: async () => {\n return true;\n },\n reload: () => {},\n back: () => {},\n forward: () => {},\n prefetch: async () => {\n return;\n },\n beforePopState: () => {},\n events: {\n on: () => {},\n off: () => {},\n emit: () => {},\n },\n route: \"/\",\n asPath: \"/\",\n basePath: \"/\",\n pathname: \"/\",\n query: {},\n isFallback: false,\n isLocaleDomain: false,\n isReady: true,\n isPreview: false,\n};\n\nexport async function wrapRouterContext(element: React.ReactElement) {\n const RouterContext = (\n await tryServerRequires<typeof RouterContextType>([\n \"next/dist/shared/lib/router-context.shared-runtime\",\n \"next/dist/shared/lib/router-context\",\n ])\n )?.RouterContext;\n return !!RouterContext?.Provider ? (\n <RouterContext.Provider value={fakeRouter}>\n {element}\n </RouterContext.Provider>\n ) : (\n element\n );\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA;AAAA,EAEE,2BAA2B;AAAA,EAE3B;AAAA,EACA;AAAA,EACA,uBAAuB;AAAA,OAClB;AAEP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAOP,SAAoC,+BAA+C;AAWnF,OAAO,cAAc;AACrB,OAAO,cAAc;AACrB,YAAY,gBAAgB;AAC5B,OAAO,YAAY;AACnB,YAAYA,YAAW;;;AC9CvB,SAAS,8BAA8B;AACvC,OAAO,UAAU;;;ACFjB,IAAI;AACJ,IAAI;AAGF,kBAAgB,KAAK,SAAS;AAChC,SAAS,KAAP;AACA,MAAI;AAEF,oBAAgB,KAAK,4BAA4B;AAAA,EACnD,SAASC,MAAP;AACA,oBAAgB;AAAA,EAClB;AACF;AAEA,SAAsB,cAAiB,QAA4B;AAAA;AACjE,QAAI,CAAC,eAAe;AAClB,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF;AACA,WAAO,cAAc,MAAM;AAAA,EAC7B;AAAA;AAEA,SAAsB,iBACpB,QACwB;AAAA;AACxB,QAAI;AACF,YAAMC,WAAU,MAAM,cAAiB,MAAM;AAC7C,aAAOA;AAAA,IACT,SAAQ,GAAN;AACA,aAAO;AAAA,IACT;AAAA,EACF;AAAA;AAEA,SAAsB,kBACpB,SACwB;AAAA;AACxB,eAAW,UAAU,SAAS;AAC5B,YAAMA,WAAU,MAAM,iBAAoB,MAAM;AAChD,UAAIA,YAAW,MAAM;AACnB,eAAOA;AAAA,MACT;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA;AAEA,SAAsB,kBAAkB;AAAA;AACtC,WAAO,cAAyB,IAAI;AAAA,EACtC;AAAA;;;AD1CA,IAAM,YAAN,MAAgB;AAAA,EACd,YAAoB,UAAkB;AAAlB;AAAA,EAAmB;AAAA,EAEjC,MAAM;AAAA;AACV,YAAM,KAAK,MAAM,gBAAgB;AACjC,UAAI;AACF,cAAM,GAAG,SAAS,MAAM,KAAK,QAAQ,KAAK,QAAQ,GAAG,EAAE,WAAW,KAAK,CAAC;AACxE,cAAM,QAAQ,MAAM,GAAG,SAAS,SAAS,KAAK,QAAQ,GAAG,SAAS;AAClE,eAAO,KAAK,MAAM,IAAI;AAAA,MACxB,SAAQ,GAAN;AACA,eAAO;AAAA,MACT;AAAA,IACF;AAAA;AAAA,EAEM,IAAI,MAA0B;AAAA;AAClC,YAAM,KAAK,MAAM,gBAAgB;AACjC,UAAI;AACF,cAAM,GAAG,SAAS,UAAU,KAAK,UAAU,KAAK,UAAU,IAAI,CAAC;AAAA,MACjE,SAASC,MAAP;AACA,gBAAQ,KAAK,mCAAmCA,MAAK;AAAA,MACvD;AAAA,IACF;AAAA;AAAA,EAEM,QAAQ;AAAA;AACZ,YAAM,KAAK,MAAM,gBAAgB;AACjC,UAAI;AACF,WAAG,SAAS,OAAO,KAAK,QAAQ;AAAA,MAClC,SAASA,MAAP;AAAA,MAEF;AAAA,IACF;AAAA;AACF;AAEA,SAAS,WAAW,KAAa;AAC/B,MAAI,IAAI,GACN,IAAI;AACN,SAAO,IAAI,IAAI,QAAQ,KAAK;AAAG,QAAI,KAAK,IAAI,IAAI,WAAW,GAAG;AAC9D,SAAO,KAAK,IAAI,CAAC;AACnB;AAEA,SAAS,UAAU,MAAmB;AACpC,QAAM,WAAW,KAAK,QAAQ,QAAQ,IAAI,GAAG,SAAS,UAAU;AAChE,QAAM,YAAY,KAAK;AAAA,IACrB;AAAA,IACA,WAAW;AAAA,MACT,CAAC,GAAG,KAAK,SAAS,IAAI,CAAC,MAAG;AArDhC;AAqDmC,kBAAG,EAAE,OAAM,OAAE,YAAF,YAAa;AAAA,OAAI,CAAC,EACvD,KAAK,EACL,KAAK,GAAG;AAAA,IACb,IAAI,KAAK,UAAU,aAAa;AAAA,EAClC;AACA,SAAO,IAAI,UAAU,SAAS;AAChC;AAEO,SAAS,2BAKd,QACA,IACG;AADH,eAAE,iBAnEJ,IAmEE,IAAqB,iBAArB,IAAqB,CAAnB;AAEF,QAAM,YAAY,OAAO,WAAW;AACpC,QAAM,SAAS,QAAQ,IAAI,aAAa;AACxC,QAAM,eAAe,QAAQ,IAAI,eAAe;AAChD,QAAM,QAAQ,aAAa,SAAS,SAAY,UAAU,IAAI;AAC9D,QAAM,SAAS,OAAO;AAAA,IACpB,mBAAmB;AAAA,KAChB,OAFiB;AAAA,IAGpB;AAAA,IACA,UAAU;AAAA,IACV,iBAAiB;AAAA,MACf,QAAQ;AAAA,QACN,QAAQ,CAAC,CAAC;AAAA,MACZ;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQA,aAAa,CAAC,gBAAgB,CAAC;AAAA,EACjC,EAAC;AAED,MAAI,CAAC,QAAQ;AACX,UAAM,aAAa,KAAK,UAAU,IAAI;AAEtC,QAAI,QAAQ,IAAI,gBAAgB,QAAQ,IAAI,iBAAiB,YAAY;AACvE,cAAQ;AAAA,QACN;AAAA;AAAA,MACF;AAAA,IACF;AAEA,YAAQ,IAAI,eAAe;AAAA,EAC7B;AAEA,MAAI,OAAO;AACT,QAAI,CAAC,QAAQ;AACX,UAAI,QAAQ,IAAI,oBAAoB,QAAQ;AAC1C,SAAC,MAAY;AACX,kBAAQ,IAAI,kBAAkB;AAC9B,kBAAQ,IAAI,mCAAmC;AAG/C,cAAI;AACF,kBAAM,8BACJ,MAAM,cAA8B,qBAAqB,GACzD;AACF,kBAAM,UAAU,IAAI,2BAA2B;AAAA,cAC7C,UAAU,KAAK;AAAA,cACf,MAAM,KAAK;AAAA,YACb,CAAC;AAED,kBAAM,aAAa,MAAM;AACvB,oBAAM,MAAM;AACZ,qBAAO,WAAW;AAAA,YACpB;AAEA,oBAAQ,UAAU;AAAA,cAChB,UAAU,MAAM;AACd,oBAAI,KAAK,SAAS;AAChB,6BAAW;AAAA,gBACb;AAAA,cACF;AAAA,cACA,WAAW,MAAM;AACf,oBAAI,CAAC,KAAK,SAAS;AACjB,6BAAW;AAAA,gBACb;AAAA,cACF;AAAA,YACF,CAAC;AAAA,UACH,SAAS,GAAP;AACA,oBAAQ,KAAK,yCAAyC,CAAC;AAAA,UACzD;AAAA,QACF,IAAG;AAAA,MACL;AAAA,IACF,OAAO;AACL,YAAM,MAAM;AACZ,aAAO,WAAW;AAAA,IACpB;AAAA,EACF;AACA,SAAO;AACT;;;AEpJA,YAAY,WAAW;AAGvB,IAAM,aAAyB;AAAA,EAC7B,MAAM,MAAY;AAChB,WAAO;AAAA,EACT;AAAA,EACA,SAAS,MAAY;AACnB,WAAO;AAAA,EACT;AAAA,EACA,QAAQ,MAAM;AAAA,EAAC;AAAA,EACf,MAAM,MAAM;AAAA,EAAC;AAAA,EACb,SAAS,MAAM;AAAA,EAAC;AAAA,EAChB,UAAU,MAAY;AACpB;AAAA,EACF;AAAA,EACA,gBAAgB,MAAM;AAAA,EAAC;AAAA,EACvB,QAAQ;AAAA,IACN,IAAI,MAAM;AAAA,IAAC;AAAA,IACX,KAAK,MAAM;AAAA,IAAC;AAAA,IACZ,MAAM,MAAM;AAAA,IAAC;AAAA,EACf;AAAA,EACA,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,UAAU;AAAA,EACV,OAAO,CAAC;AAAA,EACR,YAAY;AAAA,EACZ,gBAAgB;AAAA,EAChB,SAAS;AAAA,EACT,WAAW;AACb;AAEA,SAAsB,kBAAkB,SAA6B;AAAA;AAnCrE;AAoCE,UAAM,iBACJ,WAAM,kBAA4C;AAAA,MAChD;AAAA,MACA;AAAA,IACF,CAAC,MAHD,mBAIC;AACH,WAAO,CAAC,EAAC,+CAAe,YACtB,oCAAC,cAAc,UAAd,EAAuB,OAAO,cAC5B,OACH,IAEA;AAAA,EAEJ;AAAA;;;AHWA,IAAM,oBAAoB,CAAO,eAAQ,MAAM,GAAG,EAAE,CAAC;AAErD,SAAS,yBAAyB,MAA2B;AAC3D,MAAI,qBAAqB,MAAM,CAAC,CAAC,KAAK,OAAO,WAAW;AAEtD,UAAM,cAAc,oBAAI,IAAI;AAAA,MAC1B,GAAG,KAAK,eAAe,IAAI,CAAC,aAAa,SAAS,KAAK;AAAA,MACvD;AAAA,MACA,GAAG,KAAK,OAAO,SACZ,IAAI,CAAC,MAAM,EAAE,8BAA8B,EAC3C,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;AAAA,MACpB,GAAG,KAAK,OAAO,WACZ,OAAO,CAAC,MAAM,EAAE,uBAAuB,EACvC,IAAI,CAAC,MAAM,EAAE,KAAK;AAAA,MACrB,GAAG,KAAK,OAAO,aAAa,IAAI,CAAC,MAAM,EAAE,WAAW;AAAA,IACtD,CAAC;AAED,SAAK,OAAO,QAAQ,UAAU,KAAK,OAAO,QAAQ,QAAQ,IAAI,CAAC,WAAW;AACxE,UAAI,OAAO,SAAS,UAAU,YAAY,IAAI,OAAO,QAAQ,GAAG;AAC9D,eAAO;AAAA,MACT;AACA,aAAO,iCAAK,SAAL,EAAa,MAAM,GAAG;AAAA,IAC/B,CAAC;AAAA,EACH;AACF;AASO,IAAM,+BAAN,cAA2C,uBAAuB;AAAA,EACvE,YAAY,UAA0C;AACpD,UAAM,QAAQ;AAAA,EAChB;AAAA,EAEM,mBAAmB,MAKtB;AAAA;AACD,YAAM,uBAAuB,MAAM;AAxGvC;AAyGM,cAAM,MAAM,IAAI;AAAA,WACd,gBAAK,QAAL,mBAAU,QAAV,YAAiB;AAAA,UACjB,YAAW,gBAAK,QAAL,mBAAU,QAAQ,SAAlB,YAA0B;AAAA,QACvC;AACA,eAAO;AAAA,UACL,SAAS,IAAI;AAAA,QACf;AAAA,MACF;AAEA,aAAO,KAAK,oBAAoB;AAAA,QAC9B,QAAQ,kCACH,qBAAqB,IACrB,KAAK;AAAA,QAEV,eAAe,CAAC,QAAgB;AAvHtC;AAwHQ,cAAI,KAAK,OAAO;AACd,mBAAO,KAAK,MAAM,GAAG;AAAA,UACvB,OAAO;AACL,oBAAO,gBAAK,QAAL,mBAAU,QAAQ,WAAW,WAA7B,YAAuC;AAAA,UAChD;AAAA,QACF;AAAA,QACA,kBAAkB,CAAC,KAAa,UAAkB;AA9HxD;AA+HQ,cAAI,KAAK,KAAK;AACZ,kBAAM,SAAS,WAAW,OAAO;AACjC,kBAAM,aAAY,gBAAK,QAAL,mBAAU,UAAU,kBAApB,YAAqC,CAAC;AACxD,gBAAI,aAAuB,CAAC;AAC5B,gBAAI,MAAM,QAAQ,SAAS,GAAG;AAC5B,2BAAa,CAAC,GAAG,WAAW,WAAW,OAAO,OAAO;AAAA,YACvD,OAAO;AACL,2BAAa,CAAC,GAAG,aAAa,MAAM;AAAA,YACtC;AAEA,uBAAK,QAAL,mBAAU,UAAU,cAAc;AAAA,UACpC;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAAA;AAAA,EASM,2BACD,MACkC;AAAA;AACrC,YAAM,OAAO,MAAM,yDAAM,gCAAN,MAA8B,GAAG,IAAI;AACxD,YAAM,EAAE,KAAK,IAAI,4BAA4B,GAAG,IAAI;AACpD,UACE,UACC,6BAAM,iBACJ,6BAAM,iBAAgB,UAAa,KAAK,OAAO,uBAClD;AACA,iCAAyB,IAAI;AAAA,MAC/B;AACA,aAAO;AAAA,IACT;AAAA;AAAA,EASM,sBAAsB,MAA2C;AAAA;AACrE,YAAM,OAAO,MAAM,yDAAM,2BAAN,MAAyB,GAAG,IAAI;AACnD,YAAM,EAAE,KAAK,IAAI,4BAA4B,GAAG,IAAI;AACpD,WACE,6BAAM,iBACL,6BAAM,iBAAgB,UAAa,KAAK,OAAO,sBAChD;AACA,iCAAyB,IAAI;AAAA,MAC/B;AACA,aAAO;AAAA,IACT;AAAA;AACF;AAUA,SAAS,+BAA+B,MAAa;AACnD,MAAI;AACJ,MAAI;AACJ,MAAI,MAAM,QAAQ,KAAK,CAAC,CAAC,GAAG;AAC1B,YAAQ,KAAK,CAAC;AACd,WAAO,KAAK,CAAC;AAAA,EACf,OAAO;AACL,YAAQ;AACR,WAAO;AAAA,EACT;AACA,SAAO,EAAE,OAAO,KAAK;AACvB;AAEO,SAAS,kBAAkB,MAAuB;AACvD,QAAM,SAAS;AAAA,IACb,CAACC,UACC,IAAI;AAAA,MACF,IAAI,+BAA+BA,KAAI;AAAA,IACzC;AAAA,IACF;AAAA,EACF;AACA,SAAO,gBAAgB;AAAA,IACrB,aAAa;AAAA,IACb,aAAa;AAAA,IACb,eAAe;AAAA,EACjB,CAAC;AACD,MAAI,KAAK,gBAAgB;AACvB,WAAO,gBAAgB;AAAA,MACrB,mBAAmB,KAAK;AAAA,IAC1B,CAAC;AAAA,EACH;AACA,SAAO;AACT;AAsCA,SAAsB,wBAAwB,SAA6B;AAAA;AACzE,WAAO,gCAAgC,MAAM,kBAAkB,OAAO,CAAC;AAAA,EACzE;AAAA;AAEA,IAAM,kBAAwB,kBAAW,SAASC,iBAChD,OACA,KACA;AAGA,MAAI,MAAM,MAAM;AACd,UASI,YARF;AAAA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAzRN,IA2RQ,IADC,iBACD,IADC;AAAA,MAPH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAKF,UAAM,aAAa,OAAO,SAAS,YAAY,KAAK,WAAW,GAAG;AAGlE,WACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA,QAAQ,UAAU,OAAO,SAAS,aAAa,QAAQ;AAAA,QACvD;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,SACK,EAAE,gBAAgB,KAAK;AAAA,MAE5B,qCAAC,sCAAM,OAAN,EAAY,MAAU;AAAA,IACzB;AAAA,EAEJ,OAAO;AACL,WAAO,qCAAC,sCAAM,QAAN,EAAa,MAAM,QAAW,MAAU;AAAA,EAClD;AACF,CAAC;AAEM,SAAS,oBAEd,OAIA;AACA,SACE,4DACG,CAAC,MAAM,cACN,4BAA4B,MAAM,QAAQ,MAAM,cAAc,GAChE;AAAA,IAAC;AAAA;AAAA,MACC,MAAM;AAAA,MACN,MAAM;AAAA,OACF;AAAA,EACN,CACF;AAEJ;AAEA,SAAS,4BACP,QACA,gBACA;AACA,QAAM,qBACJ,kBACA,eAAe,OAAO,QAAQ,QAAQ;AAAA,IACpC,CAAC,WAAiC,OAAO,SAAS,UAAU,CAAC,OAAO;AAAA,EACtE;AACF,MAAI,CAAC,sBAAsB,mBAAmB,WAAW,GAAG;AAC1D,WAAO;AAAA,EACT;AAEA,QAAM,YAAY,OAAO,WAAW;AAEpC,MAAI,WAAW;AAOb,QAAI,CAAE,WAAmB,yBAAyB;AAChD,MAAC,WAAmB,0BAA0B,CAAC;AAAA,IACjD;AACA,eAAW,EAAE,SAAS,KAAK,oBAAoB;AAC7C,UAAI,CAAE,WAAmB,wBAAwB,QAAQ,GAAG;AAC1D,QAAC,WAAmB,wBAAwB,QAAQ,IAAI,IAAI;AAAA,UAC1D,CAAC,YAAY;AACX,YAAC,WAAmB,wBAClB,uBAAuB,QACzB,IAAI;AAAA,UACN;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,SACE,4DACE;AAAA,IAAC;AAAA;AAAA,MACC,UAAS;AAAA,MACT,KAAK,UAAU,mBAAmB,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,GAAG;AAAA,MACjE,IAAI,UAAU,mBAAmB,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,GAAG;AAAA,MAChE,yBAAyB;AAAA,QACvB,QAAQ;AAAA;AAAA;AAAA;AAAA,cAIJ,mBACC;AAAA,UACC,CACE,WACG,2CAA2C,KAAK;AAAA,YACnD,OAAO;AAAA,UACT;AAAA,uDACuC,KAAK;AAAA,YACxC,OAAO;AAAA,UACT;AAAA,yDACuC,KAAK;AAAA,YACxC,uBAAuB,OAAO;AAAA,UAChC;AAAA;AAAA;AAAA;AAAA,QAIN,EACC,KAAK,IAAI,IAAI,KAAK;AAAA,MACzB;AAAA;AAAA,EACD,GACD;AAAA,IAAC;AAAA;AAAA,MACC,UAAS;AAAA,MACT,KAAK,UAAU,mBAAmB,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,GAAG;AAAA,MACjE,IAAI,UAAU,mBAAmB,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,GAAG;AAAA,MAChE,OAAK;AAAA,MACL,OAAK;AAAA,MACL,KAAK,OAAO,aAAa,eAAe,QAAQ,kBAAkB;AAAA;AAAA,EACpE,CACF;AAEJ;",
6
+ "names": ["React", "err", "require", "err", "opts", "PlasmicNextLink"]
7
7
  }
package/dist/index.js CHANGED
@@ -139,6 +139,27 @@ function serverRequire(module2) {
139
139
  return secretRequire(module2);
140
140
  });
141
141
  }
142
+ function tryServerRequire(module2) {
143
+ return __async(this, null, function* () {
144
+ try {
145
+ const require2 = yield serverRequire(module2);
146
+ return require2;
147
+ } catch (e) {
148
+ return void 0;
149
+ }
150
+ });
151
+ }
152
+ function tryServerRequires(modules) {
153
+ return __async(this, null, function* () {
154
+ for (const module2 of modules) {
155
+ const require2 = yield tryServerRequire(module2);
156
+ if (require2 != null) {
157
+ return require2;
158
+ }
159
+ }
160
+ return void 0;
161
+ });
162
+ }
142
163
  function serverRequireFs() {
143
164
  return __async(this, null, function* () {
144
165
  return serverRequire("fs");
@@ -194,15 +215,15 @@ function makeCache(opts) {
194
215
  cacheDir,
195
216
  `plasmic-${hashString(
196
217
  [...opts.projects.map((p) => {
197
- var _a2;
198
- return `${p.id}@${(_a2 = p.version) != null ? _a2 : ""}`;
218
+ var _a;
219
+ return `${p.id}@${(_a = p.version) != null ? _a : ""}`;
199
220
  })].sort().join("-")
200
221
  )}${opts.preview ? "-preview" : ""}-cache.json`
201
222
  );
202
223
  return new FileCache(cachePath);
203
224
  }
204
- function initPlasmicLoaderWithCache(initFn, _a2) {
205
- var _b = _a2, { nextNavigation } = _b, opts = __objRest(_b, ["nextNavigation"]);
225
+ function initPlasmicLoaderWithCache(initFn, _a) {
226
+ var _b = _a, { nextNavigation } = _b, opts = __objRest(_b, ["nextNavigation"]);
206
227
  const isBrowser = typeof window !== "undefined";
207
228
  const isProd = process.env.NODE_ENV === "production";
208
229
  const isBuildPhase = process.env.NEXT_PHASE === import_constants.PHASE_PRODUCTION_BUILD;
@@ -279,15 +300,6 @@ function initPlasmicLoaderWithCache(initFn, _a2) {
279
300
 
280
301
  // src/mocks.tsx
281
302
  var React = __toESM(require("react"));
282
- function tryRequire(module2) {
283
- try {
284
- return require(module2);
285
- } catch (e) {
286
- return void 0;
287
- }
288
- }
289
- var _a;
290
- var RouterImport = (_a = tryRequire("next/dist/shared/lib/router-context.shared-runtime")) != null ? _a : tryRequire("next/dist/shared/lib/router-context");
291
303
  var fakeRouter = {
292
304
  push: () => __async(void 0, null, function* () {
293
305
  return true;
@@ -325,8 +337,14 @@ var fakeRouter = {
325
337
  isPreview: false
326
338
  };
327
339
  function wrapRouterContext(element) {
328
- var _a2;
329
- return !!((_a2 = RouterImport.RouterContext) == null ? void 0 : _a2.Provider) ? /* @__PURE__ */ React.createElement(RouterImport.RouterContext.Provider, { value: fakeRouter }, element) : element;
340
+ return __async(this, null, function* () {
341
+ var _a;
342
+ const RouterContext = (_a = yield tryServerRequires([
343
+ "next/dist/shared/lib/router-context.shared-runtime",
344
+ "next/dist/shared/lib/router-context"
345
+ ])) == null ? void 0 : _a.RouterContext;
346
+ return !!(RouterContext == null ? void 0 : RouterContext.Provider) ? /* @__PURE__ */ React.createElement(RouterContext.Provider, { value: fakeRouter }, element) : element;
347
+ });
330
348
  }
331
349
 
332
350
  // src/index.tsx
@@ -355,9 +373,9 @@ var NextJsPlasmicComponentLoader = class extends import_loader_react.PlasmicComp
355
373
  getActiveVariation(opts) {
356
374
  return __async(this, null, function* () {
357
375
  const extractBuiltinTraits = () => {
358
- var _a2, _b, _c, _d;
376
+ var _a, _b, _c, _d;
359
377
  const url = new URL(
360
- (_b = (_a2 = opts.req) == null ? void 0 : _a2.url) != null ? _b : "/",
378
+ (_b = (_a = opts.req) == null ? void 0 : _a.url) != null ? _b : "/",
361
379
  `https://${(_d = (_c = opts.req) == null ? void 0 : _c.headers.host) != null ? _d : "server.side"}`
362
380
  );
363
381
  return {
@@ -367,18 +385,18 @@ var NextJsPlasmicComponentLoader = class extends import_loader_react.PlasmicComp
367
385
  return this._getActiveVariation({
368
386
  traits: __spreadValues(__spreadValues({}, extractBuiltinTraits()), opts.traits),
369
387
  getKnownValue: (key) => {
370
- var _a2, _b;
388
+ var _a, _b;
371
389
  if (opts.known) {
372
390
  return opts.known[key];
373
391
  } else {
374
- return (_b = (_a2 = opts.req) == null ? void 0 : _a2.cookies[`plasmic:${key}`]) != null ? _b : void 0;
392
+ return (_b = (_a = opts.req) == null ? void 0 : _a.cookies[`plasmic:${key}`]) != null ? _b : void 0;
375
393
  }
376
394
  },
377
395
  updateKnownValue: (key, value) => {
378
- var _a2, _b, _c;
396
+ var _a, _b, _c;
379
397
  if (opts.res) {
380
398
  const cookie = `plasmic:${key}=${value}`;
381
- const resCookie = (_b = (_a2 = opts.res) == null ? void 0 : _a2.getHeader("Set-Cookie")) != null ? _b : [];
399
+ const resCookie = (_b = (_a = opts.res) == null ? void 0 : _a.getHeader("Set-Cookie")) != null ? _b : [];
382
400
  let newCookies = [];
383
401
  if (Array.isArray(resCookie)) {
384
402
  newCookies = [...resCookie, `plasmic:${key}=${value}`];
@@ -444,11 +462,13 @@ function initPlasmicLoader(opts) {
444
462
  return loader;
445
463
  }
446
464
  function extractPlasmicQueryData(element) {
447
- return (0, import_loader_react.extractPlasmicQueryData)(wrapRouterContext(element));
465
+ return __async(this, null, function* () {
466
+ return (0, import_loader_react.extractPlasmicQueryData)(yield wrapRouterContext(element));
467
+ });
448
468
  }
449
469
  var PlasmicNextLink = React2.forwardRef(function PlasmicNextLink2(props, ref) {
450
470
  if (props.href) {
451
- const _a2 = props, {
471
+ const _a = props, {
452
472
  href,
453
473
  replace,
454
474
  scroll,
@@ -456,7 +476,7 @@ var PlasmicNextLink = React2.forwardRef(function PlasmicNextLink2(props, ref) {
456
476
  passHref,
457
477
  prefetch,
458
478
  locale
459
- } = _a2, rest = __objRest(_a2, [
479
+ } = _a, rest = __objRest(_a, [
460
480
  "href",
461
481
  "replace",
462
482
  "scroll",
package/dist/index.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/index.tsx", "../src/cache.ts", "../src/server-require.ts", "../src/mocks.tsx"],
4
- "sourcesContent": ["import type { CodeModule } from \"@plasmicapp/loader-core\";\nimport {\n ComponentLookupSpec,\n extractPlasmicQueryData as internalExtractPlasmicQueryData,\n FetchComponentDataOpts as InternalFetchComponentDataOpts,\n InternalPlasmicComponentLoader,\n PlasmicComponentLoader,\n PlasmicRootProvider as CommonPlasmicRootProvider,\n} from \"@plasmicapp/loader-react\";\nimport { IncomingMessage, ServerResponse } from \"http\";\nexport {\n DataCtxReader,\n DataProvider,\n GlobalActionsContext,\n GlobalActionsProvider,\n PageParamsProvider,\n PlasmicCanvasContext,\n PlasmicCanvasHost,\n PlasmicComponent,\n plasmicPrepass,\n repeatedElement,\n useDataEnv,\n usePlasmicCanvasContext,\n usePlasmicComponent,\n usePlasmicQueryData,\n useSelector,\n useSelectors,\n} from \"@plasmicapp/loader-react\";\nexport type {\n CodeComponentMeta,\n PlasmicTranslator,\n PropType,\n TokenRegistration,\n} from \"@plasmicapp/loader-react\";\nexport { ExtractPlasmicQueryData as __EXPERMIENTAL__ExtractPlasmicQueryData } from \"@plasmicapp/nextjs-app-router\";\nexport * from \"./shared-exports\";\n// NextHead and NextLink must be default imported (`import Pkg`) instead of a namespace import (`import * as Pkg`).\n// Otherwise, there's a Next.js 12 bug when referencing these dependencies due to default import interop.\n// The transpiled CommonJS code would create a `default` field on the package,\n// causing React to think it's an invalid React object:\n// ```\n// const NextHead = __defaultInterop(require('next/head.js'))\n// assert(typeof NextHead === 'object')\n// assert(typeof NextHead.default === 'function')\n// ```\nimport NextHead from \"next/head.js\";\nimport NextLink from \"next/link.js\";\nimport * as NextRouter from \"next/router.js\";\nimport Script from \"next/script\";\nimport * as React from \"react\";\nimport { initPlasmicLoaderWithCache } from \"./cache\";\nimport { wrapRouterContext } from \"./mocks\";\nimport type { ComponentRenderData, NextInitOptions } from \"./shared-exports\";\n\ntype ServerRequest = IncomingMessage & {\n cookies: {\n [key: string]: string;\n };\n};\n\nconst reactMajorVersion = +React.version.split(\".\")[0];\n\nfunction filterCodeFromRenderData(data: ComponentRenderData) {\n if (reactMajorVersion >= 18 && !!data.bundle.bundleKey) {\n // Keep the entrypoints\n const entrypoints = new Set([\n ...data.entryCompMetas.map((compMeta) => compMeta.entry),\n \"root-provider.js\",\n ...data.bundle.projects\n .map((x) => x.globalContextsProviderFileName)\n .filter((x) => !!x),\n ...data.bundle.components\n .filter((c) => c.isGlobalContextProvider)\n .map((c) => c.entry),\n ...data.bundle.globalGroups.map((g) => g.contextFile),\n ]);\n\n data.bundle.modules.browser = data.bundle.modules.browser.map((module) => {\n if (module.type !== \"code\" || entrypoints.has(module.fileName)) {\n return module;\n }\n return { ...module, code: \"\" };\n });\n }\n}\n\nexport interface FetchComponentDataOpts extends InternalFetchComponentDataOpts {\n /**\n * Defer loading code chunks to script tags, reducing initial payload size.\n */\n deferChunks?: boolean;\n}\n\nexport class NextJsPlasmicComponentLoader extends PlasmicComponentLoader {\n constructor(internal: InternalPlasmicComponentLoader) {\n super(internal);\n }\n\n async getActiveVariation(opts: {\n req?: ServerRequest;\n res?: ServerResponse;\n known?: Record<string, string>;\n traits: Record<string, string | number | boolean>;\n }) {\n const extractBuiltinTraits = () => {\n const url = new URL(\n opts.req?.url ?? \"/\",\n `https://${opts.req?.headers.host ?? \"server.side\"}`\n );\n return {\n pageUrl: url.href,\n };\n };\n\n return this._getActiveVariation({\n traits: {\n ...extractBuiltinTraits(),\n ...opts.traits,\n },\n getKnownValue: (key: string) => {\n if (opts.known) {\n return opts.known[key];\n } else {\n return opts.req?.cookies[`plasmic:${key}`] ?? undefined;\n }\n },\n updateKnownValue: (key: string, value: string) => {\n if (opts.res) {\n const cookie = `plasmic:${key}=${value}`;\n const resCookie = opts.res?.getHeader(\"Set-Cookie\") ?? [];\n let newCookies: string[] = [];\n if (Array.isArray(resCookie)) {\n newCookies = [...resCookie, `plasmic:${key}=${value}`];\n } else {\n newCookies = [`${resCookie}`, cookie];\n }\n\n opts.res?.setHeader(\"Set-Cookie\", newCookies);\n }\n },\n });\n }\n\n maybeFetchComponentData(\n specs: ComponentLookupSpec[],\n opts?: FetchComponentDataOpts\n ): Promise<ComponentRenderData | null>;\n maybeFetchComponentData(\n ...specs: ComponentLookupSpec[]\n ): Promise<ComponentRenderData | null>;\n async maybeFetchComponentData(\n ...args: any[]\n ): Promise<ComponentRenderData | null> {\n const data = await super.maybeFetchComponentData(...args);\n const { opts } = parseFetchComponentDataArgs(...args);\n if (\n data &&\n (opts?.deferChunks ||\n (opts?.deferChunks === undefined && data.bundle.deferChunksByDefault))\n ) {\n filterCodeFromRenderData(data);\n }\n return data;\n }\n\n fetchComponentData(\n ...specs: ComponentLookupSpec[]\n ): Promise<ComponentRenderData>;\n fetchComponentData(\n specs: ComponentLookupSpec[],\n opts?: FetchComponentDataOpts\n ): Promise<ComponentRenderData>;\n async fetchComponentData(...args: any[]): Promise<ComponentRenderData> {\n const data = await super.fetchComponentData(...args);\n const { opts } = parseFetchComponentDataArgs(...args);\n if (\n opts?.deferChunks ||\n (opts?.deferChunks === undefined && data.bundle.deferChunksByDefault)\n ) {\n filterCodeFromRenderData(data);\n }\n return data;\n }\n}\n\nfunction parseFetchComponentDataArgs(\n specs: ComponentLookupSpec[],\n opts?: FetchComponentDataOpts\n): { specs: ComponentLookupSpec[]; opts?: FetchComponentDataOpts };\nfunction parseFetchComponentDataArgs(...specs: ComponentLookupSpec[]): {\n specs: ComponentLookupSpec[];\n opts?: FetchComponentDataOpts;\n};\nfunction parseFetchComponentDataArgs(...args: any[]) {\n let specs: ComponentLookupSpec[];\n let opts: FetchComponentDataOpts | undefined;\n if (Array.isArray(args[0])) {\n specs = args[0];\n opts = args[1];\n } else {\n specs = args;\n opts = undefined;\n }\n return { specs, opts };\n}\n\nexport function initPlasmicLoader(opts: NextInitOptions) {\n const loader = initPlasmicLoaderWithCache<NextJsPlasmicComponentLoader>(\n (opts) =>\n new NextJsPlasmicComponentLoader(\n new InternalPlasmicComponentLoader(opts)\n ),\n opts\n );\n loader.registerModules({\n \"next/head\": NextHead,\n \"next/link\": NextLink,\n \"next/router\": NextRouter,\n });\n if (opts.nextNavigation) {\n loader.registerModules({\n \"next/navigation\": opts.nextNavigation,\n });\n }\n return loader;\n}\n\n/**\n * Performs a prepass over Plasmic content, kicking off the necessary\n * data fetches, and populating the fetched data into a cache. This\n * cache can be passed as prefetchedQueryData into PlasmicRootProvider.\n *\n * To limit rendering errors that can occur when you do this, we recommend\n * that you pass in _only_ the PlasmicComponents that you are planning to use\n * as the argument. For example:\n *\n * const cache = await extractPlasmicQueryData(\n * <PlasmicRootProvider loader={PLASMIC} prefetchedData={plasmicData}>\n * <PlasmicComponent component=\"Home\" componentProps={{\n * // Specify the component prop overrides you are planning to use\n * // to render the page, as they may change what data is fetched.\n * ...\n * }} />\n * <PlasmicComponent component=\"NavBar\" componentProps={{\n * ...\n * }} />\n * ...\n * </PlasmicRootProvider>\n * );\n *\n * If your PlasmicComponent will be wrapping components that require special\n * context set up, you should also wrap the element above with those context\n * providers.\n *\n * You should avoid passing in elements that are not related to Plasmic, as any\n * rendering errors from those elements during the prepass may result in data\n * not being populated in the cache.\n *\n * @param element a React element containing instances of PlasmicComponent.\n * Will attempt to satisfy all data needs from usePlasmicDataQuery()\n * in this element tree.\n * @returns an object mapping query key to fetched data\n */\nexport function extractPlasmicQueryData(element: React.ReactElement) {\n return internalExtractPlasmicQueryData(wrapRouterContext(element));\n}\n\nconst PlasmicNextLink = React.forwardRef(function PlasmicNextLink(\n props: React.ComponentProps<typeof NextLink>,\n ref: React.Ref<HTMLAnchorElement>\n) {\n // Basically renders NextLink, except when href is undefined,\n // which freaks out NextLink :-/\n if (props.href) {\n const {\n href,\n replace,\n scroll,\n shallow,\n passHref,\n prefetch,\n locale,\n ...rest\n } = props;\n // If this is a fragment identifier link, then we set\n // scroll={false} so that smooth scrolling works\n const isFragment = typeof href === \"string\" && href.startsWith(\"#\");\n // We use legacyBehavior, because we don't know which\n // version of next the user has installed\n return (\n <NextLink\n href={href}\n replace={replace}\n scroll={scroll != null ? scroll : isFragment ? false : undefined}\n shallow={shallow}\n passHref={passHref}\n prefetch={prefetch}\n locale={locale}\n {...({ legacyBehavior: true } as any)}\n >\n <a {...rest} ref={ref} />\n </NextLink>\n );\n } else {\n return <a {...props} href={undefined} ref={ref} />;\n }\n});\n\nexport function PlasmicRootProvider(\n // We omit Head but still allow override for Link\n props: Omit<\n React.ComponentProps<typeof CommonPlasmicRootProvider>,\n \"Head\"\n > & { skipChunks?: boolean }\n) {\n return (\n <>\n {!props.skipChunks &&\n renderDynamicPayloadScripts(props.loader, props.prefetchedData)}\n <CommonPlasmicRootProvider\n Head={NextHead}\n Link={PlasmicNextLink}\n {...props}\n />\n </>\n );\n}\n\nfunction renderDynamicPayloadScripts(\n loader: PlasmicComponentLoader,\n prefetchedData: ComponentRenderData | undefined\n) {\n const missingModulesData =\n prefetchedData &&\n prefetchedData.bundle.modules.browser.filter(\n (module): module is CodeModule => module.type === \"code\" && !module.code\n );\n if (!missingModulesData || missingModulesData.length === 0) {\n return null;\n }\n\n const isBrowser = typeof window !== \"undefined\";\n\n if (isBrowser) {\n // `next/script` seems to not be correctly added to `<head>` in the initial\n // HTML sometimes when using custom documents:\n // https://linear.app/plasmic/issue/PLA-10652\n\n // Make sure to create the promises in this case - the script to actually fetch\n // the chunks will be added once hydration is completed.\n if (!(globalThis as any).__PlasmicBundlePromises) {\n (globalThis as any).__PlasmicBundlePromises = {};\n }\n for (const { fileName } of missingModulesData) {\n if (!(globalThis as any).__PlasmicBundlePromises[fileName]) {\n (globalThis as any).__PlasmicBundlePromises[fileName] = new Promise(\n (resolve) => {\n (globalThis as any).__PlasmicBundlePromises[\n \"__promise_resolve_\" + fileName\n ] = resolve;\n }\n );\n }\n }\n }\n\n return (\n <>\n <Script\n strategy=\"beforeInteractive\"\n key={\"init:\" + missingModulesData.map((m) => m.fileName).join(\";\")}\n id={\"init:\" + missingModulesData.map((m) => m.fileName).join(\";\")}\n dangerouslySetInnerHTML={{\n __html: `\n if (!globalThis.__PlasmicBundlePromises) {\n globalThis.__PlasmicBundlePromises = {};\n }\n ${missingModulesData\n .map(\n (\n module\n ) => `if (!globalThis.__PlasmicBundlePromises[${JSON.stringify(\n module.fileName\n )}]) {\n globalThis.__PlasmicBundlePromises[${JSON.stringify(\n module.fileName\n )}] = new Promise((resolve) => {\n globalThis.__PlasmicBundlePromises[${JSON.stringify(\n \"__promise_resolve_\" + module.fileName\n )}] = resolve;\n })\n }\n `\n )\n .join(\"\\n\")}`.trim(),\n }}\n ></Script>\n <Script\n strategy=\"beforeInteractive\"\n key={\"load:\" + missingModulesData.map((m) => m.fileName).join(\";\")}\n id={\"load:\" + missingModulesData.map((m) => m.fileName).join(\";\")}\n defer\n async\n src={loader.getChunksUrl(prefetchedData.bundle, missingModulesData)}\n />\n </>\n );\n}\n", "import { LoaderBundleOutput } from \"@plasmicapp/loader-core\";\nimport type { InitOptions } from \"@plasmicapp/loader-react/react-server-conditional\";\nimport type * as Watcher from \"@plasmicapp/watcher\";\nimport { PHASE_PRODUCTION_BUILD } from \"next/constants\";\nimport path from \"path\";\nimport { serverRequire, serverRequireFs } from \"./server-require\";\nimport type { NextInitOptions } from \"./shared-exports\";\n\nclass FileCache {\n constructor(private filePath: string) {}\n\n async get() {\n const fs = await serverRequireFs();\n try {\n await fs.promises.mkdir(path.dirname(this.filePath), { recursive: true });\n const data = (await fs.promises.readFile(this.filePath)).toString();\n return JSON.parse(data);\n } catch {\n return undefined;\n }\n }\n\n async set(data: LoaderBundleOutput) {\n const fs = await serverRequireFs();\n try {\n await fs.promises.writeFile(this.filePath, JSON.stringify(data));\n } catch (err) {\n console.warn(`Error writing to Plasmic cache: ${err}`);\n }\n }\n\n async clear() {\n const fs = await serverRequireFs();\n try {\n fs.promises.unlink(this.filePath);\n } catch (err) {\n // noop\n }\n }\n}\n\nfunction hashString(str: string) {\n let h = 0,\n i = 0;\n for (; i < str.length; h &= h) h = 31 * h + str.charCodeAt(i++);\n return Math.abs(h);\n}\n\nfunction makeCache(opts: InitOptions) {\n const cacheDir = path.resolve(process.cwd(), \".next\", \".plasmic\");\n const cachePath = path.join(\n cacheDir,\n `plasmic-${hashString(\n [...opts.projects.map((p) => `${p.id}@${p.version ?? \"\"}`)]\n .sort()\n .join(\"-\")\n )}${opts.preview ? \"-preview\" : \"\"}-cache.json`\n );\n return new FileCache(cachePath);\n}\n\nexport function initPlasmicLoaderWithCache<\n T extends {\n clearCache(): void;\n }\n>(\n initFn: (opts: InitOptions) => T,\n { nextNavigation, ...opts }: NextInitOptions\n): T {\n const isBrowser = typeof window !== \"undefined\";\n const isProd = process.env.NODE_ENV === \"production\";\n const isBuildPhase = process.env.NEXT_PHASE === PHASE_PRODUCTION_BUILD;\n const cache = isBrowser || isProd ? undefined : makeCache(opts);\n const loader = initFn({\n onClientSideFetch: \"warn\",\n ...opts,\n cache,\n platform: \"nextjs\",\n platformOptions: {\n nextjs: {\n appDir: !!nextNavigation,\n },\n },\n // For Nextjs 12, revalidate may in fact re-use an existing instance\n // of PlasmicComponentLoader that's already in memory, so we need to\n // make sure we don't re-use the data cached in memory.\n // We also enforce this for dev mode, so that we don't have to restart\n // the dev server, in case getStaticProps() re-uses the same PlasmicComponentLoader\n // We also enforce that during build phase, we re-use the data cached in memory\n // to avoid re-fetching the data from Plasmic servers.\n alwaysFresh: !isBuildPhase && !isBrowser,\n });\n\n if (!isProd) {\n const stringOpts = JSON.stringify(opts);\n\n if (process.env.PLASMIC_OPTS && process.env.PLASMIC_OPTS !== stringOpts) {\n console.warn(\n `PLASMIC: We detected that you created a new PlasmicLoader with different configurations. You may need to restart your dev server.\\n`\n );\n }\n\n process.env.PLASMIC_OPTS = stringOpts;\n }\n\n if (cache) {\n if (!isProd) {\n if (process.env.PLASMIC_WATCHED !== \"true\") {\n (async () => {\n process.env.PLASMIC_WATCHED = \"true\";\n console.log(`Subscribing to Plasmic changes...`);\n\n // Import using serverRequire, so webpack doesn't bundle us into client bundle\n try {\n const PlasmicRemoteChangeWatcher = (\n await serverRequire<typeof Watcher>(\"@plasmicapp/watcher\")\n ).PlasmicRemoteChangeWatcher;\n const watcher = new PlasmicRemoteChangeWatcher({\n projects: opts.projects,\n host: opts.host,\n });\n\n const clearCache = () => {\n cache.clear();\n loader.clearCache();\n };\n\n watcher.subscribe({\n onUpdate: () => {\n if (opts.preview) {\n clearCache();\n }\n },\n onPublish: () => {\n if (!opts.preview) {\n clearCache();\n }\n },\n });\n } catch (e) {\n console.warn(\"Couldn't subscribe to Plasmic changes\", e);\n }\n })();\n }\n } else {\n cache.clear();\n loader.clearCache();\n }\n }\n return loader;\n}\n", "import type * as FS from \"fs\";\n\nlet secretRequire: ((module: string) => any) | undefined;\ntry {\n // Secretly use require/import without webpack knowing\n // eslint-disable-next-line\n secretRequire = eval(\"require\");\n} catch (err) {\n try {\n // eslint-disable-next-line\n secretRequire = eval(\"(module) => import(module)\");\n } catch (err) {\n secretRequire = undefined;\n }\n}\n\nexport async function serverRequire<T>(module: string): Promise<T> {\n if (!secretRequire) {\n throw new Error(\n `Unexpected serverRequire() -- can only do this from a Node server!`\n );\n }\n return secretRequire(module) as Promise<T>;\n}\n\nexport async function serverRequireFs() {\n return serverRequire<typeof FS>(\"fs\");\n}\n", "import type { NextRouter } from \"next/router\";\nimport * as React from \"react\";\n\nfunction tryRequire(module: string) {\n try {\n return require(module);\n } catch {\n return undefined;\n }\n}\n\nconst RouterImport: any =\n tryRequire(\"next/dist/shared/lib/router-context.shared-runtime\") ??\n tryRequire(\"next/dist/shared/lib/router-context\");\n\nconst fakeRouter: NextRouter = {\n push: async () => {\n return true;\n },\n replace: async () => {\n return true;\n },\n reload: () => {},\n back: () => {},\n forward: () => {},\n prefetch: async () => {\n return;\n },\n beforePopState: () => {},\n events: {\n on: () => {},\n off: () => {},\n emit: () => {},\n },\n route: \"/\",\n asPath: \"/\",\n basePath: \"/\",\n pathname: \"/\",\n query: {},\n isFallback: false,\n isLocaleDomain: false,\n isReady: true,\n isPreview: false,\n};\n\nexport function wrapRouterContext(element: React.ReactElement) {\n return !!RouterImport.RouterContext?.Provider ? (\n <RouterImport.RouterContext.Provider value={fakeRouter}>\n {element}\n </RouterImport.RouterContext.Provider>\n ) : (\n element\n );\n}\n"],
5
- "mappings": "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",
6
- "names": ["import_loader_react", "React", "err", "module", "path", "err", "_a", "module", "_a", "module", "_a", "opts", "NextHead", "NextLink", "internalExtractPlasmicQueryData", "PlasmicNextLink", "CommonPlasmicRootProvider", "Script"]
4
+ "sourcesContent": ["import type { CodeModule } from \"@plasmicapp/loader-core\";\nimport {\n ComponentLookupSpec,\n extractPlasmicQueryData as internalExtractPlasmicQueryData,\n FetchComponentDataOpts as InternalFetchComponentDataOpts,\n InternalPlasmicComponentLoader,\n PlasmicComponentLoader,\n PlasmicRootProvider as CommonPlasmicRootProvider,\n} from \"@plasmicapp/loader-react\";\nimport { IncomingMessage, ServerResponse } from \"http\";\nexport {\n DataCtxReader,\n DataProvider,\n GlobalActionsContext,\n GlobalActionsProvider,\n PageParamsProvider,\n PlasmicCanvasContext,\n PlasmicCanvasHost,\n PlasmicComponent,\n plasmicPrepass,\n repeatedElement,\n useDataEnv,\n usePlasmicCanvasContext,\n usePlasmicComponent,\n usePlasmicQueryData,\n useSelector,\n useSelectors,\n} from \"@plasmicapp/loader-react\";\nexport type {\n CodeComponentMeta,\n PlasmicTranslator,\n PropType,\n TokenRegistration,\n} from \"@plasmicapp/loader-react\";\nexport { ExtractPlasmicQueryData as __EXPERMIENTAL__ExtractPlasmicQueryData } from \"@plasmicapp/nextjs-app-router\";\nexport * from \"./shared-exports\";\n// NextHead and NextLink must be default imported (`import Pkg`) instead of a namespace import (`import * as Pkg`).\n// Otherwise, there's a Next.js 12 bug when referencing these dependencies due to default import interop.\n// The transpiled CommonJS code would create a `default` field on the package,\n// causing React to think it's an invalid React object:\n// ```\n// const NextHead = __defaultInterop(require('next/head.js'))\n// assert(typeof NextHead === 'object')\n// assert(typeof NextHead.default === 'function')\n// ```\nimport NextHead from \"next/head.js\";\nimport NextLink from \"next/link.js\";\nimport * as NextRouter from \"next/router.js\";\nimport Script from \"next/script\";\nimport * as React from \"react\";\nimport { initPlasmicLoaderWithCache } from \"./cache\";\nimport { wrapRouterContext } from \"./mocks\";\nimport type { ComponentRenderData, NextInitOptions } from \"./shared-exports\";\n\ntype ServerRequest = IncomingMessage & {\n cookies: {\n [key: string]: string;\n };\n};\n\nconst reactMajorVersion = +React.version.split(\".\")[0];\n\nfunction filterCodeFromRenderData(data: ComponentRenderData) {\n if (reactMajorVersion >= 18 && !!data.bundle.bundleKey) {\n // Keep the entrypoints\n const entrypoints = new Set([\n ...data.entryCompMetas.map((compMeta) => compMeta.entry),\n \"root-provider.js\",\n ...data.bundle.projects\n .map((x) => x.globalContextsProviderFileName)\n .filter((x) => !!x),\n ...data.bundle.components\n .filter((c) => c.isGlobalContextProvider)\n .map((c) => c.entry),\n ...data.bundle.globalGroups.map((g) => g.contextFile),\n ]);\n\n data.bundle.modules.browser = data.bundle.modules.browser.map((module) => {\n if (module.type !== \"code\" || entrypoints.has(module.fileName)) {\n return module;\n }\n return { ...module, code: \"\" };\n });\n }\n}\n\nexport interface FetchComponentDataOpts extends InternalFetchComponentDataOpts {\n /**\n * Defer loading code chunks to script tags, reducing initial payload size.\n */\n deferChunks?: boolean;\n}\n\nexport class NextJsPlasmicComponentLoader extends PlasmicComponentLoader {\n constructor(internal: InternalPlasmicComponentLoader) {\n super(internal);\n }\n\n async getActiveVariation(opts: {\n req?: ServerRequest;\n res?: ServerResponse;\n known?: Record<string, string>;\n traits: Record<string, string | number | boolean>;\n }) {\n const extractBuiltinTraits = () => {\n const url = new URL(\n opts.req?.url ?? \"/\",\n `https://${opts.req?.headers.host ?? \"server.side\"}`\n );\n return {\n pageUrl: url.href,\n };\n };\n\n return this._getActiveVariation({\n traits: {\n ...extractBuiltinTraits(),\n ...opts.traits,\n },\n getKnownValue: (key: string) => {\n if (opts.known) {\n return opts.known[key];\n } else {\n return opts.req?.cookies[`plasmic:${key}`] ?? undefined;\n }\n },\n updateKnownValue: (key: string, value: string) => {\n if (opts.res) {\n const cookie = `plasmic:${key}=${value}`;\n const resCookie = opts.res?.getHeader(\"Set-Cookie\") ?? [];\n let newCookies: string[] = [];\n if (Array.isArray(resCookie)) {\n newCookies = [...resCookie, `plasmic:${key}=${value}`];\n } else {\n newCookies = [`${resCookie}`, cookie];\n }\n\n opts.res?.setHeader(\"Set-Cookie\", newCookies);\n }\n },\n });\n }\n\n maybeFetchComponentData(\n specs: ComponentLookupSpec[],\n opts?: FetchComponentDataOpts\n ): Promise<ComponentRenderData | null>;\n maybeFetchComponentData(\n ...specs: ComponentLookupSpec[]\n ): Promise<ComponentRenderData | null>;\n async maybeFetchComponentData(\n ...args: any[]\n ): Promise<ComponentRenderData | null> {\n const data = await super.maybeFetchComponentData(...args);\n const { opts } = parseFetchComponentDataArgs(...args);\n if (\n data &&\n (opts?.deferChunks ||\n (opts?.deferChunks === undefined && data.bundle.deferChunksByDefault))\n ) {\n filterCodeFromRenderData(data);\n }\n return data;\n }\n\n fetchComponentData(\n ...specs: ComponentLookupSpec[]\n ): Promise<ComponentRenderData>;\n fetchComponentData(\n specs: ComponentLookupSpec[],\n opts?: FetchComponentDataOpts\n ): Promise<ComponentRenderData>;\n async fetchComponentData(...args: any[]): Promise<ComponentRenderData> {\n const data = await super.fetchComponentData(...args);\n const { opts } = parseFetchComponentDataArgs(...args);\n if (\n opts?.deferChunks ||\n (opts?.deferChunks === undefined && data.bundle.deferChunksByDefault)\n ) {\n filterCodeFromRenderData(data);\n }\n return data;\n }\n}\n\nfunction parseFetchComponentDataArgs(\n specs: ComponentLookupSpec[],\n opts?: FetchComponentDataOpts\n): { specs: ComponentLookupSpec[]; opts?: FetchComponentDataOpts };\nfunction parseFetchComponentDataArgs(...specs: ComponentLookupSpec[]): {\n specs: ComponentLookupSpec[];\n opts?: FetchComponentDataOpts;\n};\nfunction parseFetchComponentDataArgs(...args: any[]) {\n let specs: ComponentLookupSpec[];\n let opts: FetchComponentDataOpts | undefined;\n if (Array.isArray(args[0])) {\n specs = args[0];\n opts = args[1];\n } else {\n specs = args;\n opts = undefined;\n }\n return { specs, opts };\n}\n\nexport function initPlasmicLoader(opts: NextInitOptions) {\n const loader = initPlasmicLoaderWithCache<NextJsPlasmicComponentLoader>(\n (opts) =>\n new NextJsPlasmicComponentLoader(\n new InternalPlasmicComponentLoader(opts)\n ),\n opts\n );\n loader.registerModules({\n \"next/head\": NextHead,\n \"next/link\": NextLink,\n \"next/router\": NextRouter,\n });\n if (opts.nextNavigation) {\n loader.registerModules({\n \"next/navigation\": opts.nextNavigation,\n });\n }\n return loader;\n}\n\n/**\n * Performs a prepass over Plasmic content, kicking off the necessary\n * data fetches, and populating the fetched data into a cache. This\n * cache can be passed as prefetchedQueryData into PlasmicRootProvider.\n *\n * To limit rendering errors that can occur when you do this, we recommend\n * that you pass in _only_ the PlasmicComponents that you are planning to use\n * as the argument. For example:\n *\n * const cache = await extractPlasmicQueryData(\n * <PlasmicRootProvider loader={PLASMIC} prefetchedData={plasmicData}>\n * <PlasmicComponent component=\"Home\" componentProps={{\n * // Specify the component prop overrides you are planning to use\n * // to render the page, as they may change what data is fetched.\n * ...\n * }} />\n * <PlasmicComponent component=\"NavBar\" componentProps={{\n * ...\n * }} />\n * ...\n * </PlasmicRootProvider>\n * );\n *\n * If your PlasmicComponent will be wrapping components that require special\n * context set up, you should also wrap the element above with those context\n * providers.\n *\n * You should avoid passing in elements that are not related to Plasmic, as any\n * rendering errors from those elements during the prepass may result in data\n * not being populated in the cache.\n *\n * @param element a React element containing instances of PlasmicComponent.\n * Will attempt to satisfy all data needs from usePlasmicDataQuery()\n * in this element tree.\n * @returns an object mapping query key to fetched data\n */\nexport async function extractPlasmicQueryData(element: React.ReactElement) {\n return internalExtractPlasmicQueryData(await wrapRouterContext(element));\n}\n\nconst PlasmicNextLink = React.forwardRef(function PlasmicNextLink(\n props: React.ComponentProps<typeof NextLink>,\n ref: React.Ref<HTMLAnchorElement>\n) {\n // Basically renders NextLink, except when href is undefined,\n // which freaks out NextLink :-/\n if (props.href) {\n const {\n href,\n replace,\n scroll,\n shallow,\n passHref,\n prefetch,\n locale,\n ...rest\n } = props;\n // If this is a fragment identifier link, then we set\n // scroll={false} so that smooth scrolling works\n const isFragment = typeof href === \"string\" && href.startsWith(\"#\");\n // We use legacyBehavior, because we don't know which\n // version of next the user has installed\n return (\n <NextLink\n href={href}\n replace={replace}\n scroll={scroll != null ? scroll : isFragment ? false : undefined}\n shallow={shallow}\n passHref={passHref}\n prefetch={prefetch}\n locale={locale}\n {...({ legacyBehavior: true } as any)}\n >\n <a {...rest} ref={ref} />\n </NextLink>\n );\n } else {\n return <a {...props} href={undefined} ref={ref} />;\n }\n});\n\nexport function PlasmicRootProvider(\n // We omit Head but still allow override for Link\n props: Omit<\n React.ComponentProps<typeof CommonPlasmicRootProvider>,\n \"Head\"\n > & { skipChunks?: boolean }\n) {\n return (\n <>\n {!props.skipChunks &&\n renderDynamicPayloadScripts(props.loader, props.prefetchedData)}\n <CommonPlasmicRootProvider\n Head={NextHead}\n Link={PlasmicNextLink}\n {...props}\n />\n </>\n );\n}\n\nfunction renderDynamicPayloadScripts(\n loader: PlasmicComponentLoader,\n prefetchedData: ComponentRenderData | undefined\n) {\n const missingModulesData =\n prefetchedData &&\n prefetchedData.bundle.modules.browser.filter(\n (module): module is CodeModule => module.type === \"code\" && !module.code\n );\n if (!missingModulesData || missingModulesData.length === 0) {\n return null;\n }\n\n const isBrowser = typeof window !== \"undefined\";\n\n if (isBrowser) {\n // `next/script` seems to not be correctly added to `<head>` in the initial\n // HTML sometimes when using custom documents:\n // https://linear.app/plasmic/issue/PLA-10652\n\n // Make sure to create the promises in this case - the script to actually fetch\n // the chunks will be added once hydration is completed.\n if (!(globalThis as any).__PlasmicBundlePromises) {\n (globalThis as any).__PlasmicBundlePromises = {};\n }\n for (const { fileName } of missingModulesData) {\n if (!(globalThis as any).__PlasmicBundlePromises[fileName]) {\n (globalThis as any).__PlasmicBundlePromises[fileName] = new Promise(\n (resolve) => {\n (globalThis as any).__PlasmicBundlePromises[\n \"__promise_resolve_\" + fileName\n ] = resolve;\n }\n );\n }\n }\n }\n\n return (\n <>\n <Script\n strategy=\"beforeInteractive\"\n key={\"init:\" + missingModulesData.map((m) => m.fileName).join(\";\")}\n id={\"init:\" + missingModulesData.map((m) => m.fileName).join(\";\")}\n dangerouslySetInnerHTML={{\n __html: `\n if (!globalThis.__PlasmicBundlePromises) {\n globalThis.__PlasmicBundlePromises = {};\n }\n ${missingModulesData\n .map(\n (\n module\n ) => `if (!globalThis.__PlasmicBundlePromises[${JSON.stringify(\n module.fileName\n )}]) {\n globalThis.__PlasmicBundlePromises[${JSON.stringify(\n module.fileName\n )}] = new Promise((resolve) => {\n globalThis.__PlasmicBundlePromises[${JSON.stringify(\n \"__promise_resolve_\" + module.fileName\n )}] = resolve;\n })\n }\n `\n )\n .join(\"\\n\")}`.trim(),\n }}\n ></Script>\n <Script\n strategy=\"beforeInteractive\"\n key={\"load:\" + missingModulesData.map((m) => m.fileName).join(\";\")}\n id={\"load:\" + missingModulesData.map((m) => m.fileName).join(\";\")}\n defer\n async\n src={loader.getChunksUrl(prefetchedData.bundle, missingModulesData)}\n />\n </>\n );\n}\n", "import { LoaderBundleOutput } from \"@plasmicapp/loader-core\";\nimport type { InitOptions } from \"@plasmicapp/loader-react/react-server-conditional\";\nimport type * as Watcher from \"@plasmicapp/watcher\";\nimport { PHASE_PRODUCTION_BUILD } from \"next/constants\";\nimport path from \"path\";\nimport { serverRequire, serverRequireFs } from \"./server-require\";\nimport type { NextInitOptions } from \"./shared-exports\";\n\nclass FileCache {\n constructor(private filePath: string) {}\n\n async get() {\n const fs = await serverRequireFs();\n try {\n await fs.promises.mkdir(path.dirname(this.filePath), { recursive: true });\n const data = (await fs.promises.readFile(this.filePath)).toString();\n return JSON.parse(data);\n } catch {\n return undefined;\n }\n }\n\n async set(data: LoaderBundleOutput) {\n const fs = await serverRequireFs();\n try {\n await fs.promises.writeFile(this.filePath, JSON.stringify(data));\n } catch (err) {\n console.warn(`Error writing to Plasmic cache: ${err}`);\n }\n }\n\n async clear() {\n const fs = await serverRequireFs();\n try {\n fs.promises.unlink(this.filePath);\n } catch (err) {\n // noop\n }\n }\n}\n\nfunction hashString(str: string) {\n let h = 0,\n i = 0;\n for (; i < str.length; h &= h) h = 31 * h + str.charCodeAt(i++);\n return Math.abs(h);\n}\n\nfunction makeCache(opts: InitOptions) {\n const cacheDir = path.resolve(process.cwd(), \".next\", \".plasmic\");\n const cachePath = path.join(\n cacheDir,\n `plasmic-${hashString(\n [...opts.projects.map((p) => `${p.id}@${p.version ?? \"\"}`)]\n .sort()\n .join(\"-\")\n )}${opts.preview ? \"-preview\" : \"\"}-cache.json`\n );\n return new FileCache(cachePath);\n}\n\nexport function initPlasmicLoaderWithCache<\n T extends {\n clearCache(): void;\n }\n>(\n initFn: (opts: InitOptions) => T,\n { nextNavigation, ...opts }: NextInitOptions\n): T {\n const isBrowser = typeof window !== \"undefined\";\n const isProd = process.env.NODE_ENV === \"production\";\n const isBuildPhase = process.env.NEXT_PHASE === PHASE_PRODUCTION_BUILD;\n const cache = isBrowser || isProd ? undefined : makeCache(opts);\n const loader = initFn({\n onClientSideFetch: \"warn\",\n ...opts,\n cache,\n platform: \"nextjs\",\n platformOptions: {\n nextjs: {\n appDir: !!nextNavigation,\n },\n },\n // For Nextjs 12, revalidate may in fact re-use an existing instance\n // of PlasmicComponentLoader that's already in memory, so we need to\n // make sure we don't re-use the data cached in memory.\n // We also enforce this for dev mode, so that we don't have to restart\n // the dev server, in case getStaticProps() re-uses the same PlasmicComponentLoader\n // We also enforce that during build phase, we re-use the data cached in memory\n // to avoid re-fetching the data from Plasmic servers.\n alwaysFresh: !isBuildPhase && !isBrowser,\n });\n\n if (!isProd) {\n const stringOpts = JSON.stringify(opts);\n\n if (process.env.PLASMIC_OPTS && process.env.PLASMIC_OPTS !== stringOpts) {\n console.warn(\n `PLASMIC: We detected that you created a new PlasmicLoader with different configurations. You may need to restart your dev server.\\n`\n );\n }\n\n process.env.PLASMIC_OPTS = stringOpts;\n }\n\n if (cache) {\n if (!isProd) {\n if (process.env.PLASMIC_WATCHED !== \"true\") {\n (async () => {\n process.env.PLASMIC_WATCHED = \"true\";\n console.log(`Subscribing to Plasmic changes...`);\n\n // Import using serverRequire, so webpack doesn't bundle us into client bundle\n try {\n const PlasmicRemoteChangeWatcher = (\n await serverRequire<typeof Watcher>(\"@plasmicapp/watcher\")\n ).PlasmicRemoteChangeWatcher;\n const watcher = new PlasmicRemoteChangeWatcher({\n projects: opts.projects,\n host: opts.host,\n });\n\n const clearCache = () => {\n cache.clear();\n loader.clearCache();\n };\n\n watcher.subscribe({\n onUpdate: () => {\n if (opts.preview) {\n clearCache();\n }\n },\n onPublish: () => {\n if (!opts.preview) {\n clearCache();\n }\n },\n });\n } catch (e) {\n console.warn(\"Couldn't subscribe to Plasmic changes\", e);\n }\n })();\n }\n } else {\n cache.clear();\n loader.clearCache();\n }\n }\n return loader;\n}\n", "import type * as FS from \"fs\";\n\nlet secretRequire: ((module: string) => any) | undefined;\ntry {\n // Secretly use require/import without webpack knowing\n // eslint-disable-next-line\n secretRequire = eval(\"require\");\n} catch (err) {\n try {\n // eslint-disable-next-line\n secretRequire = eval(\"(module) => import(module)\");\n } catch (err) {\n secretRequire = undefined;\n }\n}\n\nexport async function serverRequire<T>(module: string): Promise<T> {\n if (!secretRequire) {\n throw new Error(\n `Unexpected serverRequire() -- can only do this from a Node server!`\n );\n }\n return secretRequire(module) as Promise<T>;\n}\n\nexport async function tryServerRequire<T>(\n module: string\n): Promise<T | undefined> {\n try {\n const require = await serverRequire<T>(module);\n return require;\n } catch {\n return undefined;\n }\n}\n\nexport async function tryServerRequires<T>(\n modules: string[]\n): Promise<T | undefined> {\n for (const module of modules) {\n const require = await tryServerRequire<T>(module);\n if (require != null) {\n return require;\n }\n }\n return undefined;\n}\n\nexport async function serverRequireFs() {\n return serverRequire<typeof FS>(\"fs\");\n}\n", "import type * as RouterContextType from \"next/dist/shared/lib/router-context.shared-runtime\";\nimport type { NextRouter } from \"next/router\";\nimport * as React from \"react\";\nimport { tryServerRequires } from \"./server-require\";\n\nconst fakeRouter: NextRouter = {\n push: async () => {\n return true;\n },\n replace: async () => {\n return true;\n },\n reload: () => {},\n back: () => {},\n forward: () => {},\n prefetch: async () => {\n return;\n },\n beforePopState: () => {},\n events: {\n on: () => {},\n off: () => {},\n emit: () => {},\n },\n route: \"/\",\n asPath: \"/\",\n basePath: \"/\",\n pathname: \"/\",\n query: {},\n isFallback: false,\n isLocaleDomain: false,\n isReady: true,\n isPreview: false,\n};\n\nexport async function wrapRouterContext(element: React.ReactElement) {\n const RouterContext = (\n await tryServerRequires<typeof RouterContextType>([\n \"next/dist/shared/lib/router-context.shared-runtime\",\n \"next/dist/shared/lib/router-context\",\n ])\n )?.RouterContext;\n return !!RouterContext?.Provider ? (\n <RouterContext.Provider value={fakeRouter}>\n {element}\n </RouterContext.Provider>\n ) : (\n element\n );\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["import_loader_react", "React", "err", "module", "require", "path", "err", "module", "opts", "NextHead", "NextLink", "internalExtractPlasmicQueryData", "PlasmicNextLink", "CommonPlasmicRootProvider", "Script"]
7
7
  }
@@ -85,6 +85,27 @@ function serverRequire(module) {
85
85
  return secretRequire(module);
86
86
  });
87
87
  }
88
+ function tryServerRequire(module) {
89
+ return __async(this, null, function* () {
90
+ try {
91
+ const require2 = yield serverRequire(module);
92
+ return require2;
93
+ } catch (e) {
94
+ return void 0;
95
+ }
96
+ });
97
+ }
98
+ function tryServerRequires(modules) {
99
+ return __async(this, null, function* () {
100
+ for (const module of modules) {
101
+ const require2 = yield tryServerRequire(module);
102
+ if (require2 != null) {
103
+ return require2;
104
+ }
105
+ }
106
+ return void 0;
107
+ });
108
+ }
88
109
  function serverRequireFs() {
89
110
  return __async(this, null, function* () {
90
111
  return serverRequire("fs");
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/react-server.tsx", "../src/cache.ts", "../src/server-require.ts"],
4
- "sourcesContent": ["import \"server-only\";\n\nimport {\n InternalPlasmicComponentLoader,\n PlasmicComponentLoader,\n} from \"@plasmicapp/loader-react/react-server\";\nimport type { IncomingMessage, ServerResponse } from \"http\";\nimport NextHead from \"next/head.js\";\nimport NextLink from \"next/link.js\";\nimport * as NextRouter from \"next/router.js\";\nimport { initPlasmicLoaderWithCache } from \"./cache\";\nimport type { NextInitOptions } from \"./shared-exports\";\n\nimport { __EXPERMIENTAL__extractPlasmicQueryData as internalExtractPlasmicQueryData } from \"@plasmicapp/loader-react/react-server\";\nimport { ExtractPlasmicQueryData } from \"@plasmicapp/nextjs-app-router\";\nimport {\n fetchExtractedHeadMetadata,\n fetchExtractedQueryData,\n withPlasmicMetadata,\n} from \"@plasmicapp/nextjs-app-router/react-server\";\n\nexport * from \"./shared-exports\";\nexport {\n fetchExtractedQueryData as __EXPERMIENTAL__fetchExtractedQueryData,\n fetchExtractedHeadMetadata as __EXPERMIENTAL__fetchExtractedHeadMetadata,\n withPlasmicMetadata as __EXPERMIENTAL__withPlasmicMetadata,\n};\n\nimport React from \"react\";\nimport type * as ClientExports from \".\";\n\ntype ServerRequest = IncomingMessage & {\n cookies: {\n [key: string]: string;\n };\n};\n\nexport class NextJsPlasmicComponentLoader extends PlasmicComponentLoader {\n constructor(internal: InternalPlasmicComponentLoader) {\n super(internal);\n }\n\n async getActiveVariation(opts: {\n req?: ServerRequest;\n res?: ServerResponse;\n known?: Record<string, string>;\n traits: Record<string, string | number | boolean>;\n }) {\n const extractBuiltinTraits = () => {\n const url = new URL(\n opts.req?.url ?? \"/\",\n `https://${opts.req?.headers.host ?? \"server.side\"}`\n );\n return {\n pageUrl: url.href,\n };\n };\n\n return this._getActiveVariation({\n traits: {\n ...extractBuiltinTraits(),\n ...opts.traits,\n },\n getKnownValue: (key: string) => {\n if (opts.known) {\n return opts.known[key];\n } else {\n return opts.req?.cookies[`plasmic:${key}`] ?? undefined;\n }\n },\n updateKnownValue: (key: string, value: string) => {\n if (opts.res) {\n const cookie = `plasmic:${key}=${value}`;\n const resCookie = opts.res?.getHeader(\"Set-Cookie\") ?? [];\n let newCookies: string[] = [];\n if (Array.isArray(resCookie)) {\n newCookies = [...resCookie, `plasmic:${key}=${value}`];\n } else {\n newCookies = [`${resCookie}`, cookie];\n }\n\n opts.res?.setHeader(\"Set-Cookie\", newCookies);\n }\n },\n });\n }\n}\n\nexport function initPlasmicLoader(opts: NextInitOptions) {\n const loader = initPlasmicLoaderWithCache<NextJsPlasmicComponentLoader>(\n (opts) =>\n new PlasmicComponentLoader(new InternalPlasmicComponentLoader(opts)),\n opts\n );\n loader.registerModules({\n \"next/head\": NextHead,\n \"next/link\": NextLink,\n \"next/router\": NextRouter,\n });\n if (opts.nextNavigation) {\n loader.registerModules({\n \"next/navigation\": opts.nextNavigation,\n });\n }\n return loader;\n}\n\nexport const __EXPERMIENTAL__extractPlasmicQueryData: (\n element: React.ReactElement,\n // We can't use `NextJsPlasmicComponentLoader` or `PlasmicComponentLoader`\n // types because they refer to the react-server version, which Typescript\n // doesn't recognize as compatible with the client version (whose type is\n // also the one exported from `react-server-conditional` imports).\n loader: ClientExports.NextJsPlasmicComponentLoader\n) => Promise<Record<string, any>> = internalExtractPlasmicQueryData as any;\n\n/**\n * Helper function to extract Plasmic data.\n *\n * Given the <PlasmicClientRootProvider> element and current pathname + search\n * params, returns:\n * - The extracted query data, if `plasmicSsr` search param is set\n * - A copy of the root provider element with the extracted query data, otherwise\n */\nexport async function __EXPERMIENTAL__withExtractPlasmicQueryData(\n plasmicRootProvider: React.ReactElement,\n {\n pathname,\n searchParams,\n }: {\n pathname: string;\n searchParams: Record<string, string | string[]> | undefined;\n }\n) {\n const isPlasmicSsr =\n !!searchParams?.[\"plasmicSsr\"] && searchParams?.[\"plasmicSsr\"] !== \"false\";\n\n // If `plasmicSsr` search param is set, just wrap the root provider inside\n // <ExtractPlasmicQueryData>\n if (isPlasmicSsr) {\n return (\n <ExtractPlasmicQueryData>{plasmicRootProvider}</ExtractPlasmicQueryData>\n );\n }\n\n // Otherwise, fetch the same endpoint, but setting `plasmicSsr` to extract the\n // query data.\n const prepassHost =\n process.env.PLASMIC_PREPASS_HOST ??\n (process.env.VERCEL_URL && `https://${process.env.VERCEL_URL}`) ??\n `http://localhost:${process.env.PORT ?? 3000}`;\n\n // Build a copy of the search params\n const newSearchParams = new URLSearchParams(\n Object.entries(searchParams ?? {}).flatMap(([key, values]) =>\n Array.isArray(values) ? values.map((v) => [key, v]) : [[key, values]]\n )\n );\n\n // Set `plasmicSsr` search param to indicate you are using this endpoint\n // to extract query data.\n newSearchParams.set(\"plasmicSsr\", \"true\");\n\n if (process.env.VERCEL_AUTOMATION_BYPASS_SECRET) {\n // If protection bypass is enabled, use it to ensure fetching from\n // the SSR endpoint will not return the authentication page HTML\n newSearchParams.set(\n \"x-vercel-protection-bypass\",\n process.env.VERCEL_AUTOMATION_BYPASS_SECRET\n );\n }\n\n // Fetch the data from the endpoint using the new search params\n const prefetchedQueryData = await fetchExtractedQueryData(\n `${prepassHost}${pathname}?${newSearchParams.toString()}`\n );\n\n // Provide the query data to <PlasmicClientRootProvider>\n return React.cloneElement(plasmicRootProvider, {\n prefetchedQueryData,\n });\n}\n", "import { LoaderBundleOutput } from \"@plasmicapp/loader-core\";\nimport type { InitOptions } from \"@plasmicapp/loader-react/react-server-conditional\";\nimport type * as Watcher from \"@plasmicapp/watcher\";\nimport { PHASE_PRODUCTION_BUILD } from \"next/constants\";\nimport path from \"path\";\nimport { serverRequire, serverRequireFs } from \"./server-require\";\nimport type { NextInitOptions } from \"./shared-exports\";\n\nclass FileCache {\n constructor(private filePath: string) {}\n\n async get() {\n const fs = await serverRequireFs();\n try {\n await fs.promises.mkdir(path.dirname(this.filePath), { recursive: true });\n const data = (await fs.promises.readFile(this.filePath)).toString();\n return JSON.parse(data);\n } catch {\n return undefined;\n }\n }\n\n async set(data: LoaderBundleOutput) {\n const fs = await serverRequireFs();\n try {\n await fs.promises.writeFile(this.filePath, JSON.stringify(data));\n } catch (err) {\n console.warn(`Error writing to Plasmic cache: ${err}`);\n }\n }\n\n async clear() {\n const fs = await serverRequireFs();\n try {\n fs.promises.unlink(this.filePath);\n } catch (err) {\n // noop\n }\n }\n}\n\nfunction hashString(str: string) {\n let h = 0,\n i = 0;\n for (; i < str.length; h &= h) h = 31 * h + str.charCodeAt(i++);\n return Math.abs(h);\n}\n\nfunction makeCache(opts: InitOptions) {\n const cacheDir = path.resolve(process.cwd(), \".next\", \".plasmic\");\n const cachePath = path.join(\n cacheDir,\n `plasmic-${hashString(\n [...opts.projects.map((p) => `${p.id}@${p.version ?? \"\"}`)]\n .sort()\n .join(\"-\")\n )}${opts.preview ? \"-preview\" : \"\"}-cache.json`\n );\n return new FileCache(cachePath);\n}\n\nexport function initPlasmicLoaderWithCache<\n T extends {\n clearCache(): void;\n }\n>(\n initFn: (opts: InitOptions) => T,\n { nextNavigation, ...opts }: NextInitOptions\n): T {\n const isBrowser = typeof window !== \"undefined\";\n const isProd = process.env.NODE_ENV === \"production\";\n const isBuildPhase = process.env.NEXT_PHASE === PHASE_PRODUCTION_BUILD;\n const cache = isBrowser || isProd ? undefined : makeCache(opts);\n const loader = initFn({\n onClientSideFetch: \"warn\",\n ...opts,\n cache,\n platform: \"nextjs\",\n platformOptions: {\n nextjs: {\n appDir: !!nextNavigation,\n },\n },\n // For Nextjs 12, revalidate may in fact re-use an existing instance\n // of PlasmicComponentLoader that's already in memory, so we need to\n // make sure we don't re-use the data cached in memory.\n // We also enforce this for dev mode, so that we don't have to restart\n // the dev server, in case getStaticProps() re-uses the same PlasmicComponentLoader\n // We also enforce that during build phase, we re-use the data cached in memory\n // to avoid re-fetching the data from Plasmic servers.\n alwaysFresh: !isBuildPhase && !isBrowser,\n });\n\n if (!isProd) {\n const stringOpts = JSON.stringify(opts);\n\n if (process.env.PLASMIC_OPTS && process.env.PLASMIC_OPTS !== stringOpts) {\n console.warn(\n `PLASMIC: We detected that you created a new PlasmicLoader with different configurations. You may need to restart your dev server.\\n`\n );\n }\n\n process.env.PLASMIC_OPTS = stringOpts;\n }\n\n if (cache) {\n if (!isProd) {\n if (process.env.PLASMIC_WATCHED !== \"true\") {\n (async () => {\n process.env.PLASMIC_WATCHED = \"true\";\n console.log(`Subscribing to Plasmic changes...`);\n\n // Import using serverRequire, so webpack doesn't bundle us into client bundle\n try {\n const PlasmicRemoteChangeWatcher = (\n await serverRequire<typeof Watcher>(\"@plasmicapp/watcher\")\n ).PlasmicRemoteChangeWatcher;\n const watcher = new PlasmicRemoteChangeWatcher({\n projects: opts.projects,\n host: opts.host,\n });\n\n const clearCache = () => {\n cache.clear();\n loader.clearCache();\n };\n\n watcher.subscribe({\n onUpdate: () => {\n if (opts.preview) {\n clearCache();\n }\n },\n onPublish: () => {\n if (!opts.preview) {\n clearCache();\n }\n },\n });\n } catch (e) {\n console.warn(\"Couldn't subscribe to Plasmic changes\", e);\n }\n })();\n }\n } else {\n cache.clear();\n loader.clearCache();\n }\n }\n return loader;\n}\n", "import type * as FS from \"fs\";\n\nlet secretRequire: ((module: string) => any) | undefined;\ntry {\n // Secretly use require/import without webpack knowing\n // eslint-disable-next-line\n secretRequire = eval(\"require\");\n} catch (err) {\n try {\n // eslint-disable-next-line\n secretRequire = eval(\"(module) => import(module)\");\n } catch (err) {\n secretRequire = undefined;\n }\n}\n\nexport async function serverRequire<T>(module: string): Promise<T> {\n if (!secretRequire) {\n throw new Error(\n `Unexpected serverRequire() -- can only do this from a Node server!`\n );\n }\n return secretRequire(module) as Promise<T>;\n}\n\nexport async function serverRequireFs() {\n return serverRequire<typeof FS>(\"fs\");\n}\n"],
5
- "mappings": "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",
6
- "names": ["err", "err", "opts"]
4
+ "sourcesContent": ["import \"server-only\";\n\nimport {\n InternalPlasmicComponentLoader,\n PlasmicComponentLoader,\n} from \"@plasmicapp/loader-react/react-server\";\nimport type { IncomingMessage, ServerResponse } from \"http\";\nimport NextHead from \"next/head.js\";\nimport NextLink from \"next/link.js\";\nimport * as NextRouter from \"next/router.js\";\nimport { initPlasmicLoaderWithCache } from \"./cache\";\nimport type { NextInitOptions } from \"./shared-exports\";\n\nimport { __EXPERMIENTAL__extractPlasmicQueryData as internalExtractPlasmicQueryData } from \"@plasmicapp/loader-react/react-server\";\nimport { ExtractPlasmicQueryData } from \"@plasmicapp/nextjs-app-router\";\nimport {\n fetchExtractedHeadMetadata,\n fetchExtractedQueryData,\n withPlasmicMetadata,\n} from \"@plasmicapp/nextjs-app-router/react-server\";\n\nexport * from \"./shared-exports\";\nexport {\n fetchExtractedQueryData as __EXPERMIENTAL__fetchExtractedQueryData,\n fetchExtractedHeadMetadata as __EXPERMIENTAL__fetchExtractedHeadMetadata,\n withPlasmicMetadata as __EXPERMIENTAL__withPlasmicMetadata,\n};\n\nimport React from \"react\";\nimport type * as ClientExports from \".\";\n\ntype ServerRequest = IncomingMessage & {\n cookies: {\n [key: string]: string;\n };\n};\n\nexport class NextJsPlasmicComponentLoader extends PlasmicComponentLoader {\n constructor(internal: InternalPlasmicComponentLoader) {\n super(internal);\n }\n\n async getActiveVariation(opts: {\n req?: ServerRequest;\n res?: ServerResponse;\n known?: Record<string, string>;\n traits: Record<string, string | number | boolean>;\n }) {\n const extractBuiltinTraits = () => {\n const url = new URL(\n opts.req?.url ?? \"/\",\n `https://${opts.req?.headers.host ?? \"server.side\"}`\n );\n return {\n pageUrl: url.href,\n };\n };\n\n return this._getActiveVariation({\n traits: {\n ...extractBuiltinTraits(),\n ...opts.traits,\n },\n getKnownValue: (key: string) => {\n if (opts.known) {\n return opts.known[key];\n } else {\n return opts.req?.cookies[`plasmic:${key}`] ?? undefined;\n }\n },\n updateKnownValue: (key: string, value: string) => {\n if (opts.res) {\n const cookie = `plasmic:${key}=${value}`;\n const resCookie = opts.res?.getHeader(\"Set-Cookie\") ?? [];\n let newCookies: string[] = [];\n if (Array.isArray(resCookie)) {\n newCookies = [...resCookie, `plasmic:${key}=${value}`];\n } else {\n newCookies = [`${resCookie}`, cookie];\n }\n\n opts.res?.setHeader(\"Set-Cookie\", newCookies);\n }\n },\n });\n }\n}\n\nexport function initPlasmicLoader(opts: NextInitOptions) {\n const loader = initPlasmicLoaderWithCache<NextJsPlasmicComponentLoader>(\n (opts) =>\n new PlasmicComponentLoader(new InternalPlasmicComponentLoader(opts)),\n opts\n );\n loader.registerModules({\n \"next/head\": NextHead,\n \"next/link\": NextLink,\n \"next/router\": NextRouter,\n });\n if (opts.nextNavigation) {\n loader.registerModules({\n \"next/navigation\": opts.nextNavigation,\n });\n }\n return loader;\n}\n\nexport const __EXPERMIENTAL__extractPlasmicQueryData: (\n element: React.ReactElement,\n // We can't use `NextJsPlasmicComponentLoader` or `PlasmicComponentLoader`\n // types because they refer to the react-server version, which Typescript\n // doesn't recognize as compatible with the client version (whose type is\n // also the one exported from `react-server-conditional` imports).\n loader: ClientExports.NextJsPlasmicComponentLoader\n) => Promise<Record<string, any>> = internalExtractPlasmicQueryData as any;\n\n/**\n * Helper function to extract Plasmic data.\n *\n * Given the <PlasmicClientRootProvider> element and current pathname + search\n * params, returns:\n * - The extracted query data, if `plasmicSsr` search param is set\n * - A copy of the root provider element with the extracted query data, otherwise\n */\nexport async function __EXPERMIENTAL__withExtractPlasmicQueryData(\n plasmicRootProvider: React.ReactElement,\n {\n pathname,\n searchParams,\n }: {\n pathname: string;\n searchParams: Record<string, string | string[]> | undefined;\n }\n) {\n const isPlasmicSsr =\n !!searchParams?.[\"plasmicSsr\"] && searchParams?.[\"plasmicSsr\"] !== \"false\";\n\n // If `plasmicSsr` search param is set, just wrap the root provider inside\n // <ExtractPlasmicQueryData>\n if (isPlasmicSsr) {\n return (\n <ExtractPlasmicQueryData>{plasmicRootProvider}</ExtractPlasmicQueryData>\n );\n }\n\n // Otherwise, fetch the same endpoint, but setting `plasmicSsr` to extract the\n // query data.\n const prepassHost =\n process.env.PLASMIC_PREPASS_HOST ??\n (process.env.VERCEL_URL && `https://${process.env.VERCEL_URL}`) ??\n `http://localhost:${process.env.PORT ?? 3000}`;\n\n // Build a copy of the search params\n const newSearchParams = new URLSearchParams(\n Object.entries(searchParams ?? {}).flatMap(([key, values]) =>\n Array.isArray(values) ? values.map((v) => [key, v]) : [[key, values]]\n )\n );\n\n // Set `plasmicSsr` search param to indicate you are using this endpoint\n // to extract query data.\n newSearchParams.set(\"plasmicSsr\", \"true\");\n\n if (process.env.VERCEL_AUTOMATION_BYPASS_SECRET) {\n // If protection bypass is enabled, use it to ensure fetching from\n // the SSR endpoint will not return the authentication page HTML\n newSearchParams.set(\n \"x-vercel-protection-bypass\",\n process.env.VERCEL_AUTOMATION_BYPASS_SECRET\n );\n }\n\n // Fetch the data from the endpoint using the new search params\n const prefetchedQueryData = await fetchExtractedQueryData(\n `${prepassHost}${pathname}?${newSearchParams.toString()}`\n );\n\n // Provide the query data to <PlasmicClientRootProvider>\n return React.cloneElement(plasmicRootProvider, {\n prefetchedQueryData,\n });\n}\n", "import { LoaderBundleOutput } from \"@plasmicapp/loader-core\";\nimport type { InitOptions } from \"@plasmicapp/loader-react/react-server-conditional\";\nimport type * as Watcher from \"@plasmicapp/watcher\";\nimport { PHASE_PRODUCTION_BUILD } from \"next/constants\";\nimport path from \"path\";\nimport { serverRequire, serverRequireFs } from \"./server-require\";\nimport type { NextInitOptions } from \"./shared-exports\";\n\nclass FileCache {\n constructor(private filePath: string) {}\n\n async get() {\n const fs = await serverRequireFs();\n try {\n await fs.promises.mkdir(path.dirname(this.filePath), { recursive: true });\n const data = (await fs.promises.readFile(this.filePath)).toString();\n return JSON.parse(data);\n } catch {\n return undefined;\n }\n }\n\n async set(data: LoaderBundleOutput) {\n const fs = await serverRequireFs();\n try {\n await fs.promises.writeFile(this.filePath, JSON.stringify(data));\n } catch (err) {\n console.warn(`Error writing to Plasmic cache: ${err}`);\n }\n }\n\n async clear() {\n const fs = await serverRequireFs();\n try {\n fs.promises.unlink(this.filePath);\n } catch (err) {\n // noop\n }\n }\n}\n\nfunction hashString(str: string) {\n let h = 0,\n i = 0;\n for (; i < str.length; h &= h) h = 31 * h + str.charCodeAt(i++);\n return Math.abs(h);\n}\n\nfunction makeCache(opts: InitOptions) {\n const cacheDir = path.resolve(process.cwd(), \".next\", \".plasmic\");\n const cachePath = path.join(\n cacheDir,\n `plasmic-${hashString(\n [...opts.projects.map((p) => `${p.id}@${p.version ?? \"\"}`)]\n .sort()\n .join(\"-\")\n )}${opts.preview ? \"-preview\" : \"\"}-cache.json`\n );\n return new FileCache(cachePath);\n}\n\nexport function initPlasmicLoaderWithCache<\n T extends {\n clearCache(): void;\n }\n>(\n initFn: (opts: InitOptions) => T,\n { nextNavigation, ...opts }: NextInitOptions\n): T {\n const isBrowser = typeof window !== \"undefined\";\n const isProd = process.env.NODE_ENV === \"production\";\n const isBuildPhase = process.env.NEXT_PHASE === PHASE_PRODUCTION_BUILD;\n const cache = isBrowser || isProd ? undefined : makeCache(opts);\n const loader = initFn({\n onClientSideFetch: \"warn\",\n ...opts,\n cache,\n platform: \"nextjs\",\n platformOptions: {\n nextjs: {\n appDir: !!nextNavigation,\n },\n },\n // For Nextjs 12, revalidate may in fact re-use an existing instance\n // of PlasmicComponentLoader that's already in memory, so we need to\n // make sure we don't re-use the data cached in memory.\n // We also enforce this for dev mode, so that we don't have to restart\n // the dev server, in case getStaticProps() re-uses the same PlasmicComponentLoader\n // We also enforce that during build phase, we re-use the data cached in memory\n // to avoid re-fetching the data from Plasmic servers.\n alwaysFresh: !isBuildPhase && !isBrowser,\n });\n\n if (!isProd) {\n const stringOpts = JSON.stringify(opts);\n\n if (process.env.PLASMIC_OPTS && process.env.PLASMIC_OPTS !== stringOpts) {\n console.warn(\n `PLASMIC: We detected that you created a new PlasmicLoader with different configurations. You may need to restart your dev server.\\n`\n );\n }\n\n process.env.PLASMIC_OPTS = stringOpts;\n }\n\n if (cache) {\n if (!isProd) {\n if (process.env.PLASMIC_WATCHED !== \"true\") {\n (async () => {\n process.env.PLASMIC_WATCHED = \"true\";\n console.log(`Subscribing to Plasmic changes...`);\n\n // Import using serverRequire, so webpack doesn't bundle us into client bundle\n try {\n const PlasmicRemoteChangeWatcher = (\n await serverRequire<typeof Watcher>(\"@plasmicapp/watcher\")\n ).PlasmicRemoteChangeWatcher;\n const watcher = new PlasmicRemoteChangeWatcher({\n projects: opts.projects,\n host: opts.host,\n });\n\n const clearCache = () => {\n cache.clear();\n loader.clearCache();\n };\n\n watcher.subscribe({\n onUpdate: () => {\n if (opts.preview) {\n clearCache();\n }\n },\n onPublish: () => {\n if (!opts.preview) {\n clearCache();\n }\n },\n });\n } catch (e) {\n console.warn(\"Couldn't subscribe to Plasmic changes\", e);\n }\n })();\n }\n } else {\n cache.clear();\n loader.clearCache();\n }\n }\n return loader;\n}\n", "import type * as FS from \"fs\";\n\nlet secretRequire: ((module: string) => any) | undefined;\ntry {\n // Secretly use require/import without webpack knowing\n // eslint-disable-next-line\n secretRequire = eval(\"require\");\n} catch (err) {\n try {\n // eslint-disable-next-line\n secretRequire = eval(\"(module) => import(module)\");\n } catch (err) {\n secretRequire = undefined;\n }\n}\n\nexport async function serverRequire<T>(module: string): Promise<T> {\n if (!secretRequire) {\n throw new Error(\n `Unexpected serverRequire() -- can only do this from a Node server!`\n );\n }\n return secretRequire(module) as Promise<T>;\n}\n\nexport async function tryServerRequire<T>(\n module: string\n): Promise<T | undefined> {\n try {\n const require = await serverRequire<T>(module);\n return require;\n } catch {\n return undefined;\n }\n}\n\nexport async function tryServerRequires<T>(\n modules: string[]\n): Promise<T | undefined> {\n for (const module of modules) {\n const require = await tryServerRequire<T>(module);\n if (require != null) {\n return require;\n }\n }\n return undefined;\n}\n\nexport async function serverRequireFs() {\n return serverRequire<typeof FS>(\"fs\");\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["err", "require", "err", "opts"]
7
7
  }
@@ -119,6 +119,27 @@ function serverRequire(module2) {
119
119
  return secretRequire(module2);
120
120
  });
121
121
  }
122
+ function tryServerRequire(module2) {
123
+ return __async(this, null, function* () {
124
+ try {
125
+ const require2 = yield serverRequire(module2);
126
+ return require2;
127
+ } catch (e) {
128
+ return void 0;
129
+ }
130
+ });
131
+ }
132
+ function tryServerRequires(modules) {
133
+ return __async(this, null, function* () {
134
+ for (const module2 of modules) {
135
+ const require2 = yield tryServerRequire(module2);
136
+ if (require2 != null) {
137
+ return require2;
138
+ }
139
+ }
140
+ return void 0;
141
+ });
142
+ }
122
143
  function serverRequireFs() {
123
144
  return __async(this, null, function* () {
124
145
  return serverRequire("fs");
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/react-server.tsx", "../src/cache.ts", "../src/server-require.ts"],
4
- "sourcesContent": ["import \"server-only\";\n\nimport {\n InternalPlasmicComponentLoader,\n PlasmicComponentLoader,\n} from \"@plasmicapp/loader-react/react-server\";\nimport type { IncomingMessage, ServerResponse } from \"http\";\nimport NextHead from \"next/head.js\";\nimport NextLink from \"next/link.js\";\nimport * as NextRouter from \"next/router.js\";\nimport { initPlasmicLoaderWithCache } from \"./cache\";\nimport type { NextInitOptions } from \"./shared-exports\";\n\nimport { __EXPERMIENTAL__extractPlasmicQueryData as internalExtractPlasmicQueryData } from \"@plasmicapp/loader-react/react-server\";\nimport { ExtractPlasmicQueryData } from \"@plasmicapp/nextjs-app-router\";\nimport {\n fetchExtractedHeadMetadata,\n fetchExtractedQueryData,\n withPlasmicMetadata,\n} from \"@plasmicapp/nextjs-app-router/react-server\";\n\nexport * from \"./shared-exports\";\nexport {\n fetchExtractedQueryData as __EXPERMIENTAL__fetchExtractedQueryData,\n fetchExtractedHeadMetadata as __EXPERMIENTAL__fetchExtractedHeadMetadata,\n withPlasmicMetadata as __EXPERMIENTAL__withPlasmicMetadata,\n};\n\nimport React from \"react\";\nimport type * as ClientExports from \".\";\n\ntype ServerRequest = IncomingMessage & {\n cookies: {\n [key: string]: string;\n };\n};\n\nexport class NextJsPlasmicComponentLoader extends PlasmicComponentLoader {\n constructor(internal: InternalPlasmicComponentLoader) {\n super(internal);\n }\n\n async getActiveVariation(opts: {\n req?: ServerRequest;\n res?: ServerResponse;\n known?: Record<string, string>;\n traits: Record<string, string | number | boolean>;\n }) {\n const extractBuiltinTraits = () => {\n const url = new URL(\n opts.req?.url ?? \"/\",\n `https://${opts.req?.headers.host ?? \"server.side\"}`\n );\n return {\n pageUrl: url.href,\n };\n };\n\n return this._getActiveVariation({\n traits: {\n ...extractBuiltinTraits(),\n ...opts.traits,\n },\n getKnownValue: (key: string) => {\n if (opts.known) {\n return opts.known[key];\n } else {\n return opts.req?.cookies[`plasmic:${key}`] ?? undefined;\n }\n },\n updateKnownValue: (key: string, value: string) => {\n if (opts.res) {\n const cookie = `plasmic:${key}=${value}`;\n const resCookie = opts.res?.getHeader(\"Set-Cookie\") ?? [];\n let newCookies: string[] = [];\n if (Array.isArray(resCookie)) {\n newCookies = [...resCookie, `plasmic:${key}=${value}`];\n } else {\n newCookies = [`${resCookie}`, cookie];\n }\n\n opts.res?.setHeader(\"Set-Cookie\", newCookies);\n }\n },\n });\n }\n}\n\nexport function initPlasmicLoader(opts: NextInitOptions) {\n const loader = initPlasmicLoaderWithCache<NextJsPlasmicComponentLoader>(\n (opts) =>\n new PlasmicComponentLoader(new InternalPlasmicComponentLoader(opts)),\n opts\n );\n loader.registerModules({\n \"next/head\": NextHead,\n \"next/link\": NextLink,\n \"next/router\": NextRouter,\n });\n if (opts.nextNavigation) {\n loader.registerModules({\n \"next/navigation\": opts.nextNavigation,\n });\n }\n return loader;\n}\n\nexport const __EXPERMIENTAL__extractPlasmicQueryData: (\n element: React.ReactElement,\n // We can't use `NextJsPlasmicComponentLoader` or `PlasmicComponentLoader`\n // types because they refer to the react-server version, which Typescript\n // doesn't recognize as compatible with the client version (whose type is\n // also the one exported from `react-server-conditional` imports).\n loader: ClientExports.NextJsPlasmicComponentLoader\n) => Promise<Record<string, any>> = internalExtractPlasmicQueryData as any;\n\n/**\n * Helper function to extract Plasmic data.\n *\n * Given the <PlasmicClientRootProvider> element and current pathname + search\n * params, returns:\n * - The extracted query data, if `plasmicSsr` search param is set\n * - A copy of the root provider element with the extracted query data, otherwise\n */\nexport async function __EXPERMIENTAL__withExtractPlasmicQueryData(\n plasmicRootProvider: React.ReactElement,\n {\n pathname,\n searchParams,\n }: {\n pathname: string;\n searchParams: Record<string, string | string[]> | undefined;\n }\n) {\n const isPlasmicSsr =\n !!searchParams?.[\"plasmicSsr\"] && searchParams?.[\"plasmicSsr\"] !== \"false\";\n\n // If `plasmicSsr` search param is set, just wrap the root provider inside\n // <ExtractPlasmicQueryData>\n if (isPlasmicSsr) {\n return (\n <ExtractPlasmicQueryData>{plasmicRootProvider}</ExtractPlasmicQueryData>\n );\n }\n\n // Otherwise, fetch the same endpoint, but setting `plasmicSsr` to extract the\n // query data.\n const prepassHost =\n process.env.PLASMIC_PREPASS_HOST ??\n (process.env.VERCEL_URL && `https://${process.env.VERCEL_URL}`) ??\n `http://localhost:${process.env.PORT ?? 3000}`;\n\n // Build a copy of the search params\n const newSearchParams = new URLSearchParams(\n Object.entries(searchParams ?? {}).flatMap(([key, values]) =>\n Array.isArray(values) ? values.map((v) => [key, v]) : [[key, values]]\n )\n );\n\n // Set `plasmicSsr` search param to indicate you are using this endpoint\n // to extract query data.\n newSearchParams.set(\"plasmicSsr\", \"true\");\n\n if (process.env.VERCEL_AUTOMATION_BYPASS_SECRET) {\n // If protection bypass is enabled, use it to ensure fetching from\n // the SSR endpoint will not return the authentication page HTML\n newSearchParams.set(\n \"x-vercel-protection-bypass\",\n process.env.VERCEL_AUTOMATION_BYPASS_SECRET\n );\n }\n\n // Fetch the data from the endpoint using the new search params\n const prefetchedQueryData = await fetchExtractedQueryData(\n `${prepassHost}${pathname}?${newSearchParams.toString()}`\n );\n\n // Provide the query data to <PlasmicClientRootProvider>\n return React.cloneElement(plasmicRootProvider, {\n prefetchedQueryData,\n });\n}\n", "import { LoaderBundleOutput } from \"@plasmicapp/loader-core\";\nimport type { InitOptions } from \"@plasmicapp/loader-react/react-server-conditional\";\nimport type * as Watcher from \"@plasmicapp/watcher\";\nimport { PHASE_PRODUCTION_BUILD } from \"next/constants\";\nimport path from \"path\";\nimport { serverRequire, serverRequireFs } from \"./server-require\";\nimport type { NextInitOptions } from \"./shared-exports\";\n\nclass FileCache {\n constructor(private filePath: string) {}\n\n async get() {\n const fs = await serverRequireFs();\n try {\n await fs.promises.mkdir(path.dirname(this.filePath), { recursive: true });\n const data = (await fs.promises.readFile(this.filePath)).toString();\n return JSON.parse(data);\n } catch {\n return undefined;\n }\n }\n\n async set(data: LoaderBundleOutput) {\n const fs = await serverRequireFs();\n try {\n await fs.promises.writeFile(this.filePath, JSON.stringify(data));\n } catch (err) {\n console.warn(`Error writing to Plasmic cache: ${err}`);\n }\n }\n\n async clear() {\n const fs = await serverRequireFs();\n try {\n fs.promises.unlink(this.filePath);\n } catch (err) {\n // noop\n }\n }\n}\n\nfunction hashString(str: string) {\n let h = 0,\n i = 0;\n for (; i < str.length; h &= h) h = 31 * h + str.charCodeAt(i++);\n return Math.abs(h);\n}\n\nfunction makeCache(opts: InitOptions) {\n const cacheDir = path.resolve(process.cwd(), \".next\", \".plasmic\");\n const cachePath = path.join(\n cacheDir,\n `plasmic-${hashString(\n [...opts.projects.map((p) => `${p.id}@${p.version ?? \"\"}`)]\n .sort()\n .join(\"-\")\n )}${opts.preview ? \"-preview\" : \"\"}-cache.json`\n );\n return new FileCache(cachePath);\n}\n\nexport function initPlasmicLoaderWithCache<\n T extends {\n clearCache(): void;\n }\n>(\n initFn: (opts: InitOptions) => T,\n { nextNavigation, ...opts }: NextInitOptions\n): T {\n const isBrowser = typeof window !== \"undefined\";\n const isProd = process.env.NODE_ENV === \"production\";\n const isBuildPhase = process.env.NEXT_PHASE === PHASE_PRODUCTION_BUILD;\n const cache = isBrowser || isProd ? undefined : makeCache(opts);\n const loader = initFn({\n onClientSideFetch: \"warn\",\n ...opts,\n cache,\n platform: \"nextjs\",\n platformOptions: {\n nextjs: {\n appDir: !!nextNavigation,\n },\n },\n // For Nextjs 12, revalidate may in fact re-use an existing instance\n // of PlasmicComponentLoader that's already in memory, so we need to\n // make sure we don't re-use the data cached in memory.\n // We also enforce this for dev mode, so that we don't have to restart\n // the dev server, in case getStaticProps() re-uses the same PlasmicComponentLoader\n // We also enforce that during build phase, we re-use the data cached in memory\n // to avoid re-fetching the data from Plasmic servers.\n alwaysFresh: !isBuildPhase && !isBrowser,\n });\n\n if (!isProd) {\n const stringOpts = JSON.stringify(opts);\n\n if (process.env.PLASMIC_OPTS && process.env.PLASMIC_OPTS !== stringOpts) {\n console.warn(\n `PLASMIC: We detected that you created a new PlasmicLoader with different configurations. You may need to restart your dev server.\\n`\n );\n }\n\n process.env.PLASMIC_OPTS = stringOpts;\n }\n\n if (cache) {\n if (!isProd) {\n if (process.env.PLASMIC_WATCHED !== \"true\") {\n (async () => {\n process.env.PLASMIC_WATCHED = \"true\";\n console.log(`Subscribing to Plasmic changes...`);\n\n // Import using serverRequire, so webpack doesn't bundle us into client bundle\n try {\n const PlasmicRemoteChangeWatcher = (\n await serverRequire<typeof Watcher>(\"@plasmicapp/watcher\")\n ).PlasmicRemoteChangeWatcher;\n const watcher = new PlasmicRemoteChangeWatcher({\n projects: opts.projects,\n host: opts.host,\n });\n\n const clearCache = () => {\n cache.clear();\n loader.clearCache();\n };\n\n watcher.subscribe({\n onUpdate: () => {\n if (opts.preview) {\n clearCache();\n }\n },\n onPublish: () => {\n if (!opts.preview) {\n clearCache();\n }\n },\n });\n } catch (e) {\n console.warn(\"Couldn't subscribe to Plasmic changes\", e);\n }\n })();\n }\n } else {\n cache.clear();\n loader.clearCache();\n }\n }\n return loader;\n}\n", "import type * as FS from \"fs\";\n\nlet secretRequire: ((module: string) => any) | undefined;\ntry {\n // Secretly use require/import without webpack knowing\n // eslint-disable-next-line\n secretRequire = eval(\"require\");\n} catch (err) {\n try {\n // eslint-disable-next-line\n secretRequire = eval(\"(module) => import(module)\");\n } catch (err) {\n secretRequire = undefined;\n }\n}\n\nexport async function serverRequire<T>(module: string): Promise<T> {\n if (!secretRequire) {\n throw new Error(\n `Unexpected serverRequire() -- can only do this from a Node server!`\n );\n }\n return secretRequire(module) as Promise<T>;\n}\n\nexport async function serverRequireFs() {\n return serverRequire<typeof FS>(\"fs\");\n}\n"],
5
- "mappings": "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",
6
- "names": ["err", "module", "path", "err", "import_react_server", "opts", "NextHead", "NextLink", "internalExtractPlasmicQueryData", "React"]
4
+ "sourcesContent": ["import \"server-only\";\n\nimport {\n InternalPlasmicComponentLoader,\n PlasmicComponentLoader,\n} from \"@plasmicapp/loader-react/react-server\";\nimport type { IncomingMessage, ServerResponse } from \"http\";\nimport NextHead from \"next/head.js\";\nimport NextLink from \"next/link.js\";\nimport * as NextRouter from \"next/router.js\";\nimport { initPlasmicLoaderWithCache } from \"./cache\";\nimport type { NextInitOptions } from \"./shared-exports\";\n\nimport { __EXPERMIENTAL__extractPlasmicQueryData as internalExtractPlasmicQueryData } from \"@plasmicapp/loader-react/react-server\";\nimport { ExtractPlasmicQueryData } from \"@plasmicapp/nextjs-app-router\";\nimport {\n fetchExtractedHeadMetadata,\n fetchExtractedQueryData,\n withPlasmicMetadata,\n} from \"@plasmicapp/nextjs-app-router/react-server\";\n\nexport * from \"./shared-exports\";\nexport {\n fetchExtractedQueryData as __EXPERMIENTAL__fetchExtractedQueryData,\n fetchExtractedHeadMetadata as __EXPERMIENTAL__fetchExtractedHeadMetadata,\n withPlasmicMetadata as __EXPERMIENTAL__withPlasmicMetadata,\n};\n\nimport React from \"react\";\nimport type * as ClientExports from \".\";\n\ntype ServerRequest = IncomingMessage & {\n cookies: {\n [key: string]: string;\n };\n};\n\nexport class NextJsPlasmicComponentLoader extends PlasmicComponentLoader {\n constructor(internal: InternalPlasmicComponentLoader) {\n super(internal);\n }\n\n async getActiveVariation(opts: {\n req?: ServerRequest;\n res?: ServerResponse;\n known?: Record<string, string>;\n traits: Record<string, string | number | boolean>;\n }) {\n const extractBuiltinTraits = () => {\n const url = new URL(\n opts.req?.url ?? \"/\",\n `https://${opts.req?.headers.host ?? \"server.side\"}`\n );\n return {\n pageUrl: url.href,\n };\n };\n\n return this._getActiveVariation({\n traits: {\n ...extractBuiltinTraits(),\n ...opts.traits,\n },\n getKnownValue: (key: string) => {\n if (opts.known) {\n return opts.known[key];\n } else {\n return opts.req?.cookies[`plasmic:${key}`] ?? undefined;\n }\n },\n updateKnownValue: (key: string, value: string) => {\n if (opts.res) {\n const cookie = `plasmic:${key}=${value}`;\n const resCookie = opts.res?.getHeader(\"Set-Cookie\") ?? [];\n let newCookies: string[] = [];\n if (Array.isArray(resCookie)) {\n newCookies = [...resCookie, `plasmic:${key}=${value}`];\n } else {\n newCookies = [`${resCookie}`, cookie];\n }\n\n opts.res?.setHeader(\"Set-Cookie\", newCookies);\n }\n },\n });\n }\n}\n\nexport function initPlasmicLoader(opts: NextInitOptions) {\n const loader = initPlasmicLoaderWithCache<NextJsPlasmicComponentLoader>(\n (opts) =>\n new PlasmicComponentLoader(new InternalPlasmicComponentLoader(opts)),\n opts\n );\n loader.registerModules({\n \"next/head\": NextHead,\n \"next/link\": NextLink,\n \"next/router\": NextRouter,\n });\n if (opts.nextNavigation) {\n loader.registerModules({\n \"next/navigation\": opts.nextNavigation,\n });\n }\n return loader;\n}\n\nexport const __EXPERMIENTAL__extractPlasmicQueryData: (\n element: React.ReactElement,\n // We can't use `NextJsPlasmicComponentLoader` or `PlasmicComponentLoader`\n // types because they refer to the react-server version, which Typescript\n // doesn't recognize as compatible with the client version (whose type is\n // also the one exported from `react-server-conditional` imports).\n loader: ClientExports.NextJsPlasmicComponentLoader\n) => Promise<Record<string, any>> = internalExtractPlasmicQueryData as any;\n\n/**\n * Helper function to extract Plasmic data.\n *\n * Given the <PlasmicClientRootProvider> element and current pathname + search\n * params, returns:\n * - The extracted query data, if `plasmicSsr` search param is set\n * - A copy of the root provider element with the extracted query data, otherwise\n */\nexport async function __EXPERMIENTAL__withExtractPlasmicQueryData(\n plasmicRootProvider: React.ReactElement,\n {\n pathname,\n searchParams,\n }: {\n pathname: string;\n searchParams: Record<string, string | string[]> | undefined;\n }\n) {\n const isPlasmicSsr =\n !!searchParams?.[\"plasmicSsr\"] && searchParams?.[\"plasmicSsr\"] !== \"false\";\n\n // If `plasmicSsr` search param is set, just wrap the root provider inside\n // <ExtractPlasmicQueryData>\n if (isPlasmicSsr) {\n return (\n <ExtractPlasmicQueryData>{plasmicRootProvider}</ExtractPlasmicQueryData>\n );\n }\n\n // Otherwise, fetch the same endpoint, but setting `plasmicSsr` to extract the\n // query data.\n const prepassHost =\n process.env.PLASMIC_PREPASS_HOST ??\n (process.env.VERCEL_URL && `https://${process.env.VERCEL_URL}`) ??\n `http://localhost:${process.env.PORT ?? 3000}`;\n\n // Build a copy of the search params\n const newSearchParams = new URLSearchParams(\n Object.entries(searchParams ?? {}).flatMap(([key, values]) =>\n Array.isArray(values) ? values.map((v) => [key, v]) : [[key, values]]\n )\n );\n\n // Set `plasmicSsr` search param to indicate you are using this endpoint\n // to extract query data.\n newSearchParams.set(\"plasmicSsr\", \"true\");\n\n if (process.env.VERCEL_AUTOMATION_BYPASS_SECRET) {\n // If protection bypass is enabled, use it to ensure fetching from\n // the SSR endpoint will not return the authentication page HTML\n newSearchParams.set(\n \"x-vercel-protection-bypass\",\n process.env.VERCEL_AUTOMATION_BYPASS_SECRET\n );\n }\n\n // Fetch the data from the endpoint using the new search params\n const prefetchedQueryData = await fetchExtractedQueryData(\n `${prepassHost}${pathname}?${newSearchParams.toString()}`\n );\n\n // Provide the query data to <PlasmicClientRootProvider>\n return React.cloneElement(plasmicRootProvider, {\n prefetchedQueryData,\n });\n}\n", "import { LoaderBundleOutput } from \"@plasmicapp/loader-core\";\nimport type { InitOptions } from \"@plasmicapp/loader-react/react-server-conditional\";\nimport type * as Watcher from \"@plasmicapp/watcher\";\nimport { PHASE_PRODUCTION_BUILD } from \"next/constants\";\nimport path from \"path\";\nimport { serverRequire, serverRequireFs } from \"./server-require\";\nimport type { NextInitOptions } from \"./shared-exports\";\n\nclass FileCache {\n constructor(private filePath: string) {}\n\n async get() {\n const fs = await serverRequireFs();\n try {\n await fs.promises.mkdir(path.dirname(this.filePath), { recursive: true });\n const data = (await fs.promises.readFile(this.filePath)).toString();\n return JSON.parse(data);\n } catch {\n return undefined;\n }\n }\n\n async set(data: LoaderBundleOutput) {\n const fs = await serverRequireFs();\n try {\n await fs.promises.writeFile(this.filePath, JSON.stringify(data));\n } catch (err) {\n console.warn(`Error writing to Plasmic cache: ${err}`);\n }\n }\n\n async clear() {\n const fs = await serverRequireFs();\n try {\n fs.promises.unlink(this.filePath);\n } catch (err) {\n // noop\n }\n }\n}\n\nfunction hashString(str: string) {\n let h = 0,\n i = 0;\n for (; i < str.length; h &= h) h = 31 * h + str.charCodeAt(i++);\n return Math.abs(h);\n}\n\nfunction makeCache(opts: InitOptions) {\n const cacheDir = path.resolve(process.cwd(), \".next\", \".plasmic\");\n const cachePath = path.join(\n cacheDir,\n `plasmic-${hashString(\n [...opts.projects.map((p) => `${p.id}@${p.version ?? \"\"}`)]\n .sort()\n .join(\"-\")\n )}${opts.preview ? \"-preview\" : \"\"}-cache.json`\n );\n return new FileCache(cachePath);\n}\n\nexport function initPlasmicLoaderWithCache<\n T extends {\n clearCache(): void;\n }\n>(\n initFn: (opts: InitOptions) => T,\n { nextNavigation, ...opts }: NextInitOptions\n): T {\n const isBrowser = typeof window !== \"undefined\";\n const isProd = process.env.NODE_ENV === \"production\";\n const isBuildPhase = process.env.NEXT_PHASE === PHASE_PRODUCTION_BUILD;\n const cache = isBrowser || isProd ? undefined : makeCache(opts);\n const loader = initFn({\n onClientSideFetch: \"warn\",\n ...opts,\n cache,\n platform: \"nextjs\",\n platformOptions: {\n nextjs: {\n appDir: !!nextNavigation,\n },\n },\n // For Nextjs 12, revalidate may in fact re-use an existing instance\n // of PlasmicComponentLoader that's already in memory, so we need to\n // make sure we don't re-use the data cached in memory.\n // We also enforce this for dev mode, so that we don't have to restart\n // the dev server, in case getStaticProps() re-uses the same PlasmicComponentLoader\n // We also enforce that during build phase, we re-use the data cached in memory\n // to avoid re-fetching the data from Plasmic servers.\n alwaysFresh: !isBuildPhase && !isBrowser,\n });\n\n if (!isProd) {\n const stringOpts = JSON.stringify(opts);\n\n if (process.env.PLASMIC_OPTS && process.env.PLASMIC_OPTS !== stringOpts) {\n console.warn(\n `PLASMIC: We detected that you created a new PlasmicLoader with different configurations. You may need to restart your dev server.\\n`\n );\n }\n\n process.env.PLASMIC_OPTS = stringOpts;\n }\n\n if (cache) {\n if (!isProd) {\n if (process.env.PLASMIC_WATCHED !== \"true\") {\n (async () => {\n process.env.PLASMIC_WATCHED = \"true\";\n console.log(`Subscribing to Plasmic changes...`);\n\n // Import using serverRequire, so webpack doesn't bundle us into client bundle\n try {\n const PlasmicRemoteChangeWatcher = (\n await serverRequire<typeof Watcher>(\"@plasmicapp/watcher\")\n ).PlasmicRemoteChangeWatcher;\n const watcher = new PlasmicRemoteChangeWatcher({\n projects: opts.projects,\n host: opts.host,\n });\n\n const clearCache = () => {\n cache.clear();\n loader.clearCache();\n };\n\n watcher.subscribe({\n onUpdate: () => {\n if (opts.preview) {\n clearCache();\n }\n },\n onPublish: () => {\n if (!opts.preview) {\n clearCache();\n }\n },\n });\n } catch (e) {\n console.warn(\"Couldn't subscribe to Plasmic changes\", e);\n }\n })();\n }\n } else {\n cache.clear();\n loader.clearCache();\n }\n }\n return loader;\n}\n", "import type * as FS from \"fs\";\n\nlet secretRequire: ((module: string) => any) | undefined;\ntry {\n // Secretly use require/import without webpack knowing\n // eslint-disable-next-line\n secretRequire = eval(\"require\");\n} catch (err) {\n try {\n // eslint-disable-next-line\n secretRequire = eval(\"(module) => import(module)\");\n } catch (err) {\n secretRequire = undefined;\n }\n}\n\nexport async function serverRequire<T>(module: string): Promise<T> {\n if (!secretRequire) {\n throw new Error(\n `Unexpected serverRequire() -- can only do this from a Node server!`\n );\n }\n return secretRequire(module) as Promise<T>;\n}\n\nexport async function tryServerRequire<T>(\n module: string\n): Promise<T | undefined> {\n try {\n const require = await serverRequire<T>(module);\n return require;\n } catch {\n return undefined;\n }\n}\n\nexport async function tryServerRequires<T>(\n modules: string[]\n): Promise<T | undefined> {\n for (const module of modules) {\n const require = await tryServerRequire<T>(module);\n if (require != null) {\n return require;\n }\n }\n return undefined;\n}\n\nexport async function serverRequireFs() {\n return serverRequire<typeof FS>(\"fs\");\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["err", "module", "require", "path", "err", "import_react_server", "opts", "NextHead", "NextLink", "internalExtractPlasmicQueryData", "React"]
7
7
  }
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.0.388",
2
+ "version": "1.0.389",
3
3
  "license": "MIT",
4
4
  "types": "./dist/index.d.ts",
5
5
  "main": "./dist/index.js",
@@ -87,5 +87,5 @@
87
87
  "@plasmicapp/watcher": "1.0.83",
88
88
  "server-only": "0.0.1"
89
89
  },
90
- "gitHead": "5b29fc6c30a7acaff496a0b2bfd43cbc71ed51b5"
90
+ "gitHead": "397f6676030a90a636650186840540dc6eab09b6"
91
91
  }