@bagelink/blox 1.18.8 → 1.18.10

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.
Files changed (30) hide show
  1. package/LICENSE +21 -0
  2. package/dist/{PreviewApp-DJ-zFK64.cjs → PreviewApp-B9zGzNoj.cjs} +1 -1
  3. package/dist/{PreviewApp-Eu1N9XYe.js → PreviewApp-DNvYww-1.js} +1 -1
  4. package/dist/{PreviewApp.vue_vue_type_style_index_0_lang-BF52PPjt.cjs → PreviewApp.vue_vue_type_style_index_0_lang-BY4OFOi6.cjs} +1 -1
  5. package/dist/{PreviewApp.vue_vue_type_style_index_0_lang-zkP_L9cF.js → PreviewApp.vue_vue_type_style_index_0_lang-B_1HZLks.js} +1 -1
  6. package/dist/api/index.d.ts +1 -2
  7. package/dist/api/index.d.ts.map +1 -1
  8. package/dist/{appRuntime-DQRKuyja.cjs → appRuntime-7hLqxk2p.cjs} +2 -2
  9. package/dist/{appRuntime-Cmns1A7C.js → appRuntime-DbIMo4Ow.js} +2 -2
  10. package/dist/{index-I81QTzv-.js → index-9Rzzo_yF.js} +4 -3
  11. package/dist/{index-DUjEj7ts.cjs → index-De9SLPcI.cjs} +4 -3
  12. package/dist/index.cjs +3 -3
  13. package/dist/index.mjs +5 -5
  14. package/dist/{shard-runner-x08zpfHx.js → shard-runner-CMBTsNS8.js} +3 -3
  15. package/dist/{shard-runner-2Aga3U5Y.cjs → shard-runner-vKgYfLjY.cjs} +3 -3
  16. package/dist/ssg/cli.cjs +6 -6
  17. package/dist/ssg/cli.mjs +6 -6
  18. package/dist/ssg/createSSREntry.d.ts +5 -1
  19. package/dist/ssg/createSSREntry.d.ts.map +1 -1
  20. package/dist/ssg/index.cjs +15 -8
  21. package/dist/ssg/index.mjs +30 -23
  22. package/dist/ssg/prerender.d.ts +11 -1
  23. package/dist/ssg/prerender.d.ts.map +1 -1
  24. package/dist/ssg/render-resolved-page.d.ts +2 -0
  25. package/dist/ssg/render-resolved-page.d.ts.map +1 -1
  26. package/dist/ssg/shard-runner.d.ts +1 -0
  27. package/dist/ssg/shard-runner.d.ts.map +1 -1
  28. package/dist/{validate-output-Dtdsu9EM.cjs → validate-output-lWCssQLz.cjs} +14 -6
  29. package/dist/{validate-output-C2ObdhO5.js → validate-output-vq09gBSr.js} +32 -24
  30. package/package.json +124 -125
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2023 Bagel Studio
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -1,4 +1,4 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const PreviewApp_vue_vue_type_style_index_0_lang = require("./PreviewApp.vue_vue_type_style_index_0_lang-BF52PPjt.cjs");
3
+ const PreviewApp_vue_vue_type_style_index_0_lang = require("./PreviewApp.vue_vue_type_style_index_0_lang-BY4OFOi6.cjs");
4
4
  exports.default = PreviewApp_vue_vue_type_style_index_0_lang._sfc_main;
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "./PreviewApp.vue_vue_type_style_index_0_lang-zkP_L9cF.js";
1
+ import { _ as _sfc_main } from "./PreviewApp.vue_vue_type_style_index_0_lang-B_1HZLks.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  const vue = require("vue");
3
- const appRuntime = require("./appRuntime-DQRKuyja.cjs");
3
+ const appRuntime = require("./appRuntime-7hLqxk2p.cjs");
4
4
  function sendToEditor(msg) {
5
5
  window.parent.postMessage(cloneForPostMessage(msg), "*");
6
6
  }
@@ -1,5 +1,5 @@
1
1
  import { defineComponent, inject, ref, h, provide, onMounted, onUnmounted, openBlock, createElementBlock, createVNode, unref, nextTick } from "vue";
2
- import { e as BLOX_REGISTRY_KEY, r as resolveBlockProps, u as useLocale, f as BLOX_RUNTIME_KEY } from "./appRuntime-Cmns1A7C.js";
2
+ import { e as BLOX_REGISTRY_KEY, r as resolveBlockProps, u as useLocale, f as BLOX_RUNTIME_KEY } from "./appRuntime-DbIMo4Ow.js";
3
3
  function sendToEditor(msg) {
4
4
  window.parent.postMessage(cloneForPostMessage(msg), "*");
5
5
  }
@@ -1,6 +1,6 @@
1
1
  import { CollectionItemsPage, PageResolveRead } from './types';
2
2
  import { App, InjectionKey } from 'vue';
