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

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.
Files changed (40) hide show
  1. package/dist/handlers/build.d.ts +19 -0
  2. package/dist/handlers/build.d.ts.map +1 -0
  3. package/dist/handlers/build.js +94 -0
  4. package/dist/handlers/build.js.map +1 -0
  5. package/dist/handlers/templates/page-data.d.ts +3 -0
  6. package/dist/handlers/templates/page-data.d.ts.map +1 -0
  7. package/dist/handlers/templates/page-data.js +45 -0
  8. package/dist/handlers/templates/page-data.js.map +1 -0
  9. package/dist/handlers/templates/ssr-handler.d.ts +3 -0
  10. package/dist/handlers/templates/ssr-handler.d.ts.map +1 -0
  11. package/dist/handlers/templates/ssr-handler.js +36 -0
  12. package/dist/handlers/templates/ssr-handler.js.map +1 -0
  13. package/dist/handlers/utils.d.ts +7 -0
  14. package/dist/handlers/utils.d.ts.map +1 -0
  15. package/dist/handlers/utils.js +39 -0
  16. package/dist/handlers/utils.js.map +1 -0
  17. package/dist/helpers/functions.d.ts +6 -0
  18. package/dist/helpers/functions.d.ts.map +1 -0
  19. package/dist/helpers/functions.js +73 -0
  20. package/dist/helpers/functions.js.map +1 -0
  21. package/dist/helpers/static.d.ts +2 -0
  22. package/dist/helpers/static.d.ts.map +1 -0
  23. package/dist/helpers/static.js +12 -0
  24. package/dist/helpers/static.js.map +1 -0
  25. package/dist/index.d.ts +11 -0
  26. package/dist/index.d.ts.map +1 -0
  27. package/dist/index.js +73 -0
  28. package/dist/index.js.map +1 -0
  29. package/dist/schemas.d.ts +13 -0
  30. package/dist/schemas.d.ts.map +1 -0
  31. package/dist/schemas.js +64 -0
  32. package/dist/schemas.js.map +1 -0
  33. package/dist/utils/symlink.d.ts +2 -0
  34. package/dist/utils/symlink.d.ts.map +1 -0
  35. package/dist/utils/symlink.js +33 -0
  36. package/dist/utils/symlink.js.map +1 -0
  37. package/gatsby-node.js +26 -0
  38. package/gatsby-node.js.map +1 -0
  39. package/gatsby-node.ts +2 -2
  40. package/package.json +5 -5
