bsmnt 0.4.3 → 0.6.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/README.md +1 -0
- package/dist/application/add-hooks/index.d.ts.map +1 -1
- package/dist/application/add-hooks/index.js +1 -0
- package/dist/application/add-hooks/index.js.map +1 -1
- package/dist/application/add-integration/index.d.ts +33 -8
- package/dist/application/add-integration/index.d.ts.map +1 -1
- package/dist/application/add-integration/index.js +221 -90
- package/dist/application/add-integration/index.js.map +1 -1
- package/dist/application/create-project/build-context.d.ts +3 -1
- package/dist/application/create-project/build-context.d.ts.map +1 -1
- package/dist/application/create-project/build-context.js +2 -1
- package/dist/application/create-project/build-context.js.map +1 -1
- package/dist/application/create-project/index.d.ts +3 -1
- package/dist/application/create-project/index.d.ts.map +1 -1
- package/dist/application/create-project/index.js +4 -2
- package/dist/application/create-project/index.js.map +1 -1
- package/dist/application/create-project/map-selection-to-registry.js +1 -1
- package/dist/application/create-project/map-selection-to-registry.js.map +1 -1
- package/dist/application/install-skills/index.js +1 -1
- package/dist/application/install-skills/index.js.map +1 -1
- package/dist/application/shared/project-detection.d.ts +2 -2
- package/dist/application/shared/project-detection.d.ts.map +1 -1
- package/dist/application/shared/project-detection.js +2 -2
- package/dist/application/shared/project-detection.js.map +1 -1
- package/dist/core/create/execute-plan.d.ts +4 -0
- package/dist/core/create/execute-plan.d.ts.map +1 -1
- package/dist/core/create/execute-plan.js +8 -0
- package/dist/core/create/execute-plan.js.map +1 -1
- package/dist/core/create/internal-ids.d.ts +4 -1
- package/dist/core/create/internal-ids.d.ts.map +1 -1
- package/dist/core/create/internal-ids.js +6 -1
- package/dist/core/create/internal-ids.js.map +1 -1
- package/dist/core/create/types.d.ts +2 -0
- package/dist/core/create/types.d.ts.map +1 -1
- package/dist/domain/cms.d.ts +0 -7
- package/dist/domain/cms.d.ts.map +1 -1
- package/dist/domain/cms.js.map +1 -1
- package/dist/domain/forms.d.ts +17 -0
- package/dist/domain/forms.d.ts.map +1 -0
- package/dist/domain/forms.js +13 -0
- package/dist/domain/forms.js.map +1 -0
- package/dist/domain/integration.d.ts +30 -0
- package/dist/domain/integration.d.ts.map +1 -0
- package/dist/domain/integration.js +12 -0
- package/dist/domain/integration.js.map +1 -0
- package/dist/domain/skills.d.ts +58 -0
- package/dist/domain/skills.d.ts.map +1 -1
- package/dist/domain/skills.js +52 -0
- package/dist/domain/skills.js.map +1 -1
- package/dist/index.js +114 -38
- package/dist/index.js.map +1 -1
- package/dist/infrastructure/agents/register-sanity-mcp.js +9 -6
- package/dist/infrastructure/agents/register-sanity-mcp.js.map +1 -1
- package/dist/infrastructure/create/apply-package-json.d.ts.map +1 -1
- package/dist/infrastructure/create/apply-package-json.js +19 -0
- package/dist/infrastructure/create/apply-package-json.js.map +1 -1
- package/dist/infrastructure/create/executor.d.ts.map +1 -1
- package/dist/infrastructure/create/executor.js +5 -0
- package/dist/infrastructure/create/executor.js.map +1 -1
- package/dist/infrastructure/create/install-dependencies.d.ts.map +1 -1
- package/dist/infrastructure/create/install-dependencies.js +4 -0
- package/dist/infrastructure/create/install-dependencies.js.map +1 -1
- package/dist/infrastructure/create/lifecycle-registry.d.ts.map +1 -1
- package/dist/infrastructure/create/lifecycle-registry.js +2 -0
- package/dist/infrastructure/create/lifecycle-registry.js.map +1 -1
- package/dist/infrastructure/create/merge-registry.d.ts.map +1 -1
- package/dist/infrastructure/create/merge-registry.js +8 -0
- package/dist/infrastructure/create/merge-registry.js.map +1 -1
- package/dist/infrastructure/create/setup-agent.d.ts +2 -0
- package/dist/infrastructure/create/setup-agent.d.ts.map +1 -1
- package/dist/infrastructure/create/setup-agent.js +32 -8
- package/dist/infrastructure/create/setup-agent.js.map +1 -1
- package/dist/infrastructure/create/setup-dotenvx.d.ts +41 -0
- package/dist/infrastructure/create/setup-dotenvx.d.ts.map +1 -0
- package/dist/infrastructure/create/setup-dotenvx.js +502 -0
- package/dist/infrastructure/create/setup-dotenvx.js.map +1 -0
- package/dist/infrastructure/create/setup-sanity.d.ts +13 -1
- package/dist/infrastructure/create/setup-sanity.d.ts.map +1 -1
- package/dist/infrastructure/create/setup-sanity.js +74 -31
- package/dist/infrastructure/create/setup-sanity.js.map +1 -1
- package/dist/infrastructure/integrations/inject-integration.d.ts +3 -3
- package/dist/infrastructure/integrations/inject-integration.d.ts.map +1 -1
- package/dist/infrastructure/integrations/inject-integration.js +81 -37
- package/dist/infrastructure/integrations/inject-integration.js.map +1 -1
- package/dist/modules/features/cms/sanity/config.d.ts.map +1 -1
- package/dist/modules/features/cms/sanity/config.js +13 -6
- package/dist/modules/features/cms/sanity/config.js.map +1 -1
- package/dist/modules/features/cms/sanity/index.js +8 -2
- package/dist/modules/features/cms/sanity/index.js.map +1 -1
- package/dist/modules/features/cms/sanity/mergers/ci-workflow.d.ts +13 -0
- package/dist/modules/features/cms/sanity/mergers/ci-workflow.d.ts.map +1 -0
- package/dist/modules/features/cms/sanity/mergers/ci-workflow.js +38 -0
- package/dist/modules/features/cms/sanity/mergers/ci-workflow.js.map +1 -0
- package/dist/modules/features/cms/sanity/mergers/knip.d.ts +12 -0
- package/dist/modules/features/cms/sanity/mergers/knip.d.ts.map +1 -0
- package/dist/modules/features/cms/sanity/mergers/knip.js +38 -0
- package/dist/modules/features/cms/sanity/mergers/knip.js.map +1 -0
- package/dist/modules/features/cms/sanity/mergers/layout.d.ts.map +1 -1
- package/dist/modules/features/cms/sanity/mergers/layout.js +17 -3
- package/dist/modules/features/cms/sanity/mergers/layout.js.map +1 -1
- package/dist/modules/features/cms/sanity/mergers/sitemap.d.ts +3 -3
- package/dist/modules/features/cms/sanity/mergers/sitemap.d.ts.map +1 -1
- package/dist/modules/features/cms/sanity/mergers/sitemap.js +48 -62
- package/dist/modules/features/cms/sanity/mergers/sitemap.js.map +1 -1
- package/dist/modules/features/cms/sanity-pagebuilder/config.d.ts.map +1 -1
- package/dist/modules/features/cms/sanity-pagebuilder/config.js +8 -5
- package/dist/modules/features/cms/sanity-pagebuilder/config.js.map +1 -1
- package/dist/modules/features/cms/sanity-pagebuilder/index.js +2 -2
- package/dist/modules/features/cms/sanity-pagebuilder/index.js.map +1 -1
- package/dist/modules/features/env/dotenvx/config.d.ts +13 -0
- package/dist/modules/features/env/dotenvx/config.d.ts.map +1 -0
- package/dist/modules/features/env/dotenvx/config.js +47 -0
- package/dist/modules/features/env/dotenvx/config.js.map +1 -0
- package/dist/modules/features/forms/hubspot/config.d.ts +31 -0
- package/dist/modules/features/forms/hubspot/config.d.ts.map +1 -0
- package/dist/modules/features/forms/hubspot/config.js +25 -0
- package/dist/modules/features/forms/hubspot/config.js.map +1 -0
- package/dist/paths.d.ts +16 -0
- package/dist/paths.d.ts.map +1 -1
- package/dist/paths.js +16 -0
- package/dist/paths.js.map +1 -1
- package/package.json +21 -9
- package/src/agent-skills/json-ld/SKILL.md +85 -0
- package/src/agent-skills/manage-env/SKILL.md +67 -0
- package/src/assets/check-node-version.mjs +22 -0
- package/src/modules/features/cms/sanity/files/app/blog/[slug]/page.tsx +48 -21
- package/src/modules/features/cms/sanity/files/app/blog/page.tsx +54 -0
- package/src/modules/features/cms/sanity/files/app/feed.xml/route.ts +36 -0
- package/src/modules/features/cms/sanity/files/components/sanity/structured-data.tsx +83 -0
- package/src/modules/features/cms/sanity/files/lib/integrations/sanity/components/disable-draft-mode.tsx +3 -3
- package/src/modules/features/cms/sanity/files/lib/integrations/sanity/queries.ts +14 -0
- package/src/modules/features/cms/sanity/files/lib/integrations/sanity/sanity.config.ts +19 -3
- package/src/modules/features/cms/sanity/files/lib/integrations/sanity/sanity.types.ts +1 -0
- package/src/modules/features/cms/sanity/files/lib/integrations/sanity/schemas/article.ts +7 -7
- package/src/modules/features/cms/sanity/files/lib/integrations/sanity/schemas/index.ts +36 -1
- package/src/modules/features/cms/sanity/files/lib/integrations/sanity/schemas/metadata.ts +12 -1
- package/src/modules/features/cms/sanity/files/lib/integrations/sanity/schemas/structured-data-blocks.ts +416 -0
- package/src/modules/features/cms/sanity/files/lib/integrations/sanity/schemas/structured-data.ts +100 -0
- package/src/modules/features/cms/sanity/files/lib/integrations/sanity/structure.ts +37 -2
- package/src/modules/features/cms/sanity/files/lib/integrations/sanity/utils/page-json-ld.ts +208 -0
- package/src/modules/features/cms/sanity/files/lib/scripts/setup-ci-secrets.ts +117 -0
- package/src/modules/features/cms/sanity/files/lib/utils/rss.ts +96 -0
- package/src/modules/features/cms/sanity-pagebuilder/files/.knip.json +8 -0
- package/src/modules/features/cms/sanity-pagebuilder/files/app/api/[[...slug]]/route.ts +100 -0
- package/src/modules/features/cms/sanity-pagebuilder/files/app/api/draft-mode/disable/route.ts +7 -0
- package/src/modules/features/cms/sanity-pagebuilder/files/app/api/draft-mode/enable/route.ts +20 -0
- package/src/modules/features/cms/sanity-pagebuilder/files/app/api/revalidate/route.ts +126 -0
- package/src/modules/features/cms/sanity-pagebuilder/files/app/feed.xml/route.ts +40 -0
- package/src/modules/features/cms/sanity-pagebuilder/files/app/sitemap.md/route.ts +124 -0
- package/src/modules/features/cms/sanity-pagebuilder/files/app/studio/[[...tool]]/page.tsx +8 -0
- package/src/modules/features/cms/sanity-pagebuilder/files/components/sanity/draft-mode-toggle.tsx +27 -0
- package/src/modules/features/cms/sanity-pagebuilder/files/components/sanity/rich-text.tsx +87 -0
- package/src/modules/features/cms/sanity-pagebuilder/files/components/sanity/visual-editing.tsx +28 -0
- package/src/modules/features/cms/sanity-pagebuilder/files/components/ui/sanity-image/index.tsx +41 -0
- package/src/modules/features/cms/sanity-pagebuilder/files/lib/integrations/check-integration.ts +5 -0
- package/src/modules/features/cms/sanity-pagebuilder/files/lib/integrations/sanity/client.ts +27 -0
- package/src/modules/features/cms/sanity-pagebuilder/files/lib/integrations/sanity/components/disable-draft-mode.tsx +23 -0
- package/src/modules/features/cms/sanity-pagebuilder/files/lib/integrations/sanity/components/page-builder-input.tsx +39 -0
- package/src/modules/features/cms/sanity-pagebuilder/files/lib/integrations/sanity/components/page-category-input.tsx +50 -0
- package/src/modules/features/cms/sanity-pagebuilder/files/lib/integrations/sanity/components/same-as-input.tsx +66 -0
- package/src/modules/features/cms/sanity-pagebuilder/files/lib/integrations/sanity/components/slug-field.tsx +18 -0
- package/src/modules/features/cms/sanity-pagebuilder/files/lib/integrations/sanity/components/slug-input.tsx +14 -0
- package/src/modules/features/cms/sanity-pagebuilder/files/lib/integrations/sanity/confirm-publish-action.ts +40 -0
- package/src/modules/features/cms/sanity-pagebuilder/files/lib/integrations/sanity/env.ts +34 -0
- package/src/modules/features/cms/sanity-pagebuilder/files/lib/integrations/sanity/fetchers/layout.ts +67 -0
- package/src/modules/features/cms/sanity-pagebuilder/files/lib/integrations/sanity/fetchers/redirects.ts +17 -0
- package/src/modules/features/cms/sanity-pagebuilder/files/lib/integrations/sanity/icons.ts +79 -0
- package/src/modules/features/cms/sanity-pagebuilder/files/lib/integrations/sanity/live/index.tsx +88 -0
- package/src/modules/features/cms/sanity-pagebuilder/files/lib/integrations/sanity/markdown-proxy.config.ts +50 -0
- package/src/modules/features/cms/sanity-pagebuilder/files/lib/integrations/sanity/page-builder-config.ts +130 -0
- package/src/modules/features/cms/sanity-pagebuilder/files/lib/integrations/sanity/page-category.ts +28 -0
- package/src/modules/features/cms/sanity-pagebuilder/files/lib/integrations/sanity/page-tree-pane.tsx +420 -0
- package/src/modules/features/cms/sanity-pagebuilder/files/lib/integrations/sanity/pinned-pages.ts +54 -0
- package/src/modules/features/cms/sanity-pagebuilder/files/lib/integrations/sanity/presentation.ts +119 -0
- package/src/modules/features/cms/sanity-pagebuilder/files/lib/integrations/sanity/queries.ts +407 -0
- package/src/modules/features/cms/sanity-pagebuilder/files/lib/integrations/sanity/sanity.cli.ts +29 -0
- package/src/modules/features/cms/sanity-pagebuilder/files/lib/integrations/sanity/sanity.config.ts +113 -0
- package/src/modules/features/cms/sanity-pagebuilder/files/lib/integrations/sanity/schemas/components/index.ts +4 -0
- package/src/modules/features/cms/sanity-pagebuilder/files/lib/integrations/sanity/schemas/components/reusable/blog-content.ts +89 -0
- package/src/modules/features/cms/sanity-pagebuilder/files/lib/integrations/sanity/schemas/components/reusable/description.ts +29 -0
- package/src/modules/features/cms/sanity-pagebuilder/files/lib/integrations/sanity/schemas/components/reusable/hero.ts +28 -0
- package/src/modules/features/cms/sanity-pagebuilder/files/lib/integrations/sanity/schemas/components/singleton/content-collection.ts +45 -0
- package/src/modules/features/cms/sanity-pagebuilder/files/lib/integrations/sanity/schemas/content/author.ts +70 -0
- package/src/modules/features/cms/sanity-pagebuilder/files/lib/integrations/sanity/schemas/content/blog-category.ts +55 -0
- package/src/modules/features/cms/sanity-pagebuilder/files/lib/integrations/sanity/schemas/index.ts +124 -0
- package/src/modules/features/cms/sanity-pagebuilder/files/lib/integrations/sanity/schemas/layout/company-data.ts +70 -0
- package/src/modules/features/cms/sanity-pagebuilder/files/lib/integrations/sanity/schemas/layout/footer.ts +79 -0
- package/src/modules/features/cms/sanity-pagebuilder/files/lib/integrations/sanity/schemas/layout/navbar.ts +75 -0
- package/src/modules/features/cms/sanity-pagebuilder/files/lib/integrations/sanity/schemas/layout/redirect.ts +120 -0
- package/src/modules/features/cms/sanity-pagebuilder/files/lib/integrations/sanity/schemas/layout/structured-data.ts +124 -0
- package/src/modules/features/cms/sanity-pagebuilder/files/lib/integrations/sanity/schemas/shared/link.ts +125 -0
- package/src/modules/features/cms/sanity-pagebuilder/files/lib/integrations/sanity/schemas/shared/logo-field.ts +9 -0
- package/src/modules/features/cms/sanity-pagebuilder/files/lib/integrations/sanity/schemas/shared/metadata.ts +79 -0
- package/src/modules/features/cms/sanity-pagebuilder/files/lib/integrations/sanity/schemas/shared/nav-objects.ts +192 -0
- package/src/modules/features/cms/sanity-pagebuilder/files/lib/integrations/sanity/schemas/shared/page-builder.ts +39 -0
- package/src/modules/features/cms/sanity-pagebuilder/files/lib/integrations/sanity/schemas/shared/page-folder.ts +124 -0
- package/src/modules/features/cms/sanity-pagebuilder/files/lib/integrations/sanity/schemas/shared/page.ts +242 -0
- package/src/modules/features/cms/sanity-pagebuilder/files/lib/integrations/sanity/schemas/shared/richText.ts +63 -0
- package/src/modules/features/cms/sanity-pagebuilder/files/lib/integrations/sanity/schemas/shared/structured-data-blocks.ts +436 -0
- package/src/modules/features/cms/sanity-pagebuilder/files/lib/integrations/sanity/singletons.ts +51 -0
- package/src/modules/features/cms/sanity-pagebuilder/files/lib/integrations/sanity/structure.ts +330 -0
- package/src/modules/features/cms/sanity-pagebuilder/files/lib/integrations/sanity/utils/image.ts +8 -0
- package/src/modules/features/cms/sanity-pagebuilder/files/lib/integrations/sanity/utils/link.ts +140 -0
- package/src/modules/features/cms/sanity-pagebuilder/files/lib/integrations/sanity/utils/page-builder-markdown.ts +81 -0
- package/src/modules/features/cms/sanity-pagebuilder/files/lib/integrations/sanity/utils/page-json-ld.ts +208 -0
- package/src/modules/features/cms/sanity-pagebuilder/files/lib/scripts/sanity-typegen.ts +45 -0
- package/src/modules/features/cms/sanity-pagebuilder/files/lib/utils/check-redirect.ts +30 -0
- package/src/modules/features/cms/sanity-pagebuilder/files/lib/utils/json-ld.tsx +521 -0
- package/src/modules/features/cms/sanity-pagebuilder/files/lib/utils/metadata.ts +167 -0
- package/src/modules/features/cms/sanity-pagebuilder/files/lib/utils/rss.ts +96 -0
- package/src/modules/features/cms/sanity-pagebuilder/files/lib/utils/sitemap.ts +40 -0
- package/src/modules/features/cms/sanity-pagebuilder/files/proxy.ts +81 -0
- package/src/modules/features/env/dotenvx/files/decrypt-env.mjs +45 -0
- package/src/modules/features/env/dotenvx/files/gitleaks.yml +25 -0
- package/src/modules/features/env/dotenvx/files/instrumentation.ts +14 -0
- package/src/modules/features/env/dotenvx/files/push-keys.mjs +129 -0
- package/src/modules/features/env/dotenvx/files/save-key.mjs +108 -0
- package/src/modules/features/env/dotenvx/files/setup-env.mjs +67 -0
- package/src/modules/features/env/dotenvx/files/vercelignore +4 -0
- package/src/modules/features/env/dotenvx/files/write-env.mjs +47 -0
- package/src/templates/next-default/.env.example +14 -6
- package/src/templates/next-default/.github/workflows/ci.yml +83 -0
- package/src/templates/next-default/.vscode/extensions.json +3 -0
- package/src/templates/next-default/README.md +53 -0
- package/src/templates/next-default/knip.json +14 -0
- package/src/templates/next-default/lefthook.yml +5 -0
- package/src/templates/next-default/lib/utils/json-ld.tsx +327 -21
- package/src/templates/next-default/next.config.ts +6 -0
- package/src/templates/next-default/package.json +8 -4
- package/src/templates/next-experiments/.env.example +14 -6
- package/src/templates/next-experiments/.github/workflows/ci.yml +83 -0
- package/src/templates/next-experiments/.vscode/extensions.json +3 -0
- package/src/templates/next-experiments/README.md +53 -0
- package/src/templates/next-experiments/knip.json +14 -0
- package/src/templates/next-experiments/lefthook.yml +30 -0
- package/src/templates/next-experiments/lib/utils/json-ld.tsx +327 -21
- package/src/templates/next-experiments/next.config.ts +6 -0
- package/src/templates/next-experiments/package.json +10 -2
- package/src/templates/next-pagebuilder/.env.example +19 -1
- package/src/templates/next-pagebuilder/.github/workflows/ci.yml +90 -0
- package/src/templates/next-pagebuilder/.vscode/extensions.json +3 -0
- package/src/templates/next-pagebuilder/README.md +65 -0
- package/src/templates/next-pagebuilder/app/(content)/[[...slug]]/page.tsx +6 -1
- package/src/templates/next-pagebuilder/app/(content)/layout.tsx +3 -12
- package/src/templates/next-pagebuilder/components/layout/footer/index.tsx +11 -10
- package/src/templates/next-pagebuilder/components/layout/header/index.tsx +5 -3
- package/src/templates/next-pagebuilder/components/layout/json-ld/index.tsx +38 -26
- package/src/templates/next-pagebuilder/components/layout/wrapper/index.tsx +3 -11
- package/src/templates/next-pagebuilder/components/page-builder/components/content-collection/index.tsx +1 -1
- package/src/templates/next-pagebuilder/components/page-document/index.tsx +38 -0
- package/src/templates/next-pagebuilder/knip.json +27 -0
- package/src/templates/next-pagebuilder/lefthook.yml +5 -0
- package/src/templates/next-pagebuilder/lib/integrations/sanity/sanity.types.ts +36 -2
- package/src/templates/next-pagebuilder/lib/scripts/setup-ci-secrets.ts +117 -0
- package/src/templates/next-pagebuilder/next.config.ts +6 -0
- package/src/templates/next-pagebuilder/package.json +9 -3
- package/src/templates/next-webgl/.env.example +14 -6
- package/src/templates/next-webgl/.github/workflows/ci.yml +83 -0
- package/src/templates/next-webgl/.vscode/extensions.json +3 -0
- package/src/templates/next-webgl/README.md +53 -0
- package/src/templates/next-webgl/knip.json +13 -0
- package/src/templates/next-webgl/lefthook.yml +5 -0
- package/src/templates/next-webgl/lib/utils/json-ld.tsx +327 -21
- package/src/templates/next-webgl/next.config.ts +6 -0
- package/src/templates/next-webgl/package.json +8 -4
- package/src/modules/features/cms/sanity/files/lib/utils/json-ld.tsx +0 -244
|
@@ -9,11 +9,12 @@ export const sanityConfig = {
|
|
|
9
9
|
"@portabletext/markdown": "^1.1.3",
|
|
10
10
|
"@portabletext/types": "^2.0.13",
|
|
11
11
|
"@sanity/asset-utils": "^2.3.0",
|
|
12
|
-
"@sanity/
|
|
13
|
-
"@sanity/
|
|
14
|
-
"@sanity/
|
|
15
|
-
"
|
|
16
|
-
sanity: "^
|
|
12
|
+
"@sanity/icons": "^3.7.4",
|
|
13
|
+
"@sanity/image-url": "^2.1.1",
|
|
14
|
+
"@sanity/visual-editing": "^5.4.3",
|
|
15
|
+
"@sanity/vision": "^5.30.0",
|
|
16
|
+
"next-sanity": "^13.0.10",
|
|
17
|
+
sanity: "^5.30.0",
|
|
17
18
|
"sanity-plugin-media": "^2.3.0",
|
|
18
19
|
},
|
|
19
20
|
devDependencies: {
|
|
@@ -26,22 +27,26 @@ export const sanityConfig = {
|
|
|
26
27
|
dev: "bun ./lib/scripts/dev.ts",
|
|
27
28
|
prebuild: "bun run sanity:typegen",
|
|
28
29
|
build: "next build",
|
|
30
|
+
"ci:secrets": "bun ./lib/scripts/setup-ci-secrets.ts",
|
|
29
31
|
},
|
|
30
32
|
additivePaths: [
|
|
31
33
|
"lib/integrations/sanity",
|
|
34
|
+
"components/sanity",
|
|
32
35
|
"components/ui/sanity-image",
|
|
33
36
|
"app/api/draft-mode",
|
|
34
37
|
"app/api/revalidate",
|
|
35
38
|
"app/studio",
|
|
36
39
|
"app/api/blog",
|
|
37
40
|
"app/blog",
|
|
41
|
+
"app/feed.xml",
|
|
38
42
|
"app/sitemap.md",
|
|
43
|
+
"lib/utils/rss.ts",
|
|
39
44
|
"lib/utils/url.ts",
|
|
40
|
-
"lib/utils/json-ld.tsx",
|
|
41
45
|
"lib/utils/metadata.ts",
|
|
42
46
|
"lib/utils/portable-text-to-markdown.ts",
|
|
43
47
|
"lib/scripts/generate-page.ts",
|
|
44
48
|
"lib/scripts/copy-sanity-mcp.ts",
|
|
49
|
+
"lib/scripts/setup-ci-secrets.ts",
|
|
45
50
|
"lib/integrations/README.md",
|
|
46
51
|
"proxy.ts",
|
|
47
52
|
],
|
|
@@ -49,6 +54,8 @@ export const sanityConfig = {
|
|
|
49
54
|
"app/layout.tsx",
|
|
50
55
|
"app/sitemap.xml/route.ts",
|
|
51
56
|
"lib/integrations/check-integration.ts",
|
|
57
|
+
".github/workflows/ci.yml",
|
|
58
|
+
"knip.json",
|
|
52
59
|
],
|
|
53
60
|
};
|
|
54
61
|
//# sourceMappingURL=config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../../src/modules/features/cms/sanity/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAWH,MAAM,CAAC,MAAM,YAAY,GAA4B;IACpD,IAAI,EAAE,QAAQ;IAEd,YAAY,EAAE;QACb,gBAAgB,EAAE,QAAQ;QAC1B,wBAAwB,EAAE,QAAQ;QAClC,qBAAqB,EAAE,SAAS;QAChC,qBAAqB,EAAE,QAAQ;QAC/B,mBAAmB,EAAE,QAAQ;QAC7B,wBAAwB,EAAE,QAAQ;QAClC,gBAAgB,EAAE,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../../src/modules/features/cms/sanity/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAWH,MAAM,CAAC,MAAM,YAAY,GAA4B;IACpD,IAAI,EAAE,QAAQ;IAEd,YAAY,EAAE;QACb,gBAAgB,EAAE,QAAQ;QAC1B,wBAAwB,EAAE,QAAQ;QAClC,qBAAqB,EAAE,SAAS;QAChC,qBAAqB,EAAE,QAAQ;QAC/B,eAAe,EAAE,QAAQ;QACzB,mBAAmB,EAAE,QAAQ;QAC7B,wBAAwB,EAAE,QAAQ;QAClC,gBAAgB,EAAE,SAAS;QAC3B,aAAa,EAAE,UAAU;QACzB,MAAM,EAAE,SAAS;QACjB,qBAAqB,EAAE,QAAQ;KAC/B;IAED,eAAe,EAAE;QAChB,YAAY,EAAE,QAAQ;KACtB;IAED,OAAO,EAAE;QACR,gBAAgB,EACf,wFAAwF;QACzF,gBAAgB,EACf,0LAA0L;QAC3L,MAAM,EAAE,wBAAwB;QAChC,GAAG,EAAE,0BAA0B;QAC/B,QAAQ,EAAE,wBAAwB;QAClC,KAAK,EAAE,YAAY;QACnB,YAAY,EAAE,uCAAuC;KACrD;IAED,aAAa,EAAE;QACd,yBAAyB;QACzB,mBAAmB;QACnB,4BAA4B;QAC5B,oBAAoB;QACpB,oBAAoB;QACpB,YAAY;QACZ,cAAc;QACd,UAAU;QACV,cAAc;QACd,gBAAgB;QAChB,kBAAkB;QAClB,kBAAkB;QAClB,uBAAuB;QACvB,wCAAwC;QACxC,8BAA8B;QAC9B,gCAAgC;QAChC,iCAAiC;QACjC,4BAA4B;QAC5B,UAAU;KACV;IAED,UAAU,EAAE;QACX,gBAAgB;QAChB,0BAA0B;QAC1B,uCAAuC;QACvC,0BAA0B;QAC1B,WAAW;KACX;CACD,CAAC"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import path from "node:path";
|
|
2
|
-
import {
|
|
2
|
+
import { CREATE_LIFECYCLE_STEP_IDS, CREATE_MERGER_IDS, SANITY_FEATURE_MODULE_ID, } from "../../../../core/create/internal-ids.js";
|
|
3
3
|
import { SANITY_FILES_DIR } from "../../../../paths.js";
|
|
4
4
|
import { sanityConfig } from "./config.js";
|
|
5
5
|
export const sanityFeature = {
|
|
6
|
-
id:
|
|
6
|
+
id: SANITY_FEATURE_MODULE_ID,
|
|
7
7
|
kind: "feature",
|
|
8
8
|
label: "Sanity",
|
|
9
9
|
contribute(context) {
|
|
@@ -56,6 +56,12 @@ function getSanityMergerId(relativePath) {
|
|
|
56
56
|
if (relativePath === "lib/integrations/check-integration.ts") {
|
|
57
57
|
return CREATE_MERGER_IDS.sanityCheckIntegration;
|
|
58
58
|
}
|
|
59
|
+
if (relativePath === ".github/workflows/ci.yml") {
|
|
60
|
+
return CREATE_MERGER_IDS.sanityCiWorkflow;
|
|
61
|
+
}
|
|
62
|
+
if (relativePath === "knip.json") {
|
|
63
|
+
return CREATE_MERGER_IDS.sanityKnip;
|
|
64
|
+
}
|
|
59
65
|
throw new Error(`Unsupported Sanity merge path: ${relativePath}`);
|
|
60
66
|
}
|
|
61
67
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/modules/features/cms/sanity/index.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EACN,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/modules/features/cms/sanity/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
interface MergeResult {
|
|
2
|
+
skipped?: boolean;
|
|
3
|
+
reason?: string;
|
|
4
|
+
success?: boolean;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Inject the Sanity build env into the project's CI workflow Build step.
|
|
8
|
+
* No-ops if the workflow already references the Sanity env or has no
|
|
9
|
+
* recognizable `bun run build` step.
|
|
10
|
+
*/
|
|
11
|
+
export declare function mergeCiWorkflow(workflowPath: string): Promise<MergeResult>;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=ci-workflow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ci-workflow.d.ts","sourceRoot":"","sources":["../../../../../../src/modules/features/cms/sanity/mergers/ci-workflow.ts"],"names":[],"mappings":"AAmBA,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,eAAe,CACpC,YAAY,EAAE,MAAM,GAClB,OAAO,CAAC,WAAW,CAAC,CAuBtB"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import fs from "fs-extra";
|
|
2
|
+
/**
|
|
3
|
+
* Sanity build env injected into the CI workflow's Build step.
|
|
4
|
+
* Project ID and dataset are public (they ship in the client bundle) so they
|
|
5
|
+
* come from repository *variables*; the read token is a *secret*.
|
|
6
|
+
*/
|
|
7
|
+
const SANITY_BUILD_ENV = ` env:
|
|
8
|
+
# Sanity project ID and dataset are public (they ship in the client
|
|
9
|
+
# bundle), so they come from repository variables. The read token is
|
|
10
|
+
# a secret. Set them with \`bun run ci:secrets\` or under
|
|
11
|
+
# Settings → Secrets and variables → Actions.
|
|
12
|
+
NEXT_PUBLIC_SANITY_PROJECT_ID: \${{ vars.NEXT_PUBLIC_SANITY_PROJECT_ID }}
|
|
13
|
+
NEXT_PUBLIC_SANITY_DATASET: \${{ vars.NEXT_PUBLIC_SANITY_DATASET }}
|
|
14
|
+
SANITY_API_READ_TOKEN: \${{ secrets.SANITY_API_READ_TOKEN }}
|
|
15
|
+
`;
|
|
16
|
+
const BUILD_STEP = " run: bun run build\n";
|
|
17
|
+
/**
|
|
18
|
+
* Inject the Sanity build env into the project's CI workflow Build step.
|
|
19
|
+
* No-ops if the workflow already references the Sanity env or has no
|
|
20
|
+
* recognizable `bun run build` step.
|
|
21
|
+
*/
|
|
22
|
+
export async function mergeCiWorkflow(workflowPath) {
|
|
23
|
+
if (!(await fs.pathExists(workflowPath))) {
|
|
24
|
+
return { skipped: true, reason: "No CI workflow to update" };
|
|
25
|
+
}
|
|
26
|
+
const content = await fs.readFile(workflowPath, "utf-8");
|
|
27
|
+
if (content.includes("NEXT_PUBLIC_SANITY_PROJECT_ID")) {
|
|
28
|
+
return { skipped: true, reason: "Workflow already has Sanity env" };
|
|
29
|
+
}
|
|
30
|
+
if (!content.includes(BUILD_STEP)) {
|
|
31
|
+
return { skipped: true, reason: "No `bun run build` step found" };
|
|
32
|
+
}
|
|
33
|
+
// Insert the env block immediately after the Build step's run line.
|
|
34
|
+
const updated = content.replace(BUILD_STEP, `${BUILD_STEP}${SANITY_BUILD_ENV}`);
|
|
35
|
+
await fs.writeFile(workflowPath, updated);
|
|
36
|
+
return { success: true };
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=ci-workflow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ci-workflow.js","sourceRoot":"","sources":["../../../../../../src/modules/features/cms/sanity/mergers/ci-workflow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAC;AAE1B;;;;GAIG;AACH,MAAM,gBAAgB,GAAG;;;;;;;;CAQxB,CAAC;AAEF,MAAM,UAAU,GAAG,8BAA8B,CAAC;AAQlD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACpC,YAAoB;IAEpB,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC;QAC1C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,0BAA0B,EAAE,CAAC;IAC9D,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IAEzD,IAAI,OAAO,CAAC,QAAQ,CAAC,+BAA+B,CAAC,EAAE,CAAC;QACvD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,iCAAiC,EAAE,CAAC;IACrE,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACnC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,+BAA+B,EAAE,CAAC;IACnE,CAAC;IAED,oEAAoE;IACpE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAC9B,UAAU,EACV,GAAG,UAAU,GAAG,gBAAgB,EAAE,CAClC,CAAC;IAEF,MAAM,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IAC1C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC1B,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
interface MergeResult {
|
|
2
|
+
skipped?: boolean;
|
|
3
|
+
reason?: string;
|
|
4
|
+
success?: boolean;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Merge the Sanity knip entries/ignores into the project's `knip.json` so
|
|
8
|
+
* dead-code analysis stays green once the Sanity files are in place.
|
|
9
|
+
*/
|
|
10
|
+
export declare function mergeKnip(knipPath: string): Promise<MergeResult>;
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=knip.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"knip.d.ts","sourceRoot":"","sources":["../../../../../../src/modules/features/cms/sanity/mergers/knip.ts"],"names":[],"mappings":"AAsBA,UAAU,WAAW;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CAClB;AAWD;;;GAGG;AACH,wBAAsB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAgBtE"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import fs from "fs-extra";
|
|
2
|
+
/**
|
|
3
|
+
* knip config additions for the Sanity surface. Adding Sanity brings a large
|
|
4
|
+
* set of intentional-but-unimported files (schemas, Studio config, generated
|
|
5
|
+
* types) plus a few transitive/CLI deps, so without these a fresh
|
|
6
|
+
* Sanity-enabled project would fail `bun run knip` in CI.
|
|
7
|
+
*/
|
|
8
|
+
const SANITY_ENTRY = ["lib/integrations/**/*.{ts,tsx}"];
|
|
9
|
+
const SANITY_IGNORE_DEPENDENCIES = [
|
|
10
|
+
"@sanity/visual-editing",
|
|
11
|
+
"@portabletext/react",
|
|
12
|
+
];
|
|
13
|
+
const SANITY_IGNORE_BINARIES = ["gh"];
|
|
14
|
+
/** Union `additions` into `existing`, preserving order and dropping dupes. */
|
|
15
|
+
function union(existing, additions) {
|
|
16
|
+
const result = [...(existing ?? [])];
|
|
17
|
+
for (const item of additions) {
|
|
18
|
+
if (!result.includes(item))
|
|
19
|
+
result.push(item);
|
|
20
|
+
}
|
|
21
|
+
return result;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Merge the Sanity knip entries/ignores into the project's `knip.json` so
|
|
25
|
+
* dead-code analysis stays green once the Sanity files are in place.
|
|
26
|
+
*/
|
|
27
|
+
export async function mergeKnip(knipPath) {
|
|
28
|
+
if (!(await fs.pathExists(knipPath))) {
|
|
29
|
+
return { skipped: true, reason: "No knip.json to update" };
|
|
30
|
+
}
|
|
31
|
+
const config = (await fs.readJson(knipPath));
|
|
32
|
+
config.entry = union(config.entry, SANITY_ENTRY);
|
|
33
|
+
config.ignoreDependencies = union(config.ignoreDependencies, SANITY_IGNORE_DEPENDENCIES);
|
|
34
|
+
config.ignoreBinaries = union(config.ignoreBinaries, SANITY_IGNORE_BINARIES);
|
|
35
|
+
await fs.writeJson(knipPath, config, { spaces: 2 });
|
|
36
|
+
return { success: true };
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=knip.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"knip.js","sourceRoot":"","sources":["../../../../../../src/modules/features/cms/sanity/mergers/knip.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAC;AAE1B;;;;;GAKG;AACH,MAAM,YAAY,GAAG,CAAC,gCAAgC,CAAC,CAAC;AACxD,MAAM,0BAA0B,GAAG;IAClC,wBAAwB;IACxB,qBAAqB;CACrB,CAAC;AACF,MAAM,sBAAsB,GAAG,CAAC,IAAI,CAAC,CAAC;AAetC,8EAA8E;AAC9E,SAAS,KAAK,CAAC,QAA8B,EAAE,SAAmB;IACjE,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC;IACrC,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC9B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,MAAM,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,QAAgB;IAC/C,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;QACtC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,wBAAwB,EAAE,CAAC;IAC5D,CAAC;IAED,MAAM,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAe,CAAC;IAE3D,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;IACjD,MAAM,CAAC,kBAAkB,GAAG,KAAK,CAChC,MAAM,CAAC,kBAAkB,EACzB,0BAA0B,CAC1B,CAAC;IACF,MAAM,CAAC,cAAc,GAAG,KAAK,CAAC,MAAM,CAAC,cAAc,EAAE,sBAAsB,CAAC,CAAC;IAE7E,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;IACpD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC1B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../../../../../src/modules/features/cms/sanity/mergers/layout.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.d.ts","sourceRoot":"","sources":["../../../../../../src/modules/features/cms/sanity/mergers/layout.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,CA+KtB"}
|
|
@@ -71,13 +71,27 @@ export async function mergeLayout(templatePath, { targetDir, pathPrefix } = {})
|
|
|
71
71
|
content.includes("isSanityConfigured")) {
|
|
72
72
|
return { skipped: true, reason: "Already has Sanity integration" };
|
|
73
73
|
}
|
|
74
|
+
// 0. Swap the static site-wide JSON-LD for the CMS-driven component. Only
|
|
75
|
+
// swap when both the import and the usage are present, to avoid leaving a
|
|
76
|
+
// dangling reference.
|
|
77
|
+
const jsonLdImportRe = /import\s*\{[^}]*\}\s*from\s*["']@\/lib\/utils\/json-ld["'];?\n?/;
|
|
78
|
+
const jsonLdUsageRe = /<JsonLd\s+data=\{generateWebSiteJsonLd\([\s\S]*?\}\)\}\s*\/>\s*<JsonLd\s+data=\{generateOrganizationJsonLd\([\s\S]*?\}\)\}\s*\/>/;
|
|
79
|
+
if (jsonLdImportRe.test(content) && jsonLdUsageRe.test(content)) {
|
|
80
|
+
content = content
|
|
81
|
+
.replace(jsonLdImportRe, `import { SanityStructuredData } from "@/components/sanity/structured-data"\n`)
|
|
82
|
+
.replace(jsonLdUsageRe, `<SanityStructuredData\n fallbackName={APP_NAME}\n fallbackDescription={APP_DESCRIPTION}\n fallbackLogo="/opengraph-image.jpg"\n />`);
|
|
83
|
+
}
|
|
74
84
|
// 1. Add Sanity imports after the full top-level import section.
|
|
75
|
-
//
|
|
85
|
+
// Each statement ends at its module specifier's closing quote, with an
|
|
86
|
+
// optional semicolon (templates use Biome's `asNeeded` style, so most have
|
|
87
|
+
// none). Matching the quote (not `;`) keeps multiline and side-effect
|
|
88
|
+
// imports intact:
|
|
76
89
|
// import {
|
|
77
90
|
// Foo,
|
|
78
91
|
// Bar,
|
|
79
|
-
// } from "baz"
|
|
80
|
-
|
|
92
|
+
// } from "baz"
|
|
93
|
+
// import "./styles.css"
|
|
94
|
+
const importSectionMatch = content.match(/^(?:import[\s\S]+?["'];?\r?\n)+/m);
|
|
81
95
|
if (importSectionMatch && importSectionMatch.index !== undefined) {
|
|
82
96
|
const insertPos = importSectionMatch.index + importSectionMatch[0].length;
|
|
83
97
|
content =
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"layout.js","sourceRoot":"","sources":["../../../../../../src/modules/features/cms/sanity/mergers/layout.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,iEAAiE;IACjE,
|
|
1
|
+
{"version":3,"file":"layout.js","sourceRoot":"","sources":["../../../../../../src/modules/features/cms/sanity/mergers/layout.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,9 +4,9 @@ interface MergeResult {
|
|
|
4
4
|
success?: boolean;
|
|
5
5
|
}
|
|
6
6
|
/**
|
|
7
|
-
* Merge Sanity
|
|
8
|
-
*
|
|
9
|
-
*
|
|
7
|
+
* Merge Sanity article fetching into the template sitemap. Preserves the
|
|
8
|
+
* template's agnostic structure (getStaticEntries/toXml/Response) and appends
|
|
9
|
+
* article entries to the static ones.
|
|
10
10
|
*/
|
|
11
11
|
export declare function mergeSitemap(templatePath: string): Promise<MergeResult>;
|
|
12
12
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sitemap.d.ts","sourceRoot":"","sources":["../../../../../../src/modules/features/cms/sanity/mergers/sitemap.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sitemap.d.ts","sourceRoot":"","sources":["../../../../../../src/modules/features/cms/sanity/mergers/sitemap.ts"],"names":[],"mappings":"AAgDA,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"}
|
|
@@ -1,14 +1,9 @@
|
|
|
1
1
|
import fs from "fs-extra";
|
|
2
|
-
/**
|
|
3
|
-
* Sanity-specific import to add
|
|
4
|
-
*/
|
|
5
2
|
const SANITY_IMPORT = `import { isSanityConfigured } from "@/lib/integrations/check-integration"`;
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
*/
|
|
3
|
+
// The template line that builds the static entries; articles are appended after it.
|
|
4
|
+
const ENTRIES_ANCHOR = /^[ \t]*const entries: SitemapEntry\[\] = getStaticEntries\(\)[ \t]*$/m;
|
|
5
|
+
// Appends published (non-noIndex) articles to `entries` in the template's SitemapEntry shape.
|
|
10
6
|
const SANITY_FETCH_LOGIC = `
|
|
11
|
-
// Only fetch Sanity articles if Sanity is configured
|
|
12
7
|
if (isSanityConfigured()) {
|
|
13
8
|
try {
|
|
14
9
|
const sanityModule = await import("@/lib/integrations/sanity/client")
|
|
@@ -17,75 +12,66 @@ const SANITY_FETCH_LOGIC = `
|
|
|
17
12
|
const client = sanityModule?.client
|
|
18
13
|
const groq = sanityGroq?.groq
|
|
19
14
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
metadata?: { noIndex?: boolean }
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
const articles = (await client.fetch(
|
|
30
|
-
groq\`*[_type == "article" && defined(slug.current)] {
|
|
31
|
-
slug,
|
|
32
|
-
_updatedAt,
|
|
33
|
-
metadata
|
|
34
|
-
}\`
|
|
35
|
-
)) as SanityDocument[]
|
|
15
|
+
if (client && groq) {
|
|
16
|
+
type SanityArticle = {
|
|
17
|
+
slug: { current: string }
|
|
18
|
+
_updatedAt: string
|
|
19
|
+
metadata?: { noIndex?: boolean }
|
|
20
|
+
}
|
|
36
21
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
priority: 0.7,
|
|
45
|
-
}))
|
|
22
|
+
const articles = (await client.fetch(
|
|
23
|
+
groq\`*[_type == "article" && defined(slug.current)] {
|
|
24
|
+
slug,
|
|
25
|
+
_updatedAt,
|
|
26
|
+
metadata
|
|
27
|
+
}\`
|
|
28
|
+
)) as SanityArticle[]
|
|
46
29
|
|
|
47
|
-
|
|
30
|
+
for (const article of articles) {
|
|
31
|
+
if (article.metadata?.noIndex) continue
|
|
32
|
+
entries.push({
|
|
33
|
+
loc: \`\${BASE_URL}/blog/\${article.slug.current}\`,
|
|
34
|
+
lastmod: new Date(article._updatedAt).toISOString(),
|
|
35
|
+
changefreq: "weekly",
|
|
36
|
+
priority: 0.7,
|
|
37
|
+
})
|
|
38
|
+
}
|
|
39
|
+
}
|
|
48
40
|
} catch (error) {
|
|
49
41
|
console.error("Error generating sitemap from Sanity:", error)
|
|
50
|
-
return baseRoutes
|
|
51
42
|
}
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
`;
|
|
43
|
+
}`;
|
|
55
44
|
/**
|
|
56
|
-
* Merge Sanity
|
|
57
|
-
*
|
|
58
|
-
*
|
|
45
|
+
* Merge Sanity article fetching into the template sitemap. Preserves the
|
|
46
|
+
* template's agnostic structure (getStaticEntries/toXml/Response) and appends
|
|
47
|
+
* article entries to the static ones.
|
|
59
48
|
*/
|
|
60
49
|
export async function mergeSitemap(templatePath) {
|
|
61
50
|
let content = await fs.readFile(templatePath, "utf-8");
|
|
62
|
-
// Skip if already has Sanity integration
|
|
63
51
|
if (content.includes("isSanityConfigured")) {
|
|
64
52
|
return { skipped: true, reason: "Already has Sanity integration" };
|
|
65
53
|
}
|
|
66
|
-
//
|
|
67
|
-
const
|
|
68
|
-
if (
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
content.slice(0, insertPos) +
|
|
74
|
-
"\n" +
|
|
75
|
-
SANITY_IMPORT +
|
|
76
|
-
content.slice(insertPos);
|
|
77
|
-
}
|
|
54
|
+
// Bail before editing so a structure change never leaves an unused import.
|
|
55
|
+
const anchorMatch = content.match(ENTRIES_ANCHOR);
|
|
56
|
+
if (!anchorMatch) {
|
|
57
|
+
return {
|
|
58
|
+
skipped: true,
|
|
59
|
+
reason: "Sitemap template structure not recognized; skipped Sanity injection",
|
|
60
|
+
};
|
|
78
61
|
}
|
|
79
|
-
//
|
|
80
|
-
|
|
81
|
-
const
|
|
82
|
-
if (
|
|
83
|
-
const
|
|
62
|
+
// 1. Add Sanity import after the last existing import.
|
|
63
|
+
const importMatches = [...content.matchAll(/^import .+$/gm)];
|
|
64
|
+
const lastImport = importMatches.at(-1);
|
|
65
|
+
if (lastImport?.index !== undefined) {
|
|
66
|
+
const insertPos = lastImport.index + lastImport[0].length;
|
|
84
67
|
content =
|
|
85
|
-
content.slice(0,
|
|
86
|
-
|
|
87
|
-
|
|
68
|
+
content.slice(0, insertPos) +
|
|
69
|
+
"\n" +
|
|
70
|
+
SANITY_IMPORT +
|
|
71
|
+
content.slice(insertPos);
|
|
88
72
|
}
|
|
73
|
+
// 2. Append the article-fetch logic right after the static entries are built.
|
|
74
|
+
content = content.replace(anchorMatch[0], `${anchorMatch[0]}\n${SANITY_FETCH_LOGIC}`);
|
|
89
75
|
await fs.writeFile(templatePath, content);
|
|
90
76
|
return { success: true };
|
|
91
77
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sitemap.js","sourceRoot":"","sources":["../../../../../../src/modules/features/cms/sanity/mergers/sitemap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAC;AAE1B
|
|
1
|
+
{"version":3,"file":"sitemap.js","sourceRoot":"","sources":["../../../../../../src/modules/features/cms/sanity/mergers/sitemap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAC;AAE1B,MAAM,aAAa,GAAG,2EAA2E,CAAC;AAElG,oFAAoF;AACpF,MAAM,cAAc,GACnB,uEAAuE,CAAC;AAEzE,8FAA8F;AAC9F,MAAM,kBAAkB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAqCvB,CAAC;AAQL;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,YAAoB;IACtD,IAAI,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IAEvD,IAAI,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC;QAC5C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,gCAAgC,EAAE,CAAC;IACpE,CAAC;IAED,2EAA2E;IAC3E,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAClD,IAAI,CAAC,WAAW,EAAE,CAAC;QAClB,OAAO;YACN,OAAO,EAAE,IAAI;YACb,MAAM,EACL,qEAAqE;SACtE,CAAC;IACH,CAAC;IAED,uDAAuD;IACvD,MAAM,aAAa,GAAG,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC;IAC7D,MAAM,UAAU,GAAG,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACxC,IAAI,UAAU,EAAE,KAAK,KAAK,SAAS,EAAE,CAAC;QACrC,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QAC1D,OAAO;YACN,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC;gBAC3B,IAAI;gBACJ,aAAa;gBACb,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC3B,CAAC;IAED,8EAA8E;IAC9E,OAAO,GAAG,OAAO,CAAC,OAAO,CACxB,WAAW,CAAC,CAAC,CAAC,EACd,GAAG,WAAW,CAAC,CAAC,CAAC,KAAK,kBAAkB,EAAE,CAC1C,CAAC;IAEF,MAAM,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IAC1C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC1B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../../../src/modules/features/cms/sanity-pagebuilder/config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,kCAAkC;IAClD,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,aAAa,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,eAAO,MAAM,uBAAuB,EAAE,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../../../src/modules/features/cms/sanity-pagebuilder/config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,kCAAkC;IAClD,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,aAAa,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,eAAO,MAAM,uBAAuB,EAAE,kCA6CrC,CAAC"}
|
|
@@ -9,12 +9,12 @@ export const sanityPagebuilderConfig = {
|
|
|
9
9
|
"@phosphor-icons/react": "^2.1.10",
|
|
10
10
|
"@portabletext/types": "^4.0.2",
|
|
11
11
|
"@sanity/asset-utils": "^2.3.0",
|
|
12
|
-
"@sanity/image-url": "^2.
|
|
12
|
+
"@sanity/image-url": "^2.1.1",
|
|
13
13
|
"@sanity/table": "^2.0.1",
|
|
14
|
-
"@sanity/vision": "^5.
|
|
15
|
-
"@sanity/visual-editing": "^5.3
|
|
16
|
-
"next-sanity": "^
|
|
17
|
-
sanity: "^5.
|
|
14
|
+
"@sanity/vision": "^5.30.0",
|
|
15
|
+
"@sanity/visual-editing": "^5.4.3",
|
|
16
|
+
"next-sanity": "^13.0.10",
|
|
17
|
+
sanity: "^5.30.0",
|
|
18
18
|
"sanity-plugin-media": "^4.1.1",
|
|
19
19
|
},
|
|
20
20
|
devDependencies: {
|
|
@@ -29,12 +29,15 @@ export const sanityPagebuilderConfig = {
|
|
|
29
29
|
additivePaths: [
|
|
30
30
|
"lib/integrations/sanity",
|
|
31
31
|
"lib/integrations/check-integration.ts",
|
|
32
|
+
"lib/utils/check-redirect.ts",
|
|
32
33
|
"lib/utils/json-ld.tsx",
|
|
33
34
|
"lib/utils/metadata.ts",
|
|
35
|
+
"lib/utils/rss.ts",
|
|
34
36
|
"lib/utils/sitemap.ts",
|
|
35
37
|
"lib/scripts/sanity-typegen.ts",
|
|
36
38
|
"app/studio",
|
|
37
39
|
"app/api",
|
|
40
|
+
"app/feed.xml",
|
|
38
41
|
"app/sitemap.md",
|
|
39
42
|
"proxy.ts",
|
|
40
43
|
"components/sanity",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../../src/modules/features/cms/sanity-pagebuilder/config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAUH,MAAM,CAAC,MAAM,uBAAuB,GAAuC;IAC1E,IAAI,EAAE,oBAAoB;IAE1B,YAAY,EAAE;QACb,uBAAuB,EAAE,SAAS;QAClC,qBAAqB,EAAE,QAAQ;QAC/B,qBAAqB,EAAE,QAAQ;QAC/B,mBAAmB,EAAE,QAAQ;QAC7B,eAAe,EAAE,QAAQ;QACzB,gBAAgB,EAAE,SAAS;QAC3B,wBAAwB,EAAE,QAAQ;QAClC,aAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../../src/modules/features/cms/sanity-pagebuilder/config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAUH,MAAM,CAAC,MAAM,uBAAuB,GAAuC;IAC1E,IAAI,EAAE,oBAAoB;IAE1B,YAAY,EAAE;QACb,uBAAuB,EAAE,SAAS;QAClC,qBAAqB,EAAE,QAAQ;QAC/B,qBAAqB,EAAE,QAAQ;QAC/B,mBAAmB,EAAE,QAAQ;QAC7B,eAAe,EAAE,QAAQ;QACzB,gBAAgB,EAAE,SAAS;QAC3B,wBAAwB,EAAE,QAAQ;QAClC,aAAa,EAAE,UAAU;QACzB,MAAM,EAAE,SAAS;QACjB,qBAAqB,EAAE,QAAQ;KAC/B;IAED,eAAe,EAAE;QAChB,YAAY,EAAE,QAAQ;KACtB;IAED,OAAO,EAAE;QACR,gBAAgB,EACf,wFAAwF;QACzF,gBAAgB,EAAE,qCAAqC;QACvD,MAAM,EAAE,wBAAwB;QAChC,QAAQ,EAAE,wBAAwB;KAClC;IAED,aAAa,EAAE;QACd,yBAAyB;QACzB,uCAAuC;QACvC,6BAA6B;QAC7B,uBAAuB;QACvB,uBAAuB;QACvB,kBAAkB;QAClB,sBAAsB;QACtB,+BAA+B;QAC/B,YAAY;QACZ,SAAS;QACT,cAAc;QACd,gBAAgB;QAChB,UAAU;QACV,mBAAmB;QACnB,4BAA4B;KAC5B;CACD,CAAC"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import path from "node:path";
|
|
2
|
-
import {
|
|
2
|
+
import { CREATE_LIFECYCLE_STEP_IDS, SANITY_FEATURE_MODULE_ID, SANITY_PAGEBUILDER_FEATURE_MODULE_ID, } from "../../../../core/create/internal-ids.js";
|
|
3
3
|
import { SANITY_PAGEBUILDER_FILES_DIR } from "../../../../paths.js";
|
|
4
4
|
import { sanityPagebuilderConfig } from "./config.js";
|
|
5
5
|
export const sanityPagebuilderFeature = {
|
|
6
6
|
id: SANITY_PAGEBUILDER_FEATURE_MODULE_ID,
|
|
7
7
|
kind: "feature",
|
|
8
8
|
label: "Sanity (Page Builder)",
|
|
9
|
-
conflictsWith: [
|
|
9
|
+
conflictsWith: [SANITY_FEATURE_MODULE_ID],
|
|
10
10
|
contribute(context) {
|
|
11
11
|
return {
|
|
12
12
|
packageJson: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/modules/features/cms/sanity-pagebuilder/index.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EACN,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/modules/features/cms/sanity-pagebuilder/index.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EACN,yBAAyB,EACzB,wBAAwB,EACxB,oCAAoC,GACpC,MAAM,yCAAyC,CAAC;AAEjD,OAAO,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAEtD,MAAM,CAAC,MAAM,wBAAwB,GAAkB;IACtD,EAAE,EAAE,oCAAoC;IACxC,IAAI,EAAE,SAAS;IACf,KAAK,EAAE,uBAAuB;IAC9B,aAAa,EAAE,CAAC,wBAAwB,CAAC;IACzC,UAAU,CAAC,OAAO;QACjB,OAAO;YACN,WAAW,EAAE;gBACZ,YAAY,EAAE,uBAAuB,CAAC,YAAY;gBAClD,eAAe,EAAE,uBAAuB,CAAC,eAAe;gBACxD,OAAO,EAAE,uBAAuB,CAAC,OAAO;aACxC;YACD,SAAS,EAAE,uBAAuB,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;gBACvE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,4BAA4B,EAAE,YAAY,CAAC;gBAC3D,EAAE,EAAE,iBAAiB,CAAC,YAAY,EAAE,OAAO,CAAC,UAAU,CAAC;gBACvD,SAAS,EAAE,KAAK;aAChB,CAAC,CAAC;YACH,GAAG,EAAE;gBACJ,EAAE,GAAG,EAAE,+BAA+B,EAAE,QAAQ,EAAE,IAAI,EAAE;gBACxD,EAAE,GAAG,EAAE,4BAA4B,EAAE,QAAQ,EAAE,IAAI,EAAE;gBACrD,EAAE,GAAG,EAAE,uBAAuB,EAAE,QAAQ,EAAE,IAAI,EAAE;aAChD;YACD,SAAS,EAAE;gBACV,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,yBAAyB,CAAC,kBAAkB,EAAE,CAAC;aAChE;SACD,CAAC;IACH,CAAC;CACD,CAAC;AAEF,SAAS,iBAAiB,CAAC,YAAoB,EAAE,MAAmB;IACnE,IAAI,CAAC,MAAM;QAAE,OAAO,YAAY,CAAC;IAEjC,KAAK,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,CAAC;QACrD,IAAI,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YACpC,OAAO,GAAG,MAAM,GAAG,YAAY,EAAE,CAAC;QACnC,CAAC;IACF,CAAC;IAED,IAAI,YAAY,KAAK,UAAU,IAAI,YAAY,KAAK,UAAU,EAAE,CAAC;QAChE,OAAO,GAAG,MAAM,GAAG,YAAY,EAAE,CAAC;IACnC,CAAC;IAED,OAAO,YAAY,CAAC;AACrB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export interface DotenvxConfig {
|
|
2
|
+
name: string;
|
|
3
|
+
dependencies: Record<string, string>;
|
|
4
|
+
/** Scripts prefixed with `dotenvx run -- ` (runtime only; not static checks). */
|
|
5
|
+
wrapScripts: readonly string[];
|
|
6
|
+
/** Sanity scripts transformed off `--env-file .env.local` onto dotenvx. */
|
|
7
|
+
sanityScripts: readonly string[];
|
|
8
|
+
addScripts: Readonly<Record<string, string>>;
|
|
9
|
+
/** Files copied from `files/` (relative dest -> source basename). */
|
|
10
|
+
files: Readonly<Record<string, string>>;
|
|
11
|
+
}
|
|
12
|
+
export declare const dotenvxConfig: DotenvxConfig;
|
|
13
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +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,aAgD3B,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
// dotenvx manifest: single source of truth shared by the create flow and
|
|
2
|
+
// `bsmnt integrate --dotenvx` so generated output never drifts.
|
|
3
|
+
export const dotenvxConfig = {
|
|
4
|
+
name: "dotenvx",
|
|
5
|
+
dependencies: {
|
|
6
|
+
"@dotenvx/dotenvx": "^1.71.1",
|
|
7
|
+
},
|
|
8
|
+
wrapScripts: [
|
|
9
|
+
"build",
|
|
10
|
+
"start",
|
|
11
|
+
"dev",
|
|
12
|
+
"dev:https",
|
|
13
|
+
"dev:inspect",
|
|
14
|
+
"analyze:experimental",
|
|
15
|
+
],
|
|
16
|
+
sanityScripts: ["sanity:extract", "sanity:typegen"],
|
|
17
|
+
addScripts: {
|
|
18
|
+
"env:setup": "bun run scripts/setup-env.mjs",
|
|
19
|
+
"env:view": "bun run scripts/decrypt-env.mjs",
|
|
20
|
+
// Add/encrypt values without remembering the dotenvx flags. `set` adds one
|
|
21
|
+
// (`--plain` / `--preview` / `--prod`); `encrypt-all` bulk-encrypts a file.
|
|
22
|
+
"env:set": "bun run scripts/write-env.mjs set",
|
|
23
|
+
"env:encrypt-all": "bun run scripts/write-env.mjs encrypt",
|
|
24
|
+
// Push the private keys from .env.keys to CI / host so envs decrypt there.
|
|
25
|
+
// Pick a target from a menu, or pass `github` / `vercel`.
|
|
26
|
+
"env:setup-remote": "bun run scripts/push-keys.mjs",
|
|
27
|
+
// Save the private key to 1Password (Development vault) + point .env's op-ref at it.
|
|
28
|
+
"env:save": "bun run scripts/save-key.mjs",
|
|
29
|
+
// Onboarding: bun install restores .env.keys from 1Password (soft — never
|
|
30
|
+
// fails the install; skips when keys exist, in CI, or with no ref/op).
|
|
31
|
+
preinstall: "bun run scripts/setup-env.mjs --auto",
|
|
32
|
+
},
|
|
33
|
+
files: {
|
|
34
|
+
".github/workflows/gitleaks.yml": "gitleaks.yml",
|
|
35
|
+
"scripts/setup-env.mjs": "setup-env.mjs",
|
|
36
|
+
"scripts/decrypt-env.mjs": "decrypt-env.mjs",
|
|
37
|
+
"scripts/write-env.mjs": "write-env.mjs",
|
|
38
|
+
"scripts/push-keys.mjs": "push-keys.mjs",
|
|
39
|
+
"scripts/save-key.mjs": "save-key.mjs",
|
|
40
|
+
// Runtime decryption on serverless (Vercel functions) — the run wrapper
|
|
41
|
+
// only covers local dev + build. Next.js root instrumentation file.
|
|
42
|
+
"instrumentation.ts": "instrumentation.ts",
|
|
43
|
+
// Keep .env.keys / local env files out of `vercel deploy` uploads.
|
|
44
|
+
".vercelignore": "vercelignore",
|
|
45
|
+
},
|
|
46
|
+
};
|
|
47
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +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"}
|