@griddo/cx 11.7.5 → 11.7.6-rc.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 +25 -228
- package/build/adapters/gatsby/actions/clean.js +10 -0
- package/build/adapters/gatsby/actions/clean.js.map +1 -0
- package/build/adapters/gatsby/actions/close.js +12 -0
- package/build/adapters/gatsby/actions/close.js.map +1 -0
- package/build/adapters/gatsby/actions/data.js +18 -0
- package/build/adapters/gatsby/actions/data.js.map +1 -0
- package/build/adapters/gatsby/actions/healthCheck.js +10 -0
- package/build/adapters/gatsby/actions/healthCheck.js.map +1 -0
- package/build/adapters/gatsby/actions/init.js +9 -0
- package/build/adapters/gatsby/actions/init.js.map +1 -0
- package/build/adapters/gatsby/actions/meta.js +14 -0
- package/build/adapters/gatsby/actions/meta.js.map +1 -0
- package/build/adapters/gatsby/actions/prepare.js +9 -0
- package/build/adapters/gatsby/actions/prepare.js.map +1 -0
- package/build/adapters/gatsby/actions/relocation.js +15 -0
- package/build/adapters/gatsby/actions/relocation.js.map +1 -0
- package/build/adapters/gatsby/actions/restore.js +26 -0
- package/build/adapters/gatsby/actions/restore.js.map +1 -0
- package/build/adapters/gatsby/actions/ssg.js +9 -0
- package/build/adapters/gatsby/actions/ssg.js.map +1 -0
- package/build/adapters/gatsby/actions/sync.js +50 -0
- package/build/adapters/gatsby/actions/sync.js.map +1 -0
- package/build/adapters/gatsby/index.js +74 -0
- package/build/adapters/gatsby/index.js.map +1 -0
- package/build/adapters/gatsby/shared/context.js +25 -0
- package/build/adapters/gatsby/shared/context.js.map +1 -0
- package/build/adapters/gatsby/shared/extract-assets.js +58 -0
- package/build/adapters/gatsby/shared/extract-assets.js.map +1 -0
- package/build/adapters/gatsby/shared/gatsby-build.js +49 -0
- package/build/adapters/gatsby/shared/gatsby-build.js.map +1 -0
- package/build/adapters/gatsby/shared/sync-render.js +208 -0
- package/build/adapters/gatsby/shared/sync-render.js.map +1 -0
- package/build/adapters/gatsby/shared/types.js +3 -0
- package/build/adapters/gatsby/shared/types.js.map +1 -0
- package/build/commands/end-render.js +63 -0
- package/build/commands/end-render.js.map +1 -0
- package/build/commands/prepare-assets-directory.js +32 -0
- package/build/commands/prepare-assets-directory.js.map +1 -0
- package/build/commands/prepare-domains-render.js +138 -0
- package/build/commands/prepare-domains-render.js.map +1 -0
- package/build/commands/reset-render.js +22 -0
- package/build/commands/reset-render.js.map +1 -0
- package/build/commands/start-render.js +35 -0
- package/build/commands/start-render.js.map +1 -0
- package/build/commands/upload-search-content.js +189 -0
- package/build/commands/upload-search-content.js.map +1 -0
- package/build/constants/endpoints.js +42 -0
- package/build/constants/endpoints.js.map +1 -0
- package/build/constants/envs.js +73 -0
- package/build/constants/envs.js.map +1 -0
- package/build/constants/errors.js +89 -0
- package/build/constants/errors.js.map +1 -0
- package/build/exporter/adapters/gatsby/actions/clean.d.ts +3 -0
- package/build/exporter/adapters/gatsby/actions/close.d.ts +3 -0
- package/build/exporter/adapters/gatsby/actions/data.d.ts +2 -0
- package/build/exporter/adapters/gatsby/actions/healthCheck.d.ts +2 -0
- package/build/exporter/adapters/gatsby/actions/init.d.ts +2 -0
- package/build/exporter/adapters/gatsby/actions/meta.d.ts +2 -0
- package/build/exporter/adapters/gatsby/actions/prepare.d.ts +2 -0
- package/build/exporter/adapters/gatsby/actions/relocation.d.ts +2 -0
- package/build/exporter/adapters/gatsby/actions/restore.d.ts +3 -0
- package/build/exporter/adapters/gatsby/actions/ssg.d.ts +3 -0
- package/build/exporter/adapters/gatsby/actions/sync.d.ts +3 -0
- package/build/exporter/adapters/gatsby/index.d.ts +9 -0
- package/build/exporter/adapters/gatsby/shared/context.d.ts +38 -0
- package/build/exporter/adapters/gatsby/shared/extract-assets.d.ts +7 -0
- package/build/exporter/adapters/gatsby/shared/gatsby-build.d.ts +7 -0
- package/build/exporter/adapters/gatsby/shared/sync-render.d.ts +36 -0
- package/build/exporter/adapters/gatsby/shared/types.d.ts +34 -0
- package/build/exporter/commands/start-render.d.ts +2 -0
- package/build/exporter/commands/upload-search-content.d.ts +2 -0
- package/build/{constants → exporter/constants}/envs.d.ts +1 -7
- package/build/{errors/errors-data.d.ts → exporter/constants/errors.d.ts} +5 -3
- package/build/{services → exporter/services}/auth.d.ts +1 -1
- package/build/exporter/services/db.d.ts +4 -0
- package/build/{services → exporter/services}/robots.d.ts +0 -6
- package/build/{services → exporter/services}/sites.d.ts +5 -2
- package/build/exporter/services/store.d.ts +15 -0
- package/build/{types → exporter/types}/api.d.ts +3 -4
- package/build/{types → exporter/types}/global.d.ts +6 -6
- package/build/{types → exporter/types}/navigation.d.ts +1 -1
- package/build/exporter/types/render.d.ts +50 -0
- package/build/{types → exporter/types}/sites.d.ts +1 -2
- package/build/exporter/utils/artifacts.d.ts +6 -0
- package/build/exporter/utils/brush.d.ts +18 -0
- package/build/{utils → exporter/utils}/cache.d.ts +7 -12
- package/build/{utils/health-checks.d.ts → exporter/utils/check-health.d.ts} +2 -2
- package/build/exporter/utils/core-utils.d.ts +77 -0
- package/build/{utils → exporter/utils}/domains.d.ts +1 -1
- package/build/{errors/index.d.ts → exporter/utils/errors.d.ts} +3 -3
- package/build/exporter/utils/folders.d.ts +66 -0
- package/build/{utils → exporter/utils}/loggin.d.ts +2 -16
- package/build/{utils → exporter/utils}/pages.d.ts +2 -2
- package/build/exporter/utils/render.d.ts +49 -0
- package/build/{utils → exporter/utils}/sites.d.ts +3 -3
- package/build/{utils → exporter/utils}/store.d.ts +10 -38
- package/build/services/auth.js +39 -0
- package/build/services/auth.js.map +1 -0
- package/build/services/db.js +34 -0
- package/build/services/db.js.map +1 -0
- package/build/services/navigation.js +93 -0
- package/build/services/navigation.js.map +1 -0
- package/build/services/reference-fields.js +131 -0
- package/build/services/reference-fields.js.map +1 -0
- package/build/services/robots.js +58 -0
- package/build/services/robots.js.map +1 -0
- package/build/services/sites.js +109 -0
- package/build/services/sites.js.map +1 -0
- package/build/services/store.js +282 -0
- package/build/services/store.js.map +1 -0
- package/build/types/api.js +3 -0
- package/build/types/api.js.map +1 -0
- package/build/types/global.js +3 -0
- package/build/types/global.js.map +1 -0
- package/build/types/navigation.js +3 -0
- package/build/types/navigation.js.map +1 -0
- package/build/types/pages.js +3 -0
- package/build/types/pages.js.map +1 -0
- package/build/types/render.js +10 -0
- package/build/types/render.js.map +1 -0
- package/build/types/sites.js +3 -0
- package/build/types/sites.js.map +1 -0
- package/build/types/templates.js +3 -0
- package/build/types/templates.js.map +1 -0
- package/build/utils/api.js +161 -0
- package/build/utils/api.js.map +1 -0
- package/build/utils/artifacts.js +34 -0
- package/build/utils/artifacts.js.map +1 -0
- package/build/utils/brush.js +30 -0
- package/build/utils/brush.js.map +1 -0
- package/build/utils/cache.js +106 -0
- package/build/utils/cache.js.map +1 -0
- package/build/utils/check-health.js +68 -0
- package/build/utils/check-health.js.map +1 -0
- package/build/utils/core-utils.js +251 -0
- package/build/utils/core-utils.js.map +1 -0
- package/build/utils/domains.js +37 -0
- package/build/utils/domains.js.map +1 -0
- package/build/utils/errors.js +30 -0
- package/build/utils/errors.js.map +1 -0
- package/build/utils/folders.js +339 -0
- package/build/utils/folders.js.map +1 -0
- package/build/utils/images.js +45 -0
- package/build/utils/images.js.map +1 -0
- package/build/utils/instance.js +66 -0
- package/build/utils/instance.js.map +1 -0
- package/build/utils/loggin.js +102 -0
- package/build/utils/loggin.js.map +1 -0
- package/build/utils/pages.js +359 -0
- package/build/utils/pages.js.map +1 -0
- package/build/utils/render.js +144 -0
- package/build/utils/render.js.map +1 -0
- package/build/utils/sites.js +239 -0
- package/build/utils/sites.js.map +1 -0
- package/build/utils/store.js +193 -0
- package/build/utils/store.js.map +1 -0
- package/exporter/adapters/gatsby/actions/clean.ts +14 -0
- package/exporter/adapters/gatsby/actions/close.ts +17 -0
- package/exporter/adapters/gatsby/actions/data.ts +25 -0
- package/exporter/adapters/gatsby/actions/healthCheck.ts +10 -0
- package/exporter/adapters/gatsby/actions/init.ts +12 -0
- package/exporter/adapters/gatsby/actions/meta.ts +18 -0
- package/exporter/adapters/gatsby/actions/prepare.ts +9 -0
- package/exporter/adapters/gatsby/actions/relocation.ts +15 -0
- package/exporter/adapters/gatsby/actions/restore.ts +36 -0
- package/exporter/adapters/gatsby/actions/ssg.ts +12 -0
- package/exporter/adapters/gatsby/actions/sync.ts +70 -0
- package/exporter/adapters/gatsby/index.ts +60 -146
- package/exporter/adapters/gatsby/shared/context.ts +50 -0
- package/exporter/adapters/gatsby/shared/extract-assets.ts +61 -0
- package/exporter/adapters/gatsby/shared/gatsby-build.ts +54 -0
- package/exporter/adapters/gatsby/shared/sync-render.ts +294 -0
- package/exporter/adapters/gatsby/shared/types.ts +35 -0
- package/exporter/build-esbuild.noop +42 -0
- package/exporter/build.sh +5 -38
- package/exporter/commands/end-render.ts +56 -81
- package/exporter/commands/prepare-assets-directory.ts +33 -0
- package/exporter/commands/prepare-domains-render.ts +149 -31
- package/exporter/commands/reset-render.ts +12 -3
- package/exporter/commands/start-render.ts +18 -47
- package/exporter/commands/upload-search-content.ts +206 -21
- package/exporter/constants/envs.ts +59 -51
- package/exporter/{errors/errors-data.ts → constants/errors.ts} +24 -15
- package/exporter/services/auth.ts +7 -6
- package/exporter/services/db.ts +32 -0
- package/exporter/services/navigation.ts +4 -10
- package/exporter/services/reference-fields.ts +8 -23
- package/exporter/services/robots.ts +8 -15
- package/exporter/services/sites.ts +35 -24
- package/exporter/services/store.ts +118 -76
- package/exporter/types/api.ts +24 -27
- package/exporter/types/global.ts +8 -10
- package/exporter/types/navigation.ts +1 -1
- package/exporter/types/pages.ts +2 -3
- package/exporter/types/render.ts +59 -0
- package/exporter/types/sites.ts +1 -2
- package/exporter/utils/api.ts +46 -82
- package/exporter/{artifacts/index.ts → utils/artifacts.ts} +9 -8
- package/exporter/utils/brush.ts +34 -0
- package/exporter/utils/cache.ts +34 -59
- package/exporter/utils/check-health.ts +79 -0
- package/exporter/utils/core-utils.ts +86 -247
- package/exporter/utils/domains.ts +10 -7
- package/exporter/{errors/index.ts → utils/errors.ts} +10 -9
- package/exporter/utils/folders.ts +161 -92
- package/exporter/utils/images.ts +1 -6
- package/exporter/utils/instance.ts +9 -12
- package/exporter/utils/loggin.ts +24 -89
- package/exporter/utils/pages.ts +23 -88
- package/exporter/utils/render.ts +147 -48
- package/exporter/utils/sites.ts +67 -77
- package/exporter/utils/store.ts +85 -178
- package/gatsby-browser.tsx +41 -58
- package/gatsby-config.ts +6 -12
- package/gatsby-node.ts +15 -77
- package/gatsby-ssr.tsx +2 -1
- package/package.json +33 -74
- package/plugins/gatsby-plugin-svgr-loader/gatsby-node.js +55 -0
- package/plugins/gatsby-plugin-svgr-loader/package.json +8 -0
- package/{exporter/react → react}/Favicon/index.tsx +1 -7
- package/{exporter/react → react}/GriddoIntegrations/index.tsx +6 -14
- package/{exporter/react → react}/GriddoIntegrations/utils.ts +4 -9
- package/{build/react/index.d.ts → react/index.tsx} +1 -0
- package/src/components/Head.tsx +13 -46
- package/src/components/template.tsx +8 -30
- package/src/gatsby-node-utils.ts +91 -2
- package/src/html.tsx +2 -11
- package/src/types.ts +5 -5
- package/start-render.js +1 -3
- package/tsconfig.json +3 -2
- package/build/adapters/gatsby/index.d.ts +0 -4
- package/build/adapters/gatsby/utils.d.ts +0 -22
- package/build/artifacts/index.d.ts +0 -6
- package/build/commands/move-assets.d.ts +0 -1
- package/build/commands/prepare-domains-render.d.ts +0 -1
- package/build/constants/index.d.ts +0 -57
- package/build/end-render.js +0 -74
- package/build/end-render.js.map +0 -7
- package/build/index.d.ts +0 -29
- package/build/index.js +0 -73
- package/build/index.js.map +0 -7
- package/build/prepare-domains-render.js +0 -73
- package/build/prepare-domains-render.js.map +0 -7
- package/build/react/Favicon/index.d.ts +0 -5
- package/build/react/Favicon/utils.d.ts +0 -9
- package/build/react/GriddoIntegrations/index.d.ts +0 -20
- package/build/react/GriddoIntegrations/utils.d.ts +0 -26
- package/build/react/index.js +0 -3
- package/build/registers/api.d.ts +0 -9
- package/build/registers/gatsby.d.ts +0 -9
- package/build/registers/index.d.ts +0 -3
- package/build/reset-render.js +0 -74
- package/build/reset-render.js.map +0 -7
- package/build/services/domains.d.ts +0 -6
- package/build/services/register.d.ts +0 -36
- package/build/services/settings.d.ts +0 -4
- package/build/services/store.d.ts +0 -6
- package/build/start-render.js +0 -100
- package/build/start-render.js.map +0 -7
- package/build/upload-search-content.js +0 -74
- package/build/upload-search-content.js.map +0 -7
- package/build/utils/alerts.d.ts +0 -3
- package/build/utils/core-utils.d.ts +0 -107
- package/build/utils/create-build-data.d.ts +0 -8
- package/build/utils/folders.d.ts +0 -53
- package/build/utils/render.d.ts +0 -13
- package/build/utils/searches.d.ts +0 -15
- package/cx.config.d.ts +0 -5
- package/cx.config.js +0 -36
- package/exporter/adapters/gatsby/utils.ts +0 -161
- package/exporter/artifacts/README.md +0 -34
- package/exporter/commands/move-assets.ts +0 -11
- package/exporter/constants/index.ts +0 -129
- package/exporter/index.ts +0 -82
- package/exporter/react/index.tsx +0 -11
- package/exporter/registers/api.ts +0 -14
- package/exporter/registers/gatsby.ts +0 -14
- package/exporter/registers/index.ts +0 -4
- package/exporter/services/domains.ts +0 -16
- package/exporter/services/register.ts +0 -113
- package/exporter/services/settings.ts +0 -17
- package/exporter/utils/alerts.ts +0 -29
- package/exporter/utils/create-build-data.ts +0 -17
- package/exporter/utils/health-checks.ts +0 -64
- package/exporter/utils/searches.ts +0 -179
- package/src/README.md +0 -7
- package/build/{commands → exporter/commands}/end-render.d.ts +0 -0
- package/build/{commands/reset-render.d.ts → exporter/commands/prepare-assets-directory.d.ts} +0 -0
- package/build/{commands/start-render.d.ts → exporter/commands/prepare-domains-render.d.ts} +0 -0
- package/build/{commands/upload-search-content.d.ts → exporter/commands/reset-render.d.ts} +0 -0
- package/build/{constants → exporter/constants}/endpoints.d.ts +0 -0
- package/build/{services → exporter/services}/navigation.d.ts +0 -0
- package/build/{services → exporter/services}/reference-fields.d.ts +0 -0
- package/build/{types → exporter/types}/pages.d.ts +1 -1
- /package/build/{types → exporter/types}/templates.d.ts +0 -0
- /package/build/{utils → exporter/utils}/api.d.ts +0 -0
- /package/build/{utils → exporter/utils}/images.d.ts +0 -0
- /package/build/{utils → exporter/utils}/instance.d.ts +0 -0
- /package/{exporter/react → react}/Favicon/utils.ts +0 -0
|
@@ -0,0 +1,106 @@
|
|
|
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.createAPICacheDir = createAPICacheDir;
|
|
7
|
+
exports.saveCache = saveCache;
|
|
8
|
+
exports.searchCacheData = searchCacheData;
|
|
9
|
+
exports.updatedSiteHash = updatedSiteHash;
|
|
10
|
+
const node_crypto_1 = __importDefault(require("node:crypto"));
|
|
11
|
+
const promises_1 = __importDefault(require("node:fs/promises"));
|
|
12
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
13
|
+
const folders_1 = require("../utils/folders");
|
|
14
|
+
const render_1 = require("./render");
|
|
15
|
+
/**
|
|
16
|
+
* Creates an `apiCache` dir to store pages fetched from them API.
|
|
17
|
+
*/
|
|
18
|
+
async function createAPICacheDir(options) {
|
|
19
|
+
const { basePath } = options;
|
|
20
|
+
const apiCacheDir = node_path_1.default.join(basePath, "apiCache");
|
|
21
|
+
if (!(await (0, folders_1.pathExists)(apiCacheDir))) {
|
|
22
|
+
await promises_1.default.mkdir(apiCacheDir);
|
|
23
|
+
}
|
|
24
|
+
console.info("Cache initialized");
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Generate a filename with a hash using a Petition object
|
|
28
|
+
* @param petition An object
|
|
29
|
+
*/
|
|
30
|
+
async function generateFilenameWithHash(petition) {
|
|
31
|
+
const { __cx } = await (0, render_1.getRenderPathsFromDB)();
|
|
32
|
+
const apiCacheDir = node_path_1.default.join(__cx, "apiCache");
|
|
33
|
+
const hashSum = node_crypto_1.default.createHash("sha256");
|
|
34
|
+
hashSum.update(JSON.stringify(petition));
|
|
35
|
+
return `${apiCacheDir}/${hashSum.digest("hex")}`;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Save a file using a hash name.
|
|
39
|
+
*
|
|
40
|
+
* @param petition An object.
|
|
41
|
+
* @param content Content to be saved.
|
|
42
|
+
*/
|
|
43
|
+
async function saveCache(petition, content) {
|
|
44
|
+
const stringContent = typeof content === "string" ? content : JSON.stringify(content);
|
|
45
|
+
const filename = await generateFilenameWithHash(petition);
|
|
46
|
+
const filepath = node_path_1.default.dirname(filename);
|
|
47
|
+
if (!(await (0, folders_1.pathExists)(filepath))) {
|
|
48
|
+
await promises_1.default.mkdir(filepath, { recursive: true });
|
|
49
|
+
}
|
|
50
|
+
await promises_1.default.writeFile(filename, stringContent, "utf8");
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Search in the `apiCache` dir for a file using the petition as hash generator.
|
|
54
|
+
* Return the file content if found or null if not.
|
|
55
|
+
*
|
|
56
|
+
* @param petition An object
|
|
57
|
+
*/
|
|
58
|
+
async function searchCacheData(petition) {
|
|
59
|
+
try {
|
|
60
|
+
const file = await generateFilenameWithHash(petition);
|
|
61
|
+
const fileContent = await promises_1.default.readFile(file, "utf8");
|
|
62
|
+
const jsonData = JSON.parse(fileContent);
|
|
63
|
+
return jsonData;
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Get site hashes from the file as an object
|
|
71
|
+
*/
|
|
72
|
+
async function getHashSites() {
|
|
73
|
+
const { __cx } = await (0, render_1.getRenderPathsFromDB)();
|
|
74
|
+
const apiCacheDir = node_path_1.default.join(__cx, "apiCache");
|
|
75
|
+
const siteHasFilename = `${apiCacheDir}/siteHash.json`;
|
|
76
|
+
try {
|
|
77
|
+
const fileContent = await promises_1.default.readFile(siteHasFilename, "utf8");
|
|
78
|
+
const jsonData = JSON.parse(fileContent);
|
|
79
|
+
return jsonData || {};
|
|
80
|
+
}
|
|
81
|
+
catch {
|
|
82
|
+
return {};
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Update (write) the site hash file.
|
|
87
|
+
*
|
|
88
|
+
* @param siteId The id of the site.
|
|
89
|
+
* @param siteHash The has of the site.
|
|
90
|
+
*/
|
|
91
|
+
async function updatedSiteHash(siteId, siteHash) {
|
|
92
|
+
const allHash = await getHashSites();
|
|
93
|
+
const lastHash = allHash[siteId];
|
|
94
|
+
const currentHash = siteHash || lastHash || Date.now();
|
|
95
|
+
const { __cx } = await (0, render_1.getRenderPathsFromDB)();
|
|
96
|
+
const apiCacheDir = node_path_1.default.join(__cx, "apiCache");
|
|
97
|
+
const siteHasFilename = `${apiCacheDir}/siteHash.json`;
|
|
98
|
+
if (currentHash !== lastHash) {
|
|
99
|
+
allHash[siteId] = currentHash;
|
|
100
|
+
await promises_1.default.writeFile(siteHasFilename, JSON.stringify(allHash), {
|
|
101
|
+
encoding: "utf-8",
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
return currentHash.toString();
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../exporter/utils/cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.checkHealth = checkHealth;
|
|
5
|
+
const errors_1 = require("../constants/errors");
|
|
6
|
+
const core_utils_1 = require("./core-utils");
|
|
7
|
+
const errors_2 = require("./errors");
|
|
8
|
+
const GRIDDO_ENVS_VARS = [];
|
|
9
|
+
const GRIDDO_SKIP_BUILD_CHECKS = (0, core_utils_1.isTruthy)(process.env.GRIDDO_SKIP_BUILD_CHECKS);
|
|
10
|
+
/**
|
|
11
|
+
* Check if a list of environments variables exist with any value.
|
|
12
|
+
*
|
|
13
|
+
* @todo Also check the value.
|
|
14
|
+
* @param envs An array of environments variables
|
|
15
|
+
* @returns exists with (1) if there are missing envs vars
|
|
16
|
+
*/
|
|
17
|
+
function checkEnvsVars(envs) {
|
|
18
|
+
const missingEnvs = envs.filter((envName) => {
|
|
19
|
+
return !process.env[envName];
|
|
20
|
+
});
|
|
21
|
+
if (missingEnvs.length) {
|
|
22
|
+
const missingEnvsMsg = missingEnvs.join("\n");
|
|
23
|
+
console.error(`Env check failed. These envs vars are missing: \n\n${missingEnvsMsg}`);
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
return true;
|
|
27
|
+
}
|
|
28
|
+
function checkEnvsVarsAndValues(envs) {
|
|
29
|
+
for (const env of envs) {
|
|
30
|
+
const [key, expected] = Object.entries(env)[0];
|
|
31
|
+
const actual = process.env[key];
|
|
32
|
+
if (actual !== expected) {
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return true;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Check if the environment is secure to launch a render.
|
|
40
|
+
* If something fails then log an error message and exit from the process.
|
|
41
|
+
* Otherwise just return true.
|
|
42
|
+
*/
|
|
43
|
+
function checkHealth() {
|
|
44
|
+
// Bypass the check using this env var, handy for local renders.
|
|
45
|
+
if (GRIDDO_SKIP_BUILD_CHECKS) {
|
|
46
|
+
console.info("Build health check skipped");
|
|
47
|
+
return true;
|
|
48
|
+
}
|
|
49
|
+
// Checklist
|
|
50
|
+
// check if it's setted
|
|
51
|
+
const areRequiredEnvsSet = checkEnvsVars(GRIDDO_ENVS_VARS);
|
|
52
|
+
// check if it's setted and the value
|
|
53
|
+
const areEnvsMatchingExpected = checkEnvsVarsAndValues([
|
|
54
|
+
{
|
|
55
|
+
GRIDDO_RENDER_BY_DOMAINS: "true",
|
|
56
|
+
},
|
|
57
|
+
]);
|
|
58
|
+
// Render is safe if...
|
|
59
|
+
const isSafeToRender = areRequiredEnvsSet && areEnvsMatchingExpected;
|
|
60
|
+
// The environment is suitable for a build-render
|
|
61
|
+
if (isSafeToRender) {
|
|
62
|
+
console.info("\nBuild health check passed\n");
|
|
63
|
+
return true;
|
|
64
|
+
}
|
|
65
|
+
// Error
|
|
66
|
+
(0, errors_2.throwError)(errors_1.CheckHealthError);
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=check-health.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check-health.js","sourceRoot":"","sources":["../../exporter/utils/check-health.ts"],"names":[],"mappings":";;;AAgDA,kCA8BC;AA5ED,gDAAuD;AACvD,6CAAwC;AACxC,qCAAsC;AAEtC,MAAM,gBAAgB,GAA0B,EAAE,CAAC;AACnD,MAAM,wBAAwB,GAAG,IAAA,qBAAQ,EAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;AAEhF;;;;;;GAMG;AACH,SAAS,aAAa,CAAC,IAA2B;IACjD,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;QAC3C,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;QACxB,MAAM,cAAc,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9C,OAAO,CAAC,KAAK,CAAC,sDAAsD,cAAc,EAAE,CAAC,CAAC;QAEtF,OAAO,KAAK,CAAC;IACd,CAAC;IAED,OAAO,IAAI,CAAC;AACb,CAAC;AAED,SAAS,sBAAsB,CAAC,IAAmC;IAClE,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACxB,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAEhC,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;YACzB,OAAO,KAAK,CAAC;QACd,CAAC;IACF,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC;AAED;;;;GAIG;AACH,SAAgB,WAAW;IAC1B,gEAAgE;IAChE,IAAI,wBAAwB,EAAE,CAAC;QAC9B,OAAO,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QAE3C,OAAO,IAAI,CAAC;IACb,CAAC;IAED,YAAY;IACZ,uBAAuB;IACvB,MAAM,kBAAkB,GAAG,aAAa,CAAC,gBAAgB,CAAC,CAAC;IAC3D,qCAAqC;IACrC,MAAM,uBAAuB,GAAG,sBAAsB,CAAC;QACtD;YACC,wBAAwB,EAAE,MAAM;SAChC;KACD,CAAC,CAAC;IAEH,uBAAuB;IACvB,MAAM,cAAc,GAAG,kBAAkB,IAAI,uBAAuB,CAAC;IAErE,iDAAiD;IACjD,IAAI,cAAc,EAAE,CAAC;QACpB,OAAO,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;QAE9C,OAAO,IAAI,CAAC;IACb,CAAC;IAED,QAAQ;IACR,IAAA,mBAAU,EAAC,yBAAgB,CAAC,CAAC;AAC9B,CAAC"}
|
|
@@ -0,0 +1,251 @@
|
|
|
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.lifeCycleNames = void 0;
|
|
7
|
+
exports.delay = delay;
|
|
8
|
+
exports.doLifeCycle = doLifeCycle;
|
|
9
|
+
exports.executeAndReturnExecutionTime = executeAndReturnExecutionTime;
|
|
10
|
+
exports.getSafeSiteId = getSafeSiteId;
|
|
11
|
+
exports.isTruthy = isTruthy;
|
|
12
|
+
exports.msToSec = msToSec;
|
|
13
|
+
exports.removeAllSiteDirsFromStore = removeAllSiteDirsFromStore;
|
|
14
|
+
exports.removeProperties = removeProperties;
|
|
15
|
+
exports.saveBuildEndLogs = saveBuildEndLogs;
|
|
16
|
+
exports.walkStore = walkStore;
|
|
17
|
+
const promises_1 = __importDefault(require("node:fs/promises"));
|
|
18
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
19
|
+
const errors_1 = require("../constants/errors");
|
|
20
|
+
const db_1 = require("../services/db");
|
|
21
|
+
const brush_1 = require("./brush");
|
|
22
|
+
const errors_2 = require("./errors");
|
|
23
|
+
const folders_1 = require("./folders");
|
|
24
|
+
const loggin_1 = require("./loggin");
|
|
25
|
+
const render_1 = require("./render");
|
|
26
|
+
/**
|
|
27
|
+
* Returns true for "true", "on", true and positive numbers.
|
|
28
|
+
* Returns false for "false", "off", false, 0, negative integers and anything else.
|
|
29
|
+
*/
|
|
30
|
+
function isTruthy(value) {
|
|
31
|
+
// Return if Boolean
|
|
32
|
+
if (typeof value === "boolean") {
|
|
33
|
+
return value;
|
|
34
|
+
}
|
|
35
|
+
// Return false if null or undefined
|
|
36
|
+
if (value === undefined || value === null) {
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
// If the String is true or false
|
|
40
|
+
if (value.toLowerCase() === "true") {
|
|
41
|
+
return true;
|
|
42
|
+
}
|
|
43
|
+
if (value.toLowerCase() === "false") {
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
// "on" | "off", We love them in Griddo ^^.
|
|
47
|
+
if (value.toLowerCase() === "on") {
|
|
48
|
+
return true;
|
|
49
|
+
}
|
|
50
|
+
if (value.toLowerCase() === "off") {
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
// Now check if it's a number
|
|
54
|
+
const number = Number.parseInt(value, 10);
|
|
55
|
+
if (Number.isNaN(number)) {
|
|
56
|
+
return false;
|
|
57
|
+
}
|
|
58
|
+
if (number > 0) {
|
|
59
|
+
return true;
|
|
60
|
+
}
|
|
61
|
+
// Default to false
|
|
62
|
+
return false;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Walk a directory and returns the JSON file absolute paths with one level of depth.
|
|
66
|
+
* /abs/.../sotre/<siteId>/jsonfile.json
|
|
67
|
+
* /abs/.../sotre/<siteId>/jsonfile.json
|
|
68
|
+
* /abs/.../sotre/<siteId>/jsonfile.json
|
|
69
|
+
* /abs/.../sotre/<siteId>/jsonfile.json
|
|
70
|
+
*/
|
|
71
|
+
async function* walkStore(storeDir) {
|
|
72
|
+
const rootDirHandle = await promises_1.default.opendir(storeDir);
|
|
73
|
+
for await (const siteDirent of rootDirHandle) {
|
|
74
|
+
if (siteDirent.isDirectory()) {
|
|
75
|
+
const siteDirPath = node_path_1.default.join(storeDir, siteDirent.name);
|
|
76
|
+
const siteDirHandle = await promises_1.default.opendir(siteDirPath);
|
|
77
|
+
for await (const jsonFileDirent of siteDirHandle) {
|
|
78
|
+
const jsonFilePath = node_path_1.default.join(siteDirPath, jsonFileDirent.name);
|
|
79
|
+
yield jsonFilePath;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Custom delay using the "promise hack",
|
|
86
|
+
*
|
|
87
|
+
* @param ms Amount of miliseconds to be delayed
|
|
88
|
+
*/
|
|
89
|
+
function delay(ms) {
|
|
90
|
+
return new Promise((res) => setTimeout(res, ms));
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Converts milliseconds to seconds with a fixed number of decimals.
|
|
94
|
+
*
|
|
95
|
+
* @param ms The number in milliseconds.
|
|
96
|
+
* @param fixed The amount of fixed decimals.
|
|
97
|
+
* @returns The converted number in seconds with the fixed number of decimals.
|
|
98
|
+
*/
|
|
99
|
+
function msToSec(ms, decimals = 3) {
|
|
100
|
+
return (ms / 1000).toFixed(decimals);
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Return a siteID from a response object if exist
|
|
104
|
+
* @param response A response object
|
|
105
|
+
*/
|
|
106
|
+
function getSafeSiteId(response) {
|
|
107
|
+
if (typeof response === "string") {
|
|
108
|
+
return undefined;
|
|
109
|
+
}
|
|
110
|
+
return "site" in response && response.site ? response?.site : undefined;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Remove props from an object
|
|
114
|
+
*
|
|
115
|
+
* @param obj The object
|
|
116
|
+
* @param props An array of props to be removed
|
|
117
|
+
*/
|
|
118
|
+
function removeProperties(obj, props) {
|
|
119
|
+
for (const key in obj) {
|
|
120
|
+
if (props.includes(key)) {
|
|
121
|
+
delete obj[key];
|
|
122
|
+
}
|
|
123
|
+
else if (typeof obj[key] === "object") {
|
|
124
|
+
removeProperties(obj[key], props);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Measures the execution time of a series of sync or async functions.
|
|
130
|
+
*
|
|
131
|
+
* @async
|
|
132
|
+
* @param functions - Functions to be executed to measure their execution time.
|
|
133
|
+
* @returns A promise that resolves with the total execution time in seconds.
|
|
134
|
+
*/
|
|
135
|
+
async function executeAndReturnExecutionTime(func) {
|
|
136
|
+
const start = process.hrtime.bigint();
|
|
137
|
+
await Promise.resolve(func());
|
|
138
|
+
const end = process.hrtime.bigint();
|
|
139
|
+
return Number((Number(end - start) / 1e9).toFixed(3));
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Executes a life cycle process, which involves executing a callback
|
|
143
|
+
* function, printing to the console, and handling errors with optional retries.
|
|
144
|
+
*
|
|
145
|
+
* @async
|
|
146
|
+
* @param name - The name of the life cycle.
|
|
147
|
+
* @param action - A callback function to execute.
|
|
148
|
+
* @param options - Optional configuration for the life cycle process.
|
|
149
|
+
* @param options.maxRetrys - The maximum number of retries for the life cycle.
|
|
150
|
+
* @param options.enabled - Whether the life cycle process should be executed.
|
|
151
|
+
* @returns - A promise that resolves when the life cycle process is completed.
|
|
152
|
+
*/
|
|
153
|
+
async function doLifeCycle(name, action, options) {
|
|
154
|
+
const { maxRetrys = 3 } = options || {};
|
|
155
|
+
let trysCount = 0;
|
|
156
|
+
while (trysCount < maxRetrys) {
|
|
157
|
+
try {
|
|
158
|
+
(0, loggin_1.infoLog)(`start ${name} life-cycle`);
|
|
159
|
+
// let counter = 0;
|
|
160
|
+
// process.stdout.write("\x1B[?25l");
|
|
161
|
+
// const spinnerChars = ["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"];
|
|
162
|
+
// const interval = setInterval(() => {
|
|
163
|
+
// const spinner = spinnerChars[counter % spinnerChars.length];
|
|
164
|
+
// process.stdout.write(`\r${spinner} ${name} life-cycle...`);
|
|
165
|
+
// counter++;
|
|
166
|
+
// }, 60);
|
|
167
|
+
const exeTime = await executeAndReturnExecutionTime(action);
|
|
168
|
+
// clearInterval(interval);
|
|
169
|
+
// process.stdout.write("\x1B[?25h");
|
|
170
|
+
(0, loggin_1.successLog)(`${name} - ${exeTime}s\n`);
|
|
171
|
+
break;
|
|
172
|
+
}
|
|
173
|
+
catch (error) {
|
|
174
|
+
const errorString = brush_1.brush.red(` Error in ${name} LifeCycle `);
|
|
175
|
+
const attemptsString = brush_1.brush.yellow(`Attempt (${trysCount + 1})`);
|
|
176
|
+
console.log(`\n${errorString} ${attemptsString}\n`);
|
|
177
|
+
console.log(error);
|
|
178
|
+
console.log();
|
|
179
|
+
trysCount++;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
if (trysCount === maxRetrys) {
|
|
183
|
+
(0, errors_2.throwError)((0, errors_1.LifecycleExecutionError)(maxRetrys, name));
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
async function removeAllSiteDirsFromStore() {
|
|
187
|
+
const { __cx } = await (0, render_1.getRenderPathsFromDB)();
|
|
188
|
+
const storeDir = node_path_1.default.join(__cx, "store");
|
|
189
|
+
const allDirs = await promises_1.default.readdir(storeDir);
|
|
190
|
+
const allSiteDirs = allDirs.filter((dirname) => dirname !== "metadata");
|
|
191
|
+
const allSiteDirsFullPath = allSiteDirs.map((name) => node_path_1.default.join(storeDir, name));
|
|
192
|
+
// Remove all site directories except "metadata" directory.
|
|
193
|
+
for (const site of allSiteDirsFullPath) {
|
|
194
|
+
await promises_1.default.rm(site, { recursive: true, force: true });
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
function getFormattedDateTime() {
|
|
198
|
+
const now = new Date();
|
|
199
|
+
const date = [
|
|
200
|
+
String(now.getDate()).padStart(2, "0"),
|
|
201
|
+
String(now.getMonth() + 1).padStart(2, "0"),
|
|
202
|
+
now.getFullYear(),
|
|
203
|
+
].join("-");
|
|
204
|
+
const time = [
|
|
205
|
+
String(now.getHours()).padStart(2, "0"),
|
|
206
|
+
String(now.getMinutes()).padStart(2, "0"),
|
|
207
|
+
String(now.getSeconds()).padStart(2, "0"),
|
|
208
|
+
].join(":");
|
|
209
|
+
return `${date}_${time}`;
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Save render information to a file to use as debug log.
|
|
213
|
+
*
|
|
214
|
+
* This information will **not** be sent to any API.
|
|
215
|
+
*/
|
|
216
|
+
async function saveBuildEndLogs(options) {
|
|
217
|
+
const { basePath, domain } = options;
|
|
218
|
+
const db = await (0, db_1.readDB)();
|
|
219
|
+
const { sitesToPublish, createdPages, buildProcessData } = db.domains[domain].renderInfo || {};
|
|
220
|
+
const dateString = getFormattedDateTime();
|
|
221
|
+
const buildEndLogsDir = node_path_1.default.join(basePath, "debug", "build-end");
|
|
222
|
+
if (!(await (0, folders_1.pathExists)(buildEndLogsDir))) {
|
|
223
|
+
await promises_1.default.mkdir(buildEndLogsDir, { recursive: true });
|
|
224
|
+
}
|
|
225
|
+
// Log
|
|
226
|
+
await promises_1.default.writeFile(node_path_1.default.join(buildEndLogsDir, `${dateString}.json`), JSON.stringify({
|
|
227
|
+
date: new Date().toLocaleString(),
|
|
228
|
+
log: {
|
|
229
|
+
sitesToPublish,
|
|
230
|
+
createdPages,
|
|
231
|
+
buildProcessData,
|
|
232
|
+
},
|
|
233
|
+
}, null, 2));
|
|
234
|
+
// Update index
|
|
235
|
+
await (0, folders_1.prependFileSync)(node_path_1.default.join(buildEndLogsDir, "index.html"), `<pre><a href="${dateString}.json">${dateString}</a></pre>\n`);
|
|
236
|
+
}
|
|
237
|
+
const lifeCycleNames = {
|
|
238
|
+
Sync: "Sync",
|
|
239
|
+
Clean: "Clean",
|
|
240
|
+
Close: "Close",
|
|
241
|
+
Data: "Data",
|
|
242
|
+
HealthCheck: "HealthCheck",
|
|
243
|
+
Init: "Init",
|
|
244
|
+
Meta: "Meta",
|
|
245
|
+
Prepare: "Prepare",
|
|
246
|
+
Relocation: "Relocation",
|
|
247
|
+
Restore: "Restore",
|
|
248
|
+
SSG: "SSG",
|
|
249
|
+
};
|
|
250
|
+
exports.lifeCycleNames = lifeCycleNames;
|
|
251
|
+
//# sourceMappingURL=core-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core-utils.js","sourceRoot":"","sources":["../../exporter/utils/core-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getDomainSlugs = getDomainSlugs;
|
|
4
|
+
exports.getInstanceDomains = getInstanceDomains;
|
|
5
|
+
const endpoints_1 = require("../constants/endpoints");
|
|
6
|
+
const errors_1 = require("../constants/errors");
|
|
7
|
+
const api_1 = require("./api");
|
|
8
|
+
const errors_2 = require("./errors");
|
|
9
|
+
const loggin_1 = require("./loggin");
|
|
10
|
+
/**
|
|
11
|
+
* Return an array of domains name (string) of the current instance.
|
|
12
|
+
*/
|
|
13
|
+
async function getInstanceDomains() {
|
|
14
|
+
// await AuthService.login();
|
|
15
|
+
const domains = await (0, api_1.get)({
|
|
16
|
+
endpoint: endpoints_1.DOMAINS,
|
|
17
|
+
useApiCacheDir: false,
|
|
18
|
+
});
|
|
19
|
+
if (!domains.length) {
|
|
20
|
+
(0, errors_2.throwError)(errors_1.NoDomainsFoundError);
|
|
21
|
+
}
|
|
22
|
+
(0, loggin_1.verboseLog)(`getting domains names (${domains.length})`);
|
|
23
|
+
return getDomainSlugs(domains);
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Return an unique array of domains, filtered without "/".
|
|
27
|
+
*
|
|
28
|
+
* @param domains An array of domains
|
|
29
|
+
* @see Domains
|
|
30
|
+
*/
|
|
31
|
+
function getDomainSlugs(domains) {
|
|
32
|
+
const filteredDomains = domains
|
|
33
|
+
.filter(({ slug }) => !!slug)
|
|
34
|
+
.map(({ slug }) => slug.replace("/", ""));
|
|
35
|
+
return [...new Set(filteredDomains)];
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=domains.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"domains.js","sourceRoot":"","sources":["../../exporter/utils/domains.ts"],"names":[],"mappings":";;AAyCS,wCAAc;AAAE,gDAAkB;AAvC3C,sDAAiD;AACjD,gDAA0D;AAC1D,+BAA4B;AAC5B,qCAAsC;AACtC,qCAAsC;AAEtC;;GAEG;AACH,KAAK,UAAU,kBAAkB;IAChC,6BAA6B;IAC7B,MAAM,OAAO,GAAG,MAAM,IAAA,SAAG,EAAU;QAClC,QAAQ,EAAE,mBAAO;QACjB,cAAc,EAAE,KAAK;KACrB,CAAC,CAAC;IAEH,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACrB,IAAA,mBAAU,EAAC,4BAAmB,CAAC,CAAC;IACjC,CAAC;IAED,IAAA,mBAAU,EAAC,0BAA0B,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;IAExD,OAAO,cAAc,CAAC,OAAO,CAAC,CAAC;AAChC,CAAC;AAED;;;;;GAKG;AACH,SAAS,cAAc,CAAC,OAAgB;IACvC,MAAM,eAAe,GAAG,OAAO;SAC7B,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;SAC5B,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;IAE3C,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC;AACtC,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RenderError = void 0;
|
|
4
|
+
exports.throwError = throwError;
|
|
5
|
+
const brush_1 = require("./brush");
|
|
6
|
+
class RenderError extends Error {
|
|
7
|
+
constructor(originalError) {
|
|
8
|
+
super(originalError instanceof Error ? originalError.message : String(originalError));
|
|
9
|
+
this.name = "InternalCXError";
|
|
10
|
+
this.stack = originalError instanceof Error ? originalError.stack : "";
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
exports.RenderError = RenderError;
|
|
14
|
+
/**
|
|
15
|
+
* Throws an error with the provided error message, expected value, and hint.
|
|
16
|
+
*/
|
|
17
|
+
function throwError(options, stack) {
|
|
18
|
+
const { error, message, expected, hint } = options;
|
|
19
|
+
const errorColor = console.log(brush_1.brush.red(`[ ${error} ]`));
|
|
20
|
+
const extraText = [expected, hint].filter(Boolean).join("\n");
|
|
21
|
+
console.log(`
|
|
22
|
+
${errorColor}
|
|
23
|
+
${message}
|
|
24
|
+
${extraText}
|
|
25
|
+
|
|
26
|
+
${brush_1.brush.red("stack")}
|
|
27
|
+
${JSON.stringify(stack, null, 2)}`);
|
|
28
|
+
throw new RenderError(stack);
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../exporter/utils/errors.ts"],"names":[],"mappings":";;;AAwCS,gCAAU;AAtCnB,mCAAgC;AAShC,MAAa,WAAY,SAAQ,KAAK;IACrC,YAAY,aAAuB;QAClC,KAAK,CAAC,aAAa,YAAY,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;QAEtF,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;QAC9B,IAAI,CAAC,KAAK,GAAG,aAAa,YAAY,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IACxE,CAAC;CACD;AAPD,kCAOC;AAED;;GAEG;AACH,SAAS,UAAU,CAAC,OAAkB,EAAE,KAAe;IACtD,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;IAEnD,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,aAAK,CAAC,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC;IAC1D,MAAM,SAAS,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE9D,OAAO,CAAC,GAAG,CAAC;EACX,UAAU;EACV,OAAO;EACP,SAAS;;EAET,aAAK,CAAC,GAAG,CAAC,OAAO,CAAC;EAClB,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IAEnC,MAAM,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC"}
|