@@ -0,0 +1,19 @@
1
+ export declare const writeHandler: ({ outDir, handlerFile, }: {
2
+ outDir: string;
3
+ handlerFile: string;
4
+ }) => Promise<import("esbuild").BuildResult | undefined>;
5
+ export declare const writeVCConfig: ({ functionDir, handler, }: {
6
+ functionDir: string;
7
+ handler?: string | undefined;
8
+ }) => Promise<void>;
9
+ export declare const writePrerenderConfig: (outputPath: string) => void;
10
+ export declare function movePageData({ functionDir }: {
11
+ functionDir: string;
12
+ }): Promise<void>;
13
+ export declare function copyFunctionLibs({ functionDir, }: {
14
+ functionDir: string;
15
+ }): Promise<void>;
16
+ export declare function copyHTMLFiles({ functionDir }: {
17
+ functionDir: string;
18
+ }): Promise<void>;
19
+ //# sourceMappingURL=build.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.copyHTMLFiles = exports.copyFunctionLibs = exports.movePageData = exports.writePrerenderConfig = exports.writeVCConfig = exports.writeHandler = void 0;
4
+ const path_1 = require("path");
5
+ const build_utils_1 = require("@vercel/build-utils");
6
+ const esbuild_1 = require("esbuild");
7
+ const fs_extra_1 = require("fs-extra");
8
+ const writeHandler = async ({ outDir, handlerFile, }) => {
9
+ const { major } = await build_utils_1.getNodeVersion(process.cwd());
10
+ try {
11
+ return await esbuild_1.build({
12
+ entryPoints: [handlerFile],
13
+ loader: { '.ts': 'ts' },
14
+ outfile: path_1.join(outDir, './index.js'),
15
+ format: 'cjs',
16
+ target: `node${major}`,
17
+ platform: 'node',
18
+ bundle: true,
19
+ minify: true,
20
+ define: {
21
+ 'process.env.NODE_ENV': "'production'",
22
+ },
23
+ });
24
+ }
25
+ catch (e) {
26
+ console.error('Failed to build lambda handler', e.message);
27
+ }
28
+ };
29
+ exports.writeHandler = writeHandler;
30
+ const writeVCConfig = async ({ functionDir, handler = 'index.js', }) => {
31
+ const { runtime } = await build_utils_1.getNodeVersion(process.cwd());
32
+ const config = {
33
+ runtime,
34
+ handler,
35
+ launcherType: 'Nodejs',
36
+ shouldAddHelpers: true,
37
+ };
38
+ return fs_extra_1.writeJson(`${functionDir}/.vc-config.json`, config);
39
+ };
40
+ exports.writeVCConfig = writeVCConfig;
41
+ const writePrerenderConfig = (outputPath) => {
42
+ const config = {
43
+ expiration: false,
44
+ };
45
+ fs_extra_1.ensureFileSync(outputPath);
46
+ return fs_extra_1.writeFileSync(outputPath, JSON.stringify(config));
47
+ };
48
+ 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
+ async function copyFunctionLibs({ functionDir, }) {
54
+ /* Copies the required libs for Serverless Functions from .cache to the <name>.func folder */
55
+ await Promise.allSettled([
56
+ {
57
+ src: path_1.join('.cache', 'query-engine'),
58
+ dest: path_1.join(functionDir, '.cache', 'query-engine'),
59
+ },
60
+ {
61
+ src: path_1.join('.cache', 'page-ssr'),
62
+ dest: path_1.join(functionDir, '.cache', 'page-ssr'),
63
+ },
64
+ // {
65
+ // src: join(functionDir, '.cache', 'query-engine', 'assets'),
66
+ // dest: join(functionDir, 'assets'),
67
+ // },
68
+ {
69
+ src: path_1.join('.cache', 'data', 'datastore'),
70
+ dest: path_1.join(functionDir, '.cache', 'data', 'datastore'),
71
+ },
72
+ {
73
+ src: path_1.join('.cache', 'caches'),
74
+ dest: path_1.join(functionDir, '.cache', 'caches'),
75
+ },
76
+ ].map(({ src, dest }) => fs_extra_1.copy(src, dest)));
77
+ }
78
+ exports.copyFunctionLibs = copyFunctionLibs;
79
+ async function copyHTMLFiles({ functionDir }) {
80
+ /* If available, copies the 404.html and 500.html files to the <name>.func/lib folder */
81
+ for (const htmlFile of ['404', '500']) {
82
+ if (await fs_extra_1.pathExists(path_1.join('public', `${htmlFile}.html`))) {
83
+ try {
84
+ await fs_extra_1.copyFile(path_1.join('public', `${htmlFile}.html`), path_1.join(functionDir, `${htmlFile}.html`));
85
+ }
86
+ catch (e) {
87
+ console.error('Failed to copy HTML files', e.message);
88
+ process.exit(1);
89
+ }
90
+ }
91
+ }
92
+ }
93
+ exports.copyHTMLFiles = copyHTMLFiles;
94
+ //# sourceMappingURL=build.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/handlers/build.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,45 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,3 @@
1
+ import type { VercelRequest, VercelResponse } from '@vercel/node';
2
+ export default function handler(req: VercelRequest, res: VercelResponse): Promise<void>;
3
+ //# sourceMappingURL=ssr-handler.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,36 @@
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 path_1 = require("path");
7
+ const os_1 = __importDefault(require("os"));
8
+ const fs_extra_1 = require("fs-extra");
9
+ const utils_1 = require("../utils");
10
+ const TMP_DATA_PATH = path_1.join(os_1.default.tmpdir(), 'data/datastore');
11
+ const CUR_DATA_PATH = path_1.join(__dirname, '.cache/data/datastore');
12
+ if (!fs_extra_1.existsSync(TMP_DATA_PATH)) {
13
+ // Copies executable `data` files to the writable /tmp directory.
14
+ fs_extra_1.copySync(CUR_DATA_PATH, TMP_DATA_PATH);
15
+ }
16
+ async function handler(req, res) {
17
+ const graphqlEngine = await utils_1.getGraphQLEngine();
18
+ const { getData, renderHTML } = await utils_1.getPageSSRHelpers();
19
+ const data = await getData({
20
+ pathName: req.url,
21
+ graphqlEngine,
22
+ req,
23
+ });
24
+ const results = await renderHTML({ data });
25
+ if (data.serverDataHeaders) {
26
+ for (const [name, value] of Object.entries(data.serverDataHeaders)) {
27
+ res.setHeader(name, value);
28
+ }
29
+ }
30
+ if (data.serverDataStatus) {
31
+ res.statusCode = data.serverDataStatus;
32
+ }
33
+ res.send(results);
34
+ }
35
+ exports.default = handler;
36
+ //# sourceMappingURL=ssr-handler.js.map
@@ -0,0 +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"}
@@ -0,0 +1,7 @@
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
+ }>;
7
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/handlers/utils.ts"],"names":[],"mappings":"AAKA,wBAAsB,gBAAgB,6EAMrC;AAED,wBAAsB,iBAAiB;;;;GAMtC"}
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ var __importDefault = (this && this.__importDefault) || function (mod) {
22
+ return (mod && mod.__esModule) ? mod : { "default": mod };
23
+ };
24
+ Object.defineProperty(exports, "__esModule", { value: true });
25
+ exports.getPageSSRHelpers = exports.getGraphQLEngine = void 0;
26
+ const path_1 = require("path");
27
+ const os_1 = __importDefault(require("os"));
28
+ const TMP_DATA_PATH = path_1.join(os_1.default.tmpdir(), 'data/datastore');
29
+ async function getGraphQLEngine() {
30
+ const { GraphQLEngine } = (await Promise.resolve().then(() => __importStar(require(path_1.join(__dirname, '.cache/query-engine/index.js')))));
31
+ return new GraphQLEngine({ dbPath: TMP_DATA_PATH });
32
+ }
33
+ exports.getGraphQLEngine = getGraphQLEngine;
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 };
37
+ }
38
+ exports.getPageSSRHelpers = getPageSSRHelpers;
39
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +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"}
@@ -0,0 +1,6 @@
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>;
6
+ //# sourceMappingURL=functions.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createAPIRoutes = exports.createPageDataFunction = exports.createServerlessFunctions = void 0;
4
+ const path_1 = require("path");
5
+ const fs_extra_1 = require("fs-extra");
6
+ const symlink_1 = require("../utils/symlink");
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
+ ]);
32
+ }
33
+ 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');
61
+ await fs_extra_1.ensureDir(apiDir);
62
+ await Promise.allSettled(functions.map(async (func) => {
63
+ const apiRouteDir = `${apiDir}/${func.functionRoute}.func`;
64
+ const handlerFile = func.originalAbsoluteFilePath;
65
+ await fs_extra_1.ensureDir(apiRouteDir);
66
+ await Promise.all([
67
+ build_1.writeHandler({ outDir: apiRouteDir, handlerFile }),
68
+ build_1.writeVCConfig({ functionDir: apiRouteDir }),
69
+ ]);
70
+ }));
71
+ }
72
+ exports.createAPIRoutes = createAPIRoutes;
73
+ //# sourceMappingURL=functions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"functions.js","sourceRoot":"","sources":["../../src/helpers/functions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function createStaticDir(): Promise<void>;
2
+ //# sourceMappingURL=static.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"static.d.ts","sourceRoot":"","sources":["../../src/helpers/static.ts"],"names":[],"mappings":"AAIA,wBAAsB,eAAe,kBAKpC"}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createStaticDir = void 0;
4
+ const path_1 = require("path");
5
+ const fs_extra_1 = require("fs-extra");
6
+ async function createStaticDir() {
7
+ const targetDir = path_1.join(process.cwd(), '.vercel', 'output', 'static');
8
+ await fs_extra_1.ensureDir(targetDir);
9
+ await fs_extra_1.copy(path_1.join(process.cwd(), 'public'), targetDir);
10
+ }
11
+ exports.createStaticDir = createStaticDir;
12
+ //# sourceMappingURL=static.js.map
@@ -0,0 +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"}
@@ -0,0 +1,11 @@
1
+ export interface GenerateVercelBuildOutputAPI3OutputOptions {
2
+ exportPath: string;
3
+ gatsbyStoreState: {
4
+ pages: Map<string, unknown>;
5
+ redirects: unknown;
6
+ functions: unknown;
7
+ };
8
+ [x: string]: unknown;
9
+ }
10
+ export declare function generateVercelBuildOutputAPI3Output({ exportPath, gatsbyStoreState, }: GenerateVercelBuildOutputAPI3OutputOptions): Promise<void>;
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +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"}
package/dist/index.js ADDED
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateVercelBuildOutputAPI3Output = void 0;
4
+ const path_1 = require("path");
5
+ const routing_utils_1 = require("@vercel/routing-utils");
6
+ const fs_extra_1 = require("fs-extra");
7
+ const schemas_1 = require("./schemas");
8
+ const functions_1 = require("./helpers/functions");
9
+ const static_1 = require("./helpers/static");
10
+ async function generateVercelBuildOutputAPI3Output({ exportPath, gatsbyStoreState, }) {
11
+ const state = {
12
+ pages: Array.from(gatsbyStoreState.pages.entries()),
13
+ redirects: gatsbyStoreState.redirects,
14
+ functions: gatsbyStoreState.functions,
15
+ };
16
+ if (schemas_1.validateGatsbyState(state)) {
17
+ console.log('▲ Creating Vercel build output');
18
+ 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 }));
40
+ }
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
+ const { routes } = routing_utils_1.getTransformedRoutes({
47
+ ...vercelConfig,
48
+ trailingSlash: false,
49
+ redirects: redirects.map(({ fromPath, toPath, isPermanent }) => ({
50
+ source: fromPath,
51
+ destination: toPath,
52
+ permanent: isPermanent,
53
+ })),
54
+ rewrites: [
55
+ {
56
+ source: '^/page-data(?:/(.*))/page-data\\.json$',
57
+ destination: '/_page-data',
58
+ },
59
+ ],
60
+ });
61
+ const config = {
62
+ version: 3,
63
+ routes: routes || undefined,
64
+ };
65
+ await fs_extra_1.writeJson(exportPath, config);
66
+ console.log('Vercel output has been generated');
67
+ }
68
+ else {
69
+ throw new Error('Gatsby state validation error. Please file an issue https://vercel.com/help#issues');
70
+ }
71
+ }
72
+ exports.generateVercelBuildOutputAPI3Output = generateVercelBuildOutputAPI3Output;
73
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { IGatsbyPage, IGatsbyFunction, IRedirect } from 'gatsby/dist/redux/types';
2
+ import Ajv from 'ajv';
3
+ export declare type GatsbyPage = Pick<IGatsbyPage, 'mode' | 'path'>;
4
+ export interface GatsbyState {
5
+ pages: Array<[string, GatsbyPage]>;
6
+ redirects: Array<GatsbyRedirect>;
7
+ functions: Array<GatsbyFunction>;
8
+ }
9
+ export declare type GatsbyFunction = Pick<IGatsbyFunction, 'functionRoute' | 'originalAbsoluteFilePath'>;
10
+ export declare type GatsbyRedirect = Pick<IRedirect, 'fromPath' | 'toPath' | 'isPermanent'>;
11
+ export declare const ajv: Ajv;
12
+ export declare const validateGatsbyState: import("ajv").ValidateFunction<GatsbyState>;
13
+ //# sourceMappingURL=schemas.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,64 @@
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
+ exports.validateGatsbyState = exports.ajv = void 0;
7
+ const ajv_1 = __importDefault(require("ajv"));
8
+ const GatsbyPageSchema = {
9
+ type: 'object',
10
+ properties: {
11
+ mode: {
12
+ type: 'string',
13
+ enum: ['SSG', 'DSG', 'SSR'],
14
+ },
15
+ path: {
16
+ type: 'string',
17
+ },
18
+ },
19
+ required: ['mode', 'path'],
20
+ };
21
+ const GatsbyFunctionSchema = {
22
+ type: 'object',
23
+ properties: {
24
+ functionRoute: { type: 'string' },
25
+ originalAbsoluteFilePath: { type: 'string' },
26
+ },
27
+ required: ['functionRoute', 'originalAbsoluteFilePath'],
28
+ };
29
+ const GatsbyRedirectSchema = {
30
+ type: 'object',
31
+ properties: {
32
+ fromPath: { type: 'string' },
33
+ toPath: { type: 'string' },
34
+ isPermanent: { type: 'boolean', nullable: true },
35
+ },
36
+ required: ['fromPath', 'toPath'],
37
+ };
38
+ const GatsbyStateSchema = {
39
+ type: 'object',
40
+ properties: {
41
+ pages: {
42
+ type: 'array',
43
+ items: {
44
+ type: 'array',
45
+ minItems: 2,
46
+ maxItems: 2,
47
+ items: [{ type: 'string' }, GatsbyPageSchema],
48
+ },
49
+ },
50
+ redirects: {
51
+ type: 'array',
52
+ items: GatsbyRedirectSchema,
53
+ },
54
+ functions: {
55
+ type: 'array',
56
+ items: GatsbyFunctionSchema,
57
+ },
58
+ },
59
+ required: ['pages', 'redirects', 'functions'],
60
+ additionalProperties: true,
61
+ };
62
+ exports.ajv = new ajv_1.default({ allErrors: true });
63
+ exports.validateGatsbyState = exports.ajv.compile(GatsbyStateSchema);
64
+ //# sourceMappingURL=schemas.js.map
@@ -0,0 +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"}
@@ -0,0 +1,2 @@
1
+ export declare const createSymlink: (pathName: string, destName: string) => Promise<void>;
2
+ //# sourceMappingURL=symlink.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ exports.createSymlink = void 0;
23
+ const path_1 = __importStar(require("path"));
24
+ const fs_extra_1 = require("fs-extra");
25
+ const removeTrailingSlash = (str) => str.replace(/\/$/, '');
26
+ const createSymlink = async (pathName, destName) => {
27
+ const functionName = removeTrailingSlash(pathName).split(path_1.sep).pop();
28
+ const dirPath = removeTrailingSlash(path_1.join('.vercel', 'output', 'functions', path_1.normalize(path_1.join(pathName, '..'))));
29
+ await fs_extra_1.ensureDir(dirPath);
30
+ fs_extra_1.symlinkSync(path_1.default.relative(dirPath, path_1.join('.vercel', 'output', 'functions', destName)), path_1.default.join(dirPath, `${functionName}.func`));
31
+ };
32
+ exports.createSymlink = createSymlink;
33
+ //# sourceMappingURL=symlink.js.map
@@ -0,0 +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"}
package/gatsby-node.js ADDED
@@ -0,0 +1,26 @@
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
+ exports.onPostBuild = exports.pluginOptionsSchema = void 0;
7
+ const path_1 = __importDefault(require("path"));
8
+ // this gets built separately, so import from "dist" instead of "src"
9
+ const dist_1 = require("./dist");
10
+ const pluginOptionsSchema = ({ Joi, }) => {
11
+ return Joi.object({
12
+ exportPath: Joi.string().optional(),
13
+ });
14
+ };
15
+ exports.pluginOptionsSchema = pluginOptionsSchema;
16
+ const onPostBuild = async ({ store }, pluginOptions) => {
17
+ // validated by `pluginOptionSchema`
18
+ const exportPath = (pluginOptions?.exportPath ??
19
+ path_1.default.join('.vercel', 'output', 'config.json'));
20
+ await dist_1.generateVercelBuildOutputAPI3Output({
21
+ exportPath,
22
+ gatsbyStoreState: store.getState(),
23
+ });
24
+ };
25
+ exports.onPostBuild = onPostBuild;
26
+ //# sourceMappingURL=gatsby-node.js.map
@@ -0,0 +1 @@
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"}
package/gatsby-node.ts CHANGED
@@ -2,8 +2,8 @@ import path from 'path';
2
2
 
