@griddo/cx 11.9.9-rc.0 → 11.9.9-rc.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.
- package/README.md +240 -13
- package/build/adapters/gatsby/index.d.ts +4 -0
- package/build/adapters/gatsby/utils.d.ts +22 -0
- package/build/artifacts/index.d.ts +6 -0
- package/build/commands/end-render.d.ts +1 -0
- package/build/commands/reset-render.d.ts +1 -0
- package/build/commands/start-render.d.ts +1 -0
- package/build/commands/upload-search-content.d.ts +1 -0
- package/build/constants/envs.d.ts +37 -0
- package/build/constants/index.d.ts +57 -0
- package/build/end-render.js +74 -0
- package/build/end-render.js.map +7 -0
- package/build/{shared/errors.d.ts → errors/errors-data.d.ts} +3 -5
- package/build/errors/index.d.ts +15 -0
- package/build/index.d.ts +29 -10
- package/build/index.js +73 -406
- package/build/index.js.map +7 -0
- package/build/prepare-domains-render.js +73 -0
- package/build/prepare-domains-render.js.map +7 -0
- package/build/react/Favicon/index.d.ts +5 -0
- package/build/react/GriddoIntegrations/index.d.ts +4 -3
- package/build/react/GriddoIntegrations/utils.d.ts +6 -7
- package/build/react/index.d.ts +2 -3
- package/build/react/index.js +3 -1
- package/build/registers/api.d.ts +9 -0
- package/build/registers/gatsby.d.ts +9 -0
- package/build/registers/index.d.ts +3 -0
- package/build/reset-render.js +74 -0
- package/build/reset-render.js.map +7 -0
- package/build/services/auth.d.ts +5 -2
- package/build/services/domains.d.ts +4 -3
- package/build/services/navigation.d.ts +16 -16
- package/build/services/reference-fields.d.ts +3 -3
- package/build/services/register.d.ts +36 -0
- package/build/services/robots.d.ts +19 -2
- package/build/services/settings.d.ts +4 -0
- package/build/services/sites.d.ts +5 -8
- package/build/services/store.d.ts +1 -10
- package/build/start-render.js +100 -0
- package/build/start-render.js.map +7 -0
- package/build/{shared/types → types}/api.d.ts +18 -18
- package/build/{shared/types → types}/global.d.ts +16 -15
- package/build/{shared/types → types}/navigation.d.ts +5 -5
- package/build/{shared/types → types}/pages.d.ts +9 -9
- package/build/{shared/types → types}/sites.d.ts +19 -18
- package/build/upload-search-content.js +74 -0
- package/build/upload-search-content.js.map +7 -0
- package/build/utils/alerts.d.ts +3 -0
- package/build/{services → utils}/api.d.ts +1 -1
- package/build/utils/cache.d.ts +35 -0
- package/build/utils/core-utils.d.ts +107 -0
- package/build/utils/create-build-data.d.ts +8 -0
- package/build/utils/domains.d.ts +13 -0
- package/build/utils/folders.d.ts +53 -0
- package/build/{core/check-env-health.d.ts → utils/health-checks.d.ts} +2 -4
- package/build/utils/loggin.d.ts +51 -0
- package/build/{services → utils}/pages.d.ts +3 -3
- package/build/utils/render.d.ts +13 -0
- package/build/utils/searches.d.ts +15 -0
- package/build/utils/sites.d.ts +31 -0
- package/build/utils/store.d.ts +81 -0
- package/cx.config.d.ts +5 -0
- package/cx.config.js +36 -0
- package/exporter/adapters/gatsby/index.ts +162 -0
- package/exporter/adapters/gatsby/utils.ts +161 -0
- package/exporter/artifacts/README.md +34 -0
- package/exporter/artifacts/index.ts +33 -0
- package/exporter/build.sh +24 -16
- package/exporter/commands/end-render.ts +86 -65
- package/exporter/commands/move-assets.ts +11 -0
- package/exporter/commands/prepare-domains-render.ts +35 -147
- package/exporter/commands/reset-render.ts +8 -13
- package/exporter/commands/start-render.ts +64 -26
- package/exporter/commands/upload-search-content.ts +26 -201
- package/exporter/{shared → constants}/endpoints.ts +11 -12
- package/exporter/constants/envs.ts +94 -0
- package/exporter/constants/index.ts +129 -0
- package/exporter/{shared/errors.ts → errors/errors-data.ts} +14 -24
- package/exporter/errors/index.ts +40 -0
- package/exporter/index.ts +56 -14
- package/exporter/react/{GriddoFavicon → Favicon}/index.tsx +9 -3
- package/exporter/react/GriddoIntegrations/index.tsx +23 -17
- package/exporter/react/GriddoIntegrations/utils.ts +12 -24
- package/exporter/react/index.tsx +9 -3
- package/exporter/registers/api.ts +14 -0
- package/exporter/registers/gatsby.ts +14 -0
- package/exporter/registers/index.ts +4 -0
- package/exporter/services/auth.ts +10 -8
- package/exporter/services/domains.ts +8 -23
- package/exporter/services/navigation.ts +18 -12
- package/exporter/services/reference-fields.ts +32 -14
- package/exporter/services/register.ts +113 -0
- package/exporter/services/robots.ts +61 -33
- package/exporter/services/settings.ts +17 -0
- package/exporter/services/sites.ts +28 -40
- package/exporter/services/store.ts +321 -354
- package/exporter/{shared/types → types}/api.ts +41 -40
- package/exporter/{shared/types → types}/global.ts +21 -17
- package/exporter/{shared/types → types}/navigation.ts +3 -3
- package/exporter/{shared/types → types}/pages.ts +11 -10
- package/exporter/{shared/types → types}/sites.ts +19 -18
- package/exporter/utils/alerts.ts +29 -0
- package/exporter/utils/api.ts +243 -0
- package/exporter/utils/cache.ts +142 -0
- package/exporter/utils/core-utils.ts +458 -0
- package/exporter/utils/create-build-data.ts +17 -0
- package/exporter/utils/domains.ts +39 -0
- package/exporter/utils/folders.ts +320 -0
- package/exporter/utils/health-checks.ts +64 -0
- package/exporter/{core → utils}/images.ts +6 -1
- package/exporter/{core → utils}/instance.ts +13 -9
- package/exporter/utils/loggin.ts +184 -0
- package/exporter/{services → utils}/pages.ts +92 -27
- package/exporter/utils/render.ts +71 -0
- package/exporter/utils/searches.ts +156 -0
- package/exporter/utils/sites.ts +312 -0
- package/exporter/utils/store.ts +314 -0
- package/gatsby-browser.tsx +58 -41
- package/gatsby-config.ts +17 -10
- package/gatsby-node.ts +79 -20
- package/gatsby-ssr.tsx +1 -2
- package/package.json +80 -41
- package/src/README.md +7 -0
- package/src/components/Head.tsx +73 -28
- package/src/components/template.tsx +29 -6
- package/src/gatsby-node-utils.ts +2 -76
- package/src/html.tsx +11 -2
- package/src/types.ts +3 -3
- package/start-render.js +7 -0
- package/tsconfig.json +3 -5
- package/build/commands/end-render.js +0 -31
- package/build/commands/end-render.js.map +0 -7
- package/build/commands/prepare-assets-directory.js +0 -9
- package/build/commands/prepare-assets-directory.js.map +0 -7
- package/build/commands/prepare-domains-render.js +0 -38
- package/build/commands/prepare-domains-render.js.map +0 -7
- package/build/commands/reset-render.js +0 -31
- package/build/commands/reset-render.js.map +0 -7
- package/build/commands/single-domain-upload-search-content.d.ts +0 -1
- package/build/commands/start-render.js +0 -66
- package/build/commands/start-render.js.map +0 -7
- package/build/commands/upload-search-content.js +0 -31
- package/build/commands/upload-search-content.js.map +0 -7
- package/build/core/GriddoLog.d.ts +0 -16
- package/build/core/db-class.d.ts +0 -11
- package/build/core/db.d.ts +0 -4
- package/build/core/dist-rollback.d.ts +0 -11
- package/build/core/errors.d.ts +0 -26
- package/build/core/fs.d.ts +0 -69
- package/build/core/life-cycle.d.ts +0 -26
- package/build/core/logger.d.ts +0 -18
- package/build/core/objects.d.ts +0 -11
- package/build/core/print-logos.d.ts +0 -5
- package/build/react/DynamicScript/index.d.ts +0 -4
- package/build/react/GriddoFavicon/index.d.ts +0 -4
- package/build/react/GriddoOpenGraph/index.d.ts +0 -10
- package/build/services/manage-sites.d.ts +0 -22
- package/build/services/manage-store.d.ts +0 -32
- package/build/services/render-artifacts.d.ts +0 -6
- package/build/services/render.d.ts +0 -70
- package/build/services/sitemaps.d.ts +0 -5
- package/build/shared/context.d.ts +0 -36
- package/build/shared/envs.d.ts +0 -19
- package/build/shared/npm-modules/brush.d.ts +0 -18
- package/build/shared/npm-modules/find-up-simple.d.ts +0 -34
- package/build/shared/npm-modules/pkg-dir.d.ts +0 -7
- package/build/shared/npm-modules/xml-parser.d.ts +0 -4
- package/build/shared/types/render.d.ts +0 -54
- package/build/shared/types.d.ts +0 -15
- package/build/ssg-adapters/gatsby/actions/clean.d.ts +0 -3
- package/build/ssg-adapters/gatsby/actions/close.d.ts +0 -3
- package/build/ssg-adapters/gatsby/actions/data.d.ts +0 -2
- package/build/ssg-adapters/gatsby/actions/healthCheck.d.ts +0 -2
- package/build/ssg-adapters/gatsby/actions/init.d.ts +0 -2
- package/build/ssg-adapters/gatsby/actions/logs.d.ts +0 -3
- package/build/ssg-adapters/gatsby/actions/meta.d.ts +0 -2
- package/build/ssg-adapters/gatsby/actions/prepare.d.ts +0 -2
- package/build/ssg-adapters/gatsby/actions/relocation.d.ts +0 -2
- package/build/ssg-adapters/gatsby/actions/restore.d.ts +0 -3
- package/build/ssg-adapters/gatsby/actions/ssg.d.ts +0 -3
- package/build/ssg-adapters/gatsby/actions/sync.d.ts +0 -3
- package/build/ssg-adapters/gatsby/index.d.ts +0 -9
- package/build/ssg-adapters/gatsby/shared/artifacts.d.ts +0 -4
- package/build/ssg-adapters/gatsby/shared/diff-assets.d.ts +0 -15
- package/build/ssg-adapters/gatsby/shared/extract-assets.d.ts +0 -7
- package/build/ssg-adapters/gatsby/shared/gatsby-build.d.ts +0 -7
- package/build/ssg-adapters/gatsby/shared/render-rollback.d.ts +0 -18
- package/build/ssg-adapters/gatsby/shared/sync-render.d.ts +0 -26
- package/build/ssg-adapters/gatsby/shared/types.d.ts +0 -34
- package/cli.mjs +0 -231
- package/exporter/build-esbuild.noop +0 -42
- package/exporter/commands/README.md +0 -151
- package/exporter/commands/prepare-assets-directory.ts +0 -34
- package/exporter/commands/single-domain-upload-search-content.ts +0 -206
- package/exporter/core/GriddoLog.ts +0 -45
- package/exporter/core/check-env-health.ts +0 -204
- package/exporter/core/db-class.ts +0 -54
- package/exporter/core/db.ts +0 -33
- package/exporter/core/dist-rollback.ts +0 -49
- package/exporter/core/errors.ts +0 -92
- package/exporter/core/fs.ts +0 -385
- package/exporter/core/life-cycle.ts +0 -73
- package/exporter/core/logger.ts +0 -141
- package/exporter/core/objects.ts +0 -37
- package/exporter/core/print-logos.ts +0 -21
- package/exporter/react/DynamicScript/index.tsx +0 -33
- package/exporter/react/GriddoOpenGraph/index.tsx +0 -39
- package/exporter/services/api.ts +0 -306
- package/exporter/services/manage-sites.ts +0 -116
- package/exporter/services/manage-store.ts +0 -173
- package/exporter/services/render-artifacts.ts +0 -44
- package/exporter/services/render.ts +0 -229
- package/exporter/services/sitemaps.ts +0 -129
- package/exporter/shared/context.ts +0 -49
- package/exporter/shared/envs.ts +0 -62
- package/exporter/shared/npm-modules/README.md +0 -36
- package/exporter/shared/npm-modules/brush.ts +0 -34
- package/exporter/shared/npm-modules/find-up-simple.ts +0 -100
- package/exporter/shared/npm-modules/pkg-dir.ts +0 -17
- package/exporter/shared/npm-modules/xml-parser.ts +0 -57
- package/exporter/shared/types/render.ts +0 -63
- package/exporter/shared/types.ts +0 -15
- package/exporter/ssg-adapters/gatsby/actions/clean.ts +0 -26
- package/exporter/ssg-adapters/gatsby/actions/close.ts +0 -17
- package/exporter/ssg-adapters/gatsby/actions/data.ts +0 -22
- package/exporter/ssg-adapters/gatsby/actions/healthCheck.ts +0 -10
- package/exporter/ssg-adapters/gatsby/actions/init.ts +0 -12
- package/exporter/ssg-adapters/gatsby/actions/logs.ts +0 -10
- package/exporter/ssg-adapters/gatsby/actions/meta.ts +0 -13
- package/exporter/ssg-adapters/gatsby/actions/prepare.ts +0 -9
- package/exporter/ssg-adapters/gatsby/actions/relocation.ts +0 -15
- package/exporter/ssg-adapters/gatsby/actions/restore.ts +0 -21
- package/exporter/ssg-adapters/gatsby/actions/ssg.ts +0 -12
- package/exporter/ssg-adapters/gatsby/actions/sync.ts +0 -65
- package/exporter/ssg-adapters/gatsby/index.ts +0 -114
- package/exporter/ssg-adapters/gatsby/shared/artifacts.ts +0 -17
- package/exporter/ssg-adapters/gatsby/shared/diff-assets.ts +0 -128
- package/exporter/ssg-adapters/gatsby/shared/extract-assets.ts +0 -75
- package/exporter/ssg-adapters/gatsby/shared/gatsby-build.ts +0 -58
- package/exporter/ssg-adapters/gatsby/shared/render-rollback.ts +0 -33
- package/exporter/ssg-adapters/gatsby/shared/sync-render.ts +0 -298
- package/exporter/ssg-adapters/gatsby/shared/types.ts +0 -35
- package/plugins/gatsby-plugin-svgr-loader/gatsby-node.js +0 -55
- package/plugins/gatsby-plugin-svgr-loader/package.json +0 -8
- package/tsconfig.commands.json +0 -36
- package/tsconfig.exporter.json +0 -21
- /package/build/commands/{prepare-assets-directory.d.ts → move-assets.d.ts} +0 -0
- /package/build/{shared → constants}/endpoints.d.ts +0 -0
- /package/build/react/{GriddoFavicon → Favicon}/utils.d.ts +0 -0
- /package/build/{shared/types → types}/templates.d.ts +0 -0
- /package/build/{core → utils}/images.d.ts +0 -0
- /package/build/{core → utils}/instance.d.ts +0 -0
- /package/exporter/react/{GriddoFavicon → Favicon}/utils.ts +0 -0
- /package/exporter/{shared/types → types}/templates.ts +0 -0
package/cli.mjs
DELETED
|
@@ -1,231 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
import { execSync } from "node:child_process";
|
|
4
|
-
import fs from "node:fs";
|
|
5
|
-
import path from "node:path";
|
|
6
|
-
import { fileURLToPath } from "node:url";
|
|
7
|
-
import { parseArgs } from "node:util";
|
|
8
|
-
|
|
9
|
-
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
10
|
-
|
|
11
|
-
function getRoot(rootFlag) {
|
|
12
|
-
if (rootFlag) {
|
|
13
|
-
return path.resolve(rootFlag);
|
|
14
|
-
}
|
|
15
|
-
return path.resolve(__dirname, "../../");
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
function getDBPath(rootFlag) {
|
|
19
|
-
return path.join(getRoot(rootFlag), ".griddo/cache/db.json");
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
const COMMANDS_PATH = path.join(__dirname, "build/commands");
|
|
23
|
-
|
|
24
|
-
export const AVAILABLE_COMMANDS = [
|
|
25
|
-
{
|
|
26
|
-
name: "render",
|
|
27
|
-
description: "Render the instance",
|
|
28
|
-
domainArgument: "optional",
|
|
29
|
-
rootArgument: false,
|
|
30
|
-
script: "render-full-instance",
|
|
31
|
-
isCommandPack: true,
|
|
32
|
-
commandPack: renderCommandPack,
|
|
33
|
-
},
|
|
34
|
-
{
|
|
35
|
-
name: "prepare-assets-directory",
|
|
36
|
-
description: "Prepare assets directory (internal local only)",
|
|
37
|
-
domainArgument: true,
|
|
38
|
-
script: "prepare-assets-directory",
|
|
39
|
-
rootArgument: true,
|
|
40
|
-
isCommandPack: false,
|
|
41
|
-
},
|
|
42
|
-
{
|
|
43
|
-
name: "prepare-domains-render",
|
|
44
|
-
description: "Prepare domains",
|
|
45
|
-
domainArgument: false,
|
|
46
|
-
script: "prepare-domains-render",
|
|
47
|
-
rootArgument: true,
|
|
48
|
-
isCommandPack: false,
|
|
49
|
-
},
|
|
50
|
-
{
|
|
51
|
-
name: "start-render",
|
|
52
|
-
description: "Start rendering for a domain",
|
|
53
|
-
domainArgument: true,
|
|
54
|
-
script: "start-render",
|
|
55
|
-
rootArgument: false,
|
|
56
|
-
isCommandPack: false,
|
|
57
|
-
},
|
|
58
|
-
{
|
|
59
|
-
name: "end-render",
|
|
60
|
-
description: "End rendering for a domain",
|
|
61
|
-
domainArgument: true,
|
|
62
|
-
script: "end-render",
|
|
63
|
-
isCommandPack: false,
|
|
64
|
-
rootArgument: true,
|
|
65
|
-
},
|
|
66
|
-
{
|
|
67
|
-
name: "upload-search-content",
|
|
68
|
-
description: "Upload search content for a domain",
|
|
69
|
-
domainArgument: false,
|
|
70
|
-
script: "upload-search-content",
|
|
71
|
-
isCommandPack: false,
|
|
72
|
-
rootArgument: true,
|
|
73
|
-
},
|
|
74
|
-
{
|
|
75
|
-
name: "reset-render",
|
|
76
|
-
description: "Reset render state",
|
|
77
|
-
domainArgument: false,
|
|
78
|
-
script: "reset-render",
|
|
79
|
-
isCommandPack: false,
|
|
80
|
-
rootArgument: false,
|
|
81
|
-
},
|
|
82
|
-
];
|
|
83
|
-
|
|
84
|
-
function showHelp() {
|
|
85
|
-
console.log("Griddo CX CLI - Available commands:\n");
|
|
86
|
-
|
|
87
|
-
AVAILABLE_COMMANDS.forEach((cmd) => {
|
|
88
|
-
const domainArg = cmd.domainArgument ? " --domain=<domain>" : "";
|
|
89
|
-
console.log(` ${cmd.name}${domainArg} --root=<path> - ${cmd.description}`);
|
|
90
|
-
});
|
|
91
|
-
|
|
92
|
-
console.log("\nUsage:");
|
|
93
|
-
console.log(" node cli.mjs <command> --root=<path> [--domain=<domain>]");
|
|
94
|
-
console.log(" node cli.mjs --help");
|
|
95
|
-
console.log("\nExamples:");
|
|
96
|
-
console.log(" node cli.mjs render --domain=pro-pikachu --root=. ");
|
|
97
|
-
console.log(" node cli.mjs start-render --domain=mydomain.com --root=some-path");
|
|
98
|
-
console.log(" node cli.mjs prepare-domains-render --root=. ");
|
|
99
|
-
console.log(" node cli.mjs --help");
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
function findCommand(commandName) {
|
|
103
|
-
return AVAILABLE_COMMANDS.find((cmd) => cmd.name === commandName);
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
function validateCommand(commandName, config) {
|
|
107
|
-
const command = findCommand(commandName);
|
|
108
|
-
|
|
109
|
-
if (!command) {
|
|
110
|
-
console.error(`Error: Unknown command '${commandName}'`);
|
|
111
|
-
console.error("Use 'node cli.mjs --help' to see available commands");
|
|
112
|
-
process.exit(1);
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
if (!config.root && command.rootArgument) {
|
|
116
|
-
console.error(`Error: --root flag is required`);
|
|
117
|
-
console.error(`Usage: node cli.mjs ${commandName} --root=<path>`);
|
|
118
|
-
process.exit(1);
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
if (command.domainArgument === true && !config.domain) {
|
|
122
|
-
console.error(`Error: Command '${commandName}' requires a --domain argument`);
|
|
123
|
-
console.error(`Usage: node cli.mjs ${commandName} --domain=<domain> --root=<path>`);
|
|
124
|
-
process.exit(1);
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
if (command.domainArgument === false && config.domain) {
|
|
128
|
-
console.warn(
|
|
129
|
-
`Warning: Command '${commandName}' doesn't require a domain, ignoring '${config.domain}'`,
|
|
130
|
-
);
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
// Creamos un nuevo config validado para asegurar que el dominio se pasa solo cuando es necesario
|
|
134
|
-
const validatedConfig = {
|
|
135
|
-
...config,
|
|
136
|
-
domain: command.domainArgument ? config.domain : undefined,
|
|
137
|
-
};
|
|
138
|
-
|
|
139
|
-
return { command, config: validatedConfig };
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
function executeCommand(command, config) {
|
|
143
|
-
try {
|
|
144
|
-
const env = { ...process.env };
|
|
145
|
-
const scriptPath = path.join(COMMANDS_PATH, command.script);
|
|
146
|
-
|
|
147
|
-
if (command.isCommandPack) {
|
|
148
|
-
command.commandPack(config);
|
|
149
|
-
return;
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
const commandToRun = `node ${scriptPath}${config.domain ? ` ${config.domain}` : ""}`;
|
|
153
|
-
|
|
154
|
-
execSync(commandToRun, {
|
|
155
|
-
stdio: "inherit",
|
|
156
|
-
env,
|
|
157
|
-
cwd: process.cwd(),
|
|
158
|
-
});
|
|
159
|
-
} catch (error) {
|
|
160
|
-
console.error(`Error executing command ${command.name}`);
|
|
161
|
-
throw error;
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
function renderCommandPack(config) {
|
|
166
|
-
// Pequeño helper para no repetir la lógica de búsqueda y ejecución
|
|
167
|
-
const run = (commandName, domainOverride) => {
|
|
168
|
-
const commandToRun = findCommand(commandName);
|
|
169
|
-
// Pasamos una copia del config con el dominio que necesite este comando en particular
|
|
170
|
-
const runConfig = { ...config, domain: domainOverride ?? config.domain };
|
|
171
|
-
if (commandToRun) {
|
|
172
|
-
executeCommand(commandToRun, runConfig);
|
|
173
|
-
}
|
|
174
|
-
};
|
|
175
|
-
|
|
176
|
-
try {
|
|
177
|
-
run("prepare-domains-render", null);
|
|
178
|
-
|
|
179
|
-
let domainsToProcess = [];
|
|
180
|
-
if (config.domain) {
|
|
181
|
-
domainsToProcess = [config.domain];
|
|
182
|
-
} else {
|
|
183
|
-
const { sortedDomains } = JSON.parse(fs.readFileSync(getDBPath(config.root), "utf-8"));
|
|
184
|
-
domainsToProcess = sortedDomains;
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
for (const domain of domainsToProcess) {
|
|
188
|
-
run("start-render", domain);
|
|
189
|
-
run("prepare-assets-directory", domain);
|
|
190
|
-
run("end-render", domain);
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
// All domains
|
|
194
|
-
run("upload-search-content");
|
|
195
|
-
} catch (error) {
|
|
196
|
-
console.error("An error occurred during the render process:", error);
|
|
197
|
-
run("reset-render", null);
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
function main() {
|
|
202
|
-
const options = {
|
|
203
|
-
help: { type: "boolean", short: "h" },
|
|
204
|
-
domain: { type: "string" },
|
|
205
|
-
root: { type: "string" },
|
|
206
|
-
};
|
|
207
|
-
|
|
208
|
-
const { values, positionals } = parseArgs({
|
|
209
|
-
args: process.argv.slice(2),
|
|
210
|
-
options,
|
|
211
|
-
allowPositionals: true,
|
|
212
|
-
});
|
|
213
|
-
|
|
214
|
-
const commandName = positionals[0];
|
|
215
|
-
|
|
216
|
-
if (!commandName || values.help) {
|
|
217
|
-
showHelp();
|
|
218
|
-
return;
|
|
219
|
-
}
|
|
220
|
-
|
|
221
|
-
const initialConfig = {
|
|
222
|
-
domain: values.domain,
|
|
223
|
-
root: values.root,
|
|
224
|
-
};
|
|
225
|
-
|
|
226
|
-
const { command, config } = validateCommand(commandName, initialConfig);
|
|
227
|
-
|
|
228
|
-
executeCommand(command, config);
|
|
229
|
-
}
|
|
230
|
-
|
|
231
|
-
main();
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
|
|
3
|
-
# Build CX script file
|
|
4
|
-
#
|
|
5
|
-
# This file generates the necessary builds for CX.
|
|
6
|
-
# - Setup, to generate necessary elements (tsconfig, etc..)
|
|
7
|
-
# - Library, CX library that will be used by the SSG framework.
|
|
8
|
-
# - Scripts, CX scripts that will be used by infra during the render process.
|
|
9
|
-
#
|
|
10
|
-
# @todo:
|
|
11
|
-
# In the future, we will try to eliminate the bundling processes and use
|
|
12
|
-
# TypeScript or ESModules directly.
|
|
13
|
-
|
|
14
|
-
# start
|
|
15
|
-
echo "📦 Building ..."
|
|
16
|
-
|
|
17
|
-
# CLI options
|
|
18
|
-
log="--log-level=error"
|
|
19
|
-
production_node_opts="--bundle --platform=node --minify --sourcemap"
|
|
20
|
-
debugging_node_opts="--bundle --platform=node --sourcemap"
|
|
21
|
-
# react_opts="--platform=node --external:@griddo-instance --external:react --external:react-dom --bundle --minify"
|
|
22
|
-
|
|
23
|
-
# Manage --minify for debugging
|
|
24
|
-
bundle_node_opts=$production_node_opts
|
|
25
|
-
if [ "$1" = "--debug" ]; then
|
|
26
|
-
bundle_node_opts=$debugging_node_opts
|
|
27
|
-
fi
|
|
28
|
-
|
|
29
|
-
# library
|
|
30
|
-
# esbuild ${log} ./exporter/index.ts ${bundle_node_opts} --outfile=./build/index.js
|
|
31
|
-
# esbuild ${log} ./exporter/react/index.tsx ${react_opts} --outfile=./build/react/index.js
|
|
32
|
-
|
|
33
|
-
# scripts
|
|
34
|
-
esbuild ${log} ./exporter/commands/end-render.ts ${bundle_node_opts} --outfile=./build/end-render.js
|
|
35
|
-
esbuild ${log} ./exporter/commands/upload-search-content.ts ${bundle_node_opts} --outfile=./build/upload-search-content.js
|
|
36
|
-
esbuild ${log} ./exporter/commands/reset-render.ts ${bundle_node_opts} --outfile=./build/reset-render.js
|
|
37
|
-
esbuild ${log} ./exporter/commands/start-render.ts ${bundle_node_opts} --outfile=./build/start-render.js
|
|
38
|
-
esbuild ${log} ./exporter/commands/prepare-domains-render.ts ${bundle_node_opts} --outfile=./build/prepare-domains-render.js
|
|
39
|
-
esbuild ${log} ./exporter/commands/prepare-assets-directory.ts ${bundle_node_opts} --outfile=./build/prepare-assets-directory.js
|
|
40
|
-
|
|
41
|
-
# types
|
|
42
|
-
tsc --emitDeclarationOnly --declaration --outDir build --project tsconfig.exporter.json
|
|
@@ -1,151 +0,0 @@
|
|
|
1
|
-
# Comandos del Orquestador Griddo CX
|
|
2
|
-
|
|
3
|
-
Este directorio contiene los comandos principales de Griddo Exporter (CX). Estos comandos forman parte del ciclo de vida completo del proceso de render de una instancia.
|
|
4
|
-
|
|
5
|
-
La recomendación es llamarlos mediante el cli `node cli.mjs <comand-name> [options]`
|
|
6
|
-
|
|
7
|
-
## Listado de comandos.
|
|
8
|
-
|
|
9
|
-
### 1. `prepare-domains-render.ts`
|
|
10
|
-
|
|
11
|
-
**Propósito**: Prepara los dominios para el proceso de renderizado.
|
|
12
|
-
|
|
13
|
-
**Funcionalidades principales**:
|
|
14
|
-
- Inicializa el entorno de renderizado creando la estructura de base de datos local (db.json)
|
|
15
|
-
- Obtiene la lista de dominios disponibles desde la API
|
|
16
|
-
- Calcula el número de páginas por dominio analizando sitios para publicar/despublicar
|
|
17
|
-
- Determina el modo de renderizado para cada dominio (basado en si tiene contenido pendiente)
|
|
18
|
-
- Ordena los dominios por número de páginas para optimizar el procesamiento
|
|
19
|
-
- Crea archivos de configuración (`domains.json`) para uso de infraestructura (A deprecar: infra deberá leer db.json para obtener esa información)
|
|
20
|
-
|
|
21
|
-
**Uso típico**: Se ejecuta antes de cualquier proceso de renderizado para preparar el estado inicial.
|
|
22
|
-
|
|
23
|
-
**Características técnicas**:
|
|
24
|
-
- No requiere argumentos (proceso global)
|
|
25
|
-
- Crea la carpeta `.griddo` si no existe donde le indiquemos cuando le pasemos `--root` desde el cli.
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
### 2. `start-render.ts`
|
|
29
|
-
|
|
30
|
-
**Propósito**: Ejecuta el ciclo completo de renderizado para uno o múltiples dominios.
|
|
31
|
-
|
|
32
|
-
**Funcionalidades principales**:
|
|
33
|
-
- Autenticación con la API de Griddo
|
|
34
|
-
- Verificación del estado de salud del entorno
|
|
35
|
-
- Ejecución del proceso Gatsby para generar sitios estáticos
|
|
36
|
-
- Soporte para modo legacy (múltiples dominios) y modo moderno (dominio específico)
|
|
37
|
-
|
|
38
|
-
**Uso**:
|
|
39
|
-
```bash
|
|
40
|
-
# Modo moderno (recomendado)
|
|
41
|
-
start-render <dominio>
|
|
42
|
-
|
|
43
|
-
# Modo legacy (múltiples dominios)
|
|
44
|
-
start-render
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
**Características técnicas**:
|
|
48
|
-
- Puede procesar un dominio específico o todos los dominios disponibles
|
|
49
|
-
- Utiliza el adaptador Gatsby para la generación de sitios
|
|
50
|
-
- Requiere autenticación previa con la API
|
|
51
|
-
|
|
52
|
-
### 3. `end-render.ts`
|
|
53
|
-
|
|
54
|
-
**Propósito**: Finaliza el ciclo de renderizado notificando a la API sobre los cambios realizados.
|
|
55
|
-
|
|
56
|
-
**Funcionalidades principales**:
|
|
57
|
-
- Lee el reporte de construcción generado por Gatsby
|
|
58
|
-
- Procesa cada sitio del dominio indicando qué se publicó/despublicó
|
|
59
|
-
- Envía llamadas de finalización a la API para cada sitio
|
|
60
|
-
- Maneja modos IDLE para sitios sin cambios
|
|
61
|
-
|
|
62
|
-
**Uso**:
|
|
63
|
-
```bash
|
|
64
|
-
# Modo moderno
|
|
65
|
-
end-render <dominio>
|
|
66
|
-
|
|
67
|
-
# Modo legacy
|
|
68
|
-
end-render
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
**Características técnicas**:
|
|
72
|
-
- Lee `build-report.json` generado durante el proceso de construcción
|
|
73
|
-
- Elimina hashes duplicados antes del envío
|
|
74
|
-
- Puede saltar dominios marcados como IDLE
|
|
75
|
-
|
|
76
|
-
### 4. `upload-search-content.ts`
|
|
77
|
-
|
|
78
|
-
**Propósito**: Sube el contenido de las páginas generadas para el uso posterior en los buscadores de Griddo.
|
|
79
|
-
|
|
80
|
-
**Funcionalidades principales**:
|
|
81
|
-
- Extrae contenido de las páginas HTML generadas
|
|
82
|
-
- Limpia el contenido HTML removiendo etiquetas, scripts y elementos no deseados
|
|
83
|
-
- Procesa archivos `page-data.json` de Gatsby para obtener metadatos
|
|
84
|
-
- Envía el contenido indexable a la API de búsqueda
|
|
85
|
-
- Soporte opcional para embeddings de IA
|
|
86
|
-
|
|
87
|
-
**Características técnicas**:
|
|
88
|
-
- Solo se ejecuta si `GRIDDO_SEARCH_FEATURE` está habilitado
|
|
89
|
-
- Procesa recursivamente directorios `page-data` y `public`
|
|
90
|
-
- Normaliza el contenido eliminando múltiples espacios y saltos de línea
|
|
91
|
-
- Envía datos estructurados: título, descripción, imagen, URL, contenido, template
|
|
92
|
-
|
|
93
|
-
**Configuración**:
|
|
94
|
-
- Activado por `GRIDDO_SEARCH_FEATURE=true`
|
|
95
|
-
- Embeddings de IA con `GRIDDO_AI_EMBEDDINGS=true`
|
|
96
|
-
|
|
97
|
-
### 5. `reset-render.ts`
|
|
98
|
-
|
|
99
|
-
**Propósito**: Resetea el estado de renderizado en el sistema remoto.
|
|
100
|
-
|
|
101
|
-
**Funcionalidades principales**:
|
|
102
|
-
- Envía una llamada a la API para resetear el estado de renderizado
|
|
103
|
-
- Útil para limpiar estados inconsistentes o errores de procesamiento
|
|
104
|
-
|
|
105
|
-
**Uso típico**: Se utiliza cuando hay problemas con el estado del renderizado que requieren un reinicio limpio.
|
|
106
|
-
|
|
107
|
-
**Características técnicas**:
|
|
108
|
-
- No requiere argumentos
|
|
109
|
-
- Comunicación directa con el endpoint `RESET_RENDER`
|
|
110
|
-
- Operación atómica que afecta el estado global
|
|
111
|
-
|
|
112
|
-
### 6. `prepare-assets-directory.ts` (USO SOLO EN DESARROLLO LOCAL)
|
|
113
|
-
|
|
114
|
-
**Propósito**: Prepara el directorio de assets para un dominio específico.
|
|
115
|
-
|
|
116
|
-
**Funcionalidades principales**:
|
|
117
|
-
- Reorganiza la estructura de directorios de assets
|
|
118
|
-
- Mueve assets desde ubicación compartida a ubicación específica del dominio
|
|
119
|
-
|
|
120
|
-
**Uso**:
|
|
121
|
-
```bash
|
|
122
|
-
prepare-assets-directory <dominio>
|
|
123
|
-
```
|
|
124
|
-
|
|
125
|
-
**Características técnicas**:
|
|
126
|
-
- Mueve el directorio `assets` compartido al directorio específico del dominio
|
|
127
|
-
- Operación de bajo nivel para organización de archivos estáticos
|
|
128
|
-
- Elimina y recrea la estructura según sea necesario
|
|
129
|
-
|
|
130
|
-
## Flujo de Uso Típico
|
|
131
|
-
|
|
132
|
-
1. **`prepare-domains-render`** - Preparar el entorno y obtener dominios
|
|
133
|
-
2. **`start-render`** - Ejecutar la generación de sitios para un dominio
|
|
134
|
-
3. **`end-render`** - Notificar finalización y cambios a la API
|
|
135
|
-
4. **`upload-search-content`** - Subir contenido para búsqueda (si está habilitado)
|
|
136
|
-
5. **`prepare-assets-directory`** - Organizar assets (si es necesario)
|
|
137
|
-
|
|
138
|
-
## Variables de Entorno Relevantes
|
|
139
|
-
|
|
140
|
-
- `GRIDDO_RENDER_BY_DOMAINS`: Habilita modo legacy para múltiples dominios
|
|
141
|
-
- `GRIDDO_SEARCH_FEATURE`: Habilita subida de contenido para búsqueda
|
|
142
|
-
- `GRIDDO_AI_EMBEDDINGS`: Habilita generación de embeddings de IA
|
|
143
|
-
- `GRIDDO_API_URL`: URL base de la API de Griddo
|
|
144
|
-
- `GRIDDO_BOT_USER` / `GRIDDO_BOT_PASSWORD`: Credenciales de autenticación
|
|
145
|
-
|
|
146
|
-
## Notas de Desarrollo
|
|
147
|
-
|
|
148
|
-
- Todos los comandos utilizan manejo de errores consistente a través de `withErrorHandler`
|
|
149
|
-
- La mayoría requiere autenticación previa con `AuthService.login()`
|
|
150
|
-
- Los comandos modernos esperan un argumento de dominio específico
|
|
151
|
-
- El modo legacy permite procesamiento masivo pero está deprecated
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import fsp from "node:fs/promises";
|
|
2
|
-
import path from "node:path";
|
|
3
|
-
|
|
4
|
-
import { withErrorHandler } from "../core/errors";
|
|
5
|
-
import { pathExists } from "../core/fs";
|
|
6
|
-
import { GriddoLog } from "../core/GriddoLog";
|
|
7
|
-
import { getRenderModeFromDB, getRenderPathsHydratedWithDomainFromDB } from "../services/render";
|
|
8
|
-
|
|
9
|
-
async function prepareAssetsDir() {
|
|
10
|
-
const [domain] = process.argv.slice(2);
|
|
11
|
-
|
|
12
|
-
const { renderMode } = await getRenderModeFromDB(domain);
|
|
13
|
-
|
|
14
|
-
if (renderMode === "IDLE") {
|
|
15
|
-
return;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
const { __exports } = await getRenderPathsHydratedWithDomainFromDB({ domain });
|
|
19
|
-
const assetsDir = path.join(__exports, "assets");
|
|
20
|
-
const domainAssetsDir = path.join(__exports, domain);
|
|
21
|
-
|
|
22
|
-
if (await pathExists(assetsDir)) {
|
|
23
|
-
await fsp.rm(domainAssetsDir, { force: true, recursive: true });
|
|
24
|
-
await fsp.rename(assetsDir, domainAssetsDir);
|
|
25
|
-
} else {
|
|
26
|
-
GriddoLog.warn("Assets directory not found");
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
async function main() {
|
|
31
|
-
await prepareAssetsDir();
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
withErrorHandler(main);
|
|
@@ -1,206 +0,0 @@
|
|
|
1
|
-
import type { PostSearchInfoResponse } from "../shared/types/api";
|
|
2
|
-
import type { PostSearchInfoProps } from "../shared/types/global";
|
|
3
|
-
import type { GatsbyPageData } from "../ssg-adapters/gatsby/shared/types";
|
|
4
|
-
|
|
5
|
-
import fsp from "node:fs/promises";
|
|
6
|
-
import path from "node:path";
|
|
7
|
-
|
|
8
|
-
import { throwError, withErrorHandler } from "../core/errors";
|
|
9
|
-
import { pathExists } from "../core/fs";
|
|
10
|
-
import { GriddoLog } from "../core/GriddoLog";
|
|
11
|
-
import { post } from "../services/api";
|
|
12
|
-
import { AuthService } from "../services/auth";
|
|
13
|
-
import { getRenderModeFromDB, getRenderPathsHydratedWithDomainFromDB } from "../services/render";
|
|
14
|
-
import { SEARCH } from "../shared/endpoints";
|
|
15
|
-
import { GRIDDO_SEARCH_FEATURE } from "../shared/envs";
|
|
16
|
-
import { ReadFromStoreError, UploadSearchError } from "../shared/errors";
|
|
17
|
-
import { RENDER_MODE } from "../shared/types/render";
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* Save in the BBDD the content of a page parsed without HTML tags.
|
|
21
|
-
*
|
|
22
|
-
* @param props Object with parts of the final page object to be saved in the BBDD.
|
|
23
|
-
*/
|
|
24
|
-
async function postSearchInfo(props: PostSearchInfoProps) {
|
|
25
|
-
const { title, description, image, pageId, languageId, siteId, url, content, template } = props;
|
|
26
|
-
|
|
27
|
-
const response = await post<PostSearchInfoResponse>({
|
|
28
|
-
endpoint: SEARCH,
|
|
29
|
-
body: {
|
|
30
|
-
title,
|
|
31
|
-
description,
|
|
32
|
-
image,
|
|
33
|
-
pageId,
|
|
34
|
-
languageId,
|
|
35
|
-
siteId,
|
|
36
|
-
url,
|
|
37
|
-
template,
|
|
38
|
-
content,
|
|
39
|
-
},
|
|
40
|
-
useApiCacheDir: false,
|
|
41
|
-
logToFile: false,
|
|
42
|
-
});
|
|
43
|
-
|
|
44
|
-
return response;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
function prepareHTMLContentForSearch(content: string): string {
|
|
48
|
-
// 1. Remove script, style, and other unwanted block tags and their content.
|
|
49
|
-
// The regex looks for <tag...>...</tag> where tag is one of the specified ones.
|
|
50
|
-
const tagsToRemove = ["meta", "link", "style", "script", "noscript", "nav", "header", "footer"];
|
|
51
|
-
const removeTagsRegex = new RegExp(`<(${tagsToRemove.join("|")})\\b[^>]*>.*?<\\/\\1>`, "gis");
|
|
52
|
-
let processedContent = content.replace(removeTagsRegex, "");
|
|
53
|
-
|
|
54
|
-
// 2. Strip all remaining HTML tags.
|
|
55
|
-
processedContent = processedContent.replace(/<[^>]+>/g, " ");
|
|
56
|
-
|
|
57
|
-
// 3. Normalize whitespace: replace multiple spaces/newlines with a single space and trim.
|
|
58
|
-
processedContent = processedContent.replace(/\s+/g, " ").trim();
|
|
59
|
-
|
|
60
|
-
return processedContent;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
async function getContentDirectories(domain: string) {
|
|
64
|
-
const { __exports } = await getRenderPathsHydratedWithDomainFromDB({ domain });
|
|
65
|
-
|
|
66
|
-
return {
|
|
67
|
-
htmlContentDir: path.join(__exports, "dist"),
|
|
68
|
-
jsonContentDir: path.join(__exports, "dist", "page-data"),
|
|
69
|
-
};
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
/**
|
|
73
|
-
* Walk recursively in a basePath and return an array of pages with json
|
|
74
|
-
* extension with the full absolute path and the path includes "page-data".
|
|
75
|
-
*
|
|
76
|
-
* @param basePath The path to walk recursively.
|
|
77
|
-
* @returns An array of pages with json extension with the full absolute path
|
|
78
|
-
* and the path includes "page-data".
|
|
79
|
-
*/
|
|
80
|
-
async function* walkRecursively(basePath: string): AsyncGenerator<string> {
|
|
81
|
-
const filesHandle = await fsp.opendir(basePath);
|
|
82
|
-
|
|
83
|
-
for await (const fileDirent of filesHandle) {
|
|
84
|
-
if (fileDirent.isDirectory()) {
|
|
85
|
-
yield* walkRecursively(path.join(basePath, fileDirent.name));
|
|
86
|
-
} else if (
|
|
87
|
-
fileDirent.isFile() &&
|
|
88
|
-
path.extname(fileDirent.name) === ".json" &&
|
|
89
|
-
fileDirent.name.includes("page-data")
|
|
90
|
-
) {
|
|
91
|
-
yield path.join(basePath, fileDirent.name);
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
/**
|
|
97
|
-
* Walk recursively in a basePath and return an array of pages with json
|
|
98
|
-
* extension with the full absolute path and the path includes "page-data".
|
|
99
|
-
*
|
|
100
|
-
* @param basePath The path to walk recursively.
|
|
101
|
-
* @returns An array of pages with json extension with the full absolute path
|
|
102
|
-
* and the path includes "page-data".
|
|
103
|
-
*/
|
|
104
|
-
async function* getPageDataPagesFromExports<PageType extends GatsbyPageData>(
|
|
105
|
-
basePath: string,
|
|
106
|
-
): AsyncGenerator<PageType> {
|
|
107
|
-
const jsonFiles = walkRecursively(basePath);
|
|
108
|
-
|
|
109
|
-
for await (const filePath of jsonFiles) {
|
|
110
|
-
try {
|
|
111
|
-
const fileContent = await fsp.readFile(filePath, "utf8");
|
|
112
|
-
const page = JSON.parse(fileContent) as PageType;
|
|
113
|
-
|
|
114
|
-
if (page.path) {
|
|
115
|
-
yield page;
|
|
116
|
-
}
|
|
117
|
-
} catch (error) {
|
|
118
|
-
throwError(ReadFromStoreError, error);
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
/**
|
|
124
|
-
* Function that search in the `/public` dir the content info of the pages and
|
|
125
|
-
* send it to the search table in the ddbb using the API.
|
|
126
|
-
* @todo Utilizar la carpeta page-data en lugar de la carpeta store puesto que
|
|
127
|
-
* esta ya no es persistente.
|
|
128
|
-
*/
|
|
129
|
-
async function uploadRenderedSearchContentToAPI(options: {
|
|
130
|
-
htmlContentDir: string;
|
|
131
|
-
jsonContentDir: string;
|
|
132
|
-
}) {
|
|
133
|
-
const { htmlContentDir, jsonContentDir } = options;
|
|
134
|
-
|
|
135
|
-
if (!(await pathExists(jsonContentDir)) || !(await pathExists(htmlContentDir))) {
|
|
136
|
-
GriddoLog.info(
|
|
137
|
-
`(From Current Render) Skipping uploading content to the search endpoint because it has not exported sites.`,
|
|
138
|
-
);
|
|
139
|
-
|
|
140
|
-
return;
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
// Get pages from gatsby page-data dir
|
|
144
|
-
const gatsbyPageDataPages = getPageDataPagesFromExports(jsonContentDir);
|
|
145
|
-
|
|
146
|
-
for await (const pageData of gatsbyPageDataPages) {
|
|
147
|
-
const { result } = pageData;
|
|
148
|
-
const { pageContext } = result;
|
|
149
|
-
const { page, openGraph, pageMetadata } = pageContext;
|
|
150
|
-
|
|
151
|
-
const { compose } = page.fullPath;
|
|
152
|
-
|
|
153
|
-
const htmlPath = path.resolve(`${htmlContentDir}/${compose}/index.html`);
|
|
154
|
-
const htmlContent = await fsp.readFile(htmlPath, "utf-8");
|
|
155
|
-
|
|
156
|
-
const pageObject: PostSearchInfoProps = {
|
|
157
|
-
siteId: page.site,
|
|
158
|
-
pageId: page.id,
|
|
159
|
-
// `pageMetadata.title` has already a fallback `metatitle ||
|
|
160
|
-
// pageTitle` so probably `title` never will be take the
|
|
161
|
-
// `openGraph?.title` value. Only when the `metatitle` and
|
|
162
|
-
// `pageTitle` are empty.
|
|
163
|
-
title: pageMetadata?.title || openGraph?.title,
|
|
164
|
-
languageId: page.language,
|
|
165
|
-
url: page.fullUrl,
|
|
166
|
-
template: page.template.templateType || page.templateId,
|
|
167
|
-
description: pageMetadata?.description || openGraph?.description,
|
|
168
|
-
image: openGraph.image,
|
|
169
|
-
// _content: prepareHTMLContentForSearch(htmlContent),
|
|
170
|
-
content: prepareHTMLContentForSearch(htmlContent),
|
|
171
|
-
};
|
|
172
|
-
|
|
173
|
-
try {
|
|
174
|
-
await postSearchInfo(pageObject);
|
|
175
|
-
} catch (error) {
|
|
176
|
-
throwError(UploadSearchError, error);
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
async function uploadSearchContent() {
|
|
182
|
-
const [domain] = process.argv.slice(2);
|
|
183
|
-
const { renderMode, reason } = await getRenderModeFromDB(domain);
|
|
184
|
-
|
|
185
|
-
if (renderMode === RENDER_MODE.IDLE) {
|
|
186
|
-
GriddoLog.info(
|
|
187
|
-
`(From Current Render) [${domain}]: Skipping upload-search-content as it is marked as IDLE with the reason ${reason}.`,
|
|
188
|
-
);
|
|
189
|
-
return;
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
const { htmlContentDir, jsonContentDir } = await getContentDirectories(domain);
|
|
193
|
-
await uploadRenderedSearchContentToAPI({
|
|
194
|
-
htmlContentDir,
|
|
195
|
-
jsonContentDir,
|
|
196
|
-
});
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
async function main() {
|
|
200
|
-
if (GRIDDO_SEARCH_FEATURE) {
|
|
201
|
-
await AuthService.login();
|
|
202
|
-
await uploadSearchContent();
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
withErrorHandler(main);
|