3
- type CollectionResolver = (collection: string, options: ListItemsOptions) => Promise<Array<Record<string, unknown>> | null>;
3
+ export type CollectionResolver = (collection: string, options: ListItemsOptions) => Promise<Array<Record<string, unknown>> | null>;
4
4
  export interface BloxApiOptions {
5
5
  websiteName: string;
6
6
  store: string;
@@ -64,5 +64,4 @@ export declare function getItemById<T = Record<string, unknown>>(collection: str
64
64
  export declare function listItemsFromActiveApi<T = Record<string, unknown>>(collection: string, options?: ListItemsOptions): Promise<CollectionItemsPage & {
65
65
  items: T[];
66
66
  }>;
67
- export {};
68
67
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { en
4
4
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
5
5
  const pinia = require("pinia");
6
6
  const vue = require("vue");
7
- const index = require("./index-DUjEj7ts.cjs");
7
+ const index = require("./index-De9SLPcI.cjs");
8
8
  const vueRouter = require("vue-router");
9
9
  const vue$1 = require("@bagelink/vue");
10
10
  const localeStrategy = require("./localeStrategy-OwRIn35C.cjs");
@@ -810,7 +810,7 @@ class BloxInstance {
810
810
  router.addRoute({
811
811
  path: "/_blox_preview",
812
812
  name: BLOX_PREVIEW_ROUTE_NAME,
813
- component: () => Promise.resolve().then(() => require("./PreviewApp-DJ-zFK64.cjs")),
813
+ component: () => Promise.resolve().then(() => require("./PreviewApp-B9zGzNoj.cjs")),
814
814
  beforeEnter: () => typeof window === "undefined" || window.parent !== window ? true : "/"
815
815
  });
816
816
  }
@@ -3,7 +3,7 @@ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { en
3
3
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
4
4
  import { createPinia } from "pinia";
5
5
  import { inject, computed, ref, defineComponent, onMounted, unref, openBlock, createElementBlock, createElementVNode, createCommentVNode, getCurrentInstance, h, provide, watch, resolveComponent, toDisplayString, createVNode, withCtx, createTextVNode, Fragment, createBlock, shallowRef, onServerPrefetch, toValue, markRaw, resolveDynamicComponent } from "vue";
6
- import { useBloxApi, getWebsiteIdSync, getWebsiteId, resolvePath, configureApi, listItemsFromActiveApi, getItemBySlug, getItemById } from "./index-I81QTzv-.js";
6
+ import { useBloxApi, getWebsiteIdSync, getWebsiteId, resolvePath, configureApi, listItemsFromActiveApi, getItemBySlug, getItemById } from "./index-9Rzzo_yF.js";
7
7
  import { useRoute, useRouter } from "vue-router";
8
8
  import { getI18n } from "@bagelink/vue";
9
9
  import { r as resolvePageTitle, b as siteNameFromContexts, d as preserveCurrentSiteSuffix, e as createLocaleStrategy } from "./localeStrategy-hXlNof1E.js";
@@ -809,7 +809,7 @@ class BloxInstance {
809
809
  router.addRoute({
810
810
  path: "/_blox_preview",
811
811
  name: BLOX_PREVIEW_ROUTE_NAME,
812
- component: () => import("./PreviewApp-Eu1N9XYe.js"),
812
+ component: () => import("./PreviewApp-DNvYww-1.js"),
813
813
  beforeEnter: () => typeof window === "undefined" || window.parent !== window ? true : "/"
814
814
  });
815
815
  }
@@ -76,7 +76,7 @@ function createBloxApi(options) {
76
76
  }
77
77
  }
78
78
  async function listItems2(collection, { locale, q, offset = 0, limit = 100 } = {}) {
79
- const resolver = options.collectionResolver ?? _collectionResolver;
79
+ const resolver = options.collectionResolver ?? getCollectionResolver();
80
80
  if (resolver) {
81
81
  const resolved = await resolver(collection, {
82
82
  locale,
@@ -175,8 +175,9 @@ async function resolvePath(path, locale) {
175
175
  });
176
176
  }
177
177
  async function listItems(collection, { locale, q, offset = 0, limit = 100 } = {}) {
178
- if (_collectionResolver) {
179
- return await _collectionResolver(collection, { locale, q, offset, limit });
178
+ const resolver = getCollectionResolver();
179
+ if (resolver) {
180
+ return await resolver(collection, { locale, q, offset, limit });
180
181
  }
181
182
  return request(`/datastore/${_store}/collections/${collection}`, {
182
183
  locale,
@@ -78,7 +78,7 @@ function createBloxApi(options) {
78
78
  }
79
79
  }
80
80
  async function listItems2(collection, { locale, q, offset = 0, limit = 100 } = {}) {
81
- const resolver = options.collectionResolver ?? _collectionResolver;
81
+ const resolver = options.collectionResolver ?? getCollectionResolver();
82
82
  if (resolver) {
83
83
  const resolved = await resolver(collection, {
84
84
  locale,
@@ -177,8 +177,9 @@ async function resolvePath(path, locale) {
177
177
  });
178
178
  }
179
179
  async function listItems(collection, { locale, q, offset = 0, limit = 100 } = {}) {
180
- if (_collectionResolver) {
181
- return await _collectionResolver(collection, { locale, q, offset, limit });
180
+ const resolver = getCollectionResolver();
181
+ if (resolver) {
182
+ return await resolver(collection, { locale, q, offset, limit });
182
183
  }
183
184
  return request(`/datastore/${_store}/collections/${collection}`, {
184
185
  locale,
package/dist/index.cjs CHANGED
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const index = require("./index-DUjEj7ts.cjs");
4
- const PreviewApp_vue_vue_type_style_index_0_lang = require("./PreviewApp.vue_vue_type_style_index_0_lang-BF52PPjt.cjs");
5
- const appRuntime = require("./appRuntime-DQRKuyja.cjs");
3
+ const index = require("./index-De9SLPcI.cjs");
4
+ const PreviewApp_vue_vue_type_style_index_0_lang = require("./PreviewApp.vue_vue_type_style_index_0_lang-BY4OFOi6.cjs");
5
+ const appRuntime = require("./appRuntime-7hLqxk2p.cjs");
6
6
  const vue = require("vue");
7
7
  const ssg_client = require("./client-AoDTJJXJ.cjs");
8
8
  const vueRouter = require("vue-router");
package/dist/index.mjs CHANGED
@@ -1,8 +1,8 @@
1
- import { useBloxApi, getItemBySlug, getItemById, provideBloxApi } from "./index-I81QTzv-.js";
2
- import { configureApi, createBloxApi, getCollectionResolver, getWebsiteId, getWebsiteIdSync, listItems, resolvePath, setApiOrigin, setCollectionResolver } from "./index-I81QTzv-.js";
3
- import { _, P, s, a } from "./PreviewApp.vue_vue_type_style_index_0_lang-zkP_L9cF.js";
4
- import { g as BLOX_LOCALE_STRATEGY_KEY, u as useLocale, n as normalizeLink, f as BLOX_RUNTIME_KEY, h as useSeo, j as getRegistryData, k as getContentRoute, p as provideBloxData, b as provideBloxLocale, i as installBloxRuntime, d as setActiveLocale, l as isMissingPageDocument, m as installSmartLinks, o as BLOX_CMS_ROUTE_NAME, q as BLOX_PREVIEW_ROUTE_NAME } from "./appRuntime-Cmns1A7C.js";
5
- import { _ as _2, t, v, w, x, y, z, A, C, P as P2, D, E, c, a as a2, F, G, H, I, J, K, L, M, N, O, Q, R, r, s as s2, S, T, U, V } from "./appRuntime-Cmns1A7C.js";
1
+ import { useBloxApi, getItemBySlug, getItemById, provideBloxApi } from "./index-9Rzzo_yF.js";
2
+ import { configureApi, createBloxApi, getCollectionResolver, getWebsiteId, getWebsiteIdSync, listItems, resolvePath, setApiOrigin, setCollectionResolver } from "./index-9Rzzo_yF.js";
3
+ import { _, P, s, a } from "./PreviewApp.vue_vue_type_style_index_0_lang-B_1HZLks.js";
4
+ import { g as BLOX_LOCALE_STRATEGY_KEY, u as useLocale, n as normalizeLink, f as BLOX_RUNTIME_KEY, h as useSeo, j as getRegistryData, k as getContentRoute, p as provideBloxData, b as provideBloxLocale, i as installBloxRuntime, d as setActiveLocale, l as isMissingPageDocument, m as installSmartLinks, o as BLOX_CMS_ROUTE_NAME, q as BLOX_PREVIEW_ROUTE_NAME } from "./appRuntime-DbIMo4Ow.js";
5
+ import { _ as _2, t, v, w, x, y, z, A, C, P as P2, D, E, c, a as a2, F, G, H, I, J, K, L, M, N, O, Q, R, r, s as s2, S, T, U, V } from "./appRuntime-DbIMo4Ow.js";
6
6
  import { defineComponent, resolveComponent, openBlock, createBlock, withCtx, Transition, resolveDynamicComponent, inject, ref, watch, onMounted, onUnmounted, computed, onServerPrefetch, toValue, h, Suspense, createSSRApp, createApp } from "vue";
7
7
  import { r as readBloxHydration } from "./client-Ce9fRCGH.js";
8
8
  import { useRouter, useRoute } from "vue-router";
@@ -2,7 +2,7 @@ import { spawn } from "node:child_process";
2
2
  import os from "node:os";
3
3
  import path from "node:path";
4
4
  import process from "node:process";
5
- import { f as fetchCmsSiteData, g as generateSitemapArtifacts, d as validateNoRedirectingLinks } from "./validate-output-C2ObdhO5.js";
5
+ import { f as fetchCmsSiteData, g as generateSitemapArtifacts, d as validateNoRedirectingLinks, i as isErrorPagePath } from "./validate-output-vq09gBSr.js";
6
6
  const AUTO_SHARD_CAP = Number(process.env.BLOX_SSG_SHARD_CAP) || 6;
7
7
  const PREFETCH_BUDGET = Number(process.env.BLOX_SSG_PREFETCH_BUDGET) || 24;
8
8
  const SEQUENTIAL_SHARDS = process.env.BLOX_SSG_SEQUENTIAL === "1";
@@ -16,7 +16,7 @@ function matchesCmsPath(pathname, cmsPaths) {
16
16
  return false;
17
17
  }
18
18
  function sitemapRoutesForWebsite(routes, siteNoindex) {
19
- return siteNoindex ? routes : routes.filter((route) => !route.noindex);
19
+ return routes.filter((route) => !route.noindex && !isErrorPagePath(route.url));
20
20
  }
21
21
  function resolveShardCount(shards) {
22
22
  if (shards === "auto") {
@@ -145,7 +145,7 @@ async function runSharded(opts) {
145
145
  }
146
146
  if (process.env.BLOX_SSG_LLM !== "0" && !((_a = website == null ? void 0 : website.seo) == null ? void 0 : _a.noindex)) {
147
147
  try {
148
- const { mergeLlmParts } = await import("./validate-output-C2ObdhO5.js").then((n) => n.D);
148
+ const { mergeLlmParts } = await import("./validate-output-vq09gBSr.js").then((n) => n.E);
149
149
  const mergeWebsite = website;
150
150
  const partFiles = Array.from({ length: total }, (_, i) => path.join(llmPartsDir, `part.${i}.json`));
151
151
  const { pages } = await mergeLlmParts({
@@ -26,7 +26,7 @@ const node_child_process = require("node:child_process");
26
26
  const os = require("node:os");
27
27
  const path = require("node:path");
28
28
  const process = require("node:process");
29
- const llmArtifacts = require("./validate-output-Dtdsu9EM.cjs");
29
+ const llmArtifacts = require("./validate-output-lWCssQLz.cjs");
30
30
  const AUTO_SHARD_CAP = Number(process.env.BLOX_SSG_SHARD_CAP) || 6;
31
31
  const PREFETCH_BUDGET = Number(process.env.BLOX_SSG_PREFETCH_BUDGET) || 24;
32
32
  const SEQUENTIAL_SHARDS = process.env.BLOX_SSG_SEQUENTIAL === "1";
@@ -40,7 +40,7 @@ function matchesCmsPath(pathname, cmsPaths) {
40
40
  return false;
41
41
  }
42
42
  function sitemapRoutesForWebsite(routes, siteNoindex) {
43
- return siteNoindex ? routes : routes.filter((route) => !route.noindex);
43
+ return routes.filter((route) => !route.noindex && !llmArtifacts.isErrorPagePath(route.url));
44
44
  }
45
45
  function resolveShardCount(shards) {
46
46
  if (shards === "auto") {
@@ -169,7 +169,7 @@ async function runSharded(opts) {
169
169
  }
170
170
  if (process.env.BLOX_SSG_LLM !== "0" && !((_a = website == null ? void 0 : website.seo) == null ? void 0 : _a.noindex)) {
171
171
  try {
172
- const { mergeLlmParts } = await Promise.resolve().then(() => require("./validate-output-Dtdsu9EM.cjs")).then((n) => n.llmArtifacts);
172
+ const { mergeLlmParts } = await Promise.resolve().then(() => require("./validate-output-lWCssQLz.cjs")).then((n) => n.llmArtifacts);
173
173
  const mergeWebsite = website;
174
174
  const partFiles = Array.from({ length: total }, (_, i) => path.join(llmPartsDir, `part.${i}.json`));
175
175
  const { pages } = await mergeLlmParts({
package/dist/ssg/cli.cjs CHANGED
@@ -3,7 +3,7 @@
3
3
  const process = require("node:process");
4
4
  const fs = require("node:fs/promises");
5
5
  const ssg_buildGrant = require("./build-grant.cjs");
6
- const llmArtifacts = require("../validate-output-Dtdsu9EM.cjs");
6
+ const llmArtifacts = require("../validate-output-lWCssQLz.cjs");
7
7
  const localeStrategy = require("../localeStrategy-OwRIn35C.cjs");
8
8
  function installFetchTimeout() {
9
9
  const ms = Number(process.env.BLOX_SSG_FETCH_TIMEOUT_MS) || 2e4;
@@ -148,7 +148,7 @@ Environment:
148
148
  if (shardsOpt !== null || routesCmd) {
149
149
  const { apiBase: apiBase2, websiteName: configWebsiteName2 } = await resolveApiBase(mode);
150
150
  const websiteName2 = process.env.WEBSITE_NAME ?? configWebsiteName2 ?? "default";
151
- const { runSharded } = await Promise.resolve().then(() => require("../shard-runner-2Aga3U5Y.cjs"));
151
+ const { runSharded } = await Promise.resolve().then(() => require("../shard-runner-vKgYfLjY.cjs"));
152
152
  const code = await runSharded({
153
153
  shards: shardsOpt ?? "auto",
154
154
  mode,
@@ -174,7 +174,7 @@ Environment:
174
174
  }
175
175
  const { apiBase, websiteName: configWebsiteName } = await resolveApiBase(mode);
176
176
  await llmArtifacts.polyfillBloxSsgGlobals({ pageUrl: apiBase });
177
- const { setCollectionResolver } = await Promise.resolve().then(() => require("../index-DUjEj7ts.cjs"));
177
+ const { setCollectionResolver } = await Promise.resolve().then(() => require("../index-De9SLPcI.cjs"));
178
178
  const websiteName = process.env.WEBSITE_NAME ?? configWebsiteName ?? "default";
179
179
  console.log(siteDataFile ? `Loading cached site routes (mode: ${mode}, site: ${websiteName})…` : `Fetching routes from ${apiBase} (mode: ${mode}, site: ${websiteName})…`);
180
180
  let paths = [];
@@ -206,9 +206,8 @@ Environment:
206
206
  if (productionBuild) throw err;
207
207
  paths = ["/"];
208
208
  }
209
- if (collectionItems && Object.keys(collectionItems).length > 0) {
210
- setCollectionResolver(llmArtifacts.buildCollectionResolver(collectionItems));
211
- }
209
+ const collectionResolver = collectionItems && Object.keys(collectionItems).length > 0 ? llmArtifacts.buildCollectionResolver(collectionItems) : null;
210
+ setCollectionResolver(collectionResolver);
212
211
  for (const p of extraPaths) {
213
212
  if (!paths.includes(p)) paths.push(p);
214
213
  }
@@ -251,6 +250,7 @@ Environment:
251
250
  website,
252
251
  websiteId,
253
252
  redirects,
253
+ collectionResolver,
254
254
  // Canonical localized page paths, injected into each document's
255
255
  // hydration payload so client-side links resolve without a redirect.
256
256
  pageSlugMap,
package/dist/ssg/cli.mjs CHANGED
@@ -2,7 +2,7 @@
2
2
  import process from "node:process";
3
3
  import fs from "node:fs/promises";
4
4
  import { resolveBloxBuildGrant } from "./build-grant.mjs";
5
- import { v as validateSsgOutput, u as uploadBloxManifest, p as polyfillBloxSsgGlobals, f as fetchCmsSiteData, b as buildCollectionResolver, a as prerender, c as validateInternalLinks, d as validateNoRedirectingLinks } from "../validate-output-C2ObdhO5.js";
5
+ import { v as validateSsgOutput, u as uploadBloxManifest, p as polyfillBloxSsgGlobals, f as fetchCmsSiteData, b as buildCollectionResolver, a as prerender, c as validateInternalLinks, d as validateNoRedirectingLinks } from "../validate-output-vq09gBSr.js";
6
6
  import { s as setPageSlugMap } from "../localeStrategy-hXlNof1E.js";
7
7
  function installFetchTimeout() {
8
8
  const ms = Number(process.env.BLOX_SSG_FETCH_TIMEOUT_MS) || 2e4;
@@ -147,7 +147,7 @@ Environment:
147
147
  if (shardsOpt !== null || routesCmd) {
148
148
  const { apiBase: apiBase2, websiteName: configWebsiteName2 } = await resolveApiBase(mode);
149
149
  const websiteName2 = process.env.WEBSITE_NAME ?? configWebsiteName2 ?? "default";
150
- const { runSharded } = await import("../shard-runner-x08zpfHx.js");
150
+ const { runSharded } = await import("../shard-runner-CMBTsNS8.js");
151
151
  const code = await runSharded({
152
152
  shards: shardsOpt ?? "auto",
153
153
  mode,
@@ -173,7 +173,7 @@ Environment:
173
173
  }
174
174
  const { apiBase, websiteName: configWebsiteName } = await resolveApiBase(mode);
175
175
  await polyfillBloxSsgGlobals({ pageUrl: apiBase });
176
- const { setCollectionResolver } = await import("../index-I81QTzv-.js");
176
+ const { setCollectionResolver } = await import("../index-9Rzzo_yF.js");
177
177
  const websiteName = process.env.WEBSITE_NAME ?? configWebsiteName ?? "default";
178
178
  console.log(siteDataFile ? `Loading cached site routes (mode: ${mode}, site: ${websiteName})…` : `Fetching routes from ${apiBase} (mode: ${mode}, site: ${websiteName})…`);
179
179
  let paths = [];
@@ -205,9 +205,8 @@ Environment:
205
205
  if (productionBuild) throw err;
206
206
  paths = ["/"];
207
207
  }
208
- if (collectionItems && Object.keys(collectionItems).length > 0) {
209
- setCollectionResolver(buildCollectionResolver(collectionItems));
210
- }
208
+ const collectionResolver = collectionItems && Object.keys(collectionItems).length > 0 ? buildCollectionResolver(collectionItems) : null;
209
+ setCollectionResolver(collectionResolver);
211
210
  for (const p of extraPaths) {
212
211
  if (!paths.includes(p)) paths.push(p);
213
212
  }
@@ -250,6 +249,7 @@ Environment:
250
249
  website,
251
250
  websiteId,
252
251
  redirects,
252
+ collectionResolver,
253
253
  // Canonical localized page paths, injected into each document's
254
254
  // hydration payload so client-side links resolve without a redirect.
255
255
  pageSlugMap,
@@ -3,7 +3,7 @@ import { Router } from 'vue-router';
3
3
  import { BlockModule } from '../defineBlock';
4
4
  import { RenderContext, RenderResult } from './prerender';
5
5
  import { BloxBuildRequestOptions } from './build-request';
6
- import { ListItemsOptions } from '../api';
6
+ import { CollectionResolver, ListItemsOptions } from '../api';
7
7
  export interface CreateBloxSSREntryOptions {
8
8
  /** Root Vue component (App.vue). */
9
9
  rootComponent: Component;
@@ -54,6 +54,10 @@ export interface BloxSSREntry {
54
54
  render: (url: string, ctx: RenderContext) => Promise<RenderResult>;
55
55
  /** Resolve a URL's page data without rendering (for batched prefetch). */
56
56
  prefetchResolve?: (url: string) => Promise<unknown>;
57
+ /** Install immutable collection data explicitly for this build process. */
58
+ configureBuildData?: (data: {
59
+ collectionResolver?: CollectionResolver | null;
60
+ }) => void;
57
61
  }
58
62
  interface PublishedPage {
59
63
  slug?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"createSSREntry.d.ts","sourceRoot":"","sources":["../../src/ssg/createSSREntry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"createSSREntry.d.ts","sourceRoot":"","sources":["../../src/ssg/createSSREntry.ts"],"names":[],"mappings":"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"}
@@ -22,15 +22,15 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
22
22
  mod
23
23
  ));
24
24
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
25
- const llmArtifacts = require("../validate-output-Dtdsu9EM.cjs");
25
+ const llmArtifacts = require("../validate-output-lWCssQLz.cjs");
26
26
  const ssg_buildGrant = require("./build-grant.cjs");
27
27
  const ssg_client = require("../client-AoDTJJXJ.cjs");
28
28
  const vue = require("vue");
29
- const appRuntime = require("../appRuntime-DQRKuyja.cjs");
29
+ const appRuntime = require("../appRuntime-7hLqxk2p.cjs");
30
30
  const localeStrategy = require("../localeStrategy-OwRIn35C.cjs");
31
- const index = require("../index-DUjEj7ts.cjs");
31
+ const index = require("../index-De9SLPcI.cjs");
32
32
  async function renderBloxSsgPage(options) {
33
- var _a, _b, _c, _d;
33
+ var _a, _b, _c, _d, _e;
34
34
  const {
35
35
  url,
36
36
  resolvedData,
@@ -113,7 +113,10 @@ ${jsonLd}`;
113
113
  }
114
114
  const lang = locale || (website == null ? void 0 : website.default_locale) || "en";
115
115
  const htmlAttrs = `lang="${lang}"`;
116
- return { html, head, htmlAttrs, teleports: ssrContext.teleports, llm: llmEntry };
116
+ const pageNoindex = Boolean(
117
+ ((_e = seoData == null ? void 0 : seoData.page) == null ? void 0 : _e.noindex) || (seoOverride == null ? void 0 : seoOverride.noindex)
118
+ );
119
+ return { html, head, htmlAttrs, teleports: ssrContext.teleports, llm: llmEntry, noindex: pageNoindex };
117
120
  }
118
121
  function safeJson(value) {
119
122
  return JSON.stringify(value).replace(/</g, "\\u003c");
@@ -226,7 +229,11 @@ function createBloxSSREntry(options) {
226
229
  } = options;
227
230
  const apiBase = options.apiBase ?? (typeof process !== "undefined" ? (_a = process.env) == null ? void 0 : _a.BAGELINK_API_URL : void 0) ?? "https://api.bagel.to";
228
231
  let websiteIdCache = null;
232
+ let buildCollectionResolver = options.collectionResolver ?? null;
229
233
  const publishedBundleCache = /* @__PURE__ */ new Map();
234
+ function configureBuildData(data) {
235
+ buildCollectionResolver = data.collectionResolver ?? null;
236
+ }
230
237
  async function getWebsiteId() {
231
238
  var _a2, _b, _c;
232
239
  if (websiteIdCache) return websiteIdCache;
@@ -269,7 +276,7 @@ function createBloxSSREntry(options) {
269
276
  publishedBundleCache.set(cacheKey, pending);
270
277
  }
271
278
  const bundle = await pending;
272
- const activeResolver = options.collectionResolver ?? index.getCollectionResolver() ?? void 0;
279
+ const activeResolver = buildCollectionResolver ?? index.getCollectionResolver() ?? void 0;
273
280
  const resolved = await resolvePublishedPage(
274
281
  bundle.pages,
275
282
  slug,
@@ -310,7 +317,7 @@ function createBloxSSREntry(options) {
310
317
  websiteName,
311
318
  store,
312
319
  origin: apiBase,
313
- collectionResolver: options.collectionResolver ?? index.getCollectionResolver()
320
+ collectionResolver: buildCollectionResolver ?? index.getCollectionResolver()
314
321
  });
315
322
  const localeState = appRuntime.provideBloxLocale(app, pageLocale);
316
323
  app.provide(appRuntime.BLOX_SSR_ROUTE_STATE_KEY, {
@@ -366,7 +373,7 @@ function createBloxSSREntry(options) {
366
373
  const { locale: pageLocale, slug } = detectLocale(url);
367
374
  return resolveForBuild(slug, pageLocale);
368
375
  }
369
- return { render, prefetchResolve };
376
+ return { render, prefetchResolve, configureBuildData };
370
377
  }
371
378
  async function fetchDatastoreSnapshot(options) {
372
379
  var _a;
@@ -1,13 +1,13 @@
1
- import { e as buildPageHead, h as primaryContextEntry, i as buildJsonLd, j as extractPageText, B as BloxBuildResponseError, k as bloxBuildJson } from "../validate-output-C2ObdhO5.js";
2
- import { l, m, f, n, o, q, r, g, s, t, w, x, y, z, p, a, A, C, u, c, v } from "../validate-output-C2ObdhO5.js";
1
+ import { e as buildPageHead, h as primaryContextEntry, j as buildJsonLd, k as extractPageText, B as BloxBuildResponseError, l as bloxBuildJson } from "../validate-output-vq09gBSr.js";
2
+ import { m, n, f, o, q, r, s, g, t, w, x, y, z, A, p, a, C, D, u, c, v } from "../validate-output-vq09gBSr.js";
3
3
  import { parseBloxBuildGrantBody, resolveBloxBuildGrant } from "./build-grant.mjs";
4
4
  import { a as BLOX_HYDRATION_WINDOW_KEY } from "../client-Ce9fRCGH.js";
5
5
  import { createSSRApp, h, Suspense } from "vue";
6
- import { c as collectBloxData, a as collectBloxSeo, s as setSsrPageLocale, p as provideBloxData, b as provideBloxLocale, B as BLOX_SSR_ROUTE_STATE_KEY, i as installBloxRuntime, d as setActiveLocale } from "../appRuntime-Cmns1A7C.js";
6
+ import { c as collectBloxData, a as collectBloxSeo, s as setSsrPageLocale, p as provideBloxData, b as provideBloxLocale, B as BLOX_SSR_ROUTE_STATE_KEY, i as installBloxRuntime, d as setActiveLocale } from "../appRuntime-DbIMo4Ow.js";
7
7
  import { s as setPageSlugMap } from "../localeStrategy-hXlNof1E.js";
8
- import { provideBloxApi, getCollectionResolver } from "../index-I81QTzv-.js";
8
+ import { provideBloxApi, getCollectionResolver } from "../index-9Rzzo_yF.js";
9
9
  async function renderBloxSsgPage(options) {
10
- var _a, _b, _c, _d;
10
+ var _a, _b, _c, _d, _e;
11
11
  const {
12
12
  url,
13
13
  resolvedData,
@@ -90,7 +90,10 @@ ${jsonLd}`;
90
90
  }
91
91
  const lang = locale || (website == null ? void 0 : website.default_locale) || "en";
92
92
  const htmlAttrs = `lang="${lang}"`;
93
- return { html, head, htmlAttrs, teleports: ssrContext.teleports, llm: llmEntry };
93
+ const pageNoindex = Boolean(
94
+ ((_e = seoData == null ? void 0 : seoData.page) == null ? void 0 : _e.noindex) || (seoOverride == null ? void 0 : seoOverride.noindex)
95
+ );
96
+ return { html, head, htmlAttrs, teleports: ssrContext.teleports, llm: llmEntry, noindex: pageNoindex };
94
97
  }
95
98
  function safeJson(value) {
96
99
  return JSON.stringify(value).replace(/</g, "\\u003c");
@@ -203,7 +206,11 @@ function createBloxSSREntry(options) {
203
206
  } = options;
204
207
  const apiBase = options.apiBase ?? (typeof process !== "undefined" ? (_a = process.env) == null ? void 0 : _a.BAGELINK_API_URL : void 0) ?? "https://api.bagel.to";
205
208
  let websiteIdCache = null;
209
+ let buildCollectionResolver = options.collectionResolver ?? null;
206
210
  const publishedBundleCache = /* @__PURE__ */ new Map();
211
+ function configureBuildData(data) {
212
+ buildCollectionResolver = data.collectionResolver ?? null;
213
+ }
207
214
  async function getWebsiteId() {
208
215
  var _a2, _b, _c;
209
216
  if (websiteIdCache) return websiteIdCache;
@@ -246,7 +253,7 @@ function createBloxSSREntry(options) {
246
253
  publishedBundleCache.set(cacheKey, pending);
247
254
  }
248
255
  const bundle = await pending;
249
- const activeResolver = options.collectionResolver ?? getCollectionResolver() ?? void 0;
256
+ const activeResolver = buildCollectionResolver ?? getCollectionResolver() ?? void 0;
250
257
  const resolved = await resolvePublishedPage(
251
258
  bundle.pages,
252
259
  slug,
@@ -287,7 +294,7 @@ function createBloxSSREntry(options) {
287
294
  websiteName,
288
295
  store,
289
296
  origin: apiBase,
290
- collectionResolver: options.collectionResolver ?? getCollectionResolver()
297
+ collectionResolver: buildCollectionResolver ?? getCollectionResolver()
291
298
  });
292
299
  const localeState = provideBloxLocale(app, pageLocale);
293
300
  app.provide(BLOX_SSR_ROUTE_STATE_KEY, {
@@ -343,7 +350,7 @@ function createBloxSSREntry(options) {
343
350
  const { locale: pageLocale, slug } = detectLocale(url);
344
351
  return resolveForBuild(slug, pageLocale);
345
352
  }
346
- return { render, prefetchResolve };
353
+ return { render, prefetchResolve, configureBuildData };
347
354
  }
348
355
  async function fetchDatastoreSnapshot(options) {
349
356
  var _a;
@@ -419,34 +426,34 @@ export {
419
426
  BLOX_HYDRATION_WINDOW_KEY,
420
427
  BloxBuildResponseError,
421
428
  bloxBuildJson,
422
- l as bloxBuildRequest,
429
+ m as bloxBuildRequest,
423
430
  buildJsonLd,
424
431
  buildPageHead,
425
- m as buildSiteHead,
432
+ n as buildSiteHead,
426
433
  createBloxSSREntry,
427
434
  extractPageText,
428
435
  f as fetchCmsSiteData,
429
436
  fetchDatastoreSnapshot,
430
- n as generateLlmsFullTxt,
431
- o as generateLlmsTxt,
432
- q as generateNetlifyRedirects,
433
- r as generateRobotsTxt,
437
+ o as generateLlmsFullTxt,
438
+ q as generateLlmsTxt,
439
+ r as generateNetlifyRedirects,
440
+ s as generateRobotsTxt,
434
441
  g as generateSitemapArtifacts,
435
- s as generateSitemapIndexXml,
436
- t as generateSitemapXml,
437
- w as getBloxBuildRequestOptions,
438
- x as getSiteIconFlags,
439
- y as localeSitemapPath,
440
- z as mergeLlmParts,
442
+ t as generateSitemapIndexXml,
443
+ w as generateSitemapXml,
444
+ x as getBloxBuildRequestOptions,
445
+ y as getSiteIconFlags,
446
+ z as localeSitemapPath,
447
+ A as mergeLlmParts,
441
448
  parseBloxBuildGrantBody,
442
449
  p as polyfillBloxSsgGlobals,
443
450
  a as prerender,
444
451
  querySnapshotRows,
445
452
  renderBloxSsgPage,
446
453
  resolveBloxBuildGrant,
447
- A as resolveManifestProvenance,
454
+ C as resolveManifestProvenance,
448
455
  snapshotRows,
449
- C as splitSitemapPathsByLocale,
456
+ D as splitSitemapPathsByLocale,
450
457
  u as uploadBloxManifest,
451
458
  c as validateInternalLinks,
452
459
  v as validateSsgOutput
@@ -1,6 +1,7 @@
1
1
  import { WebsiteRead } from '../api/types';
2
2
  import { RedirectEntry } from './seo';
3
3
  import { LlmArtifactsConfig, LlmPageEntry } from './llm-artifacts';
4
+ import { CollectionResolver } from '../api';
4
5
  type ExcludeRule = string | RegExp | ((path: string) => boolean);
5
6
  export interface PrerenderOptions {
6
7
  root?: string;
@@ -36,6 +37,8 @@ export interface PrerenderOptions {
36
37
  redirects?: RedirectEntry[];
37
38
  /** Canonical localized page paths, embedded in each document's hydration payload. */
38
39
  pageSlugMap?: Record<string, Record<string, string>>;
40
+ /** Immutable build collection source installed into the imported SSR entry. */
41
+ collectionResolver?: CollectionResolver | null;
39
42
  /** LLM artifacts config (llms.txt, llms-full.txt, per-page JSON-LD). */
40
43
  llm?: LlmArtifactsConfig;
41
44
  }
@@ -67,6 +70,8 @@ export interface RenderResult {
67
70
  state?: unknown;
68
71
  /** Optional ISO last-modified for this page → sitemap <lastmod>. */
69
72
  lastmod?: string;
73
+ /** Page-level noindex (excluded from the sitemap); site-wide noindex is separate. */
74
+ noindex?: boolean;
70
75
  /** Per-page LLM extract (title/description/text) for llms.txt artifacts. */
71
76
  llm?: LlmPageEntry;
72
77
  }
@@ -102,7 +107,7 @@ export declare function prerender({ root, clientOutDir, serverEntry, paths, craw
102
107
  * sharded runner divides a global budget by the shard count. 0 disables
103
108
  * prefetch (render resolves inline). Default 8.
104
109
  */
105
- resolvePrefetchConcurrency, appPaths, includeRoot, routePartsFile, mode, website, websiteId, redirects, pageSlugMap, llm, }?: PrerenderOptions): Promise<PrerenderResult>;
110
+ resolvePrefetchConcurrency, appPaths, includeRoot, routePartsFile, mode, website, websiteId, redirects, pageSlugMap, collectionResolver, llm, }?: PrerenderOptions): Promise<PrerenderResult>;
106
111
  /**
107
112
  * Collect `<link rel="preload">` tags for the web fonts a page is likely to use.
108
113
  *
@@ -116,5 +121,10 @@ resolvePrefetchConcurrency, appPaths, includeRoot, routePartsFile, mode, website
116
121
  export declare function discoverFontPreloads(clientOutDir: string): Promise<string>;
117
122
  export declare function injectIntoTemplate(template: string, head: string, appHtml: string, fontPreloads: string, htmlAttrs?: string, teleports?: Record<string, string>): string;
118
123
  export declare function injectTeleports(html: string, teleports: Record<string, string>): string;
124
+ /**
125
+ * True for error-page routes (`/404`, `/es/404`, …). These are served with a 404
126
+ * status and must never be advertised in a sitemap.
127
+ */
128
+ export declare function isErrorPagePath(urlPath: string): boolean;
119
129
  export {};
120
130
  //# sourceMappingURL=prerender.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"prerender.d.ts","sourceRoot":"","sources":["../../src/ssg/prerender.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prerender.d.ts","sourceRoot":"","sources":["../../src/ssg/prerender.ts"],"names":[],"mappings":"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"}
@@ -49,6 +49,8 @@ export declare function renderBloxSsgPage<TApp>(options: {
49
49
  htmlAttrs?: string;
50
50
  teleports?: Record<string, string>;
51
51
  llm?: LlmPageEntry;
52
+ /** Page-level noindex (CMS page flag or `useSeo({ noindex })`), not site-wide. */
53
+ noindex?: boolean;
52
54
  }>;
53
55
  /** JSON for embedding in a <script> tag — escapes `<` so `</script>` can't break out. */
54
56
  export declare function safeJson(value: unknown): string;
@@ -1 +1 @@
1
- {"version":3,"file":"render-resolved-page.d.ts","sourceRoot":"","sources":["../../src/ssg/render-resolved-page.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAE/C,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAGpE,OAAO,KAAK,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAGvE,UAAU,cAAc;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAClC;AAED,MAAM,WAAW,iBAAiB;IACjC,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACpC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC5B;AAED;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE;IACtD,GAAG,EAAE,MAAM,CAAA;IACX,YAAY,EAAE,OAAO,GAAG,IAAI,CAAA;IAC5B,cAAc,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,cAAc,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;IACxE,eAAe,EAAE,CAChB,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,OAAO,GAAG,IAAI,EAC5B,QAAQ,EAAE,MAAM,KACZ;QAAE,GAAG,EAAE,IAAI,CAAC;QAAC,MAAM,EAAE,iBAAiB,CAAC;QAAC,YAAY,CAAC,EAAE,gBAAgB,CAAA;KAAE,CAAA;IAC9E,8EAA8E;IAC9E,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,gBAAgB,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACrE,sEAAsE;IACtE,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,gBAAgB,KAAK,WAAW,CAAA;IACxD;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,8EAA8E;IAC9E,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,+EAA+E;IAC/E,OAAO,CAAC,EAAE,WAAW,GAAG,IAAI,CAAA;IAC5B,yEAAyE;IACzE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,gFAAgF;IAChF,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IACpD,8EAA8E;IAC9E,GAAG,CAAC,EAAE,kBAAkB,CAAA;CACxB,GAAG,OAAO,CAAC;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAClC,GAAG,CAAC,EAAE,YAAY,CAAA;CAClB,CAAC,CAgHD;AAED,yFAAyF;AACzF,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAE/C"}
1
+ {"version":3,"file":"render-resolved-page.d.ts","sourceRoot":"","sources":["../../src/ssg/render-resolved-page.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAE/C,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAGpE,OAAO,KAAK,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAGvE,UAAU,cAAc;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAClC;AAED,MAAM,WAAW,iBAAiB;IACjC,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACpC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC5B;AAED;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE;IACtD,GAAG,EAAE,MAAM,CAAA;IACX,YAAY,EAAE,OAAO,GAAG,IAAI,CAAA;IAC5B,cAAc,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,cAAc,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;IACxE,eAAe,EAAE,CAChB,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,OAAO,GAAG,IAAI,EAC5B,QAAQ,EAAE,MAAM,KACZ;QAAE,GAAG,EAAE,IAAI,CAAC;QAAC,MAAM,EAAE,iBAAiB,CAAC;QAAC,YAAY,CAAC,EAAE,gBAAgB,CAAA;KAAE,CAAA;IAC9E,8EAA8E;IAC9E,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,gBAAgB,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACrE,sEAAsE;IACtE,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,gBAAgB,KAAK,WAAW,CAAA;IACxD;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,8EAA8E;IAC9E,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,+EAA+E;IAC/E,OAAO,CAAC,EAAE,WAAW,GAAG,IAAI,CAAA;IAC5B,yEAAyE;IACzE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,gFAAgF;IAChF,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IACpD,8EAA8E;IAC9E,GAAG,CAAC,EAAE,kBAAkB,CAAA;CACxB,GAAG,OAAO,CAAC;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAClC,GAAG,CAAC,EAAE,YAAY,CAAA;IAClB,kFAAkF;IAClF,OAAO,CAAC,EAAE,OAAO,CAAA;CACjB,CAAC,CAyHD;AAED,yFAAyF;AACzF,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAE/C"}
@@ -25,6 +25,7 @@ export interface ShardRunnerOptions {
25
25
  export declare function matchesCmsPath(pathname: string, cmsPaths: Set<string>): boolean;
26
26
  export declare function sitemapRoutesForWebsite<T extends {
27
27
  noindex: boolean;
28
+ url: string;
28
29
  }>(routes: T[], siteNoindex: boolean | undefined): T[];
29
30
  /**
30
31
  * Coordinate a sharded prerender. Returns the process exit code.
@@ -1 +1 @@
1
- {"version":3,"file":"shard-runner.d.ts","sourceRoot":"","sources":["../../src/ssg/shard-runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAQH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAA;AAK9D,MAAM,WAAW,kBAAkB;IAClC,qDAAqD;IACrD,MAAM,EAAE,MAAM,GAAG,MAAM,CAAA;IACvB,0DAA0D;IAC1D,IAAI,EAAE,MAAM,CAAA;IACZ,uDAAuD;IACvD,OAAO,EAAE,MAAM,CAAA;IACf,sDAAsD;IACtD,WAAW,EAAE,MAAM,CAAA;IACnB,yEAAyE;IACzE,YAAY,CAAC,EAAE,uBAAuB,CAAA;IACtC,iFAAiF;IACjF,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,8FAA8F;IAC9F,eAAe,EAAE,MAAM,EAAE,CAAA;IACzB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;CAClB;AAWD,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,OAAO,CAQ/E;AAED,wBAAgB,uBAAuB,CAAC,CAAC,SAAS;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,EACrE,MAAM,EAAE,CAAC,EAAE,EACX,WAAW,EAAE,OAAO,GAAG,SAAS,GAC9B,CAAC,EAAE,CAIL;AAsED;;GAEG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CAgK1E"}
1
+ {"version":3,"file":"shard-runner.d.ts","sourceRoot":"","sources":["../../src/ssg/shard-runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAQH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAA;AAM9D,MAAM,WAAW,kBAAkB;IAClC,qDAAqD;IACrD,MAAM,EAAE,MAAM,GAAG,MAAM,CAAA;IACvB,0DAA0D;IAC1D,IAAI,EAAE,MAAM,CAAA;IACZ,uDAAuD;IACvD,OAAO,EAAE,MAAM,CAAA;IACf,sDAAsD;IACtD,WAAW,EAAE,MAAM,CAAA;IACnB,yEAAyE;IACzE,YAAY,CAAC,EAAE,uBAAuB,CAAA;IACtC,iFAAiF;IACjF,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,8FAA8F;IAC9F,eAAe,EAAE,MAAM,EAAE,CAAA;IACzB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;CAClB;AAWD,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,OAAO,CAQ/E;AAED,wBAAgB,uBAAuB,CAAC,CAAC,SAAS;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,EAClF,MAAM,EAAE,CAAC,EAAE,EACX,WAAW,EAAE,OAAO,GAAG,SAAS,GAC9B,CAAC,EAAE,CAOL;AAsED;;GAEG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CAgK1E"}
@@ -1046,6 +1046,7 @@ async function prerender({
1046
1046
  websiteId = "",
1047
1047
  redirects = [],
1048
1048
  pageSlugMap = {},
1049
+ collectionResolver = null,
1049
1050
  llm = {}
1050
1051
  } = {}) {
1051
1052
  var _a, _b, _c, _d, _e, _f;
@@ -1066,6 +1067,7 @@ async function prerender({
1066
1067
  `SSR entry must export async function render(url, ctx). Missing "render" in: ${absServerEntry}`
1067
1068
  );
1068
1069
  }
1070
+ (_a = serverMod.configureBuildData) == null ? void 0 : _a.call(serverMod, { collectionResolver });
1069
1071
  let manifest = null;
1070
1072
  try {
1071
1073
  const manifestPath = path.join(absClient, "ssr-manifest.json");
@@ -1141,13 +1143,15 @@ async function prerender({
1141
1143
  );
1142
1144
  }
1143
1145
  async function renderOne(urlPath) {
1146
+ var _a2;
1144
1147
  const {
1145
1148
  html,
1146
1149
  head = "",
1147
1150
  htmlAttrs = "",
1148
1151
  teleports = {},
1149
1152
  lastmod: pageLastmod,
1150
- llm: pageLlm
1153
+ llm: pageLlm,
1154
+ noindex: pageNoindex
1151
1155
  } = await serverMod.render(urlPath, {
1152
1156
  manifest,
1153
1157
  template,
@@ -1164,9 +1168,8 @@ async function prerender({
1164
1168
  rendered.push(urlPath);
1165
1169
  if (pageLastmod) lastmod[urlPath] = pageLastmod;
1166
1170
  if (llmEnabled && pageLlm) llmPages.push(pageLlm);
1167
- if (/<meta[^>]+name=["']robots["'][^>]*noindex/i.test(head)) {
1168
- noindexPaths.add(urlPath);
1169
- }
1171
+ const noindexForPage = pageNoindex ?? (!((_a2 = website == null ? void 0 : website.seo) == null ? void 0 : _a2.noindex) && /<meta[^>]+name=["']robots["'][^>]*noindex/i.test(head));
1172
+ if (noindexForPage) noindexPaths.add(urlPath);
1170
1173
  if (crawl) {
1171
1174
  for (const p of discoverInternalLinks(outHtml)) {
1172
1175
  enqueue(p, queue, seen, isExcluded);
@@ -1201,9 +1204,9 @@ async function prerender({
1201
1204
  );
1202
1205
  await Promise.all(workers);
1203
1206
  }
1204
- const canonicalBase = (((_a = website == null ? void 0 : website.seo) == null ? void 0 : _a.canonical_base_url) || (website == null ? void 0 : website.domain) || "").replace(/\/$/, "");
1207
+ const canonicalBase = (((_b = website == null ? void 0 : website.seo) == null ? void 0 : _b.canonical_base_url) || (website == null ? void 0 : website.domain) || "").replace(/\/$/, "");
1205
1208
  if (writeSharedAssets) {
1206
- const sitemapPaths = ((_b = website == null ? void 0 : website.seo) == null ? void 0 : _b.noindex) ? rendered : rendered.filter((p) => !noindexPaths.has(p));
1209
+ const sitemapPaths = rendered.filter((p) => !noindexPaths.has(p) && !isErrorPagePath(p));
1207
1210
  if (canonicalBase && sitemapPaths.length > 0) {
1208
1211
  const artifacts = generateSitemapArtifacts({
1209
1212
  routes: sitemapPaths.map((routePath) => ({
@@ -1517,6 +1520,10 @@ function injectTeleports(html, teleports) {
1517
1520
  }
1518
1521
  return out;
1519
1522
  }
1523
+ function isErrorPagePath(urlPath) {
1524
+ const segments = urlPath.split(/[?#]/)[0].split("/").filter(Boolean);
1525
+ return segments.length > 0 && segments[segments.length - 1] === "404";
1526
+ }
1520
1527
  function outFilePath(absClientDir, urlPath, mode) {
1521
1528
  const [pathname] = urlPath.split("?");
1522
1529
  const safe = pathname === "/" ? "/" : pathname;
@@ -1784,6 +1791,7 @@ exports.generateSitemapIndexXml = generateSitemapIndexXml;
1784
1791
  exports.generateSitemapXml = generateSitemapXml;
1785
1792
  exports.getBloxBuildRequestOptions = getBloxBuildRequestOptions;
1786
1793
  exports.getSiteIconFlags = getSiteIconFlags;
1794
+ exports.isErrorPagePath = isErrorPagePath;
1787
1795
  exports.llmArtifacts = llmArtifacts;
1788
1796
  exports.localeSitemapPath = localeSitemapPath;
1789
1797
  exports.mergeLlmParts = mergeLlmParts;
@@ -1023,6 +1023,7 @@ async function prerender({
1023
1023
  websiteId = "",
1024
1024
  redirects = [],
1025
1025
  pageSlugMap = {},
1026
+ collectionResolver = null,
1026
1027
  llm = {}
1027
1028
  } = {}) {
1028
1029
  var _a, _b, _c, _d, _e, _f;
@@ -1043,6 +1044,7 @@ async function prerender({
1043
1044
  `SSR entry must export async function render(url, ctx). Missing "render" in: ${absServerEntry}`
1044
1045
  );
1045
1046
  }
1047
+ (_a = serverMod.configureBuildData) == null ? void 0 : _a.call(serverMod, { collectionResolver });
1046
1048
  let manifest = null;
1047
1049
  try {
1048
1050
  const manifestPath = path.join(absClient, "ssr-manifest.json");
@@ -1118,13 +1120,15 @@ async function prerender({
1118
1120
  );
1119
1121
  }
1120
1122
  async function renderOne(urlPath) {
1123
+ var _a2;
1121
1124
  const {
1122
1125
  html,
1123
1126
  head = "",
1124
1127
  htmlAttrs = "",
1125
1128
  teleports = {},
1126
1129
  lastmod: pageLastmod,
1127
- llm: pageLlm
1130
+ llm: pageLlm,
1131
+ noindex: pageNoindex
1128
1132
  } = await serverMod.render(urlPath, {
1129
1133
  manifest,
1130
1134
  template,
@@ -1141,9 +1145,8 @@ async function prerender({
1141
1145
  rendered.push(urlPath);
1142
1146
  if (pageLastmod) lastmod[urlPath] = pageLastmod;
1143
1147
  if (llmEnabled && pageLlm) llmPages.push(pageLlm);
1144
- if (/<meta[^>]+name=["']robots["'][^>]*noindex/i.test(head)) {
1145
- noindexPaths.add(urlPath);
1146
- }
1148
+ const noindexForPage = pageNoindex ?? (!((_a2 = website == null ? void 0 : website.seo) == null ? void 0 : _a2.noindex) && /<meta[^>]+name=["']robots["'][^>]*noindex/i.test(head));
1149
+ if (noindexForPage) noindexPaths.add(urlPath);
1147
1150
  if (crawl) {
1148
1151
  for (const p of discoverInternalLinks(outHtml)) {
1149
1152
  enqueue(p, queue, seen, isExcluded);
@@ -1178,9 +1181,9 @@ async function prerender({
1178
1181
  );
1179
1182
  await Promise.all(workers);
1180
1183
  }
1181
- const canonicalBase = (((_a = website == null ? void 0 : website.seo) == null ? void 0 : _a.canonical_base_url) || (website == null ? void 0 : website.domain) || "").replace(/\/$/, "");
1184
+ const canonicalBase = (((_b = website == null ? void 0 : website.seo) == null ? void 0 : _b.canonical_base_url) || (website == null ? void 0 : website.domain) || "").replace(/\/$/, "");
1182
1185
  if (writeSharedAssets) {
1183
- const sitemapPaths = ((_b = website == null ? void 0 : website.seo) == null ? void 0 : _b.noindex) ? rendered : rendered.filter((p) => !noindexPaths.has(p));
1186
+ const sitemapPaths = rendered.filter((p) => !noindexPaths.has(p) && !isErrorPagePath(p));
1184
1187
  if (canonicalBase && sitemapPaths.length > 0) {
1185
1188
  const artifacts = generateSitemapArtifacts({
1186
1189
  routes: sitemapPaths.map((routePath) => ({
@@ -1494,6 +1497,10 @@ function injectTeleports(html, teleports) {
1494
1497
  }
1495
1498
  return out;
1496
1499
  }
1500
+ function isErrorPagePath(urlPath) {
1501
+ const segments = urlPath.split(/[?#]/)[0].split("/").filter(Boolean);
1502
+ return segments.length > 0 && segments[segments.length - 1] === "404";
1503
+ }
1497
1504
  function outFilePath(absClientDir, urlPath, mode) {
1498
1505
  const [pathname] = urlPath.split("?");
1499
1506
  const safe = pathname === "/" ? "/" : pathname;
@@ -1744,10 +1751,11 @@ async function validateSitemap(outDir, content) {
1744
1751
  return failures;
1745
1752
  }
1746
1753
  export {
1747
- resolveManifestProvenance as A,
1754
+ mergeLlmParts as A,
1748
1755
  BloxBuildResponseError as B,
1749
- splitSitemapPathsByLocale as C,
1750
- llmArtifacts as D,
1756
+ resolveManifestProvenance as C,
1757
+ splitSitemapPathsByLocale as D,
1758
+ llmArtifacts as E,
1751
1759
  prerender as a,
1752
1760
  buildCollectionResolver as b,
1753
1761
  validateInternalLinks as c,
@@ -1756,22 +1764,22 @@ export {
1756
1764
  fetchCmsSiteData as f,
1757
1765
  generateSitemapArtifacts as g,
1758
1766
  primaryContextEntry as h,
1759
- buildJsonLd as i,
1760
- extractPageText as j,
1761
- bloxBuildJson as k,
1762
- bloxBuildRequest as l,
1763
- buildSiteHead as m,
1764
- generateLlmsFullTxt as n,
1765
- generateLlmsTxt as o,
1767
+ isErrorPagePath as i,
1768
+ buildJsonLd as j,
1769
+ extractPageText as k,
1770
+ bloxBuildJson as l,
1771
+ bloxBuildRequest as m,
1772
+ buildSiteHead as n,
1773
+ generateLlmsFullTxt as o,
1766
1774
  polyfillBloxSsgGlobals as p,
1767
- generateNetlifyRedirects as q,
1768
- generateRobotsTxt as r,
1769
- generateSitemapIndexXml as s,
1770
- generateSitemapXml as t,
1775
+ generateLlmsTxt as q,
1776
+ generateNetlifyRedirects as r,
1777
+ generateRobotsTxt as s,
1778
+ generateSitemapIndexXml as t,
1771
1779
  uploadBloxManifest as u,
1772
1780
  validateSsgOutput as v,
1773
- getBloxBuildRequestOptions as w,
1774
- getSiteIconFlags as x,
1775
- localeSitemapPath as y,
1776
- mergeLlmParts as z
1781
+ generateSitemapXml as w,
1782
+ getBloxBuildRequestOptions as x,
1783
+ getSiteIconFlags as y,
1784
+ localeSitemapPath as z
1777
1785
  };
package/package.json CHANGED
@@ -1,126 +1,125 @@
1
1
  {
2
- "name": "@bagelink/blox",
3
- "type": "module",
4
- "version": "1.18.8",
5
- "description": "Blox page builder library for drag-and-drop page building and static data management",
6
- "author": {
7
- "name": "Bagel Studio",
8
- "email": "info@bagelstudio.co.il",
9
- "url": "https://bagelstudio.co.il"
10
- },
11
- "license": "MIT",
12
- "homepage": "https://github.com/bageldb/bagelink/tree/master/packages/blox#readme",
13
- "repository": {
14
- "type": "git",
15
- "url": "git+https://github.com/bageldb/bagelink.git",
16
- "directory": "packages/blox"
17
- },
18
- "bugs": "https://github.com/bageldb/bagelink/issues",
19
- "keywords": [
20
- "blox",
21
- "page-builder",
22
- "preview",
23
- "external-preview",
24
- "cms",
25
- "vue",
26
- "component-library",
27
- "drag-and-drop",
28
- "static-pages"
29
- ],
30
- "bin": {
31
- "blox-ssg": "dist/ssg/cli.mjs"
32
- },
33
- "sideEffects": [
34
- "**/*.css",
35
- "**/*.vue"
36
- ],
37
- "exports": {
38
- "./package.json": "./package.json",
39
- "./vite": {
40
- "types": "./dist/vite-plugin.d.ts",
41
- "import": "./dist/vite-plugin.mjs"
42
- },
43
- ".": {
44
- "types": "./dist/index.d.ts",
45
- "require": "./dist/index.cjs",
46
- "import": "./dist/index.mjs"
47
- },
48
- "./ssg": {
49
- "types": "./dist/ssg/index.d.ts",
50
- "import": "./dist/ssg/index.mjs"
51
- },
52
- "./ssg/client": {
53
- "types": "./dist/ssg/client.d.ts",
54
- "import": "./dist/ssg/client.mjs"
55
- },
56
- "./ssg/build-grant": {
57
- "types": "./dist/ssg/build-grant.d.ts",
58
- "import": "./dist/ssg/build-grant.mjs"
59
- },
60
- "./style.css": "./dist/style.css",
61
- "./dist/style.css": "./dist/style.css"
62
- },
63
- "main": "./dist/index.cjs",
64
- "module": "./dist/index.mjs",
65
- "types": "./dist/index.d.ts",
66
- "typesVersions": {
67
- "*": {
68
- "*": [
69
- "./dist/*",
70
- "./dist/index.d.ts"
71
- ]
72
- }
73
- },
74
- "files": [
75
- "dist",
76
- "core",
77
- "components",
78
- "config",
79
- "ssg",
80
- "utils",
81
- "views",
82
- "setup.ts",
83
- "index.ts",
84
- "README.md"
85
- ],
86
- "scripts": {
87
- "prepublishOnly": "pnpm build",
88
- "dev": "vite build --watch",
89
- "build": "vite build",
90
- "typecheck": "vue-tsc --noEmit"
91
- },
92
- "publishConfig": {
93
- "access": "public"
94
- },
95
- "peerDependencies": {
96
- "@bagelink/vue": "*",
97
- "happy-dom": ">=14.0.0",
98
- "vite": ">=5.0.0",
99
- "vue": "^3.3.0",
100
- "vue-router": "^4.0.0"
101
- },
102
- "peerDependenciesMeta": {
103
- "happy-dom": {
104
- "optional": true
105
- },
106
- "vite": {
107
- "optional": true
108
- }
109
- },
110
- "devDependencies": {
111
- "@vitejs/plugin-vue": "^5.2.4",
112
- "@vue/tsconfig": "^0.7.0",
113
- "typescript": "^5.9.3",
114
- "vite": "^5.4.21",
115
- "vite-plugin-dts": "^4.5.4",
116
- "vite-tsconfig-paths": "^5.1.4",
117
- "vitest": "^3.2.7",
118
- "vue": "^3.5.43",
119
- "vue-router": "^4.6.4",
120
- "vue-tsc": "^2.2.12"
121
- },
122
- "dependencies": {
123
- "magic-string": "^0.30.21",
124
- "pinia": "^3.0.4"
125
- }
126
- }
2
+ "name": "@bagelink/blox",
3
+ "type": "module",
4
+ "version": "1.18.10",
5
+ "description": "Blox page builder library for drag-and-drop page building and static data management",
6
+ "author": {
7
+ "name": "Bagel Studio",
8
+ "email": "info@bagelstudio.co.il",
9
+ "url": "https://bagelstudio.co.il"
10
+ },
11
+ "license": "MIT",
12
+ "homepage": "https://github.com/bageldb/bagelink/tree/master/packages/blox#readme",
13
+ "repository": {
14
+ "type": "git",
15
+ "url": "git+https://github.com/bageldb/bagelink.git",
16
+ "directory": "packages/blox"
17
+ },
18
+ "bugs": "https://github.com/bageldb/bagelink/issues",
19
+ "keywords": [
20
+ "blox",
21
+ "page-builder",
22
+ "preview",
23
+ "external-preview",
24
+ "cms",
25
+ "vue",
26
+ "component-library",
27
+ "drag-and-drop",
28
+ "static-pages"
29
+ ],
30
+ "bin": {
31
+ "blox-ssg": "dist/ssg/cli.mjs"
32
+ },
33
+ "sideEffects": [
34
+ "**/*.css",
35
+ "**/*.vue"
36
+ ],
37
+ "exports": {
38
+ "./package.json": "./package.json",
39
+ "./vite": {
40
+ "types": "./dist/vite-plugin.d.ts",
41
+ "import": "./dist/vite-plugin.mjs"
42
+ },
43
+ ".": {
44
+ "types": "./dist/index.d.ts",
45
+ "require": "./dist/index.cjs",
46
+ "import": "./dist/index.mjs"
47
+ },
48
+ "./ssg": {
49
+ "types": "./dist/ssg/index.d.ts",
50
+ "import": "./dist/ssg/index.mjs"
51
+ },
52
+ "./ssg/client": {
53
+ "types": "./dist/ssg/client.d.ts",
54
+ "import": "./dist/ssg/client.mjs"
55
+ },
56
+ "./ssg/build-grant": {
57
+ "types": "./dist/ssg/build-grant.d.ts",
58
+ "import": "./dist/ssg/build-grant.mjs"
59
+ },
60
+ "./style.css": "./dist/style.css",
61
+ "./dist/style.css": "./dist/style.css"
62
+ },
63
+ "main": "./dist/index.cjs",
64
+ "module": "./dist/index.mjs",
65
+ "types": "./dist/index.d.ts",
66
+ "typesVersions": {
67
+ "*": {
68
+ "*": [
69
+ "./dist/*",
70
+ "./dist/index.d.ts"
71
+ ]
72
+ }
73
+ },
74
+ "files": [
75
+ "dist",
76
+ "core",
77
+ "components",
78
+ "config",
79
+ "ssg",
80
+ "utils",
81
+ "views",
82
+ "setup.ts",
83
+ "index.ts",
84
+ "README.md"
85
+ ],
86
+ "publishConfig": {
87
+ "access": "public"
88
+ },
89
+ "peerDependencies": {
90
+ "@bagelink/vue": "*",
91
+ "happy-dom": ">=14.0.0",
92
+ "vite": ">=5.0.0",
93
+ "vue": "^3.3.0",
94
+ "vue-router": "^4.0.0"
95
+ },
96
+ "peerDependenciesMeta": {
97
+ "happy-dom": {
98
+ "optional": true
99
+ },
100
+ "vite": {
101
+ "optional": true
102
+ }
103
+ },
104
+ "devDependencies": {
105
+ "@vitejs/plugin-vue": "^5.2.4",
106
+ "@vue/tsconfig": "^0.7.0",
107
+ "typescript": "^5.9.3",
108
+ "vite": "^5.4.21",
109
+ "vite-plugin-dts": "^4.5.4",
110
+ "vite-tsconfig-paths": "^5.1.4",
111
+ "vitest": "^3.2.7",
112
+ "vue": "^3.5.43",
113
+ "vue-router": "^4.6.4",
114
+ "vue-tsc": "^2.2.12"
115
+ },
116
+ "dependencies": {
117
+ "magic-string": "^0.30.21",
118
+ "pinia": "^3.0.4"
119
+ },
120
+ "scripts": {
121
+ "dev": "vite build --watch",
122
+ "build": "vite build",
123
+ "typecheck": "vue-tsc --noEmit"
124
+ }
125
+ }