3
3
  import type { GatsbyNode } from 'gatsby';
4
4
 
5
- // this gets built separately, so import from "build" instead of "src"
6
- import { generateVercelBuildOutputAPI3Output } from './build';
5
+ // this gets built separately, so import from "dist" instead of "src"
6
+ import { generateVercelBuildOutputAPI3Output } from './dist';
7
7
 
8
8
  export const pluginOptionsSchema: GatsbyNode['pluginOptionsSchema'] = ({
9
9
  Joi,
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "@vercel/gatsby-plugin-vercel-builder",
3
- "version": "0.1.0",
4
- "main": "build/index.js",
3
+ "version": "0.1.2",
4
+ "main": "dist/index.js",
5
5
  "files": [
6
- "build",
6
+ "dist",
7
7
  "gatsby-node.ts",
8
8
  "gatsby-node.js",
9
9
  "gatsby-node.js.map"
@@ -15,7 +15,7 @@
15
15
  },
16
16
  "dependencies": {
17
17
  "@vercel/build-utils": "5.9.0",
18
- "@vercel/node": "2.8.14",
18
+ "@vercel/node": "2.8.15",
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": "79ef5c37246c75973c0af9f5fd04afa51f0859ba"
33
+ "gitHead": "92f5b6e0c9be947a68b617d282fc39144f530813"
34
34
  }