@vercel/gatsby-plugin-vercel-builder 0.1.2 → 1.0.1

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/README.md CHANGED
@@ -0,0 +1,20 @@
1
+ # @vercel/gatsby-plugin-vercel-builder
2
+
3
+ This plugin generates [Vercel Build Output API v3](https://vercel.com/docs/build-output-api/v3) for Gatsby v4+ projects.
4
+
5
+ The Vercel platform automatically injects this plugin for you if it can detect Gatsby v4+ in your project's `package.json` dependencies. If detected, you will see a log message in your project's [build logs](https://vercel.com/docs/concepts/deployments/logs#build-logs) as follows:
6
+
7
+ > Injecting Gatsby.js plugin "@vercel/gatsby-plugin-vercel-builder" to package.json
8
+
9
+ If auto-detection is not working, this plugin can also be installed and used manually:
10
+
11
+ 1. `npm install @vercel/gatsby-plugin-vercel-builder`
12
+ 2. Add `'@vercel/gatsby-plugin-vercel-builder'` to your `gatsby-config.(t|j)s` file, such as:
13
+
14
+ ```js
15
+ module.exports = {
16
+ plugins: ['@vercel/gatsby-plugin-vercel-builder'],
17
+ };
18
+ ```
19
+
20
+ 3. 🚀 Ship It 🎉
@@ -6,10 +6,7 @@ export declare const writeVCConfig: ({ functionDir, handler, }: {
6
6
  functionDir: string;
7
7
  handler?: string | undefined;
8
8
  }) => Promise<void>;
9
- export declare const writePrerenderConfig: (outputPath: string) => void;
10
- export declare function movePageData({ functionDir }: {
11
- functionDir: string;
12
- }): Promise<void>;
9
+ export declare const writePrerenderConfig: (outputPath: string, group: number) => void;
13
10
  export declare function copyFunctionLibs({ functionDir, }: {
14
11
  functionDir: string;
15
12
  }): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/handlers/build.ts"],"names":[],"mappings":"AAkBA,eAAO,MAAM,YAAY;YAIf,MAAM;iBACD,MAAM;wDAqBpB,CAAC;AAEF,eAAO,MAAM,aAAa;iBAIX,MAAM;;mBAapB,CAAC;AAEF,eAAO,MAAM,oBAAoB,eAAgB,MAAM,SAOtD,CAAC;AAEF,wBAAsB,YAAY,CAAC,EAAE,WAAW,EAAE,EAAE;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,iBAK1E;AAED,wBAAsB,gBAAgB,CAAC,EACrC,WAAW,GACZ,EAAE;IACD,WAAW,EAAE,MAAM,CAAC;CACrB,iBA0BA;AAED,wBAAsB,aAAa,CAAC,EAAE,WAAW,EAAE,EAAE;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,iBAe3E"}
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/handlers/build.ts"],"names":[],"mappings":"AAkBA,eAAO,MAAM,YAAY;YAIf,MAAM;iBACD,MAAM;wDAqBpB,CAAC;AAEF,eAAO,MAAM,aAAa;iBAIX,MAAM;;mBAapB,CAAC;AAEF,eAAO,MAAM,oBAAoB,eAAgB,MAAM,SAAS,MAAM,SAOrE,CAAC;AAEF,wBAAsB,gBAAgB,CAAC,EACrC,WAAW,GACZ,EAAE;IACD,WAAW,EAAE,MAAM,CAAC;CACrB,iBA0BA;AAED,wBAAsB,aAAa,CAAC,EAAE,WAAW,EAAE,EAAE;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,iBAe3E"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.copyHTMLFiles = exports.copyFunctionLibs = exports.movePageData = exports.writePrerenderConfig = exports.writeVCConfig = exports.writeHandler = void 0;
3
+ exports.copyHTMLFiles = exports.copyFunctionLibs = exports.writePrerenderConfig = exports.writeVCConfig = exports.writeHandler = void 0;
4
4
  const path_1 = require("path");
5
5
  const build_utils_1 = require("@vercel/build-utils");
6
6
  const esbuild_1 = require("esbuild");
@@ -38,18 +38,15 @@ const writeVCConfig = async ({ functionDir, handler = 'index.js', }) => {
38
38
  return fs_extra_1.writeJson(`${functionDir}/.vc-config.json`, config);
39
39
  };
40
40
  exports.writeVCConfig = writeVCConfig;
41
- const writePrerenderConfig = (outputPath) => {
41
+ const writePrerenderConfig = (outputPath, group) => {
42
42
  const config = {
43
- expiration: false,
43
+ group,
44
+ expiration: 600, // 10 minutes TODO: make this configurable?
44
45
  };
45
46
  fs_extra_1.ensureFileSync(outputPath);
46
47
  return fs_extra_1.writeFileSync(outputPath, JSON.stringify(config));
47
48
  };
48
49
  exports.writePrerenderConfig = writePrerenderConfig;
49
- async function movePageData({ functionDir }) {
50
- await fs_extra_1.copy(path_1.join('.vercel', 'output', 'static', 'page-data'), path_1.join(functionDir, 'page-data'));
51
- }
52
- exports.movePageData = movePageData;
53
50
  async function copyFunctionLibs({ functionDir, }) {
54
51
  /* Copies the required libs for Serverless Functions from .cache to the <name>.func folder */
55
52
  await Promise.allSettled([
@@ -1 +1 @@
1
- {"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/handlers/build.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/handlers/build.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ssr-handler.d.ts","sourceRoot":"","sources":["../../../src/handlers/templates/ssr-handler.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAUlE,wBAA8B,OAAO,CAAC,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,cAAc,iBAuB5E"}
1
+ {"version":3,"file":"ssr-handler.d.ts","sourceRoot":"","sources":["../../../src/handlers/templates/ssr-handler.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAUlE,wBAA8B,OAAO,CAAC,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,cAAc,iBAqD5E"}
@@ -3,9 +3,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- const path_1 = require("path");
7
6
  const os_1 = __importDefault(require("os"));
7
+ const etag_1 = __importDefault(require("etag"));
8
+ const url_1 = require("url");
8
9
  const fs_extra_1 = require("fs-extra");
10
+ const path_1 = require("path");
9
11
  const utils_1 = require("../utils");
10
12
  const TMP_DATA_PATH = path_1.join(os_1.default.tmpdir(), 'data/datastore');
11
13
  const CUR_DATA_PATH = path_1.join(__dirname, '.cache/data/datastore');
@@ -14,14 +16,38 @@ if (!fs_extra_1.existsSync(TMP_DATA_PATH)) {
14
16
  fs_extra_1.copySync(CUR_DATA_PATH, TMP_DATA_PATH);
15
17
  }
16
18
  async function handler(req, res) {
17
- const graphqlEngine = await utils_1.getGraphQLEngine();
18
- const { getData, renderHTML } = await utils_1.getPageSSRHelpers();
19
+ let pageName;
20
+ const pathname = url_1.parse(req.url).pathname || '/';
21
+ const isPageData = pathname.startsWith('/page-data/');
22
+ if (isPageData) {
23
+ // /page-data/index/page-data.json
24
+ // /page-data/using-ssr/page-data.json
25
+ pageName = path_1.basename(path_1.dirname(pathname));
26
+ if (pageName === 'index') {
27
+ pageName = '/';
28
+ }
29
+ }
30
+ else {
31
+ // /using-ssr
32
+ // /using-ssr/
33
+ // /using-ssr/index.html
34
+ pageName = path_1.basename(pathname);
35
+ if (pageName === 'index.html') {
36
+ pageName = path_1.basename(path_1.dirname(pathname));
37
+ }
38
+ if (!pageName) {
39
+ pageName = '/';
40
+ }
41
+ }
42
+ const [graphqlEngine, { getData, renderHTML, renderPageData }] = await Promise.all([utils_1.getGraphQLEngine(), utils_1.getPageSSRHelpers()]);
19
43
  const data = await getData({
20
- pathName: req.url,
44
+ pathName: pageName,
21
45
  graphqlEngine,
22
46
  req,
23
47
  });
24
- const results = await renderHTML({ data });
48
+ const results = isPageData
49
+ ? await renderPageData({ data })
50
+ : await renderHTML({ data });
25
51
  if (data.serverDataHeaders) {
26
52
  for (const [name, value] of Object.entries(data.serverDataHeaders)) {
27
53
  res.setHeader(name, value);
@@ -30,7 +56,13 @@ async function handler(req, res) {
30
56
  if (data.serverDataStatus) {
31
57
  res.statusCode = data.serverDataStatus;
32
58
  }
33
- res.send(results);
59
+ if (isPageData) {
60
+ res.setHeader('ETag', etag_1.default(JSON.stringify(results)));
61
+ res.json(results);
62
+ }
63
+ else {
64
+ res.send(results);
65
+ }
34
66
  }
35
67
  exports.default = handler;
36
68
  //# sourceMappingURL=ssr-handler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ssr-handler.js","sourceRoot":"","sources":["../../../src/handlers/templates/ssr-handler.ts"],"names":[],"mappings":";;;;;AAAA,+BAA4B;AAC5B,4CAAoB;AACpB,uCAAgD;AAEhD,oCAA+D;AAI/D,MAAM,aAAa,GAAG,WAAI,CAAC,YAAE,CAAC,MAAM,EAAE,EAAE,gBAAgB,CAAC,CAAC;AAC1D,MAAM,aAAa,GAAG,WAAI,CAAC,SAAS,EAAE,uBAAuB,CAAC,CAAC;AAE/D,IAAI,CAAC,qBAAU,CAAC,aAAa,CAAC,EAAE;IAC9B,iEAAiE;IACjE,mBAAQ,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;CACxC;AAEc,KAAK,UAAU,OAAO,CAAC,GAAkB,EAAE,GAAmB;IAC3E,MAAM,aAAa,GAAG,MAAM,wBAAgB,EAAE,CAAC;IAC/C,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,MAAM,yBAAiB,EAAE,CAAC;IAE1D,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC;QACzB,QAAQ,EAAE,GAAG,CAAC,GAAa;QAC3B,aAAa;QACb,GAAG;KACJ,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IAE3C,IAAI,IAAI,CAAC,iBAAiB,EAAE;QAC1B,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE;YAClE,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;SAC5B;KACF;IAED,IAAI,IAAI,CAAC,gBAAgB,EAAE;QACzB,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC;KACxC;IAED,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACpB,CAAC;AAvBD,0BAuBC"}
1
+ {"version":3,"file":"ssr-handler.js","sourceRoot":"","sources":["../../../src/handlers/templates/ssr-handler.ts"],"names":[],"mappings":";;;;;AAAA,4CAAoB;AACpB,gDAAwB;AACxB,6BAA4B;AAC5B,uCAAgD;AAChD,+BAA+C;AAC/C,oCAA+D;AAG/D,MAAM,aAAa,GAAG,WAAI,CAAC,YAAE,CAAC,MAAM,EAAE,EAAE,gBAAgB,CAAC,CAAC;AAC1D,MAAM,aAAa,GAAG,WAAI,CAAC,SAAS,EAAE,uBAAuB,CAAC,CAAC;AAE/D,IAAI,CAAC,qBAAU,CAAC,aAAa,CAAC,EAAE;IAC9B,iEAAiE;IACjE,mBAAQ,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;CACxC;AAEc,KAAK,UAAU,OAAO,CAAC,GAAkB,EAAE,GAAmB;IAC3E,IAAI,QAAgB,CAAC;IACrB,MAAM,QAAQ,GAAG,WAAK,CAAC,GAAG,CAAC,GAAI,CAAC,CAAC,QAAQ,IAAI,GAAG,CAAC;IACjD,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IACtD,IAAI,UAAU,EAAE;QACd,kCAAkC;QAClC,sCAAsC;QACtC,QAAQ,GAAG,eAAQ,CAAC,cAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;QACvC,IAAI,QAAQ,KAAK,OAAO,EAAE;YACxB,QAAQ,GAAG,GAAG,CAAC;SAChB;KACF;SAAM;QACL,aAAa;QACb,cAAc;QACd,wBAAwB;QACxB,QAAQ,GAAG,eAAQ,CAAC,QAAQ,CAAC,CAAC;QAC9B,IAAI,QAAQ,KAAK,YAAY,EAAE;YAC7B,QAAQ,GAAG,eAAQ,CAAC,cAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;SACxC;QACD,IAAI,CAAC,QAAQ,EAAE;YACb,QAAQ,GAAG,GAAG,CAAC;SAChB;KACF;IAED,MAAM,CAAC,aAAa,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC,GAC5D,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,wBAAgB,EAAE,EAAE,yBAAiB,EAAE,CAAC,CAAC,CAAC;IAE/D,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC;QACzB,QAAQ,EAAE,QAAQ;QAClB,aAAa;QACb,GAAG;KACJ,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,UAAU;QACxB,CAAC,CAAC,MAAM,cAAc,CAAC,EAAE,IAAI,EAAE,CAAC;QAChC,CAAC,CAAC,MAAM,UAAU,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IAE/B,IAAI,IAAI,CAAC,iBAAiB,EAAE;QAC1B,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE;YAClE,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;SAC5B;KACF;IAED,IAAI,IAAI,CAAC,gBAAgB,EAAE;QACzB,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC;KACxC;IAED,IAAI,UAAU,EAAE;QACd,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,cAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACrD,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACnB;SAAM;QACL,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACnB;AACH,CAAC;AArDD,0BAqDC"}
@@ -1,7 +1,3 @@
1
1
  export declare function getGraphQLEngine(): Promise<import("gatsby/dist/schema/graphql-engine/entry").GraphQLEngine>;
2
- export declare function getPageSSRHelpers(): Promise<{
3
- getData: typeof import("gatsby/dist/utils/page-ssr-module/entry").getData;
4
- renderPageData: typeof import("gatsby/dist/utils/page-ssr-module/entry").renderPageData;
5
- renderHTML: typeof import("gatsby/dist/utils/page-ssr-module/entry").renderHTML;
6
- }>;
2
+ export declare function getPageSSRHelpers(): Promise<typeof import("gatsby/dist/utils/page-ssr-module/entry")>;
7
3
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/handlers/utils.ts"],"names":[],"mappings":"AAKA,wBAAsB,gBAAgB,6EAMrC;AAED,wBAAsB,iBAAiB;;;;GAMtC"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/handlers/utils.ts"],"names":[],"mappings":"AAKA,wBAAsB,gBAAgB,6EAMrC;AAED,wBAAsB,iBAAiB,sEAItC"}
@@ -32,8 +32,7 @@ async function getGraphQLEngine() {
32
32
  }
33
33
  exports.getGraphQLEngine = getGraphQLEngine;
34
34
  async function getPageSSRHelpers() {
35
- const { getData, renderPageData, renderHTML } = (await Promise.resolve().then(() => __importStar(require(path_1.join(__dirname, '.cache/page-ssr/index.js')))));
36
- return { getData, renderPageData, renderHTML };
35
+ return (await Promise.resolve().then(() => __importStar(require(path_1.join(__dirname, '.cache/page-ssr/index.js')))));
37
36
  }
38
37
  exports.getPageSSRHelpers = getPageSSRHelpers;
39
38
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/handlers/utils.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+BAA4B;AAC5B,4CAAoB;AAEpB,MAAM,aAAa,GAAG,WAAI,CAAC,YAAE,CAAC,MAAM,EAAE,EAAE,gBAAgB,CAAC,CAAC;AAEnD,KAAK,UAAU,gBAAgB;IACpC,MAAM,EAAE,aAAa,EAAE,GAAG,CAAC,wDACzB,WAAI,CAAC,SAAS,EAAE,8BAA8B,CAAC,GAChD,CAA6D,CAAC;IAE/D,OAAO,IAAI,aAAa,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;AACtD,CAAC;AAND,4CAMC;AAEM,KAAK,UAAU,iBAAiB;IACrC,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,GAAG,CAAC,wDAC/C,WAAI,CAAC,SAAS,EAAE,0BAA0B,CAAC,GAC5C,CAA6D,CAAC;IAE/D,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,CAAC;AACjD,CAAC;AAND,8CAMC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/handlers/utils.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+BAA4B;AAC5B,4CAAoB;AAEpB,MAAM,aAAa,GAAG,WAAI,CAAC,YAAE,CAAC,MAAM,EAAE,EAAE,gBAAgB,CAAC,CAAC;AAEnD,KAAK,UAAU,gBAAgB;IACpC,MAAM,EAAE,aAAa,EAAE,GAAG,CAAC,wDACzB,WAAI,CAAC,SAAS,EAAE,8BAA8B,CAAC,GAChD,CAA6D,CAAC;IAE/D,OAAO,IAAI,aAAa,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;AACtD,CAAC;AAND,4CAMC;AAEM,KAAK,UAAU,iBAAiB;IACrC,OAAO,CAAC,wDACN,WAAI,CAAC,SAAS,EAAE,0BAA0B,CAAC,GAC5C,CAA6D,CAAC;AACjE,CAAC;AAJD,8CAIC"}
@@ -1,6 +1,9 @@
1
- import { GatsbyFunction } from '../schemas';
2
- import { Routes } from '../types';
3
- export declare function createServerlessFunctions({ dsgRoutes, ssrRoutes, }: Routes): Promise<void>;
4
- export declare function createPageDataFunction({ dsgRoutes, ssrRoutes }: Routes): Promise<void>;
5
- export declare function createAPIRoutes(functions: GatsbyFunction[]): Promise<void>;
1
+ import type { GatsbyFunction, GatsbyPage } from '../schemas';
2
+ /**
3
+ * Gatsby SSR/DSG on Vercel is enabled through Vercel Serverless Functions.
4
+ * This plugin creates one Serverless Function called `_ssr.func` that is used by SSR and DSG pages through symlinks.
5
+ * DSG is enabled through prerender functions.
6
+ */
7
+ export declare function createServerlessFunctions(ssrRoutes: GatsbyPage[], prefix?: string): Promise<void>;
8
+ export declare function createAPIRoutes(functions: GatsbyFunction[], prefix?: string): Promise<void>;
6
9
  //# sourceMappingURL=functions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"functions.d.ts","sourceRoot":"","sources":["../../src/helpers/functions.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,wBAAsB,yBAAyB,CAAC,EAC9C,SAAS,EACT,SAAS,GACV,EAAE,MAAM,iBAyCR;AAED,wBAAsB,sBAAsB,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,MAAM,iBA4C5E;AAED,wBAAsB,eAAe,CAAC,SAAS,EAAE,cAAc,EAAE,iBAiBhE"}
1
+ {"version":3,"file":"functions.d.ts","sourceRoot":"","sources":["../../src/helpers/functions.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7D;;;;GAIG;AACH,wBAAsB,yBAAyB,CAC7C,SAAS,EAAE,UAAU,EAAE,EACvB,MAAM,CAAC,EAAE,MAAM,iBAoEhB;AAED,wBAAsB,eAAe,CACnC,SAAS,EAAE,cAAc,EAAE,EAC3B,MAAM,CAAC,EAAE,MAAM,iBAkBhB"}
@@ -1,63 +1,56 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createAPIRoutes = exports.createPageDataFunction = exports.createServerlessFunctions = void 0;
3
+ exports.createAPIRoutes = exports.createServerlessFunctions = void 0;
4
4
  const path_1 = require("path");
5
5
  const fs_extra_1 = require("fs-extra");
6
6
  const symlink_1 = require("../utils/symlink");
7
7
  const build_1 = require("../handlers/build");
8
- async function createServerlessFunctions({ dsgRoutes, ssrRoutes, }) {
9
- /* Gatsby SSR/DSG on Vercel is enabled through Vercel Serverless Functions.
10
- This plugin creates one Serverless Function called `_ssr.func` that is used by SSR and DSG pages through symlinks.
11
- DSG is enabled through prerender functions.
12
- */
13
- const functionName = '_ssr.func';
14
- const functionDir = path_1.join('.vercel', 'output', 'functions', functionName);
15
- const handlerFile = path_1.join(__dirname, '..', 'handlers', 'templates', './ssr-handler.js');
16
- await fs_extra_1.ensureDir(functionDir);
17
- await Promise.all([
18
- build_1.writeHandler({ outDir: functionDir, handlerFile }),
19
- build_1.copyFunctionLibs({ functionDir }),
20
- build_1.copyHTMLFiles({ functionDir }),
21
- build_1.writeVCConfig({ functionDir }),
22
- ]);
23
- await Promise.all([
24
- ...ssrRoutes.map(async (pathName) => {
25
- return symlink_1.createSymlink(pathName, functionName);
26
- }),
27
- ...dsgRoutes.map(async (pathName) => {
28
- build_1.writePrerenderConfig(path_1.join('.vercel', 'output', 'functions', `${pathName}.prerender-config.json`));
29
- return symlink_1.createSymlink(pathName, functionName);
30
- }),
31
- ]);
8
+ /**
9
+ * Gatsby SSR/DSG on Vercel is enabled through Vercel Serverless Functions.
10
+ * This plugin creates one Serverless Function called `_ssr.func` that is used by SSR and DSG pages through symlinks.
11
+ * DSG is enabled through prerender functions.
12
+ */
13
+ async function createServerlessFunctions(ssrRoutes, prefix) {
14
+ let functionName;
15
+ let functionDir;
16
+ const handlerFile = path_1.join(__dirname, '../handlers/templates/ssr-handler.js');
17
+ await Promise.all(ssrRoutes.map(async (page, index) => {
18
+ let pathName = page.path;
19
+ // HTML renderer
20
+ const ssrPath = path_1.join(prefix ?? '', pathName, 'index.html');
21
+ if (index === 0) {
22
+ // For the first page, create the SSR Serverless Function
23
+ functionName = `${ssrPath}.func`;
24
+ functionDir = path_1.join('.vercel/output/functions', functionName);
25
+ await fs_extra_1.ensureDir(functionDir);
26
+ await Promise.all([
27
+ build_1.writeHandler({ outDir: functionDir, handlerFile }),
28
+ build_1.copyFunctionLibs({ functionDir }),
29
+ build_1.copyHTMLFiles({ functionDir }),
30
+ build_1.writeVCConfig({ functionDir }),
31
+ ]);
32
+ }
33
+ else {
34
+ // If it's not the first page, then symlink to the first function
35
+ await symlink_1.createSymlink(ssrPath, functionName);
36
+ }
37
+ if (page.mode === 'DSG') {
38
+ build_1.writePrerenderConfig(path_1.join('.vercel', 'output', 'functions', `${ssrPath}.prerender-config.json`), index + 1);
39
+ }
40
+ // page-data renderer
41
+ if (!pathName || pathName === '/') {
42
+ pathName = 'index';
43
+ }
44
+ const pageDataPath = path_1.join(prefix ?? '', 'page-data', pathName, 'page-data.json');
45
+ await symlink_1.createSymlink(pageDataPath, functionName);
46
+ if (page.mode === 'DSG') {
47
+ build_1.writePrerenderConfig(path_1.join('.vercel', 'output', 'functions', `${pageDataPath}.prerender-config.json`), index + 1);
48
+ }
49
+ }));
32
50
  }
33
51
  exports.createServerlessFunctions = createServerlessFunctions;
34
- async function createPageDataFunction({ dsgRoutes, ssrRoutes }) {
35
- /* Gatsby uses /page-data/<path>/page-data.json to fetch data. This plugin creates a
36
- `_page-data.func` function that dynamically generates this data if it's not available in `static/page-data`. */
37
- const functionName = '_page-data.func';
38
- const functionDir = path_1.join('.vercel', 'output', 'functions', functionName);
39
- const handlerFile = path_1.join(__dirname, '..', 'handlers', 'templates', './page-data.js');
40
- await fs_extra_1.ensureDir(functionDir);
41
- await Promise.all([
42
- build_1.writeHandler({ outDir: functionDir, handlerFile }),
43
- build_1.copyFunctionLibs({ functionDir }),
44
- build_1.movePageData({ functionDir }),
45
- build_1.writeVCConfig({ functionDir }),
46
- ]);
47
- await Promise.all([
48
- ...ssrRoutes.map(async (pathName) => {
49
- return symlink_1.createSymlink(`page-data/${pathName}/page-data.json`, functionName);
50
- }),
51
- ...dsgRoutes.map(async (pathName) => {
52
- const funcPath = `page-data/${pathName}/page-data.json`;
53
- build_1.writePrerenderConfig(path_1.join('.vercel', 'output', 'functions', `${funcPath}.prerender-config.json`));
54
- return symlink_1.createSymlink(funcPath, functionName);
55
- }),
56
- ]);
57
- }
58
- exports.createPageDataFunction = createPageDataFunction;
59
- async function createAPIRoutes(functions) {
60
- const apiDir = path_1.join('.vercel', 'output', 'functions', 'api');
52
+ async function createAPIRoutes(functions, prefix) {
53
+ const apiDir = path_1.join('.vercel', 'output', 'functions', 'api', prefix ?? '');
61
54
  await fs_extra_1.ensureDir(apiDir);
62
55
  await Promise.allSettled(functions.map(async (func) => {
63
56
  const apiRouteDir = `${apiDir}/${func.functionRoute}.func`;
@@ -1 +1 @@
1
- {"version":3,"file":"functions.js","sourceRoot":"","sources":["../../src/helpers/functions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"functions.js","sourceRoot":"","sources":["../../src/helpers/functions.ts"],"names":[],"mappings":";;;AAAA,+BAA4B;AAC5B,uCAAqC;AACrC,8CAAiD;AACjD,6CAM2B;AAG3B;;;;GAIG;AACI,KAAK,UAAU,yBAAyB,CAC7C,SAAuB,EACvB,MAAe;IAEf,IAAI,YAAoB,CAAC;IACzB,IAAI,WAAmB,CAAC;IACxB,MAAM,WAAW,GAAG,WAAI,CAAC,SAAS,EAAE,sCAAsC,CAAC,CAAC;IAE5E,MAAM,OAAO,CAAC,GAAG,CACf,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;QAClC,IAAI,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;QAEzB,gBAAgB;QAChB,MAAM,OAAO,GAAG,WAAI,CAAC,MAAM,IAAI,EAAE,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;QAC3D,IAAI,KAAK,KAAK,CAAC,EAAE;YACf,yDAAyD;YACzD,YAAY,GAAG,GAAG,OAAO,OAAO,CAAC;YACjC,WAAW,GAAG,WAAI,CAAC,0BAA0B,EAAE,YAAY,CAAC,CAAC;YAE7D,MAAM,oBAAS,CAAC,WAAW,CAAC,CAAC;YAE7B,MAAM,OAAO,CAAC,GAAG,CAAC;gBAChB,oBAAY,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC;gBAClD,wBAAgB,CAAC,EAAE,WAAW,EAAE,CAAC;gBACjC,qBAAa,CAAC,EAAE,WAAW,EAAE,CAAC;gBAC9B,qBAAa,CAAC,EAAE,WAAW,EAAE,CAAC;aAC/B,CAAC,CAAC;SACJ;aAAM;YACL,iEAAiE;YACjE,MAAM,uBAAa,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;SAC5C;QAED,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE;YACvB,4BAAoB,CAClB,WAAI,CACF,SAAS,EACT,QAAQ,EACR,WAAW,EACX,GAAG,OAAO,wBAAwB,CACnC,EACD,KAAK,GAAG,CAAC,CACV,CAAC;SACH;QAED,qBAAqB;QACrB,IAAI,CAAC,QAAQ,IAAI,QAAQ,KAAK,GAAG,EAAE;YACjC,QAAQ,GAAG,OAAO,CAAC;SACpB;QAED,MAAM,YAAY,GAAG,WAAI,CACvB,MAAM,IAAI,EAAE,EACZ,WAAW,EACX,QAAQ,EACR,gBAAgB,CACjB,CAAC;QACF,MAAM,uBAAa,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;QAEhD,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE;YACvB,4BAAoB,CAClB,WAAI,CACF,SAAS,EACT,QAAQ,EACR,WAAW,EACX,GAAG,YAAY,wBAAwB,CACxC,EACD,KAAK,GAAG,CAAC,CACV,CAAC;SACH;IACH,CAAC,CAAC,CACH,CAAC;AACJ,CAAC;AAtED,8DAsEC;AAEM,KAAK,UAAU,eAAe,CACnC,SAA2B,EAC3B,MAAe;IAEf,MAAM,MAAM,GAAG,WAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC;IAC3E,MAAM,oBAAS,CAAC,MAAM,CAAC,CAAC;IAExB,MAAM,OAAO,CAAC,UAAU,CACtB,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,IAAoB,EAAE,EAAE;QAC3C,MAAM,WAAW,GAAG,GAAG,MAAM,IAAI,IAAI,CAAC,aAAa,OAAO,CAAC;QAC3D,MAAM,WAAW,GAAG,IAAI,CAAC,wBAAwB,CAAC;QAElD,MAAM,oBAAS,CAAC,WAAW,CAAC,CAAC;QAE7B,MAAM,OAAO,CAAC,GAAG,CAAC;YAChB,oBAAY,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC;YAClD,qBAAa,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC;SAC5C,CAAC,CAAC;IACL,CAAC,CAAC,CACH,CAAC;AACJ,CAAC;AApBD,0CAoBC"}
@@ -1,2 +1,2 @@
1
- export declare function createStaticDir(): Promise<void>;
1
+ export declare function createStaticDir(prefix?: string): Promise<void>;
2
2
  //# sourceMappingURL=static.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"static.d.ts","sourceRoot":"","sources":["../../src/helpers/static.ts"],"names":[],"mappings":"AAIA,wBAAsB,eAAe,kBAKpC"}
1
+ {"version":3,"file":"static.d.ts","sourceRoot":"","sources":["../../src/helpers/static.ts"],"names":[],"mappings":"AAGA,wBAAsB,eAAe,CAAC,MAAM,CAAC,EAAE,MAAM,iBAUpD"}
@@ -3,8 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createStaticDir = void 0;
4
4
  const path_1 = require("path");
5
5
  const fs_extra_1 = require("fs-extra");
6
- async function createStaticDir() {
7
- const targetDir = path_1.join(process.cwd(), '.vercel', 'output', 'static');
6
+ async function createStaticDir(prefix) {
7
+ const targetDir = path_1.join(process.cwd(), '.vercel', 'output', 'static', prefix ?? '');
8
8
  await fs_extra_1.ensureDir(targetDir);
9
9
  await fs_extra_1.copy(path_1.join(process.cwd(), 'public'), targetDir);
10
10
  }
@@ -1 +1 @@
1
- {"version":3,"file":"static.js","sourceRoot":"","sources":["../../src/helpers/static.ts"],"names":[],"mappings":";;;AAAA,+BAA4B;AAE5B,uCAA2C;AAEpC,KAAK,UAAU,eAAe;IACnC,MAAM,SAAS,GAAG,WAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACrE,MAAM,oBAAS,CAAC,SAAS,CAAC,CAAC;IAE3B,MAAM,eAAI,CAAC,WAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,EAAE,SAAS,CAAC,CAAC;AACvD,CAAC;AALD,0CAKC"}
1
+ {"version":3,"file":"static.js","sourceRoot":"","sources":["../../src/helpers/static.ts"],"names":[],"mappings":";;;AAAA,+BAA4B;AAC5B,uCAA2C;AAEpC,KAAK,UAAU,eAAe,CAAC,MAAe;IACnD,MAAM,SAAS,GAAG,WAAI,CACpB,OAAO,CAAC,GAAG,EAAE,EACb,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,MAAM,IAAI,EAAE,CACb,CAAC;IACF,MAAM,oBAAS,CAAC,SAAS,CAAC,CAAC;IAC3B,MAAM,eAAI,CAAC,WAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,EAAE,SAAS,CAAC,CAAC;AACvD,CAAC;AAVD,0CAUC"}
package/dist/index.d.ts CHANGED
@@ -4,6 +4,7 @@ export interface GenerateVercelBuildOutputAPI3OutputOptions {
4
4
  pages: Map<string, unknown>;
5
5
  redirects: unknown;
6
6
  functions: unknown;
7
+ config: unknown;
7
8
  };
8
9
  [x: string]: unknown;
9
10
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,0CAA0C;IACzD,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE;QAChB,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC5B,SAAS,EAAE,OAAO,CAAC;QACnB,SAAS,EAAE,OAAO,CAAC;KACpB,CAAC;IACF,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACtB;AAED,wBAAsB,mCAAmC,CAAC,EACxD,UAAU,EACV,gBAAgB,GACjB,EAAE,0CAA0C,iBA6E5C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,0CAA0C;IACzD,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE;QAChB,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC5B,SAAS,EAAE,OAAO,CAAC;QACnB,SAAS,EAAE,OAAO,CAAC;QACnB,MAAM,EAAE,OAAO,CAAC;KACjB,CAAC;IACF,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACtB;AACD,wBAAsB,mCAAmC,CAAC,EACxD,UAAU,EACV,gBAAgB,GACjB,EAAE,0CAA0C,iBA0D5C"}
package/dist/index.js CHANGED
@@ -12,51 +12,37 @@ async function generateVercelBuildOutputAPI3Output({ exportPath, gatsbyStoreStat
12
12
  pages: Array.from(gatsbyStoreState.pages.entries()),
13
13
  redirects: gatsbyStoreState.redirects,
14
14
  functions: gatsbyStoreState.functions,
15
+ config: gatsbyStoreState.config,
15
16
  };
16
17
  if (schemas_1.validateGatsbyState(state)) {
17
18
  console.log('▲ Creating Vercel build output');
18
19
  await fs_extra_1.remove(path_1.join('.vercel', 'output'));
19
- const { pages, redirects, functions } = state;
20
- const { ssrRoutes, dsgRoutes } = pages.reduce((acc, [, cur]) => {
21
- if (cur.mode === 'SSR') {
22
- acc.ssrRoutes.push(cur.path);
23
- }
24
- else if (cur.mode === 'DSG') {
25
- acc.dsgRoutes.push(cur.path);
26
- }
27
- return acc;
28
- }, {
29
- ssrRoutes: [],
30
- dsgRoutes: [],
31
- });
32
- await static_1.createStaticDir();
33
- await fs_extra_1.mkdirp(path_1.join('.cache', 'caches'));
34
- const createPromises = [];
35
- if (functions.length > 0)
36
- createPromises.push(functions_1.createAPIRoutes(functions));
37
- if (ssrRoutes.length > 0 || dsgRoutes.length > 0) {
38
- createPromises.push(functions_1.createPageDataFunction({ ssrRoutes, dsgRoutes }));
39
- createPromises.push(functions_1.createServerlessFunctions({ ssrRoutes, dsgRoutes }));
20
+ const { pages, redirects, functions, config: gatsbyConfig } = state;
21
+ const ssrRoutes = pages
22
+ .map(p => p[1])
23
+ .filter(page => page.mode === 'SSR' || page.mode === 'DSG');
24
+ const ops = [static_1.createStaticDir(gatsbyConfig.pathPrefix)];
25
+ if (functions.length > 0) {
26
+ ops.push(functions_1.createAPIRoutes(functions, gatsbyConfig.pathPrefix));
27
+ }
28
+ if (ssrRoutes.length > 0) {
29
+ ops.push(functions_1.createServerlessFunctions(ssrRoutes, gatsbyConfig.pathPrefix));
30
+ }
31
+ await Promise.all(ops);
32
+ let trailingSlash = undefined;
33
+ if (gatsbyConfig.trailingSlash === 'always') {
34
+ trailingSlash = true;
35
+ }
36
+ else if (gatsbyConfig.trailingSlash === 'never') {
37
+ trailingSlash = false;
40
38
  }
41
- await Promise.all(createPromises);
42
- const vercelConfigPath = `${process.cwd()}/vercel.config.js`;
43
- const vercelConfig = (await fs_extra_1.pathExists(vercelConfigPath))
44
- ? require(vercelConfigPath).default
45
- : {};
46
39
  const { routes } = routing_utils_1.getTransformedRoutes({
47
- ...vercelConfig,
48
- trailingSlash: false,
40
+ trailingSlash,
49
41
  redirects: redirects.map(({ fromPath, toPath, isPermanent }) => ({
50
42
  source: fromPath,
51
43
  destination: toPath,
52
44
  permanent: isPermanent,
53
45
  })),
54
- rewrites: [
55
- {
56
- source: '^/page-data(?:/(.*))/page-data\\.json$',
57
- destination: '/_page-data',
58
- },
59
- ],
60
46
  });
61
47
  const config = {
62
48
  version: 3,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,+BAA4B;AAC5B,yDAA6D;AAC7D,uCAA6C;AAC7C,uCAAgD;AAChD,mDAG6B;AAC7B,6CAAmD;AAa5C,KAAK,UAAU,mCAAmC,CAAC,EACxD,UAAU,EACV,gBAAgB,GAC2B;IAC3C,MAAM,KAAK,GAAG;QACZ,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QACnD,SAAS,EAAE,gBAAgB,CAAC,SAAS;QACrC,SAAS,EAAE,gBAAgB,CAAC,SAAS;QACrC,MAAM,EAAE,gBAAgB,CAAC,MAAM;KAChC,CAAC;IAEF,IAAI,6BAAmB,CAAC,KAAK,CAAC,EAAE;QAC9B,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;QAC9C,MAAM,iBAAM,CAAC,WAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;QAExC,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC;QAEpE,MAAM,SAAS,GAAG,KAAK;aACpB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aACd,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC;QAE9D,MAAM,GAAG,GAAoB,CAAC,wBAAe,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC;QAExE,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;YACxB,GAAG,CAAC,IAAI,CAAC,2BAAe,CAAC,SAAS,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC;SAC/D;QAED,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;YACxB,GAAG,CAAC,IAAI,CAAC,qCAAyB,CAAC,SAAS,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC;SACzE;QAED,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAEvB,IAAI,aAAa,GAAwB,SAAS,CAAC;QACnD,IAAI,YAAY,CAAC,aAAa,KAAK,QAAQ,EAAE;YAC3C,aAAa,GAAG,IAAI,CAAC;SACtB;aAAM,IAAI,YAAY,CAAC,aAAa,KAAK,OAAO,EAAE;YACjD,aAAa,GAAG,KAAK,CAAC;SACvB;QAED,MAAM,EAAE,MAAM,EAAE,GAAG,oCAAoB,CAAC;YACtC,aAAa;YACb,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC/D,MAAM,EAAE,QAAQ;gBAChB,WAAW,EAAE,MAAM;gBACnB,SAAS,EAAE,WAAW;aACvB,CAAC,CAAC;SACJ,CAAC,CAAC;QAEH,MAAM,MAAM,GAAW;YACrB,OAAO,EAAE,CAAC;YACV,MAAM,EAAE,MAAM,IAAI,SAAS;SAC5B,CAAC;QAEF,MAAM,oBAAS,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;KACjD;SAAM;QACL,MAAM,IAAI,KAAK,CACb,oFAAoF,CACrF,CAAC;KACH;AACH,CAAC;AA7DD,kFA6DC"}
package/dist/schemas.d.ts CHANGED
@@ -1,13 +1,15 @@
1
- import type { IGatsbyPage, IGatsbyFunction, IRedirect } from 'gatsby/dist/redux/types';
1
+ import type { IGatsbyPage, IGatsbyFunction, IRedirect, IGatsbyConfig } from 'gatsby/dist/redux/types';
2
2
  import Ajv from 'ajv';
3
3
  export declare type GatsbyPage = Pick<IGatsbyPage, 'mode' | 'path'>;
4
4
  export interface GatsbyState {
5
5
  pages: Array<[string, GatsbyPage]>;
6
6
  redirects: Array<GatsbyRedirect>;
7
7
  functions: Array<GatsbyFunction>;
8
+ config: GatsbyConfig;
8
9
  }
9
10
  export declare type GatsbyFunction = Pick<IGatsbyFunction, 'functionRoute' | 'originalAbsoluteFilePath'>;
10
11
  export declare type GatsbyRedirect = Pick<IRedirect, 'fromPath' | 'toPath' | 'isPermanent'>;
12
+ export declare type GatsbyConfig = Pick<IGatsbyConfig, 'trailingSlash' | 'assetPrefix' | 'pathPrefix'>;
11
13
  export declare const ajv: Ajv;
12
14
  export declare const validateGatsbyState: import("ajv").ValidateFunction<GatsbyState>;
13
15
  //# sourceMappingURL=schemas.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,eAAe,EACf,SAAS,EACV,MAAM,yBAAyB,CAAC;AACjC,OAAO,GAAuB,MAAM,KAAK,CAAC;AAE1C,oBAAY,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;AAe5D,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;IACnC,SAAS,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;IACjC,SAAS,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;CAClC;AAED,oBAAY,cAAc,GAAG,IAAI,CAC/B,eAAe,EACf,eAAe,GAAG,0BAA0B,CAC7C,CAAC;AAUF,oBAAY,cAAc,GAAG,IAAI,CAC/B,SAAS,EACT,UAAU,GAAG,QAAQ,GAAG,aAAa,CACtC,CAAC;AAoCF,eAAO,MAAM,GAAG,KAA+B,CAAC;AAChD,eAAO,MAAM,mBAAmB,6CAAiC,CAAC"}
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,eAAe,EACf,SAAS,EACT,aAAa,EACd,MAAM,yBAAyB,CAAC;AACjC,OAAO,GAAuB,MAAM,KAAK,CAAC;AAE1C,oBAAY,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;AAe5D,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;IACnC,SAAS,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;IACjC,SAAS,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;IACjC,MAAM,EAAE,YAAY,CAAC;CACtB;AAED,oBAAY,cAAc,GAAG,IAAI,CAC/B,eAAe,EACf,eAAe,GAAG,0BAA0B,CAC7C,CAAC;AAUF,oBAAY,cAAc,GAAG,IAAI,CAC/B,SAAS,EACT,UAAU,GAAG,QAAQ,GAAG,aAAa,CACtC,CAAC;AAWF,oBAAY,YAAY,GAAG,IAAI,CAC7B,aAAa,EACb,eAAe,GAAG,aAAa,GAAG,YAAY,CAC/C,CAAC;AA+CF,eAAO,MAAM,GAAG,KAA+B,CAAC;AAChD,eAAO,MAAM,mBAAmB,6CAAiC,CAAC"}
package/dist/schemas.js CHANGED
@@ -35,6 +35,24 @@ const GatsbyRedirectSchema = {
35
35
  },
36
36
  required: ['fromPath', 'toPath'],
37
37
  };
38
+ const GatsbyConfigSchema = {
39
+ type: 'object',
40
+ properties: {
41
+ trailingSlash: {
42
+ type: 'string',
43
+ enum: ['always', 'never', 'ignore', 'legacy'],
44
+ nullable: true,
45
+ },
46
+ assetPrefix: {
47
+ type: 'string',
48
+ nullable: true,
49
+ },
50
+ pathPrefix: {
51
+ type: 'string',
52
+ nullable: true,
53
+ },
54
+ },
55
+ };
38
56
  const GatsbyStateSchema = {
39
57
  type: 'object',
40
58
  properties: {
@@ -55,8 +73,9 @@ const GatsbyStateSchema = {
55
73
  type: 'array',
56
74
  items: GatsbyFunctionSchema,
57
75
  },
76
+ config: GatsbyConfigSchema,
58
77
  },
59
- required: ['pages', 'redirects', 'functions'],
78
+ required: ['pages', 'redirects', 'functions', 'config'],
60
79
  additionalProperties: true,
61
80
  };
62
81
  exports.ajv = new ajv_1.default({ allErrors: true });
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":";;;;;;AAKA,8CAA0C;AAG1C,MAAM,gBAAgB,GAA+B;IACnD,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACV,IAAI,EAAE;YACJ,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;SAC5B;QACD,IAAI,EAAE;YACJ,IAAI,EAAE,QAAQ;SACf;KACF;IACD,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;CAClB,CAAC;AAYX,MAAM,oBAAoB,GAAmC;IAC3D,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACV,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QACjC,wBAAwB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;KAC7C;IACD,QAAQ,EAAE,CAAC,eAAe,EAAE,0BAA0B,CAAC;CAC/C,CAAC;AAMX,MAAM,oBAAoB,GAAmC;IAC3D,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACV,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC5B,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC1B,WAAW,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE;KACjD;IACD,QAAQ,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC;CACxB,CAAC;AAEX,MAAM,iBAAiB,GAAgC;IACrD,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACV,KAAK,EAAE;YACL,IAAI,EAAE,OAAO;YACb,KAAK,EAAE;gBACL,IAAI,EAAE,OAAO;gBACb,QAAQ,EAAE,CAAC;gBACX,QAAQ,EAAE,CAAC;gBACX,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,gBAAgB,CAAC;aAC9C;SACF;QACD,SAAS,EAAE;YACT,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,oBAAoB;SAC5B;QACD,SAAS,EAAE;YACT,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,oBAAoB;SAC5B;KACF;IACD,QAAQ,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC;IAC7C,oBAAoB,EAAE,IAAI;CAClB,CAAC;AAEE,QAAA,GAAG,GAAG,IAAI,aAAG,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AACnC,QAAA,mBAAmB,GAAG,WAAG,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC"}
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":";;;;;;AAMA,8CAA0C;AAG1C,MAAM,gBAAgB,GAA+B;IACnD,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACV,IAAI,EAAE;YACJ,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;SAC5B;QACD,IAAI,EAAE;YACJ,IAAI,EAAE,QAAQ;SACf;KACF;IACD,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;CAClB,CAAC;AAaX,MAAM,oBAAoB,GAAmC;IAC3D,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACV,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QACjC,wBAAwB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;KAC7C;IACD,QAAQ,EAAE,CAAC,eAAe,EAAE,0BAA0B,CAAC;CAC/C,CAAC;AAMX,MAAM,oBAAoB,GAAmC;IAC3D,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACV,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC5B,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC1B,WAAW,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE;KACjD;IACD,QAAQ,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC;CACxB,CAAC;AAOX,MAAM,kBAAkB,GAAiC;IACvD,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACV,aAAa,EAAE;YACb,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC;YAC7C,QAAQ,EAAE,IAAI;SACf;QACD,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,IAAI;SACf;QACD,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,IAAI;SACf;KACF;CACO,CAAC;AAEX,MAAM,iBAAiB,GAAgC;IACrD,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACV,KAAK,EAAE;YACL,IAAI,EAAE,OAAO;YACb,KAAK,EAAE;gBACL,IAAI,EAAE,OAAO;gBACb,QAAQ,EAAE,CAAC;gBACX,QAAQ,EAAE,CAAC;gBACX,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,gBAAgB,CAAC;aAC9C;SACF;QACD,SAAS,EAAE;YACT,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,oBAAoB;SAC5B;QACD,SAAS,EAAE;YACT,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,oBAAoB;SAC5B;QACD,MAAM,EAAE,kBAAkB;KAC3B;IACD,QAAQ,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,CAAC;IACvD,oBAAoB,EAAE,IAAI;CAClB,CAAC;AAEE,QAAA,GAAG,GAAG,IAAI,aAAG,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AACnC,QAAA,mBAAmB,GAAG,WAAG,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"symlink.d.ts","sourceRoot":"","sources":["../../src/utils/symlink.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,aAAa,aAAoB,MAAM,YAAY,MAAM,kBAarE,CAAC"}
1
+ {"version":3,"file":"symlink.d.ts","sourceRoot":"","sources":["../../src/utils/symlink.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,aAAa,aAAoB,MAAM,YAAY,MAAM,kBAarE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"symlink.js","sourceRoot":"","sources":["../../src/utils/symlink.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,6CAAkD;AAElD,uCAAkD;AAElD,MAAM,mBAAmB,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAE7D,MAAM,aAAa,GAAG,KAAK,EAAE,QAAgB,EAAE,QAAgB,EAAE,EAAE;IACxE,MAAM,YAAY,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,UAAG,CAAC,CAAC,GAAG,EAAE,CAAC;IAEpE,MAAM,OAAO,GAAG,mBAAmB,CACjC,WAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAS,CAAC,WAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CACxE,CAAC;IAEF,MAAM,oBAAS,CAAC,OAAO,CAAC,CAAC;IAEzB,sBAAW,CACT,cAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,WAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC,EACxE,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,YAAY,OAAO,CAAC,CAC3C,CAAC;AACJ,CAAC,CAAC;AAbW,QAAA,aAAa,iBAaxB"}
1
+ {"version":3,"file":"symlink.js","sourceRoot":"","sources":["../../src/utils/symlink.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,6CAAkD;AAClD,uCAAkD;AAElD,MAAM,mBAAmB,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAE7D,MAAM,aAAa,GAAG,KAAK,EAAE,QAAgB,EAAE,QAAgB,EAAE,EAAE;IACxE,MAAM,YAAY,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,UAAG,CAAC,CAAC,GAAG,EAAE,CAAC;IAEpE,MAAM,OAAO,GAAG,mBAAmB,CACjC,WAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAS,CAAC,WAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CACxE,CAAC;IAEF,MAAM,oBAAS,CAAC,OAAO,CAAC,CAAC;IAEzB,sBAAW,CACT,cAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,WAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC,EACxE,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,YAAY,OAAO,CAAC,CAC3C,CAAC;AACJ,CAAC,CAAC;AAbW,QAAA,aAAa,iBAaxB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vercel/gatsby-plugin-vercel-builder",
3
- "version": "0.1.2",
3
+ "version": "1.0.1",
4
4
  "main": "dist/index.js",
5
5
  "files": [
6
6
  "dist",
@@ -14,8 +14,8 @@
14
14
  "build:src": "tsc -p tsconfig.src.json"
15
15
  },
16
16
  "dependencies": {
17
- "@vercel/build-utils": "5.9.0",
18
- "@vercel/node": "2.8.15",
17
+ "@vercel/build-utils": "6.0.0",
18
+ "@vercel/node": "2.8.16",
19
19
  "@vercel/routing-utils": "2.1.8",
20
20
  "ajv": "8.12.0",
21
21
  "esbuild": "0.16.17",
@@ -30,5 +30,5 @@
30
30
  "gatsby": "4.25.2",
31
31
  "typescript": "4.3.4"
32
32
  },
33
- "gitHead": "92f5b6e0c9be947a68b617d282fc39144f530813"
33
+ "gitHead": "25f6595d3698546ba69c7fe9f601a906167fef3f"
34
34
  }
@@ -1,3 +0,0 @@
1
- import type { VercelRequest, VercelResponse } from '@vercel/node';
2
- export default function handler(req: VercelRequest, res: VercelResponse): Promise<VercelResponse>;
3
- //# sourceMappingURL=page-data.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"page-data.d.ts","sourceRoot":"","sources":["../../../src/handlers/templates/page-data.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAYlE,wBAA8B,OAAO,CAAC,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,cAAc,2BAwC5E"}
@@ -1,45 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const os_1 = __importDefault(require("os"));
7
- const path_1 = require("path");
8
- const etag_1 = __importDefault(require("etag"));
9
- const fs_extra_1 = require("fs-extra");
10
- const utils_1 = require("../utils");
11
- const TMP_DATA_PATH = path_1.join(os_1.default.tmpdir(), 'data/datastore');
12
- const CUR_DATA_PATH = path_1.join(__dirname, '.cache/data/datastore');
13
- if (!fs_extra_1.existsSync(TMP_DATA_PATH)) {
14
- // Copies executable `data` files to the writable /tmp directory.
15
- fs_extra_1.copySync(CUR_DATA_PATH, TMP_DATA_PATH);
16
- }
17
- async function handler(req, res) {
18
- const splitPathName = req.url.split('/')[2];
19
- const pathName = splitPathName === `index` ? `/` : splitPathName;
20
- if (fs_extra_1.existsSync(path_1.join(__dirname, 'page-data', splitPathName, 'page-data.json'))) {
21
- /* Non-SSR/DSG pages already have a pre-generated page-data.json file.
22
- Instead of generating this dynamically, we can directly serve this JSON. */
23
- res.setHeader('Content-Type', 'application/json');
24
- return res
25
- .status(200)
26
- .json(fs_extra_1.readFileSync(path_1.join(__dirname, 'page-data', splitPathName, 'page-data.json'), 'utf-8'));
27
- }
28
- const { getData, renderPageData } = await utils_1.getPageSSRHelpers();
29
- const graphqlEngine = await utils_1.getGraphQLEngine();
30
- const data = await getData({
31
- req,
32
- graphqlEngine,
33
- pathName,
34
- });
35
- const pageData = await renderPageData({ data });
36
- if (data.serverDataHeaders) {
37
- for (const [name, value] of Object.entries(data.serverDataHeaders)) {
38
- res.setHeader(name, value);
39
- }
40
- }
41
- res.setHeader('ETag', etag_1.default(JSON.stringify(pageData)));
42
- return res.json(pageData);
43
- }
44
- exports.default = handler;
45
- //# sourceMappingURL=page-data.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"page-data.js","sourceRoot":"","sources":["../../../src/handlers/templates/page-data.ts"],"names":[],"mappings":";;;;;AAAA,4CAAoB;AACpB,+BAA4B;AAC5B,gDAAwB;AACxB,uCAA8D;AAI9D,oCAA+D;AAE/D,MAAM,aAAa,GAAG,WAAI,CAAC,YAAE,CAAC,MAAM,EAAE,EAAE,gBAAgB,CAAC,CAAC;AAC1D,MAAM,aAAa,GAAG,WAAI,CAAC,SAAS,EAAE,uBAAuB,CAAC,CAAC;AAE/D,IAAI,CAAC,qBAAU,CAAC,aAAa,CAAC,EAAE;IAC9B,iEAAiE;IACjE,mBAAQ,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;CACxC;AAEc,KAAK,UAAU,OAAO,CAAC,GAAkB,EAAE,GAAmB;IAC3E,MAAM,aAAa,GAAG,GAAG,CAAC,GAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,aAAa,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC;IAEjE,IACE,qBAAU,CAAC,WAAI,CAAC,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,gBAAgB,CAAC,CAAC,EACzE;QACA;qFAC6E;QAC7E,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;QAElD,OAAO,GAAG;aACP,MAAM,CAAC,GAAG,CAAC;aACX,IAAI,CACH,uBAAY,CACV,WAAI,CAAC,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,gBAAgB,CAAC,EAC7D,OAAO,CACR,CACF,CAAC;KACL;IAED,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,MAAM,yBAAiB,EAAE,CAAC;IAC9D,MAAM,aAAa,GAAG,MAAM,wBAAgB,EAAE,CAAC;IAE/C,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC;QACzB,GAAG;QACH,aAAa;QACb,QAAQ;KACT,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IAEhD,IAAI,IAAI,CAAC,iBAAiB,EAAE;QAC1B,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE;YAClE,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;SAC5B;KACF;IAED,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,cAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACtD,OAAO,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC5B,CAAC;AAxCD,0BAwCC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"gatsby-node.js","sourceRoot":"","sources":["gatsby-node.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AAIxB,qEAAqE;AACrE,iCAA6D;AAEtD,MAAM,mBAAmB,GAAsC,CAAC,EACrE,GAAG,GACJ,EAAE,EAAE;IACH,OAAO,GAAG,CAAC,MAAM,CAAC;QAChB,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KACpC,CAAC,CAAC;AACL,CAAC,CAAC;AANW,QAAA,mBAAmB,uBAM9B;AAEK,MAAM,WAAW,GAA8B,KAAK,EACzD,EAAE,KAAK,EAAE,EACT,aAAa,EACb,EAAE;IACF,oCAAoC;IACpC,MAAM,UAAU,GAAG,CAAC,aAAa,EAAE,UAAU;QAC3C,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAW,CAAC;IAE3D,MAAM,0CAAmC,CAAC;QACxC,UAAU;QACV,gBAAgB,EAAE,KAAK,CAAC,QAAQ,EAAE;KACnC,CAAC,CAAC;AACL,CAAC,CAAC;AAZW,QAAA,WAAW,eAYtB"}