@lownoise-studio/rendershield 1.0.0 → 1.1.0
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/CHANGELOG.md +15 -0
- package/README.md +32 -14
- package/dist/cli.js +28 -23
- package/dist/cli.js.map +1 -1
- package/dist/cliArgs.d.ts +8 -0
- package/dist/cliArgs.d.ts.map +1 -0
- package/dist/cliArgs.js +56 -0
- package/dist/cliArgs.js.map +1 -0
- package/dist/commands/build.d.ts +2 -1
- package/dist/commands/build.d.ts.map +1 -1
- package/dist/commands/build.js +2 -2
- package/dist/commands/build.js.map +1 -1
- package/dist/commands/init.d.ts +2 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +8 -7
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/verify.d.ts +22 -8
- package/dist/commands/verify.d.ts.map +1 -1
- package/dist/commands/verify.js +158 -66
- package/dist/commands/verify.js.map +1 -1
- package/dist/configPath.d.ts +7 -0
- package/dist/configPath.d.ts.map +1 -0
- package/dist/configPath.js +8 -0
- package/dist/configPath.js.map +1 -0
- package/dist/core/generateWorker.js +1 -1
- package/dist/core/generateWorker.js.map +1 -1
- package/dist/core/listOutputRoutes.d.ts +4 -0
- package/dist/core/listOutputRoutes.d.ts.map +1 -0
- package/dist/core/listOutputRoutes.js +40 -0
- package/dist/core/listOutputRoutes.js.map +1 -0
- package/dist/core/loadConfig.d.ts +3 -1
- package/dist/core/loadConfig.d.ts.map +1 -1
- package/dist/core/loadConfig.js +45 -38
- package/dist/core/loadConfig.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +1 -1
- package/dist/types.d.ts.map +1 -1
- package/docs/CONFIG.md +70 -0
- package/package.json +2 -1
- package/rendershield.config.schema.json +100 -0
- package/src/cli.ts +36 -26
- package/src/cliArgs.ts +71 -0
- package/src/commands/build.ts +3 -2
- package/src/commands/init.ts +8 -8
- package/src/commands/verify.ts +264 -79
- package/src/configPath.ts +17 -0
- package/src/core/generateWorker.ts +1 -1
- package/src/core/listOutputRoutes.ts +51 -0
- package/src/core/loadConfig.ts +59 -38
- package/src/index.ts +4 -1
- package/src/types.ts +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,21 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [1.1.0] - 2026-08-23
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- `verify --check` and `verify --all --check`: validate built HTML locally against the bot contract (no network).
|
|
15
|
+
- `verify --prod --all`: production-check every route discovered from build output.
|
|
16
|
+
- Global `--config <path>` for `init`, `build`, and `verify`.
|
|
17
|
+
- `worker.spaOrigin` (replaces `lovableOrigin`; old name still accepted on read).
|
|
18
|
+
- Config reference ([docs/CONFIG.md](docs/CONFIG.md)) and `rendershield.config.schema.json`.
|
|
19
|
+
|
|
20
|
+
### Changed
|
|
21
|
+
|
|
22
|
+
- `VerifyLocalResult` / `VerifyProdResult` return a `pages` array (multi-route aware).
|
|
23
|
+
- `init` default Worker origin field is `spaOrigin`.
|
|
24
|
+
|
|
10
25
|
## [1.0.0] - 2026-08-23
|
|
11
26
|
|
|
12
27
|
### Added
|
package/README.md
CHANGED
|
@@ -12,7 +12,7 @@ No browser rendering.
|
|
|
12
12
|
No guessing what bots see.
|
|
13
13
|
|
|
14
14
|
If a page builds, the HTML contract is satisfied.
|
|
15
|
-
If verify --prod passes,
|
|
15
|
+
If `verify --prod` passes for a URL, that URL is receiving prerendered HTML to bots in production.
|
|
16
16
|
|
|
17
17
|
---
|
|
18
18
|
|
|
@@ -50,9 +50,9 @@ RenderShield enforces two guarantees:
|
|
|
50
50
|
- optional Cloudflare Worker
|
|
51
51
|
- Validates output:
|
|
52
52
|
- missing title, metadata, or article body causes the build to fail
|
|
53
|
-
- Verifies
|
|
54
|
-
- `verify
|
|
55
|
-
- fails if the Worker is missing or falling back
|
|
53
|
+
- Verifies behavior:
|
|
54
|
+
- `verify` (local) — prints curl smoke-test commands for built output; fails if output is missing (does not fetch URLs or validate HTML)
|
|
55
|
+
- `verify --prod <url>` — fetches production as Googlebot, asserts `x-rendershield: bot-hit`, and validates the HTML contract; fails if the Worker is missing or falling back
|
|
56
56
|
|
|
57
57
|
---
|
|
58
58
|
|
|
@@ -103,18 +103,19 @@ Add a script to `package.json` if you prefer:
|
|
|
103
103
|
git clone https://github.com/Lownoise-Studio/rendershield.git
|
|
104
104
|
cd rendershield
|
|
105
105
|
npm install
|
|
106
|
+
npm run build
|
|
106
107
|
```
|
|
107
108
|
|
|
108
109
|
**Initialize**
|
|
109
110
|
|
|
110
111
|
```bash
|
|
111
|
-
|
|
112
|
+
npx rendershield init
|
|
112
113
|
```
|
|
113
114
|
|
|
114
|
-
Or
|
|
115
|
+
Or:
|
|
115
116
|
|
|
116
117
|
```bash
|
|
117
|
-
|
|
118
|
+
npm run start -- init
|
|
118
119
|
```
|
|
119
120
|
|
|
120
121
|
**Add content**
|
|
@@ -147,19 +148,36 @@ dist-prerender/
|
|
|
147
148
|
rendershield verify
|
|
148
149
|
```
|
|
149
150
|
|
|
151
|
+
Prints curl commands for a built page (from `dist-prerender/`). Use this after `build` to get smoke-test commands for your Worker setup. Exits with code 1 if output is missing; it does **not** fetch URLs or validate HTML.
|
|
152
|
+
|
|
153
|
+
**Local contract check (CI-friendly)**
|
|
154
|
+
|
|
155
|
+
```bash
|
|
156
|
+
rendershield verify --check
|
|
157
|
+
rendershield verify --all --check
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
Validates built HTML against the same bot contract as `build`, without network access.
|
|
161
|
+
|
|
150
162
|
**Production verify (after deploying Worker)**
|
|
151
163
|
|
|
164
|
+
Pass a **prerendered route URL** (not just the domain root):
|
|
165
|
+
|
|
152
166
|
```bash
|
|
153
|
-
rendershield verify --prod https://your-domain.com
|
|
167
|
+
rendershield verify --prod https://your-domain.com/blog/hello-world
|
|
154
168
|
```
|
|
155
169
|
|
|
156
170
|
This command:
|
|
157
171
|
|
|
158
|
-
- Fetches as Googlebot
|
|
159
|
-
- Requires `x-rendershield: bot-hit`
|
|
160
|
-
- Validates metadata + JSON-LD + article content
|
|
172
|
+
- Fetches the URL as Googlebot (and as a human browser for comparison)
|
|
173
|
+
- Requires `x-rendershield: bot-hit` on the bot response
|
|
174
|
+
- Validates metadata + JSON-LD + article content on the bot response
|
|
161
175
|
- Exits with code 1 if anything fails
|
|
162
176
|
|
|
177
|
+
Proves routing for **that URL** only. Use `rendershield verify --prod --all` to check every route from build output.
|
|
178
|
+
|
|
179
|
+
Config reference: [docs/CONFIG.md](docs/CONFIG.md) · JSON Schema: `rendershield.config.schema.json`
|
|
180
|
+
|
|
163
181
|
---
|
|
164
182
|
|
|
165
183
|
## Programmatic API
|
|
@@ -172,7 +190,7 @@ import { cmdBuild, loadConfig, checkPrerenderContract, RenderShieldError } from
|
|
|
172
190
|
await cmdBuild(process.cwd());
|
|
173
191
|
```
|
|
174
192
|
|
|
175
|
-
Exported commands, config loaders, HTML renderer, contract validators, and artifact generators are available from the package root. Errors throw `RenderShieldError` with stable `code` values for CI and tooling.
|
|
193
|
+
Exported commands, config loaders, HTML renderer, contract validators, and artifact generators are available from the package root. Errors throw `RenderShieldError` with stable `code` values for CI and tooling. ESM `import` only (no CommonJS `require`).
|
|
176
194
|
|
|
177
195
|
See [CONTRIBUTING.md](CONTRIBUTING.md) for development setup.
|
|
178
196
|
|
|
@@ -182,9 +200,9 @@ See [CONTRIBUTING.md](CONTRIBUTING.md) for development setup.
|
|
|
182
200
|
|
|
183
201
|
Designed for Cloudflare Workers.
|
|
184
202
|
|
|
185
|
-
The generated Worker:
|
|
203
|
+
The generated Worker (enabled by default in `init`; set `worker.enabled: false` to skip):
|
|
186
204
|
|
|
187
|
-
- Rewrites bot requests
|
|
205
|
+
- Rewrites bot requests on configured route bases (e.g. `/blog/`)
|
|
188
206
|
- Sets `x-rendershield` on all responses
|
|
189
207
|
- Makes routing observable and testable
|
|
190
208
|
|
package/dist/cli.js
CHANGED
|
@@ -4,6 +4,7 @@ import { cmdInit } from "./commands/init.js";
|
|
|
4
4
|
import { cmdBuild } from "./commands/build.js";
|
|
5
5
|
import { cmdVerify } from "./commands/verify.js";
|
|
6
6
|
import { formatCliError, renderShieldError } from "./errors.js";
|
|
7
|
+
import { extractGlobalOptions, parseVerifyArgs } from "./cliArgs.js";
|
|
7
8
|
const require = createRequire(import.meta.url);
|
|
8
9
|
const pkg = require("../package.json");
|
|
9
10
|
const VERSION = pkg.version ?? "0.0.0";
|
|
@@ -12,23 +13,30 @@ function printHelp() {
|
|
|
12
13
|
RenderShield v${VERSION} — boring bot-aware prerendering.
|
|
13
14
|
|
|
14
15
|
Usage:
|
|
15
|
-
rendershield init
|
|
16
|
-
rendershield build
|
|
17
|
-
rendershield
|
|
16
|
+
rendershield [--config <path>] init
|
|
17
|
+
rendershield [--config <path>] build
|
|
18
|
+
rendershield [--config <path>] verify [options]
|
|
18
19
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
Global:
|
|
21
|
+
--config <path> Config file (default: rendershield.config.json)
|
|
22
|
+
|
|
23
|
+
Verify:
|
|
24
|
+
verify Print curl smoke-test commands for first built page
|
|
25
|
+
verify --check Validate built HTML contract (first page)
|
|
26
|
+
verify --all --check Validate contract for every built page
|
|
27
|
+
verify --prod <url> Fetch URL as bot; require x-rendershield: bot-hit + contract
|
|
28
|
+
verify --prod --all Check every route from build output in production
|
|
22
29
|
|
|
23
30
|
Notes:
|
|
24
|
-
- Config file: rendershield.config.json
|
|
25
31
|
- Content: content/<collection>/**/*.md (frontmatter required)
|
|
26
|
-
- Output: dist-prerender/
|
|
32
|
+
- Output: dist-prerender/ (see config)
|
|
33
|
+
- Config reference: docs/CONFIG.md
|
|
27
34
|
`);
|
|
28
35
|
}
|
|
29
36
|
async function main() {
|
|
30
|
-
const
|
|
31
|
-
const cmd =
|
|
37
|
+
const { options: globalOptions, rest } = extractGlobalOptions(process.argv.slice(2));
|
|
38
|
+
const cmd = rest[0]?.trim();
|
|
39
|
+
const cmdArgs = rest.slice(1);
|
|
32
40
|
if (!cmd || cmd === "-h" || cmd === "--help") {
|
|
33
41
|
printHelp();
|
|
34
42
|
process.exit(0);
|
|
@@ -39,29 +47,26 @@ async function main() {
|
|
|
39
47
|
}
|
|
40
48
|
try {
|
|
41
49
|
if (cmd === "init") {
|
|
42
|
-
await cmdInit();
|
|
50
|
+
await cmdInit(undefined, globalOptions);
|
|
43
51
|
return;
|
|
44
52
|
}
|
|
45
53
|
if (cmd === "build") {
|
|
46
|
-
await cmdBuild();
|
|
54
|
+
await cmdBuild(undefined, globalOptions);
|
|
47
55
|
return;
|
|
48
56
|
}
|
|
49
57
|
if (cmd === "verify") {
|
|
50
|
-
|
|
51
|
-
if (verifyArgs.includes("-h") || verifyArgs.includes("--help")) {
|
|
58
|
+
if (cmdArgs.includes("-h") || cmdArgs.includes("--help")) {
|
|
52
59
|
printHelp();
|
|
53
60
|
process.exit(0);
|
|
54
61
|
}
|
|
55
|
-
const
|
|
56
|
-
if (
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
await cmdVerify(undefined, { prodUrl });
|
|
62
|
-
return;
|
|
62
|
+
const verifyOptions = parseVerifyArgs(cmdArgs, globalOptions);
|
|
63
|
+
if (verifyOptions.prod && !verifyOptions.prodUrl && !verifyOptions.all) {
|
|
64
|
+
throw renderShieldError("CLI_INVALID_ARGS", "verify --prod requires a URL, or use --prod --all. Example: rendershield verify --prod https://example.com/blog/hello-world");
|
|
65
|
+
}
|
|
66
|
+
if (verifyOptions.all && !verifyOptions.check && !verifyOptions.prod) {
|
|
67
|
+
throw renderShieldError("CLI_INVALID_ARGS", "verify --all requires --check (local) or --prod (production). Example: rendershield verify --all --check");
|
|
63
68
|
}
|
|
64
|
-
await cmdVerify();
|
|
69
|
+
await cmdVerify(undefined, verifyOptions);
|
|
65
70
|
return;
|
|
66
71
|
}
|
|
67
72
|
console.error(`Unknown command: ${cmd}\n`);
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { CommandOptions } from "./configPath.js";
|
|
2
|
+
import type { VerifyOptions } from "./commands/verify.js";
|
|
3
|
+
export declare function extractGlobalOptions(argv: string[]): {
|
|
4
|
+
options: CommandOptions;
|
|
5
|
+
rest: string[];
|
|
6
|
+
};
|
|
7
|
+
export declare function parseVerifyArgs(argv: string[], globalOptions: CommandOptions): VerifyOptions;
|
|
8
|
+
//# sourceMappingURL=cliArgs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cliArgs.d.ts","sourceRoot":"","sources":["../src/cliArgs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAI1D,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG;IACpD,OAAO,EAAE,cAAc,CAAC;IACxB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB,CAsBA;AAED,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,EAAE,EACd,aAAa,EAAE,cAAc,GAC5B,aAAa,CAmCf"}
|
package/dist/cliArgs.js
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
const GLOBAL_FLAGS = new Set(["--config"]);
|
|
2
|
+
export function extractGlobalOptions(argv) {
|
|
3
|
+
const options = {};
|
|
4
|
+
const rest = [];
|
|
5
|
+
for (let i = 0; i < argv.length; i++) {
|
|
6
|
+
const arg = argv[i];
|
|
7
|
+
if (arg === "--config") {
|
|
8
|
+
const value = argv[i + 1]?.trim();
|
|
9
|
+
if (!value || value.startsWith("-")) {
|
|
10
|
+
rest.push(arg);
|
|
11
|
+
continue;
|
|
12
|
+
}
|
|
13
|
+
options.configPath = value;
|
|
14
|
+
i++;
|
|
15
|
+
continue;
|
|
16
|
+
}
|
|
17
|
+
if (!GLOBAL_FLAGS.has(arg)) {
|
|
18
|
+
rest.push(arg);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
return { options, rest };
|
|
22
|
+
}
|
|
23
|
+
export function parseVerifyArgs(argv, globalOptions) {
|
|
24
|
+
const options = { ...globalOptions };
|
|
25
|
+
const positional = [];
|
|
26
|
+
for (let i = 0; i < argv.length; i++) {
|
|
27
|
+
const arg = argv[i];
|
|
28
|
+
if (arg === "--prod") {
|
|
29
|
+
options.prod = true;
|
|
30
|
+
const value = argv[i + 1]?.trim();
|
|
31
|
+
if (value && !value.startsWith("-")) {
|
|
32
|
+
options.prodUrl = value;
|
|
33
|
+
i++;
|
|
34
|
+
}
|
|
35
|
+
continue;
|
|
36
|
+
}
|
|
37
|
+
if (arg === "--check") {
|
|
38
|
+
options.check = true;
|
|
39
|
+
continue;
|
|
40
|
+
}
|
|
41
|
+
if (arg === "--all") {
|
|
42
|
+
options.all = true;
|
|
43
|
+
continue;
|
|
44
|
+
}
|
|
45
|
+
if (arg === "--config") {
|
|
46
|
+
i++;
|
|
47
|
+
continue;
|
|
48
|
+
}
|
|
49
|
+
positional.push(arg);
|
|
50
|
+
}
|
|
51
|
+
if (!options.prodUrl && positional[0] && !positional[0].startsWith("-")) {
|
|
52
|
+
options.prodUrl = positional[0];
|
|
53
|
+
}
|
|
54
|
+
return options;
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=cliArgs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cliArgs.js","sourceRoot":"","sources":["../src/cliArgs.ts"],"names":[],"mappings":"AAGA,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;AAE3C,MAAM,UAAU,oBAAoB,CAAC,IAAc;IAIjD,MAAM,OAAO,GAAmB,EAAE,CAAC;IACnC,MAAM,IAAI,GAAa,EAAE,CAAC;IAE1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,GAAG,KAAK,UAAU,EAAE,CAAC;YACvB,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;YAClC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACpC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACf,SAAS;YACX,CAAC;YACD,OAAO,CAAC,UAAU,GAAG,KAAK,CAAC;YAC3B,CAAC,EAAE,CAAC;YACJ,SAAS;QACX,CAAC;QACD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjB,CAAC;IACH,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,IAAc,EACd,aAA6B;IAE7B,MAAM,OAAO,GAAkB,EAAE,GAAG,aAAa,EAAE,CAAC;IACpD,MAAM,UAAU,GAAa,EAAE,CAAC;IAEhC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;YACrB,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;YACpB,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;YAClC,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACpC,OAAO,CAAC,OAAO,GAAG,KAAK,CAAC;gBACxB,CAAC,EAAE,CAAC;YACN,CAAC;YACD,SAAS;QACX,CAAC;QACD,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;YACrB,SAAS;QACX,CAAC;QACD,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;YACpB,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC;YACnB,SAAS;QACX,CAAC;QACD,IAAI,GAAG,KAAK,UAAU,EAAE,CAAC;YACvB,CAAC,EAAE,CAAC;YACJ,SAAS;QACX,CAAC;QACD,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACxE,OAAO,CAAC,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;IAClC,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
package/dist/commands/build.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AA8HvD,wBAAsB,QAAQ,CAAC,GAAG,SAAgB,EAAE,OAAO,CAAC,EAAE,cAAc,iBA+D3E"}
|
package/dist/commands/build.js
CHANGED
|
@@ -106,8 +106,8 @@ async function validateOutputPath(outDir, cwd) {
|
|
|
106
106
|
}
|
|
107
107
|
}
|
|
108
108
|
}
|
|
109
|
-
export async function cmdBuild(cwd = process.cwd()) {
|
|
110
|
-
const cfg = await loadConfig(cwd);
|
|
109
|
+
export async function cmdBuild(cwd = process.cwd(), options) {
|
|
110
|
+
const cfg = await loadConfig(cwd, options);
|
|
111
111
|
// Validate output path before any destructive operations
|
|
112
112
|
await validateOutputPath(cfg.output.outDir, cwd);
|
|
113
113
|
const outDirAbs = path.join(cwd, cfg.output.outDir);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/init.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAEA,OAAO,EAAqB,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AA2E1E,wBAAsB,OAAO,CAAC,GAAG,SAAgB,EAAE,OAAO,CAAC,EAAE,cAAc,iBAkC1E"}
|
package/dist/commands/init.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import fs from "fs-extra";
|
|
2
2
|
import path from "node:path";
|
|
3
|
-
|
|
3
|
+
import { resolveConfigFile } from "../configPath.js";
|
|
4
4
|
const DEFAULT_CONFIG = {
|
|
5
5
|
version: 1,
|
|
6
6
|
site: {
|
|
@@ -36,7 +36,7 @@ const DEFAULT_CONFIG = {
|
|
|
36
36
|
},
|
|
37
37
|
worker: {
|
|
38
38
|
enabled: true,
|
|
39
|
-
|
|
39
|
+
spaOrigin: "https://app.example.com",
|
|
40
40
|
rewriteRouteBases: ["/blog/"],
|
|
41
41
|
botUserAgentPatterns: [
|
|
42
42
|
"googlebot",
|
|
@@ -71,17 +71,18 @@ This is **RenderShield**.
|
|
|
71
71
|
|
|
72
72
|
That's the whole trick.
|
|
73
73
|
`;
|
|
74
|
-
export async function cmdInit(cwd = process.cwd()) {
|
|
75
|
-
const configPath =
|
|
74
|
+
export async function cmdInit(cwd = process.cwd(), options) {
|
|
75
|
+
const configPath = resolveConfigFile(cwd, options?.configPath);
|
|
76
|
+
const configName = path.basename(configPath);
|
|
76
77
|
const contentDir = path.join(cwd, "content", "blog");
|
|
77
78
|
const samplePath = path.join(contentDir, "hello-world.md");
|
|
78
79
|
const configExists = await fs.pathExists(configPath);
|
|
79
80
|
if (!configExists) {
|
|
80
81
|
await fs.writeFile(configPath, JSON.stringify(DEFAULT_CONFIG, null, 2) + "\n", "utf8");
|
|
81
|
-
console.log(`Created ${
|
|
82
|
+
console.log(`Created ${configName}`);
|
|
82
83
|
}
|
|
83
84
|
else {
|
|
84
|
-
console.log(`${
|
|
85
|
+
console.log(`${configName} already exists (leaving it alone)`);
|
|
85
86
|
}
|
|
86
87
|
await fs.ensureDir(contentDir);
|
|
87
88
|
const sampleExists = await fs.pathExists(samplePath);
|
|
@@ -94,7 +95,7 @@ export async function cmdInit(cwd = process.cwd()) {
|
|
|
94
95
|
}
|
|
95
96
|
console.log(`
|
|
96
97
|
Next:
|
|
97
|
-
1) Edit
|
|
98
|
+
1) Edit ${configName}
|
|
98
99
|
2) Add content under content/blog/
|
|
99
100
|
3) Run: rendershield build
|
|
100
101
|
`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,19 +1,33 @@
|
|
|
1
1
|
import { type ContractCheckResult } from "../core/validateOutput.js";
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
import type { CommandOptions } from "../configPath.js";
|
|
3
|
+
export type VerifyPageResult = {
|
|
4
|
+
routePath: string;
|
|
5
|
+
outputFile: string;
|
|
6
|
+
url: string;
|
|
7
|
+
contract?: ContractCheckResult;
|
|
8
|
+
};
|
|
9
|
+
export type VerifyOptions = CommandOptions & {
|
|
10
|
+
/** Set when --prod is passed (URL may be omitted with --all). */
|
|
11
|
+
prod?: boolean;
|
|
12
|
+
prodUrl?: string;
|
|
13
|
+
check?: boolean;
|
|
14
|
+
all?: boolean;
|
|
4
15
|
};
|
|
5
16
|
export type VerifyLocalResult = {
|
|
6
17
|
mode: "local";
|
|
7
18
|
canonicalBase: string;
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
19
|
+
checked: boolean;
|
|
20
|
+
ok: boolean;
|
|
21
|
+
pages: VerifyPageResult[];
|
|
11
22
|
};
|
|
12
23
|
export type VerifyProdResult = {
|
|
13
24
|
mode: "prod";
|
|
14
|
-
|
|
15
|
-
|
|
25
|
+
ok: boolean;
|
|
26
|
+
pages: Array<{
|
|
27
|
+
url: string;
|
|
28
|
+
contract: ContractCheckResult;
|
|
29
|
+
}>;
|
|
16
30
|
};
|
|
17
31
|
export type VerifyResult = VerifyLocalResult | VerifyProdResult;
|
|
18
|
-
export declare function cmdVerify(cwd?: string, options?:
|
|
32
|
+
export declare function cmdVerify(cwd?: string, options?: VerifyOptions): Promise<VerifyResult>;
|
|
19
33
|
//# sourceMappingURL=verify.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../src/commands/verify.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../src/commands/verify.ts"],"names":[],"mappings":"AAOA,OAAO,EAEL,KAAK,mBAAmB,EACzB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAoCvD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,mBAAmB,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,cAAc,GAAG;IAC3C,iEAAiE;IACjE,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,OAAO,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,EAAE,EAAE,OAAO,CAAC;IACZ,KAAK,EAAE,gBAAgB,EAAE,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,OAAO,CAAC;IACZ,KAAK,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,mBAAmB,CAAA;KAAE,CAAC,CAAC;CAC9D,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,iBAAiB,GAAG,gBAAgB,CAAC;AAEhE,wBAAsB,SAAS,CAC7B,GAAG,SAAgB,EACnB,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,YAAY,CAAC,CAiBvB"}
|