bsmnt 0.2.5 → 0.2.6
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 +54 -46
- package/dist/helpers/add/index.d.ts.map +1 -1
- package/dist/helpers/add/index.js.map +1 -1
- package/dist/helpers/create/copy-template.d.ts +2 -2
- package/dist/helpers/create/copy-template.d.ts.map +1 -1
- package/dist/helpers/create/copy-template.js.map +1 -1
- package/dist/helpers/create/index.d.ts +2 -1
- package/dist/helpers/create/index.d.ts.map +1 -1
- package/dist/helpers/create/index.js +7 -1
- package/dist/helpers/create/index.js.map +1 -1
- package/dist/helpers/create/setup-agent.d.ts.map +1 -1
- package/dist/helpers/create/setup-agent.js +7 -2
- package/dist/helpers/create/setup-agent.js.map +1 -1
- package/dist/helpers/create/setup-sanity.d.ts +1 -1
- package/dist/helpers/create/setup-sanity.d.ts.map +1 -1
- package/dist/helpers/create/setup-sanity.js +38 -21
- package/dist/helpers/create/setup-sanity.js.map +1 -1
- package/dist/helpers/integrate/merge-orchestrator.d.ts.map +1 -1
- package/dist/helpers/integrate/merge-orchestrator.js +1 -4
- package/dist/helpers/integrate/merge-orchestrator.js.map +1 -1
- package/dist/helpers/integrate/sanity/config.d.ts.map +1 -1
- package/dist/helpers/integrate/sanity/config.js +1 -2
- package/dist/helpers/integrate/sanity/config.js.map +1 -1
- package/dist/helpers/integrate/sanity/mergers/check-integration-merger.d.ts.map +1 -1
- package/dist/helpers/integrate/sanity/mergers/check-integration-merger.js +30 -19
- package/dist/helpers/integrate/sanity/mergers/check-integration-merger.js.map +1 -1
- package/dist/helpers/integrate/sanity/mergers/layout-merger.d.ts.map +1 -1
- package/dist/helpers/integrate/sanity/mergers/layout-merger.js +22 -13
- package/dist/helpers/integrate/sanity/mergers/layout-merger.js.map +1 -1
- package/dist/helpers/integrate/sanity/mergers/sitemap-merger.d.ts.map +1 -1
- package/dist/helpers/integrate/sanity/mergers/sitemap-merger.js +9 -7
- package/dist/helpers/integrate/sanity/mergers/sitemap-merger.js.map +1 -1
- package/dist/index.js +11 -10
- package/dist/index.js.map +1 -1
- package/package.json +5 -2
- package/src/helpers/integrate/sanity/files/app/api/draft-mode/disable/route.ts +7 -0
- package/src/helpers/integrate/sanity/files/app/api/draft-mode/enable/route.ts +21 -0
- package/src/helpers/integrate/sanity/files/app/api/revalidate/route.ts +37 -0
- package/src/helpers/integrate/sanity/files/app/layout.tsx +111 -0
- package/src/helpers/integrate/sanity/files/app/sitemap.ts +80 -0
- package/src/helpers/integrate/sanity/files/app/studio/[[...tool]]/page.tsx +8 -0
- package/src/helpers/integrate/sanity/files/app/studio/layout.tsx +7 -0
- package/src/helpers/integrate/sanity/files/components/ui/sanity-image/index.tsx +37 -0
- package/src/helpers/integrate/sanity/files/lib/integrations/README.md +58 -0
- package/src/helpers/integrate/sanity/files/lib/integrations/check-integration.ts +62 -0
- package/src/helpers/integrate/sanity/files/lib/integrations/sanity/README.md +141 -0
- package/src/helpers/integrate/sanity/files/lib/integrations/sanity/client.ts +30 -0
- package/src/helpers/integrate/sanity/files/lib/integrations/sanity/components/disable-draft-mode.tsx +29 -0
- package/src/helpers/integrate/sanity/files/lib/integrations/sanity/components/rich-text.tsx +73 -0
- package/src/helpers/integrate/sanity/files/lib/integrations/sanity/env.ts +42 -0
- package/src/helpers/integrate/sanity/files/lib/integrations/sanity/live/index.tsx +34 -0
- package/src/helpers/integrate/sanity/files/lib/integrations/sanity/queries.ts +99 -0
- package/src/helpers/integrate/sanity/files/lib/integrations/sanity/sanity.cli.ts +20 -0
- package/src/helpers/integrate/sanity/files/lib/integrations/sanity/sanity.config.ts +94 -0
- package/src/helpers/integrate/sanity/files/lib/integrations/sanity/sanity.types.ts +337 -0
- package/src/helpers/integrate/sanity/files/lib/integrations/sanity/schema.json +1850 -0
- package/src/helpers/integrate/sanity/files/lib/integrations/sanity/schemas/article.ts +132 -0
- package/src/helpers/integrate/sanity/files/lib/integrations/sanity/schemas/example.ts +203 -0
- package/src/helpers/integrate/sanity/files/lib/integrations/sanity/schemas/index.ts +37 -0
- package/src/helpers/integrate/sanity/files/lib/integrations/sanity/schemas/link.ts +127 -0
- package/src/helpers/integrate/sanity/files/lib/integrations/sanity/schemas/metadata.ts +68 -0
- package/src/helpers/integrate/sanity/files/lib/integrations/sanity/schemas/navigation.ts +39 -0
- package/src/helpers/integrate/sanity/files/lib/integrations/sanity/schemas/page.ts +77 -0
- package/src/helpers/integrate/sanity/files/lib/integrations/sanity/schemas/richText.ts +59 -0
- package/src/helpers/integrate/sanity/files/lib/integrations/sanity/structure.ts +5 -0
- package/src/helpers/integrate/sanity/files/lib/integrations/sanity/utils/image.ts +11 -0
- package/src/helpers/integrate/sanity/files/lib/integrations/sanity/utils/link.ts +61 -0
- package/src/helpers/integrate/sanity/files/lib/scripts/copy-sanity-mcp.ts +23 -0
- package/src/helpers/integrate/sanity/files/lib/scripts/generate-page.ts +310 -0
- package/src/helpers/integrate/sanity/files/lib/utils/metadata.ts +190 -0
- package/src/templates/next-default/svg.d.ts +5 -0
- package/src/templates/next-experiments/svg.d.ts +5 -0
- package/src/templates/next-webgl/components/ui/link/index.tsx +2 -3
- package/src/templates/next-webgl/svg.d.ts +5 -0
|
@@ -36,17 +36,20 @@ export async function mergeCheckIntegration(templatePath) {
|
|
|
36
36
|
// 1. Add isSanityConfigured function after isAnalyticsConfigured
|
|
37
37
|
const analyticsMatch = content.match(/(export function isAnalyticsConfigured\(\)[^}]+\})/s);
|
|
38
38
|
if (analyticsMatch) {
|
|
39
|
-
const
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
39
|
+
const insertIndex = analyticsMatch.index;
|
|
40
|
+
if (insertIndex !== undefined) {
|
|
41
|
+
const insertPos = insertIndex + analyticsMatch[0].length;
|
|
42
|
+
content =
|
|
43
|
+
content.slice(0, insertPos) +
|
|
44
|
+
"\n" +
|
|
45
|
+
SANITY_FUNCTION +
|
|
46
|
+
content.slice(insertPos);
|
|
47
|
+
}
|
|
45
48
|
}
|
|
46
49
|
else {
|
|
47
50
|
// If no isAnalyticsConfigured, add before getConfiguredIntegrations
|
|
48
51
|
const getConfiguredMatch = content.match(/export function getConfiguredIntegrations/);
|
|
49
|
-
if (getConfiguredMatch) {
|
|
52
|
+
if (getConfiguredMatch && getConfiguredMatch.index !== undefined) {
|
|
50
53
|
content =
|
|
51
54
|
content.slice(0, getConfiguredMatch.index) +
|
|
52
55
|
SANITY_FUNCTION +
|
|
@@ -61,22 +64,30 @@ export async function mergeCheckIntegration(templatePath) {
|
|
|
61
64
|
// 2. Update getConfiguredIntegrations to include Sanity check
|
|
62
65
|
const configuredFnMatch = content.match(/(export function getConfiguredIntegrations\(\)[^{]*\{[\s\S]*?)(if \(isAnalyticsConfigured\(\)\))/m);
|
|
63
66
|
if (configuredFnMatch) {
|
|
64
|
-
const
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
content.slice(insertPos)
|
|
67
|
+
const condition = configuredFnMatch[2];
|
|
68
|
+
const fromIndex = configuredFnMatch.index;
|
|
69
|
+
if (condition && fromIndex !== undefined) {
|
|
70
|
+
const insertPos = content.indexOf(condition, fromIndex);
|
|
71
|
+
content =
|
|
72
|
+
content.slice(0, insertPos) +
|
|
73
|
+
SANITY_CONFIGURED_CHECK +
|
|
74
|
+
"\n " +
|
|
75
|
+
content.slice(insertPos);
|
|
76
|
+
}
|
|
70
77
|
}
|
|
71
78
|
// 3. Update getUnconfiguredIntegrations to include Sanity check
|
|
72
79
|
const unconfiguredFnMatch = content.match(/(export function getUnconfiguredIntegrations\(\)[^{]*\{[\s\S]*?)(if \(!isAnalyticsConfigured\(\)\))/m);
|
|
73
80
|
if (unconfiguredFnMatch) {
|
|
74
|
-
const
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
content.slice(insertPos)
|
|
81
|
+
const condition = unconfiguredFnMatch[2];
|
|
82
|
+
const fromIndex = unconfiguredFnMatch.index;
|
|
83
|
+
if (condition && fromIndex !== undefined) {
|
|
84
|
+
const insertPos = content.indexOf(condition, fromIndex);
|
|
85
|
+
content =
|
|
86
|
+
content.slice(0, insertPos) +
|
|
87
|
+
SANITY_UNCONFIGURED_CHECK +
|
|
88
|
+
"\n " +
|
|
89
|
+
content.slice(insertPos);
|
|
90
|
+
}
|
|
80
91
|
}
|
|
81
92
|
await fs.writeFile(templatePath, content);
|
|
82
93
|
return { success: true };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check-integration-merger.js","sourceRoot":"","sources":["../../../../../src/helpers/integrate/sanity/mergers/check-integration-merger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAC;AAE1B;;GAEG;AACH,MAAM,eAAe,GAAG;;;;;;;;;;;CAWvB,CAAC;AAEF;;GAEG;AACH,MAAM,uBAAuB,GAAG,yDAAyD,CAAC;AAE1F;;GAEG;AACH,MAAM,yBAAyB,GAAG,0DAA0D,CAAC;AAQ7F;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAC1C,YAAoB;IAEpB,IAAI,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IAEvD,yCAAyC;IACzC,IAAI,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC;QAC5C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,gCAAgC,EAAE,CAAC;IACpE,CAAC;IAED,iEAAiE;IACjE,MAAM,cAAc,GAAG,OAAO,CAAC,KAAK,CACnC,qDAAqD,CACrD,CAAC;IACF,IAAI,cAAc,EAAE,CAAC;QACpB,MAAM,
|
|
1
|
+
{"version":3,"file":"check-integration-merger.js","sourceRoot":"","sources":["../../../../../src/helpers/integrate/sanity/mergers/check-integration-merger.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"layout-merger.d.ts","sourceRoot":"","sources":["../../../../../src/helpers/integrate/sanity/mergers/layout-merger.ts"],"names":[],"mappings":"AA2DA,UAAU,kBAAkB;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,UAAU,WAAW;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,WAAW,CAChC,YAAY,EAAE,MAAM,EACpB,EAAE,SAAS,EAAE,UAAU,EAAE,GAAE,kBAAuB,GAChD,OAAO,CAAC,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"layout-merger.d.ts","sourceRoot":"","sources":["../../../../../src/helpers/integrate/sanity/mergers/layout-merger.ts"],"names":[],"mappings":"AA2DA,UAAU,kBAAkB;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,UAAU,WAAW;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,WAAW,CAChC,YAAY,EAAE,MAAM,EACpB,EAAE,SAAS,EAAE,UAAU,EAAE,GAAE,kBAAuB,GAChD,OAAO,CAAC,WAAW,CAAC,CAuJtB"}
|
|
@@ -74,27 +74,32 @@ export async function mergeLayout(templatePath, { targetDir, pathPrefix } = {})
|
|
|
74
74
|
// 1. Add Sanity imports after existing imports
|
|
75
75
|
const importMatches = [...content.matchAll(/^import .+$/gm)];
|
|
76
76
|
if (importMatches.length > 0) {
|
|
77
|
-
const lastImport = importMatches
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
content
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
77
|
+
const lastImport = importMatches.at(-1);
|
|
78
|
+
if (lastImport && lastImport.index !== undefined) {
|
|
79
|
+
const insertPos = lastImport.index + lastImport[0].length;
|
|
80
|
+
content =
|
|
81
|
+
content.slice(0, insertPos) +
|
|
82
|
+
"\n" +
|
|
83
|
+
SANITY_IMPORTS +
|
|
84
|
+
content.slice(insertPos);
|
|
85
|
+
}
|
|
84
86
|
}
|
|
85
87
|
// 2. Ensure Suspense is imported from react
|
|
86
88
|
if (!content.match(/import\s+.*Suspense.*from\s+["']react["']/)) {
|
|
87
89
|
const reactImportMatch = content.match(/import\s+\{([^}]*)\}\s+from\s+["']react["']/);
|
|
88
90
|
if (reactImportMatch) {
|
|
89
|
-
|
|
90
|
-
|
|
91
|
+
const reactBindings = reactImportMatch[1];
|
|
92
|
+
if (reactBindings && !reactBindings.includes("Suspense")) {
|
|
93
|
+
content = content.replace(reactImportMatch[0], reactImportMatch[0].replace(reactBindings, `${reactBindings.trim()}, Suspense`));
|
|
91
94
|
}
|
|
92
95
|
}
|
|
93
96
|
else {
|
|
94
97
|
const lastImportMatch = content.match(/^(import\s+.+\n)/gm);
|
|
95
98
|
if (lastImportMatch) {
|
|
96
|
-
const lastImport = lastImportMatch
|
|
97
|
-
|
|
99
|
+
const lastImport = lastImportMatch.at(-1);
|
|
100
|
+
if (lastImport) {
|
|
101
|
+
content = content.replace(lastImport, `${lastImport}import { Suspense } from "react"\n`);
|
|
102
|
+
}
|
|
98
103
|
}
|
|
99
104
|
}
|
|
100
105
|
}
|
|
@@ -112,11 +117,15 @@ export async function mergeLayout(templatePath, { targetDir, pathPrefix } = {})
|
|
|
112
117
|
if (lines.length === 0)
|
|
113
118
|
return "";
|
|
114
119
|
const minIndent = Math.min(...lines
|
|
115
|
-
.map((line) =>
|
|
120
|
+
.map((line) => {
|
|
121
|
+
const indent = (line.match(/^(\s*)/) ?? ["", ""])[1] ?? "";
|
|
122
|
+
return indent.length;
|
|
123
|
+
})
|
|
116
124
|
.filter((n) => n > 0), Number.POSITIVE_INFINITY);
|
|
117
125
|
return lines
|
|
118
126
|
.map((line) => {
|
|
119
|
-
const
|
|
127
|
+
const indent = (line.match(/^(\s*)/) ?? ["", ""])[1] ?? "";
|
|
128
|
+
const currentIndent = indent.length;
|
|
120
129
|
const relativeIndent = Math.max(0, currentIndent -
|
|
121
130
|
(minIndent === Number.POSITIVE_INFINITY ? 0 : minIndent));
|
|
122
131
|
return targetIndent + " ".repeat(relativeIndent) + line.trim();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"layout-merger.js","sourceRoot":"","sources":["../../../../../src/helpers/integrate/sanity/mergers/layout-merger.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,UAAU,CAAC;AAE1B;;;GAGG;AACH,MAAM,cAAc,GAAG;yEACkD,CAAC;AAE1E;;;GAGG;AACH,MAAM,sBAAsB,GAAG;;;;;;;;;CAS9B,CAAC;AAEF;;;;GAIG;AACH,MAAM,wBAAwB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2BhC,CAAC;AAaF;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAChC,YAAoB,EACpB,EAAE,SAAS,EAAE,UAAU,KAAyB,EAAE;IAElD,IAAI,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IAEvD,yCAAyC;IACzC,IACC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QACrC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EACrC,CAAC;QACF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,gCAAgC,EAAE,CAAC;IACpE,CAAC;IAED,+CAA+C;IAC/C,MAAM,aAAa,GAAG,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC;IAC7D,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,MAAM,UAAU,GAAG,aAAa,CAAC,
|
|
1
|
+
{"version":3,"file":"layout-merger.js","sourceRoot":"","sources":["../../../../../src/helpers/integrate/sanity/mergers/layout-merger.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sitemap-merger.d.ts","sourceRoot":"","sources":["../../../../../src/helpers/integrate/sanity/mergers/sitemap-merger.ts"],"names":[],"mappings":"AA4EA,UAAU,WAAW;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"sitemap-merger.d.ts","sourceRoot":"","sources":["../../../../../src/helpers/integrate/sanity/mergers/sitemap-merger.ts"],"names":[],"mappings":"AA4EA,UAAU,WAAW;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAqC7E"}
|
|
@@ -85,13 +85,15 @@ export async function mergeSitemap(templatePath) {
|
|
|
85
85
|
// 1. Add Sanity import after existing imports
|
|
86
86
|
const importMatches = [...content.matchAll(/^import .+$/gm)];
|
|
87
87
|
if (importMatches.length > 0) {
|
|
88
|
-
const lastImport = importMatches
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
content
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
88
|
+
const lastImport = importMatches.at(-1);
|
|
89
|
+
if (lastImport && lastImport.index !== undefined) {
|
|
90
|
+
const insertPos = lastImport.index + lastImport[0].length;
|
|
91
|
+
content =
|
|
92
|
+
content.slice(0, insertPos) +
|
|
93
|
+
"\n" +
|
|
94
|
+
SANITY_IMPORT +
|
|
95
|
+
content.slice(insertPos);
|
|
96
|
+
}
|
|
95
97
|
}
|
|
96
98
|
// 2. Add Sanity fetch logic before the final return statement
|
|
97
99
|
// Find the last "return baseRoutes" or "return [...baseRoutes" pattern
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sitemap-merger.js","sourceRoot":"","sources":["../../../../../src/helpers/integrate/sanity/mergers/sitemap-merger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAC;AAE1B;;GAEG;AACH,MAAM,aAAa,GAAG,2EAA2E,CAAC;AAElG;;;GAGG;AACH,MAAM,kBAAkB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+D1B,CAAC;AAQF;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,YAAoB;IACtD,IAAI,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IAEvD,yCAAyC;IACzC,IAAI,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC;QAC5C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,gCAAgC,EAAE,CAAC;IACpE,CAAC;IAED,8CAA8C;IAC9C,MAAM,aAAa,GAAG,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC;IAC7D,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,MAAM,UAAU,GAAG,aAAa,CAAC,
|
|
1
|
+
{"version":3,"file":"sitemap-merger.js","sourceRoot":"","sources":["../../../../../src/helpers/integrate/sanity/mergers/sitemap-merger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAC;AAE1B;;GAEG;AACH,MAAM,aAAa,GAAG,2EAA2E,CAAC;AAElG;;;GAGG;AACH,MAAM,kBAAkB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+D1B,CAAC;AAQF;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,YAAoB;IACtD,IAAI,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IAEvD,yCAAyC;IACzC,IAAI,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC;QAC5C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,gCAAgC,EAAE,CAAC;IACpE,CAAC;IAED,8CAA8C;IAC9C,MAAM,aAAa,GAAG,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC;IAC7D,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,MAAM,UAAU,GAAG,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACxC,IAAI,UAAU,IAAI,UAAU,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAClD,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;YAC1D,OAAO;gBACN,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC;oBAC3B,IAAI;oBACJ,aAAa;oBACb,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC3B,CAAC;IACF,CAAC;IAED,8DAA8D;IAC9D,uEAAuE;IACvE,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAChC,2DAA2D,CAC3D,CAAC;IACF,IAAI,WAAW,EAAE,CAAC;QACjB,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;QACpD,OAAO;YACN,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC;gBAC7B,kBAAkB;gBAClB,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAC7B,CAAC;IAED,MAAM,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IAC1C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC1B,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -28,7 +28,7 @@ function showBanner() {
|
|
|
28
28
|
// ---------------------------------------------------------------------------
|
|
29
29
|
const TEMPLATE_MAP = {
|
|
30
30
|
default: "next-default",
|
|
31
|
-
|
|
31
|
+
webgpu: "next-webgl",
|
|
32
32
|
experiment: "next-experiments",
|
|
33
33
|
};
|
|
34
34
|
const TEMPLATE_LABELS = {
|
|
@@ -42,11 +42,11 @@ const TEMPLATE_LABELS = {
|
|
|
42
42
|
*/
|
|
43
43
|
function resolveTemplateFlag(opts) {
|
|
44
44
|
if (opts.default)
|
|
45
|
-
return TEMPLATE_MAP
|
|
46
|
-
if (opts.webgl)
|
|
47
|
-
return TEMPLATE_MAP
|
|
45
|
+
return TEMPLATE_MAP.default;
|
|
46
|
+
if (opts.webgpu || opts.webgl)
|
|
47
|
+
return TEMPLATE_MAP.webgpu;
|
|
48
48
|
if (opts.experiment)
|
|
49
|
-
return TEMPLATE_MAP
|
|
49
|
+
return TEMPLATE_MAP.experiment;
|
|
50
50
|
return undefined;
|
|
51
51
|
}
|
|
52
52
|
/** Resolve CMS from flags. */
|
|
@@ -90,9 +90,9 @@ async function runCreate(projectNameArg, opts) {
|
|
|
90
90
|
message: "What is the name of your project?",
|
|
91
91
|
initial: "my-basement-app",
|
|
92
92
|
validate: (v) => {
|
|
93
|
-
if (/^[
|
|
93
|
+
if (/^[a-z0-9][a-z0-9-_]*$/.test(v))
|
|
94
94
|
return true;
|
|
95
|
-
return "Project name may only include letters, numbers,
|
|
95
|
+
return "Project name may only include lowercase letters, numbers, hyphens, and underscores.";
|
|
96
96
|
},
|
|
97
97
|
}));
|
|
98
98
|
if (!value) {
|
|
@@ -245,10 +245,10 @@ async function runCreate(projectNameArg, opts) {
|
|
|
245
245
|
// ---------------------------------------------------------------------------
|
|
246
246
|
// Commander program
|
|
247
247
|
// ---------------------------------------------------------------------------
|
|
248
|
-
const pkg = { version: "0.
|
|
248
|
+
const pkg = { version: "0.2.5" };
|
|
249
249
|
const program = new Command();
|
|
250
250
|
program
|
|
251
|
-
.name("
|
|
251
|
+
.name("bsmnt")
|
|
252
252
|
.description("Scaffold basement Next.js projects")
|
|
253
253
|
.version(pkg.version);
|
|
254
254
|
// CREATE command
|
|
@@ -258,7 +258,8 @@ program
|
|
|
258
258
|
.description("Create a new basement project")
|
|
259
259
|
.argument("[project-name]", "Name of the project")
|
|
260
260
|
.option("-d, --default", "Use Default template")
|
|
261
|
-
.option("--
|
|
261
|
+
.option("--webgpu", "Use WebGPU template")
|
|
262
|
+
.option("--webgl", "Deprecated alias for --webgpu")
|
|
262
263
|
.option("--experiment", "Use Experiment template")
|
|
263
264
|
.option("--sanity", "Use Sanity CMS")
|
|
264
265
|
.option("--no-cms", "Skip CMS")
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "bsmnt",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.6",
|
|
4
4
|
"packageManager": "bun@1.2.20",
|
|
5
5
|
"description": "CLI to scaffold basement projects and add integrations",
|
|
6
6
|
"type": "module",
|
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
"!src/templates/*/.next",
|
|
21
21
|
"!src/templates/*/bun.lock",
|
|
22
22
|
"src/template-hooks",
|
|
23
|
+
"src/helpers/integrate/sanity/files",
|
|
23
24
|
"plugins"
|
|
24
25
|
],
|
|
25
26
|
"scripts": {
|
|
@@ -42,7 +43,9 @@
|
|
|
42
43
|
"lint:default": "turbo run lint --filter=bsmnt-next-starter",
|
|
43
44
|
"lint:webgpu": "turbo run lint --filter=bsmnt-webgpu-starter",
|
|
44
45
|
"lint:experiments": "turbo run lint --filter=bsmnt-experiments-starter",
|
|
45
|
-
"lint:all": "turbo run lint --filter=bsmnt-next-starter --filter=bsmnt-webgpu-starter --filter=bsmnt-experiments-starter"
|
|
46
|
+
"lint:all": "turbo run lint --filter=bsmnt-next-starter --filter=bsmnt-webgpu-starter --filter=bsmnt-experiments-starter",
|
|
47
|
+
"version-canary": "changeset version --snapshot canary",
|
|
48
|
+
"release-canary": "changeset publish --tag canary --no-git-tag"
|
|
46
49
|
},
|
|
47
50
|
"keywords": [
|
|
48
51
|
"webgpu",
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { NextResponse } from "next/server";
|
|
2
|
+
import { defineEnableDraftMode } from "next-sanity/draft-mode";
|
|
3
|
+
import { isSanityConfigured } from "@/lib/integrations/check-integration";
|
|
4
|
+
import { client } from "@/lib/integrations/sanity/client";
|
|
5
|
+
import { sanityToken } from "@/lib/integrations/sanity/env";
|
|
6
|
+
|
|
7
|
+
// Only enable draft mode if Sanity is configured
|
|
8
|
+
const draftModeHandler =
|
|
9
|
+
isSanityConfigured() && client
|
|
10
|
+
? defineEnableDraftMode({
|
|
11
|
+
client: client.withConfig({ token: sanityToken }),
|
|
12
|
+
})
|
|
13
|
+
: {
|
|
14
|
+
GET: () =>
|
|
15
|
+
NextResponse.json(
|
|
16
|
+
{ error: "Sanity is not configured" },
|
|
17
|
+
{ status: 503 },
|
|
18
|
+
),
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
export const { GET } = draftModeHandler;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { revalidateTag } from "next/cache";
|
|
2
|
+
import { type NextRequest, NextResponse } from "next/server";
|
|
3
|
+
import { parseBody } from "next-sanity/webhook";
|
|
4
|
+
|
|
5
|
+
export async function POST(request: NextRequest) {
|
|
6
|
+
try {
|
|
7
|
+
const { body, isValidSignature } = await parseBody<{
|
|
8
|
+
_type: string;
|
|
9
|
+
slug?: { current: string };
|
|
10
|
+
}>(request, process.env.SANITY_REVALIDATE_SECRET);
|
|
11
|
+
|
|
12
|
+
if (!isValidSignature) {
|
|
13
|
+
return new Response("Invalid signature", { status: 401 });
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
if (!body?._type) {
|
|
17
|
+
return new Response("Bad Request", { status: 400 });
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
// Revalidate the specific document type
|
|
21
|
+
revalidateTag(body._type, "max");
|
|
22
|
+
|
|
23
|
+
// If there's a slug, revalidate the specific page
|
|
24
|
+
if (body.slug?.current) {
|
|
25
|
+
revalidateTag(`${body._type}:${body.slug.current}`, "max");
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
return NextResponse.json({
|
|
29
|
+
status: 200,
|
|
30
|
+
revalidated: true,
|
|
31
|
+
now: Date.now(),
|
|
32
|
+
});
|
|
33
|
+
} catch (error) {
|
|
34
|
+
console.error("Revalidation error:", error);
|
|
35
|
+
return new Response("Internal Server Error", { status: 500 });
|
|
36
|
+
}
|
|
37
|
+
}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import type { Metadata, Viewport } from "next";
|
|
2
|
+
import { Geist } from "next/font/google";
|
|
3
|
+
import { type PropsWithChildren, Suspense } from "react";
|
|
4
|
+
import { SanityStudioGuard } from "@/components/sanity/studio-guard";
|
|
5
|
+
import { SanityVisualEditing } from "@/components/sanity/visual-editing";
|
|
6
|
+
import { Link } from "@/components/ui/link";
|
|
7
|
+
import { themes } from "@/lib/styles/colors";
|
|
8
|
+
import { fontsVariable } from "@/lib/styles/fonts";
|
|
9
|
+
import AppData from "@/package.json";
|
|
10
|
+
import "@/lib/styles/css/index.css";
|
|
11
|
+
import { cn } from "@/lib/styles/cn";
|
|
12
|
+
|
|
13
|
+
const APP_NAME = AppData.name;
|
|
14
|
+
const APP_DEFAULT_TITLE = "Basement Starter";
|
|
15
|
+
const APP_TITLE_TEMPLATE = "%s - Basement Starter";
|
|
16
|
+
const APP_DESCRIPTION = AppData.description;
|
|
17
|
+
const APP_BASE_URL =
|
|
18
|
+
process.env.NEXT_PUBLIC_BASE_URL ?? "http://localhost:3000";
|
|
19
|
+
|
|
20
|
+
const geist = Geist({
|
|
21
|
+
subsets: ["latin"],
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
export const metadata: Metadata = {
|
|
25
|
+
alternates: {
|
|
26
|
+
canonical: "/",
|
|
27
|
+
languages: {
|
|
28
|
+
"en-US": "/en-US",
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
appleWebApp: {
|
|
32
|
+
capable: true,
|
|
33
|
+
statusBarStyle: "default",
|
|
34
|
+
title: APP_DEFAULT_TITLE,
|
|
35
|
+
},
|
|
36
|
+
applicationName: APP_NAME,
|
|
37
|
+
authors: [{ name: "basement.studio", url: "https://basement.studio" }],
|
|
38
|
+
description: APP_DESCRIPTION,
|
|
39
|
+
formatDetection: { telephone: false },
|
|
40
|
+
metadataBase: new URL(APP_BASE_URL),
|
|
41
|
+
openGraph: {
|
|
42
|
+
description: APP_DESCRIPTION,
|
|
43
|
+
images: [
|
|
44
|
+
{
|
|
45
|
+
alt: APP_DEFAULT_TITLE,
|
|
46
|
+
height: 630,
|
|
47
|
+
url: "/opengraph-image.jpg",
|
|
48
|
+
width: 1200,
|
|
49
|
+
},
|
|
50
|
+
],
|
|
51
|
+
locale: "en_US",
|
|
52
|
+
siteName: APP_NAME,
|
|
53
|
+
title: {
|
|
54
|
+
default: APP_DEFAULT_TITLE,
|
|
55
|
+
template: APP_TITLE_TEMPLATE,
|
|
56
|
+
},
|
|
57
|
+
type: "website",
|
|
58
|
+
url: APP_BASE_URL,
|
|
59
|
+
},
|
|
60
|
+
other: {
|
|
61
|
+
"fb:app_id": process.env.NEXT_PUBLIC_FACEBOOK_APP_ID || "",
|
|
62
|
+
},
|
|
63
|
+
title: {
|
|
64
|
+
default: APP_DEFAULT_TITLE,
|
|
65
|
+
template: APP_TITLE_TEMPLATE,
|
|
66
|
+
},
|
|
67
|
+
twitter: {
|
|
68
|
+
card: "summary_large_image",
|
|
69
|
+
description: APP_DESCRIPTION,
|
|
70
|
+
title: {
|
|
71
|
+
default: APP_DEFAULT_TITLE,
|
|
72
|
+
template: APP_TITLE_TEMPLATE,
|
|
73
|
+
},
|
|
74
|
+
},
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
export const viewport: Viewport = {
|
|
78
|
+
colorScheme: "normal",
|
|
79
|
+
themeColor: themes.dark.primary,
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
export default function Layout({ children }: PropsWithChildren) {
|
|
83
|
+
return (
|
|
84
|
+
<html
|
|
85
|
+
lang="en"
|
|
86
|
+
dir="ltr"
|
|
87
|
+
className={cn(fontsVariable, geist.className)}
|
|
88
|
+
suppressHydrationWarning
|
|
89
|
+
>
|
|
90
|
+
<body>
|
|
91
|
+
<Suspense fallback={null}>
|
|
92
|
+
<SanityStudioGuard>
|
|
93
|
+
{/* Skip link for keyboard navigation accessibility */}
|
|
94
|
+
<Suspense fallback={null}>
|
|
95
|
+
<Link
|
|
96
|
+
href="#main-content"
|
|
97
|
+
className="sr-only focus:not-sr-only focus:fixed focus:top-4 focus:left-4 focus:z-9999 focus:rounded focus:bg-black focus:px-4 focus:py-2 focus:text-white focus:outline-none focus:ring-2 focus:ring-white"
|
|
98
|
+
>
|
|
99
|
+
Skip to main content
|
|
100
|
+
</Link>
|
|
101
|
+
</Suspense>
|
|
102
|
+
</SanityStudioGuard>
|
|
103
|
+
</Suspense>
|
|
104
|
+
|
|
105
|
+
{children}
|
|
106
|
+
|
|
107
|
+
<SanityVisualEditing />
|
|
108
|
+
</body>
|
|
109
|
+
</html>
|
|
110
|
+
);
|
|
111
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import type { MetadataRoute } from "next";
|
|
2
|
+
import { isSanityConfigured } from "@/lib/integrations/check-integration";
|
|
3
|
+
|
|
4
|
+
const APP_BASE_URL =
|
|
5
|
+
process.env.NEXT_PUBLIC_BASE_URL ?? "http://localhost:3000";
|
|
6
|
+
|
|
7
|
+
export default async function sitemap(): Promise<MetadataRoute.Sitemap> {
|
|
8
|
+
const baseRoutes: MetadataRoute.Sitemap = [
|
|
9
|
+
{
|
|
10
|
+
url: APP_BASE_URL,
|
|
11
|
+
lastModified: new Date(),
|
|
12
|
+
changeFrequency: "daily",
|
|
13
|
+
priority: 1,
|
|
14
|
+
},
|
|
15
|
+
];
|
|
16
|
+
|
|
17
|
+
// Only fetch Sanity pages if Sanity is configured
|
|
18
|
+
if (isSanityConfigured()) {
|
|
19
|
+
try {
|
|
20
|
+
const sanityModule = await import("@/lib/integrations/sanity/client");
|
|
21
|
+
const sanityGroq = await import("next-sanity");
|
|
22
|
+
|
|
23
|
+
const client = sanityModule?.client;
|
|
24
|
+
const groq = sanityGroq?.groq;
|
|
25
|
+
|
|
26
|
+
// Skip if client is null (shouldn't happen since we check isSanityConfigured)
|
|
27
|
+
if (!(client && groq)) return baseRoutes;
|
|
28
|
+
|
|
29
|
+
type SanityDocument = {
|
|
30
|
+
slug: { current: string };
|
|
31
|
+
_updatedAt: string;
|
|
32
|
+
metadata?: { noIndex?: boolean };
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
// Fetch all published pages and articles
|
|
36
|
+
const pages = (await client.fetch(
|
|
37
|
+
groq`*[_type == "page" && defined(slug.current)] {
|
|
38
|
+
slug,
|
|
39
|
+
_updatedAt,
|
|
40
|
+
metadata
|
|
41
|
+
}`,
|
|
42
|
+
)) as SanityDocument[];
|
|
43
|
+
|
|
44
|
+
const articles = (await client.fetch(
|
|
45
|
+
groq`*[_type == "article" && defined(slug.current)] {
|
|
46
|
+
slug,
|
|
47
|
+
_updatedAt,
|
|
48
|
+
metadata
|
|
49
|
+
}`,
|
|
50
|
+
)) as SanityDocument[];
|
|
51
|
+
|
|
52
|
+
// Add pages to sitemap (exclude noIndex pages)
|
|
53
|
+
const pageEntries: MetadataRoute.Sitemap = pages
|
|
54
|
+
.filter((page: SanityDocument) => !page.metadata?.noIndex)
|
|
55
|
+
.map((page: SanityDocument) => ({
|
|
56
|
+
url: `${APP_BASE_URL}/${page.slug.current}`,
|
|
57
|
+
lastModified: new Date(page._updatedAt),
|
|
58
|
+
changeFrequency: "weekly" as const,
|
|
59
|
+
priority: 0.8,
|
|
60
|
+
}));
|
|
61
|
+
|
|
62
|
+
// Add articles to sitemap (exclude noIndex articles)
|
|
63
|
+
const articleEntries: MetadataRoute.Sitemap = articles
|
|
64
|
+
.filter((article: SanityDocument) => !article.metadata?.noIndex)
|
|
65
|
+
.map((article: SanityDocument) => ({
|
|
66
|
+
url: `${APP_BASE_URL}/blog/${article.slug.current}`,
|
|
67
|
+
lastModified: new Date(article._updatedAt),
|
|
68
|
+
changeFrequency: "weekly" as const,
|
|
69
|
+
priority: 0.7,
|
|
70
|
+
}));
|
|
71
|
+
|
|
72
|
+
return [...baseRoutes, ...pageEntries, ...articleEntries];
|
|
73
|
+
} catch (error) {
|
|
74
|
+
console.error("Error generating sitemap from Sanity:", error);
|
|
75
|
+
return baseRoutes;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
return baseRoutes;
|
|
80
|
+
}
|