bsmnt 0.6.4 → 0.7.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/dist/application/add-integration/index.d.ts.map +1 -1
- package/dist/application/add-integration/index.js +30 -4
- package/dist/application/add-integration/index.js.map +1 -1
- package/dist/application/shared/node-version.d.ts +8 -0
- package/dist/application/shared/node-version.d.ts.map +1 -0
- package/dist/application/shared/node-version.js +31 -0
- package/dist/application/shared/node-version.js.map +1 -0
- package/dist/application/shared/strip-ansi.d.ts +3 -0
- package/dist/application/shared/strip-ansi.d.ts.map +1 -0
- package/dist/application/shared/strip-ansi.js +7 -0
- package/dist/application/shared/strip-ansi.js.map +1 -0
- package/dist/core/create/execute-plan.d.ts +3 -0
- package/dist/core/create/execute-plan.d.ts.map +1 -1
- package/dist/core/create/execute-plan.js +3 -0
- package/dist/core/create/execute-plan.js.map +1 -1
- package/dist/domain/cms.d.ts +2 -0
- package/dist/domain/cms.d.ts.map +1 -1
- package/dist/domain/cms.js +1 -0
- package/dist/domain/cms.js.map +1 -1
- package/dist/domain/forms.d.ts +2 -2
- package/dist/domain/forms.js +1 -1
- package/dist/domain/forms.js.map +1 -1
- package/dist/domain/integration.d.ts +7 -3
- package/dist/domain/integration.d.ts.map +1 -1
- package/dist/domain/integration.js.map +1 -1
- package/dist/domain/skills.d.ts +26 -8
- package/dist/domain/skills.d.ts.map +1 -1
- package/dist/domain/skills.js +30 -9
- package/dist/domain/skills.js.map +1 -1
- package/dist/index.js +132 -16
- package/dist/index.js.map +1 -1
- package/dist/infrastructure/create/executor.d.ts.map +1 -1
- package/dist/infrastructure/create/executor.js +2 -1
- package/dist/infrastructure/create/executor.js.map +1 -1
- package/dist/infrastructure/create/init-git-repo.d.ts +11 -7
- package/dist/infrastructure/create/init-git-repo.d.ts.map +1 -1
- package/dist/infrastructure/create/init-git-repo.js +21 -18
- package/dist/infrastructure/create/init-git-repo.js.map +1 -1
- package/dist/infrastructure/create/sanity-auth.d.ts +11 -0
- package/dist/infrastructure/create/sanity-auth.d.ts.map +1 -0
- package/dist/infrastructure/create/sanity-auth.js +72 -0
- package/dist/infrastructure/create/sanity-auth.js.map +1 -0
- package/dist/infrastructure/create/setup-agent.d.ts +4 -3
- package/dist/infrastructure/create/setup-agent.d.ts.map +1 -1
- package/dist/infrastructure/create/setup-agent.js +51 -30
- package/dist/infrastructure/create/setup-agent.js.map +1 -1
- package/dist/infrastructure/create/setup-dotenvx.d.ts.map +1 -1
- package/dist/infrastructure/create/setup-dotenvx.js +9 -4
- package/dist/infrastructure/create/setup-dotenvx.js.map +1 -1
- package/dist/infrastructure/create/setup-remote.d.ts +14 -0
- package/dist/infrastructure/create/setup-remote.d.ts.map +1 -0
- package/dist/infrastructure/create/setup-remote.js +139 -0
- package/dist/infrastructure/create/setup-remote.js.map +1 -0
- package/dist/infrastructure/create/setup-sanity.d.ts +3 -2
- package/dist/infrastructure/create/setup-sanity.d.ts.map +1 -1
- package/dist/infrastructure/create/setup-sanity.js +34 -49
- package/dist/infrastructure/create/setup-sanity.js.map +1 -1
- package/dist/modules/features/env/dotenvx/config.d.ts.map +1 -1
- package/dist/modules/features/env/dotenvx/config.js +6 -0
- package/dist/modules/features/env/dotenvx/config.js.map +1 -1
- package/dist/paths.d.ts +0 -2
- package/dist/paths.d.ts.map +1 -1
- package/dist/paths.js +0 -2
- package/dist/paths.js.map +1 -1
- package/package.json +4 -3
- package/src/agent-skills/hubspot-pagebuilder-block/SKILL.md +160 -0
- package/src/agent-skills/manage-env/SKILL.md +5 -3
- package/src/agent-skills/rss-feed/SKILL.md +158 -0
- package/src/modules/features/cms/sanity/files/app/blog/[slug]/page.tsx +10 -9
- package/src/modules/features/cms/sanity/files/app/blog/page.tsx +5 -5
- package/src/modules/features/cms/sanity/files/lib/integrations/sanity/sanity.config.ts +3 -0
- package/src/modules/features/cms/sanity/files/lib/scripts/copy-sanity-mcp.ts +6 -6
- package/src/modules/features/cms/sanity-pagebuilder/files/lib/integrations/sanity/page-tree-pane.tsx +4 -6
- package/src/modules/features/cms/sanity-pagebuilder/files/lib/integrations/sanity/sanity.config.ts +3 -0
- package/src/modules/features/cms/sanity-pagebuilder/files/lib/integrations/sanity/schemas/layout/redirect.ts +5 -4
- package/src/modules/features/cms/sanity-pagebuilder/files/lib/scripts/sanity-typegen.ts +17 -26
- package/src/modules/features/cms/sanity-pagebuilder/files/lib/utils/json-ld.tsx +1 -0
- package/src/modules/features/env/dotenvx/files/decrypt-env.mjs +12 -12
- package/src/modules/features/env/dotenvx/files/push-keys.mjs +9 -9
- package/src/modules/features/env/dotenvx/files/save-key.mjs +3 -3
- package/src/modules/features/env/dotenvx/files/setup-remote.ts +182 -0
- package/src/modules/features/env/dotenvx/files/write-env.mjs +6 -6
- package/src/modules/features/forms/hubspot/files/_sanity-adapter/form-block.ts +60 -0
- package/src/modules/features/forms/hubspot/files/_sanity-adapter/form-field.ts +30 -0
- package/src/modules/features/forms/hubspot/files/_sanity-adapter/form-select-input.tsx +169 -0
- package/src/modules/features/forms/hubspot/files/lib/integrations/hubspot/README.md +114 -0
- package/src/modules/features/forms/hubspot/files/lib/integrations/hubspot/embed.tsx +165 -0
- package/src/modules/features/forms/hubspot/files/lib/integrations/hubspot/form-selection.ts +40 -0
- package/src/modules/features/forms/hubspot/files/lib/integrations/hubspot/form.tsx +29 -0
- package/src/modules/features/forms/hubspot/files/lib/integrations/hubspot/forms.ts +142 -0
- package/src/modules/features/forms/hubspot/files/lib/integrations/hubspot/hubspot-form.css +636 -0
- package/src/modules/features/forms/hubspot/files/lib/integrations/hubspot/skeleton.tsx +24 -0
- package/src/templates/next-default/README.md +1 -0
- package/src/templates/next-default/biome.json +1 -1
- package/src/templates/next-default/components/basement.svg +1 -1
- package/src/templates/next-default/knip.json +9 -1
- package/src/templates/next-experiments/README.md +1 -0
- package/src/templates/next-experiments/biome.json +1 -1
- package/src/templates/next-experiments/components/basement.svg +1 -1
- package/src/templates/next-experiments/knip.json +9 -1
- package/src/templates/next-pagebuilder/README.md +1 -0
- package/src/templates/next-pagebuilder/biome.json +1 -1
- package/src/templates/next-pagebuilder/knip.json +7 -2
- package/src/templates/next-pagebuilder/lib/integrations/sanity/sanity.types.ts +1197 -176
- package/src/templates/next-webgl/README.md +1 -0
- package/src/templates/next-webgl/biome.json +1 -1
- package/src/templates/next-webgl/components/basement.svg +1 -1
- package/src/templates/next-webgl/knip.json +9 -1
|
@@ -1,21 +1,14 @@
|
|
|
1
1
|
import { execFileSync } from "node:child_process";
|
|
2
|
-
import { homedir } from "node:os";
|
|
3
2
|
import path from "node:path";
|
|
4
3
|
import fs from "fs-extra";
|
|
5
4
|
import ora from "ora";
|
|
6
5
|
import pc from "picocolors";
|
|
7
6
|
import prompts from "prompts";
|
|
7
|
+
import { stripAnsi } from "../../application/shared/strip-ansi.js";
|
|
8
|
+
import { getSanityAuthToken } from "./sanity-auth.js";
|
|
8
9
|
// ---------------------------------------------------------------------------
|
|
9
10
|
// Helpers
|
|
10
11
|
// ---------------------------------------------------------------------------
|
|
11
|
-
/**
|
|
12
|
-
* Strip ANSI escape codes from a string (covers all SGR and cursor sequences).
|
|
13
|
-
*/
|
|
14
|
-
function stripAnsi(str) {
|
|
15
|
-
// biome-ignore lint/suspicious/noControlCharactersInRegex: ANSI codes need control chars
|
|
16
|
-
const ansiRegex = /\u001b\[[0-9;?]*[A-Za-z]/g;
|
|
17
|
-
return str.replace(ansiRegex, "");
|
|
18
|
-
}
|
|
19
12
|
/** Resolve a runnable Sanity CLI command from local deps or global PATH. */
|
|
20
13
|
function resolveSanityCli(targetDir) {
|
|
21
14
|
const localBin = path.join(targetDir, "node_modules", ".bin", process.platform === "win32" ? "sanity.cmd" : "sanity");
|
|
@@ -107,36 +100,6 @@ function createSanityProject(projectName, organizationId, cli) {
|
|
|
107
100
|
return projectId;
|
|
108
101
|
throw new Error(`Could not parse project ID from Sanity CLI output:\n${output}`);
|
|
109
102
|
}
|
|
110
|
-
/** Read the auth token Sanity persists in its CLI config (no CLI invocation). */
|
|
111
|
-
function readConfigAuthToken() {
|
|
112
|
-
const base = process.env.XDG_CONFIG_HOME || path.join(homedir(), ".config");
|
|
113
|
-
try {
|
|
114
|
-
const json = JSON.parse(fs.readFileSync(path.join(base, "sanity", "config.json"), "utf-8"));
|
|
115
|
-
return json.authToken?.trim() || null;
|
|
116
|
-
}
|
|
117
|
-
catch {
|
|
118
|
-
return null;
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
/**
|
|
122
|
-
* Get the user's Sanity auth token. Prefers the persisted CLI config (robust
|
|
123
|
-
* across CLI versions); falls back to scraping `sanity debug --secrets`.
|
|
124
|
-
*/
|
|
125
|
-
function getAuthToken(cli) {
|
|
126
|
-
const fromConfig = readConfigAuthToken();
|
|
127
|
-
if (fromConfig)
|
|
128
|
-
return fromConfig;
|
|
129
|
-
const output = execFileSync(cli.command, ["debug", "--secrets"], {
|
|
130
|
-
encoding: "utf-8",
|
|
131
|
-
timeout: 30_000,
|
|
132
|
-
});
|
|
133
|
-
// Token may be wrapped in quotes and/or ANSI color; tolerate both.
|
|
134
|
-
const match = stripAnsi(output).match(/Auth token:\s*['"]?([^'"\s]+)/);
|
|
135
|
-
if (!match?.[1]) {
|
|
136
|
-
throw new Error("Could not extract auth token from Sanity CLI.");
|
|
137
|
-
}
|
|
138
|
-
return match[1];
|
|
139
|
-
}
|
|
140
103
|
/** Create a Sanity API read token via the Management API. */
|
|
141
104
|
async function createApiToken(projectId, authToken) {
|
|
142
105
|
const url = `https://api.sanity.io/v2021-06-07/projects/${encodeURIComponent(projectId)}/tokens`;
|
|
@@ -164,6 +127,19 @@ async function createApiToken(projectId, authToken) {
|
|
|
164
127
|
}
|
|
165
128
|
return data.key;
|
|
166
129
|
}
|
|
130
|
+
/** Allow CORS from the embedded Studio port (not a Sanity default). */
|
|
131
|
+
function addCorsOrigin(projectId, origin, cli) {
|
|
132
|
+
try {
|
|
133
|
+
execFileSync(cli.command, ["cors", "add", origin, "--credentials", "--project-id", projectId], { stdio: "pipe", timeout: 30_000 });
|
|
134
|
+
}
|
|
135
|
+
catch (e) {
|
|
136
|
+
const err = e;
|
|
137
|
+
const output = `${String(err.stdout ?? "")}${String(err.stderr ?? "")}`;
|
|
138
|
+
if (/\balready\b/i.test(output))
|
|
139
|
+
return; // origin already added
|
|
140
|
+
throw e;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
167
143
|
/**
|
|
168
144
|
* Write Sanity credentials into the given env file. Appends if present.
|
|
169
145
|
*/
|
|
@@ -226,8 +202,9 @@ async function ensureGitignore(targetDir) {
|
|
|
226
202
|
* 3. Organization selection
|
|
227
203
|
* 4. Project creation
|
|
228
204
|
* 5. API token creation
|
|
229
|
-
* 6.
|
|
230
|
-
* 7.
|
|
205
|
+
* 6. CORS origin registration (localhost:3000)
|
|
206
|
+
* 7. Credential write (`.env` with dotenvx, else `.env.local`)
|
|
207
|
+
* 8. Connection verification
|
|
231
208
|
*
|
|
232
209
|
* @param targetDir - Absolute path to the project directory
|
|
233
210
|
* @param options - Optional overrides (e.g. pre-set project name)
|
|
@@ -288,13 +265,13 @@ export async function setupSanity(targetDir, options = {}) {
|
|
|
288
265
|
const tokenSpinner = ora("Retrieving auth token...").start();
|
|
289
266
|
let authToken;
|
|
290
267
|
try {
|
|
291
|
-
authToken =
|
|
268
|
+
authToken = getSanityAuthToken(sanityCli.command);
|
|
292
269
|
tokenSpinner.succeed(pc.green("Auth token retrieved."));
|
|
293
270
|
}
|
|
294
271
|
catch (e) {
|
|
295
272
|
const msg = e instanceof Error ? e.message : String(e);
|
|
296
273
|
tokenSpinner.fail(pc.red(`Failed to get auth token: ${msg}`));
|
|
297
|
-
console.log(pc.dim("
|
|
274
|
+
console.log(pc.dim(" You can set up Sanity manually later — see the next steps.\n"));
|
|
298
275
|
return false;
|
|
299
276
|
}
|
|
300
277
|
// Step 4: Select organization
|
|
@@ -379,7 +356,18 @@ export async function setupSanity(targetDir, options = {}) {
|
|
|
379
356
|
apiSpinner.fail(pc.red(`Failed to create API token: ${msg}`));
|
|
380
357
|
return false;
|
|
381
358
|
}
|
|
382
|
-
// Step 7:
|
|
359
|
+
// Step 7: Register localhost:3000 as a CORS origin
|
|
360
|
+
const corsSpinner = ora("Adding localhost:3000 CORS origin...").start();
|
|
361
|
+
try {
|
|
362
|
+
addCorsOrigin(projectId, "http://localhost:3000", sanityCli);
|
|
363
|
+
corsSpinner.succeed(pc.green("CORS origin added: http://localhost:3000"));
|
|
364
|
+
}
|
|
365
|
+
catch (e) {
|
|
366
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
367
|
+
corsSpinner.warn(pc.yellow(`Could not add CORS origin: ${msg}`));
|
|
368
|
+
console.log(pc.dim(` Add it manually: ${sanityCli.command} cors add http://localhost:3000 --credentials\n`));
|
|
369
|
+
}
|
|
370
|
+
// Step 8: Write credentials
|
|
383
371
|
const envSpinner = ora(`Writing ${envFile}...`).start();
|
|
384
372
|
try {
|
|
385
373
|
await writeEnvCredentials(targetDir, envFile, projectId, apiToken);
|
|
@@ -390,7 +378,7 @@ export async function setupSanity(targetDir, options = {}) {
|
|
|
390
378
|
envSpinner.fail(pc.red(`Failed to write ${envFile}: ${msg}`));
|
|
391
379
|
return false;
|
|
392
380
|
}
|
|
393
|
-
// Step
|
|
381
|
+
// Step 9: Verify connection
|
|
394
382
|
const verifySpinner = ora("Verifying Sanity connection...").start();
|
|
395
383
|
const connected = await verifyConnection(projectId, apiToken);
|
|
396
384
|
if (connected) {
|
|
@@ -399,7 +387,7 @@ export async function setupSanity(targetDir, options = {}) {
|
|
|
399
387
|
else {
|
|
400
388
|
verifySpinner.warn(pc.yellow("Could not verify connection. Check credentials after bun install."));
|
|
401
389
|
}
|
|
402
|
-
// Step
|
|
390
|
+
// Step 10: Ensure .env.local is gitignored. Skipped when writing `.env` —
|
|
403
391
|
// dotenvx owns that file's gitignore (it commits it encrypted).
|
|
404
392
|
if (envFile === ".env.local") {
|
|
405
393
|
try {
|
|
@@ -412,9 +400,6 @@ export async function setupSanity(targetDir, options = {}) {
|
|
|
412
400
|
console.log(pc.green(`\n Sanity project "${projectName}" (${projectId}) is ready.`));
|
|
413
401
|
console.log(pc.dim(` Manage at: https://sanity.io/manage/project/${projectId}`));
|
|
414
402
|
console.log(pc.dim(" Studio will be available at: /studio\n"));
|
|
415
|
-
console.log(pc.dim(" For CI builds, add these in GitHub → Settings → Secrets and variables → Actions:"));
|
|
416
|
-
console.log(pc.dim(` Variables → NEXT_PUBLIC_SANITY_PROJECT_ID=${projectId}, NEXT_PUBLIC_SANITY_DATASET=production`));
|
|
417
|
-
console.log(pc.dim(" Secret → SANITY_API_READ_TOKEN\n"));
|
|
418
403
|
return true;
|
|
419
404
|
}
|
|
420
405
|
//# sourceMappingURL=setup-sanity.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup-sanity.js","sourceRoot":"","sources":["../../../src/infrastructure/create/setup-sanity.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"setup-sanity.js","sourceRoot":"","sources":["../../../src/infrastructure/create/setup-sanity.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../../../src/modules/features/env/dotenvx/config.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,aAAa;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,iFAAiF;IACjF,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,2EAA2E;IAC3E,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC7C,qEAAqE;IACrE,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACxC;AAED,eAAO,MAAM,aAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../../../src/modules/features/env/dotenvx/config.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,aAAa;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,iFAAiF;IACjF,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,2EAA2E;IAC3E,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC7C,qEAAqE;IACrE,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACxC;AAED,eAAO,MAAM,aAAa,EAAE,aAsD3B,CAAC"}
|
|
@@ -24,6 +24,11 @@ export const dotenvxConfig = {
|
|
|
24
24
|
// Push the private keys from .env.keys to CI / host so envs decrypt there.
|
|
25
25
|
// Pick a target from a menu, or pass `github` / `vercel`.
|
|
26
26
|
"env:setup-remote": "bun run scripts/push-keys.mjs",
|
|
27
|
+
// One-shot remote provisioning: create the GitHub repo, link a Vercel
|
|
28
|
+
// project to it, and push the private key to Vercel env — the key lands
|
|
29
|
+
// before the git connection so the first push can decrypt. (CI reads the
|
|
30
|
+
// key from 1Password via OP_SERVICE_ACCOUNT_TOKEN, so no GitHub secret.)
|
|
31
|
+
"setup-remote": "bun ./lib/scripts/setup-remote.ts",
|
|
27
32
|
// Save the private key to 1Password (Development vault) + point .env's op-ref at it.
|
|
28
33
|
"env:save": "bun run scripts/save-key.mjs",
|
|
29
34
|
// Onboarding: bun install restores .env.keys from 1Password (soft — never
|
|
@@ -36,6 +41,7 @@ export const dotenvxConfig = {
|
|
|
36
41
|
"scripts/decrypt-env.mjs": "decrypt-env.mjs",
|
|
37
42
|
"scripts/write-env.mjs": "write-env.mjs",
|
|
38
43
|
"scripts/push-keys.mjs": "push-keys.mjs",
|
|
44
|
+
"lib/scripts/setup-remote.ts": "setup-remote.ts",
|
|
39
45
|
"scripts/save-key.mjs": "save-key.mjs",
|
|
40
46
|
// Runtime decryption on serverless (Vercel functions) — the run wrapper
|
|
41
47
|
// only covers local dev + build. Next.js root instrumentation file.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../../src/modules/features/env/dotenvx/config.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,gEAAgE;AAchE,MAAM,CAAC,MAAM,aAAa,GAAkB;IAC3C,IAAI,EAAE,SAAS;IAEf,YAAY,EAAE;QACb,kBAAkB,EAAE,SAAS;KAC7B;IAED,WAAW,EAAE;QACZ,OAAO;QACP,OAAO;QACP,KAAK;QACL,WAAW;QACX,aAAa;QACb,sBAAsB;KACtB;IAED,aAAa,EAAE,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAEnD,UAAU,EAAE;QACX,WAAW,EAAE,+BAA+B;QAC5C,UAAU,EAAE,iCAAiC;QAC7C,2EAA2E;QAC3E,4EAA4E;QAC5E,SAAS,EAAE,mCAAmC;QAC9C,iBAAiB,EAAE,uCAAuC;QAC1D,2EAA2E;QAC3E,0DAA0D;QAC1D,kBAAkB,EAAE,+BAA+B;QACnD,qFAAqF;QACrF,UAAU,EAAE,8BAA8B;QAC1C,0EAA0E;QAC1E,uEAAuE;QACvE,UAAU,EAAE,sCAAsC;KAClD;IAED,KAAK,EAAE;QACN,gCAAgC,EAAE,cAAc;QAChD,uBAAuB,EAAE,eAAe;QACxC,yBAAyB,EAAE,iBAAiB;QAC5C,uBAAuB,EAAE,eAAe;QACxC,uBAAuB,EAAE,eAAe;QACxC,sBAAsB,EAAE,cAAc;QACtC,wEAAwE;QACxE,oEAAoE;QACpE,oBAAoB,EAAE,oBAAoB;QAC1C,mEAAmE;QACnE,eAAe,EAAE,cAAc;KAC/B;CACD,CAAC"}
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../../src/modules/features/env/dotenvx/config.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,gEAAgE;AAchE,MAAM,CAAC,MAAM,aAAa,GAAkB;IAC3C,IAAI,EAAE,SAAS;IAEf,YAAY,EAAE;QACb,kBAAkB,EAAE,SAAS;KAC7B;IAED,WAAW,EAAE;QACZ,OAAO;QACP,OAAO;QACP,KAAK;QACL,WAAW;QACX,aAAa;QACb,sBAAsB;KACtB;IAED,aAAa,EAAE,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAEnD,UAAU,EAAE;QACX,WAAW,EAAE,+BAA+B;QAC5C,UAAU,EAAE,iCAAiC;QAC7C,2EAA2E;QAC3E,4EAA4E;QAC5E,SAAS,EAAE,mCAAmC;QAC9C,iBAAiB,EAAE,uCAAuC;QAC1D,2EAA2E;QAC3E,0DAA0D;QAC1D,kBAAkB,EAAE,+BAA+B;QACnD,sEAAsE;QACtE,wEAAwE;QACxE,yEAAyE;QACzE,yEAAyE;QACzE,cAAc,EAAE,mCAAmC;QACnD,qFAAqF;QACrF,UAAU,EAAE,8BAA8B;QAC1C,0EAA0E;QAC1E,uEAAuE;QACvE,UAAU,EAAE,sCAAsC;KAClD;IAED,KAAK,EAAE;QACN,gCAAgC,EAAE,cAAc;QAChD,uBAAuB,EAAE,eAAe;QACxC,yBAAyB,EAAE,iBAAiB;QAC5C,uBAAuB,EAAE,eAAe;QACxC,uBAAuB,EAAE,eAAe;QACxC,6BAA6B,EAAE,iBAAiB;QAChD,sBAAsB,EAAE,cAAc;QACtC,wEAAwE;QACxE,oEAAoE;QACpE,oBAAoB,EAAE,oBAAoB;QAC1C,mEAAmE;QACnE,eAAe,EAAE,cAAc;KAC/B;CACD,CAAC"}
|
package/dist/paths.d.ts
CHANGED
|
@@ -2,8 +2,6 @@
|
|
|
2
2
|
export declare const TEMPLATES_DIR: string;
|
|
3
3
|
/** Directory containing the reusable React hook files. */
|
|
4
4
|
export declare const TEMPLATE_HOOKS_DIR: string;
|
|
5
|
-
/** Directory containing the Biome linting plugin rules. */
|
|
6
|
-
export declare const PLUGINS_DIR: string;
|
|
7
5
|
/** Directory containing bundled agent skills copied into generated projects. */
|
|
8
6
|
export declare const AGENT_SKILLS_DIR: string;
|
|
9
7
|
/** Node-version guard injected into each scaffolded project; under `src/` so it ships verbatim. */
|
package/dist/paths.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAaA,6DAA6D;AAC7D,eAAO,MAAM,aAAa,EAAE,MAI3B,CAAC;AAEF,0DAA0D;AAC1D,eAAO,MAAM,kBAAkB,EAAE,MAIhC,CAAC;AAEF,
|
|
1
|
+
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAaA,6DAA6D;AAC7D,eAAO,MAAM,aAAa,EAAE,MAI3B,CAAC;AAEF,0DAA0D;AAC1D,eAAO,MAAM,kBAAkB,EAAE,MAIhC,CAAC;AAEF,gFAAgF;AAChF,eAAO,MAAM,gBAAgB,EAAE,MAI9B,CAAC;AAEF,mGAAmG;AACnG,eAAO,MAAM,uBAAuB,EAAE,MAKrC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAQ9B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,EAAE,MAQ1C,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAQ/B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAQ/B,CAAC"}
|
package/dist/paths.js
CHANGED
|
@@ -12,8 +12,6 @@ const PROJECT_ROOT = path.resolve(__dirname, "..");
|
|
|
12
12
|
export const TEMPLATES_DIR = path.join(PROJECT_ROOT, "src", "templates");
|
|
13
13
|
/** Directory containing the reusable React hook files. */
|
|
14
14
|
export const TEMPLATE_HOOKS_DIR = path.join(PROJECT_ROOT, "src", "template-hooks");
|
|
15
|
-
/** Directory containing the Biome linting plugin rules. */
|
|
16
|
-
export const PLUGINS_DIR = path.join(PROJECT_ROOT, "plugins");
|
|
17
15
|
/** Directory containing bundled agent skills copied into generated projects. */
|
|
18
16
|
export const AGENT_SKILLS_DIR = path.join(PROJECT_ROOT, "src", "agent-skills");
|
|
19
17
|
/** Node-version guard injected into each scaffolded project; under `src/` so it ships verbatim. */
|
package/dist/paths.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,UAAU,GAAW,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC1D,MAAM,SAAS,GAAW,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAEnD;;;;GAIG;AACH,MAAM,YAAY,GAAW,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AAE3D,6DAA6D;AAC7D,MAAM,CAAC,MAAM,aAAa,GAAW,IAAI,CAAC,IAAI,CAC7C,YAAY,EACZ,KAAK,EACL,WAAW,CACX,CAAC;AAEF,0DAA0D;AAC1D,MAAM,CAAC,MAAM,kBAAkB,GAAW,IAAI,CAAC,IAAI,CAClD,YAAY,EACZ,KAAK,EACL,gBAAgB,CAChB,CAAC;AAEF,
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,UAAU,GAAW,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC1D,MAAM,SAAS,GAAW,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAEnD;;;;GAIG;AACH,MAAM,YAAY,GAAW,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AAE3D,6DAA6D;AAC7D,MAAM,CAAC,MAAM,aAAa,GAAW,IAAI,CAAC,IAAI,CAC7C,YAAY,EACZ,KAAK,EACL,WAAW,CACX,CAAC;AAEF,0DAA0D;AAC1D,MAAM,CAAC,MAAM,kBAAkB,GAAW,IAAI,CAAC,IAAI,CAClD,YAAY,EACZ,KAAK,EACL,gBAAgB,CAChB,CAAC;AAEF,gFAAgF;AAChF,MAAM,CAAC,MAAM,gBAAgB,GAAW,IAAI,CAAC,IAAI,CAChD,YAAY,EACZ,KAAK,EACL,cAAc,CACd,CAAC;AAEF,mGAAmG;AACnG,MAAM,CAAC,MAAM,uBAAuB,GAAW,IAAI,CAAC,IAAI,CACvD,YAAY,EACZ,KAAK,EACL,QAAQ,EACR,wBAAwB,CACxB,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAW,IAAI,CAAC,IAAI,CAChD,YAAY,EACZ,KAAK,EACL,SAAS,EACT,UAAU,EACV,KAAK,EACL,QAAQ,EACR,OAAO,CACP,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAW,IAAI,CAAC,IAAI,CAC5D,YAAY,EACZ,KAAK,EACL,SAAS,EACT,UAAU,EACV,KAAK,EACL,oBAAoB,EACpB,OAAO,CACP,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAW,IAAI,CAAC,IAAI,CACjD,YAAY,EACZ,KAAK,EACL,SAAS,EACT,UAAU,EACV,OAAO,EACP,SAAS,EACT,OAAO,CACP,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAW,IAAI,CAAC,IAAI,CACjD,YAAY,EACZ,KAAK,EACL,SAAS,EACT,UAAU,EACV,KAAK,EACL,SAAS,EACT,OAAO,CACP,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "bsmnt",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.1",
|
|
4
4
|
"packageManager": "bun@1.3.14",
|
|
5
5
|
"description": "CLI to scaffold basement projects and add integrations",
|
|
6
6
|
"type": "module",
|
|
@@ -26,9 +26,9 @@
|
|
|
26
26
|
"src/agent-skills",
|
|
27
27
|
"src/modules/features/cms/sanity/files",
|
|
28
28
|
"src/modules/features/cms/sanity-pagebuilder/files",
|
|
29
|
+
"src/modules/features/forms/hubspot/files",
|
|
29
30
|
"src/modules/features/env/dotenvx/files",
|
|
30
|
-
"src/assets"
|
|
31
|
-
"plugins"
|
|
31
|
+
"src/assets"
|
|
32
32
|
],
|
|
33
33
|
"scripts": {
|
|
34
34
|
"preinstall": "node src/assets/check-node-version.mjs",
|
|
@@ -37,6 +37,7 @@
|
|
|
37
37
|
"test": "bun test src",
|
|
38
38
|
"dev": "tsx src/index.ts",
|
|
39
39
|
"lint": "biome check .",
|
|
40
|
+
"lint:features": "bash scripts/lint-feature-files.sh",
|
|
40
41
|
"lint:fix": "biome check --write --unsafe .",
|
|
41
42
|
"format": "biome format --write .",
|
|
42
43
|
"knip": "bunx knip",
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: hubspot-pagebuilder-block
|
|
3
|
+
description: >-
|
|
4
|
+
Register a HubSpot form as a selectable `hubspotFormBlock` in a basement Sanity
|
|
5
|
+
page builder. Use when the user asks to "integrate/add HubSpot to the page
|
|
6
|
+
builder", "add a HubSpot form block", "make the HubSpot form selectable in the
|
|
7
|
+
page builder / Studio", "register the HubSpot form block in Sanity", or "wire
|
|
8
|
+
up the HubSpot form so editors can drop it on a page". Also covers rendering a
|
|
9
|
+
HubSpot form directly (no CMS) when asked how to use/show a HubSpot form.
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Wire the HubSpot form block into the page builder
|
|
13
|
+
|
|
14
|
+
The HubSpot integration ships an agnostic core plus an optional Sanity adapter
|
|
15
|
+
(`lib/integrations/hubspot/sanity/`). The adapter is **not** auto-registered into
|
|
16
|
+
the page builder (that wiring couples to each project's schema), so do it here by
|
|
17
|
+
editing the project's real files. Read each file first and adapt to its actual
|
|
18
|
+
shape — do not blindly pattern-match. If an anchor below is missing, stop and
|
|
19
|
+
report it rather than guessing.
|
|
20
|
+
|
|
21
|
+
## 0. Preconditions
|
|
22
|
+
|
|
23
|
+
- `lib/integrations/hubspot/` exists (the integration was added).
|
|
24
|
+
- `lib/integrations/hubspot/sanity/form-block.ts` exists (Sanity adapter — only
|
|
25
|
+
copied when Sanity is present). If it's missing, the project isn't a Sanity
|
|
26
|
+
project; skip to **Direct rendering** below.
|
|
27
|
+
- The project has a page builder: `lib/integrations/sanity/page-builder-config.ts`
|
|
28
|
+
exists. If not, it's the standard Sanity integration (no page builder) — skip to
|
|
29
|
+
**Direct rendering**.
|
|
30
|
+
|
|
31
|
+
## 1. Register the schema — `lib/integrations/sanity/schemas/index.ts`
|
|
32
|
+
|
|
33
|
+
Add the import and include the block in the `schema.types` array (alongside the
|
|
34
|
+
other component documents, e.g. near `hero` / `description`):
|
|
35
|
+
|
|
36
|
+
```ts
|
|
37
|
+
import { hubspotFormBlock } from "@/lib/integrations/hubspot/sanity/form-block"
|
|
38
|
+
// ...
|
|
39
|
+
export const schema: { types: SchemaTypeDefinition[] } = {
|
|
40
|
+
types: [
|
|
41
|
+
// ...existing component types...
|
|
42
|
+
hubspotFormBlock,
|
|
43
|
+
],
|
|
44
|
+
}
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## 2. Add it to the page-builder config — `lib/integrations/sanity/page-builder-config.ts`
|
|
48
|
+
|
|
49
|
+
Extend the `PageBuilderDocumentType` union and add a reusable reference member:
|
|
50
|
+
|
|
51
|
+
```ts
|
|
52
|
+
export type PageBuilderDocumentType =
|
|
53
|
+
| "hero"
|
|
54
|
+
| "description"
|
|
55
|
+
| "hubspotFormBlock"
|
|
56
|
+
// ...rest...
|
|
57
|
+
|
|
58
|
+
// inside reusablePageBuilderReferenceMembers:
|
|
59
|
+
{
|
|
60
|
+
documentType: "hubspotFormBlock",
|
|
61
|
+
name: "hubspotFormBlockReference",
|
|
62
|
+
title: "HubSpot Form",
|
|
63
|
+
groups: ["generic"],
|
|
64
|
+
},
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## 3. List it in the Studio — `lib/integrations/sanity/structure.ts`
|
|
68
|
+
|
|
69
|
+
Under the "Reusable Components" list, add (the schema's own envelope icon is used
|
|
70
|
+
automatically, so `.icon()` is optional):
|
|
71
|
+
|
|
72
|
+
```ts
|
|
73
|
+
S.documentTypeListItem("hubspotFormBlock").title("HubSpot Forms"),
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
## 4. (Optional) Envelope icon — `lib/integrations/sanity/icons.ts`
|
|
77
|
+
|
|
78
|
+
The block already defaults to `@sanity/icons`' `EnvelopeIcon`. To match this
|
|
79
|
+
project's phosphor duotone icons, add and apply one:
|
|
80
|
+
|
|
81
|
+
```ts
|
|
82
|
+
import { EnvelopeIcon } from "@phosphor-icons/react/dist/ssr"
|
|
83
|
+
export const hubspotFormIcon = asDuotoneIcon(EnvelopeIcon)
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
Then override the icon where the block is registered in `schemas/index.ts`:
|
|
87
|
+
|
|
88
|
+
```ts
|
|
89
|
+
import { hubspotFormBlock as hubspotFormBlockBase } from "@/lib/integrations/hubspot/sanity/form-block"
|
|
90
|
+
import { hubspotFormIcon } from "../icons"
|
|
91
|
+
const hubspotFormBlock: SchemaTypeDefinition = {
|
|
92
|
+
...hubspotFormBlockBase,
|
|
93
|
+
icon: hubspotFormIcon,
|
|
94
|
+
}
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
## 5. Render it — `components/page-builder/renderer.tsx` + a new component
|
|
98
|
+
|
|
99
|
+
Create `components/page-builder/components/hubspot-form.tsx`:
|
|
100
|
+
|
|
101
|
+
```tsx
|
|
102
|
+
import { stegaClean } from "next-sanity"
|
|
103
|
+
import { HubSpotForm } from "@/lib/integrations/hubspot/form"
|
|
104
|
+
import { decodeHubSpotFormSelection } from "@/lib/integrations/hubspot/form-selection"
|
|
105
|
+
import type { PageBuilderBlock } from "../types"
|
|
106
|
+
|
|
107
|
+
type HubSpotFormBlockProps = {
|
|
108
|
+
block: Extract<PageBuilderBlock, { _type: "hubspotFormBlock" }>
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
export function HubSpotFormBlock({ block }: HubSpotFormBlockProps) {
|
|
112
|
+
// stegaClean strips visual-editing metadata so the JSON selection parses.
|
|
113
|
+
const selection = decodeHubSpotFormSelection(stegaClean(block.form))
|
|
114
|
+
if (!selection) return null
|
|
115
|
+
|
|
116
|
+
return (
|
|
117
|
+
<section className="px-4 py-8 md:py-12">
|
|
118
|
+
<HubSpotForm
|
|
119
|
+
className="mx-auto max-w-[590px]"
|
|
120
|
+
formId={selection.formId}
|
|
121
|
+
portalId={selection.portalId}
|
|
122
|
+
region={selection.region}
|
|
123
|
+
/>
|
|
124
|
+
</section>
|
|
125
|
+
)
|
|
126
|
+
}
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
Then add the case to the renderer's `switch (block._type)`:
|
|
130
|
+
|
|
131
|
+
```tsx
|
|
132
|
+
import { HubSpotFormBlock } from "./components/hubspot-form"
|
|
133
|
+
// ...
|
|
134
|
+
case "hubspotFormBlock":
|
|
135
|
+
return <HubSpotFormBlock block={block} />
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
## 6. Regenerate types + verify
|
|
139
|
+
|
|
140
|
+
```bash
|
|
141
|
+
bun run sanity:typegen # regenerates sanity.types.ts so PageBuilderBlock includes the block
|
|
142
|
+
bun typecheck
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
`bun typecheck` must pass. The page query already spreads dereferenced block
|
|
146
|
+
fields (`...@->{ ... }`), so `form` flows through with no query change.
|
|
147
|
+
|
|
148
|
+
## Direct rendering (no page builder)
|
|
149
|
+
|
|
150
|
+
For any project, render a form without a CMS by passing the IDs directly:
|
|
151
|
+
|
|
152
|
+
```tsx
|
|
153
|
+
import { HubSpotForm } from "@/lib/integrations/hubspot/form"
|
|
154
|
+
|
|
155
|
+
<HubSpotForm portalId="…" formId="…" region="na1" />
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
`region` is the portal's data-hosting location (`na1`, `eu1`, …). Requires
|
|
159
|
+
`HUBSPOT_ACCESS_TOKEN` only for the Studio form picker, not for rendering. See
|
|
160
|
+
`lib/integrations/hubspot/README.md` for full usage.
|
|
@@ -19,9 +19,11 @@ This project uses **dotenvx**. Env files:
|
|
|
19
19
|
- `.env.local` — plaintext, gitignored (personal local overrides)
|
|
20
20
|
- `.env.keys` — private keys, gitignored (backed up in the team password manager)
|
|
21
21
|
|
|
22
|
-
Scripts run `dotenvx run -f .env.$VERCEL_ENV -f .env -- …`,
|
|
23
|
-
|
|
24
|
-
|
|
22
|
+
Scripts run `dotenvx run --ignore=MISSING_ENV_FILE -f .env.$VERCEL_ENV -f .env -- …`,
|
|
23
|
+
so on Vercel the env-specific file overrides `.env` (locally `VERCEL_ENV` is unset,
|
|
24
|
+
so `.env.$VERCEL_ENV` is missing and skipped silently, leaving `.env`). A **gitleaks**
|
|
25
|
+
pre-commit hook + CI scan are the real enforcement — this skill just makes the right
|
|
26
|
+
choice the default.
|
|
25
27
|
|
|
26
28
|
## 1. Secret or trivial config?
|
|
27
29
|
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: rss-feed
|
|
3
|
+
description: >-
|
|
4
|
+
Add or extend an RSS feed for a Sanity content type in a basement-scaffolded
|
|
5
|
+
project. Use when the user asks to "add RSS for events / changelog / releases /
|
|
6
|
+
<type>", "create a feed.xml for <content type>", "add a second RSS feed",
|
|
7
|
+
"extend the blog feed to include X", or "make this content syndicatable". The
|
|
8
|
+
blog feed at /feed.xml ships by default; this covers everything beyond it.
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Add an RSS feed for a content type
|
|
12
|
+
|
|
13
|
+
basement Sanity projects ship a blog feed at `app/feed.xml/route.ts` plus a
|
|
14
|
+
reusable helper at `lib/utils/rss.ts` (`generateRssFeed`, `rssErrorResponse`).
|
|
15
|
+
To syndicate any other content type (events, changelog, releases, …), reuse that
|
|
16
|
+
helper — do **not** rewrite the XML generation.
|
|
17
|
+
|
|
18
|
+
Read each real file first and adapt to its actual shape; the two CMS variants
|
|
19
|
+
differ (see below). If `lib/utils/rss.ts` is missing, the project predates the
|
|
20
|
+
feed — port it from the blog feed pattern or stop and report.
|
|
21
|
+
|
|
22
|
+
## Decision: extend vs. new feed
|
|
23
|
+
|
|
24
|
+
- **New dedicated feed** (recommended): `app/<type>/feed.xml/route.ts`, e.g.
|
|
25
|
+
`/events/feed.xml`. Cleaner, independently cacheable, one query per feed.
|
|
26
|
+
- **Extend the blog feed**: only when the user explicitly wants a single combined
|
|
27
|
+
feed. Merge the extra items into the existing `app/feed.xml/route.ts` `items`
|
|
28
|
+
array before `generateRssFeed`.
|
|
29
|
+
|
|
30
|
+
## The helper contract — `lib/utils/rss.ts`
|
|
31
|
+
|
|
32
|
+
```ts
|
|
33
|
+
generateRssFeed({
|
|
34
|
+
title: string,
|
|
35
|
+
link: string, // channel homepage for this feed
|
|
36
|
+
description: string,
|
|
37
|
+
feedUrl: string, // absolute URL of THIS feed (self link)
|
|
38
|
+
items: RssFeedItem[],
|
|
39
|
+
})
|
|
40
|
+
// RssFeedItem: { title, link, description?, pubDate?, authors?, category? }
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
`pubDate` is parsed with `new Date(...)`, so pass an ISO date string. `authors`
|
|
44
|
+
becomes `<dc:creator>` entries. Always return `rssErrorResponse()` from a `catch`.
|
|
45
|
+
|
|
46
|
+
## Identify the variant
|
|
47
|
+
|
|
48
|
+
Look at `lib/integrations/sanity/queries.ts`:
|
|
49
|
+
|
|
50
|
+
- **Standard Sanity** — content types are top-level documents (like `article`).
|
|
51
|
+
Use `getBaseUrl` from `lib/utils/url.ts` and build paths inline
|
|
52
|
+
(`` `${baseUrl}/blog/${slug}` ``). Only `getBaseUrl` is guaranteed here: the base
|
|
53
|
+
templates ship their own `lib/utils/url.ts` and the integration is copied with
|
|
54
|
+
`overwrite: false`, so don't rely on extra exports like `getPageUrl`.
|
|
55
|
+
- **Page builder** — content is `page` documents under a `pageFolder`, with the
|
|
56
|
+
type-specific fields inside a page-builder block (like `blogContent`). URL
|
|
57
|
+
helpers live in `lib/utils/sitemap.ts` (`getSitemapBaseUrl`, `getPageUrl`).
|
|
58
|
+
|
|
59
|
+
## Steps
|
|
60
|
+
|
|
61
|
+
1. **Query** — add a GROQ query to `lib/integrations/sanity/queries.ts` (wrap with
|
|
62
|
+
`defineQuery` so typegen types it). Select the fields you'll map: title, slug
|
|
63
|
+
(or `resolvedSlug`), a date, an author, and `metadata` (for `noIndex`).
|
|
64
|
+
2. **Route** — create `app/<type>/feed.xml/route.ts` with
|
|
65
|
+
`export const dynamic = "force-dynamic"`, guard on a null `client`, fetch in a
|
|
66
|
+
`try/catch`, filter out `metadata?.noIndex`, map docs to `RssFeedItem`, return
|
|
67
|
+
`generateRssFeed(...)`.
|
|
68
|
+
3. **Register the path in the CLI** — if you're editing the *basement-cli source*
|
|
69
|
+
(not a generated project), add `"app/<type>/feed.xml"` to the integration's
|
|
70
|
+
`additivePaths` in `config.ts`. In a generated project, no registration is
|
|
71
|
+
needed — the file is live.
|
|
72
|
+
4. **Regenerate types + verify**: `bun run sanity:typegen` then `bun typecheck`,
|
|
73
|
+
and `curl http://localhost:3000/<type>/feed.xml` to confirm valid RSS 2.0.
|
|
74
|
+
|
|
75
|
+
## Worked example — `event` type (standard Sanity)
|
|
76
|
+
|
|
77
|
+
GROQ (`queries.ts`):
|
|
78
|
+
|
|
79
|
+
```ts
|
|
80
|
+
export const ALL_EVENTS_QUERY = defineQuery(`
|
|
81
|
+
*[_type == "event"] | order(startDate desc) {
|
|
82
|
+
_id, title, slug, excerpt, host, startDate, metadata, _updatedAt
|
|
83
|
+
}
|
|
84
|
+
`);
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
Route (`app/events/feed.xml/route.ts`):
|
|
88
|
+
|
|
89
|
+
```ts
|
|
90
|
+
import { client } from "@/lib/integrations/sanity/client";
|
|
91
|
+
import { ALL_EVENTS_QUERY } from "@/lib/integrations/sanity/queries";
|
|
92
|
+
import { generateRssFeed, rssErrorResponse } from "@/lib/utils/rss";
|
|
93
|
+
import { getBaseUrl } from "@/lib/utils/url";
|
|
94
|
+
|
|
95
|
+
export const dynamic = "force-dynamic";
|
|
96
|
+
|
|
97
|
+
export async function GET() {
|
|
98
|
+
const baseUrl = getBaseUrl();
|
|
99
|
+
if (!client) return rssErrorResponse();
|
|
100
|
+
|
|
101
|
+
try {
|
|
102
|
+
const events = await client.fetch(ALL_EVENTS_QUERY);
|
|
103
|
+
const items = (events ?? [])
|
|
104
|
+
.filter((e) => e.slug?.current && !e.metadata?.noIndex)
|
|
105
|
+
.map((e) => ({
|
|
106
|
+
title: e.title ?? "Untitled",
|
|
107
|
+
link: `${baseUrl}/events/${e.slug?.current}`,
|
|
108
|
+
description: e.excerpt ?? undefined,
|
|
109
|
+
pubDate: e.startDate ?? undefined,
|
|
110
|
+
authors: e.host ? [e.host] : undefined,
|
|
111
|
+
}));
|
|
112
|
+
|
|
113
|
+
return generateRssFeed({
|
|
114
|
+
title: `${new URL(baseUrl).hostname} Events`,
|
|
115
|
+
link: `${baseUrl}/events`,
|
|
116
|
+
description: "Upcoming events",
|
|
117
|
+
feedUrl: `${baseUrl}/events/feed.xml`,
|
|
118
|
+
items,
|
|
119
|
+
});
|
|
120
|
+
} catch (error) {
|
|
121
|
+
console.error("Error generating events RSS feed:", error);
|
|
122
|
+
return rssErrorResponse();
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
## Page-builder variant differences
|
|
128
|
+
|
|
129
|
+
When content lives under a `pageFolder` with a block:
|
|
130
|
+
|
|
131
|
+
- Query like `ALL_BLOG_ARTICLES_QUERY` — filter `pageFolder->slug.current == "<folder>"`,
|
|
132
|
+
project `"resolvedSlug": <slug expression>`, and reach into the block for date/author.
|
|
133
|
+
- Import `getSitemapBaseUrl` + `getPageUrl` from `@/lib/utils/sitemap`, and build the
|
|
134
|
+
link with `getPageUrl(baseUrl, article.resolvedSlug)`.
|
|
135
|
+
- Description from `metadata?.metaDescription`; date from `block.date`; author from
|
|
136
|
+
`block.author?.name`. Mirror `app/feed.xml/route.ts` from this integration.
|
|
137
|
+
- **Indexability differs from the standard blog.** The page-builder's canonical
|
|
138
|
+
field is `metadata.index` (visible, defaults to `true`); `metadata.noIndex` is a
|
|
139
|
+
hidden legacy field. Do **not** filter on `noIndex` alone. Instead project the
|
|
140
|
+
normalized value in your query — the same `select` used by `PAGE_SITEMAP_QUERY` /
|
|
141
|
+
`ALL_BLOG_ARTICLES_QUERY` — and filter on it:
|
|
142
|
+
```groq
|
|
143
|
+
"noIndex": select(
|
|
144
|
+
defined(metadata.index) => !metadata.index,
|
|
145
|
+
defined(metadata.noIndex) => metadata.noIndex,
|
|
146
|
+
false
|
|
147
|
+
)
|
|
148
|
+
```
|
|
149
|
+
(The standard Sanity blog has no `index` field, so there `!metadata?.noIndex` is correct.)
|
|
150
|
+
|
|
151
|
+
## Optional: discoverability
|
|
152
|
+
|
|
153
|
+
To let readers auto-detect the feed, add an alternate link in the relevant
|
|
154
|
+
layout's `metadata.alternates.types`:
|
|
155
|
+
|
|
156
|
+
```ts
|
|
157
|
+
alternates: { types: { "application/rss+xml": "/events/feed.xml" } }
|
|
158
|
+
```
|