vaza-content 0.2.0 → 0.2.2

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 (82) hide show
  1. package/dist/adapters/astro/index.cjs +9 -15
  2. package/dist/adapters/astro/index.cjs.map +1 -1
  3. package/dist/adapters/astro/index.d.cts +4 -3
  4. package/dist/adapters/astro/index.d.ts +4 -3
  5. package/dist/adapters/astro/index.js +6 -12
  6. package/dist/adapters/astro/index.js.map +1 -1
  7. package/dist/adapters/next/index.cjs +11 -12
  8. package/dist/adapters/next/index.cjs.map +1 -1
  9. package/dist/adapters/next/index.d.cts +5 -3
  10. package/dist/adapters/next/index.d.ts +5 -3
  11. package/dist/adapters/next/index.js +8 -9
  12. package/dist/adapters/next/index.js.map +1 -1
  13. package/dist/adapters/nuxt/index.cjs +22 -22
  14. package/dist/adapters/nuxt/index.cjs.map +1 -1
  15. package/dist/adapters/nuxt/index.d.cts +11 -7
  16. package/dist/adapters/nuxt/index.d.ts +11 -7
  17. package/dist/adapters/nuxt/index.js +13 -13
  18. package/dist/adapters/nuxt/index.js.map +1 -1
  19. package/dist/adapters/sveltekit/index.cjs +9 -15
  20. package/dist/adapters/sveltekit/index.cjs.map +1 -1
  21. package/dist/adapters/sveltekit/index.d.cts +3 -2
  22. package/dist/adapters/sveltekit/index.d.ts +3 -2
  23. package/dist/adapters/sveltekit/index.js +5 -11
  24. package/dist/adapters/sveltekit/index.js.map +1 -1
  25. package/dist/{blog-7EEJJG26.js → blog-L7HRY3QC.js} +2 -4
  26. package/dist/{blog-7EEJJG26.js.map → blog-L7HRY3QC.js.map} +1 -1
  27. package/dist/{blog-Z3R5GOMP.cjs → blog-SEXXJJSV.cjs} +3 -5
  28. package/dist/blog-SEXXJJSV.cjs.map +1 -0
  29. package/dist/{chunk-YV2ZYIAD.cjs → chunk-H3D7F4TA.cjs} +544 -503
  30. package/dist/chunk-H3D7F4TA.cjs.map +1 -0
  31. package/dist/{chunk-FALSVGPG.js → chunk-OKXBDPYF.js} +511 -470
  32. package/dist/chunk-OKXBDPYF.js.map +1 -0
  33. package/dist/cli/index.cjs +30 -24
  34. package/dist/cli/index.cjs.map +1 -1
  35. package/dist/cli/index.js +29 -23
  36. package/dist/cli/index.js.map +1 -1
  37. package/dist/{dark-EX2GRAYK.cjs → dark-66ZWYLT7.cjs} +2 -4
  38. package/dist/dark-66ZWYLT7.cjs.map +1 -0
  39. package/dist/{dark-6E36AKLN.js → dark-SZOURAMM.js} +1 -3
  40. package/dist/{dark-6E36AKLN.js.map → dark-SZOURAMM.js.map} +1 -1
  41. package/dist/index.cjs +8 -11
  42. package/dist/index.cjs.map +1 -1
  43. package/dist/index.d.cts +29 -29
  44. package/dist/index.d.ts +29 -29
  45. package/dist/index.js +3 -6
  46. package/dist/index.js.map +1 -1
  47. package/dist/{minimal-D2PRAVG6.js → minimal-CGXF737F.js} +1 -3
  48. package/dist/{minimal-D2PRAVG6.js.map → minimal-CGXF737F.js.map} +1 -1
  49. package/dist/{minimal-RHOK4XEZ.cjs → minimal-XTTHXE3T.cjs} +2 -4
  50. package/dist/minimal-XTTHXE3T.cjs.map +1 -0
  51. package/dist/process-VXDWM664.cjs +7 -0
  52. package/dist/process-VXDWM664.cjs.map +1 -0
  53. package/dist/process-ZQV5M2TB.js +7 -0
  54. package/dist/{product-OT3XYMWD.cjs → product-BY3GVQGV.cjs} +2 -4
  55. package/dist/product-BY3GVQGV.cjs.map +1 -0
  56. package/dist/{product-NCUW3U72.js → product-UQXUI5YL.js} +1 -3
  57. package/dist/{product-NCUW3U72.js.map → product-UQXUI5YL.js.map} +1 -1
  58. package/dist/{types-CgaidvaB.d.cts → types-DAfWIHiD.d.cts} +1 -1
  59. package/dist/{types-CgaidvaB.d.ts → types-DAfWIHiD.d.ts} +1 -1
  60. package/package.json +6 -4
  61. package/dist/blog-Z3R5GOMP.cjs.map +0 -1
  62. package/dist/chunk-DGUM43GV.js +0 -11
  63. package/dist/chunk-FALSVGPG.js.map +0 -1
  64. package/dist/chunk-JEQ2X3Z6.cjs +0 -11
  65. package/dist/chunk-JEQ2X3Z6.cjs.map +0 -1
  66. package/dist/chunk-PCRQY47G.js +0 -35
  67. package/dist/chunk-PCRQY47G.js.map +0 -1
  68. package/dist/chunk-WOCXEBQC.cjs +0 -35
  69. package/dist/chunk-WOCXEBQC.cjs.map +0 -1
  70. package/dist/chunk-YV2ZYIAD.cjs.map +0 -1
  71. package/dist/dark-EX2GRAYK.cjs.map +0 -1
  72. package/dist/logger-7WBTEDED.cjs +0 -10
  73. package/dist/logger-7WBTEDED.cjs.map +0 -1
  74. package/dist/logger-BGP7C274.js +0 -10
  75. package/dist/logger-BGP7C274.js.map +0 -1
  76. package/dist/minimal-RHOK4XEZ.cjs.map +0 -1
  77. package/dist/process-B4PJ6CWC.cjs +0 -9
  78. package/dist/process-B4PJ6CWC.cjs.map +0 -1
  79. package/dist/process-KSSXQJE6.js +0 -9
  80. package/dist/process-KSSXQJE6.js.map +0 -1
  81. package/dist/product-OT3XYMWD.cjs.map +0 -1
  82. /package/dist/{chunk-DGUM43GV.js.map → process-ZQV5M2TB.js.map} +0 -0
@@ -1,10 +1,9 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
2
 
3
3
 
4
4
 
5
- var _chunkYV2ZYIADcjs = require('../../chunk-YV2ZYIAD.cjs');
6
- require('../../chunk-WOCXEBQC.cjs');
7
- require('../../chunk-JEQ2X3Z6.cjs');
5
+
6
+ var _chunkH3D7F4TAcjs = require('../../chunk-H3D7F4TA.cjs');
8
7
 
9
8
  // src/adapters/astro/index.ts
10
9
  var _fs = require('fs');
@@ -13,7 +12,7 @@ function vazaContent(config) {
13
12
  return {
14
13
  name: "vaza-content",
15
14
  hooks: {
16
- "astro:build:done": async () => {
15
+ "astro:build:start": async () => {
17
16
  await processAndWrite(config);
18
17
  }
19
18
  }
@@ -23,23 +22,19 @@ async function buildVazaContent(config) {
23
22
  return processAndWrite(config);
24
23
  }
25
24
  async function processAndWrite(config) {
26
- const output = await _chunkYV2ZYIADcjs.processCollections.call(void 0, config);
25
+ const output = await _chunkH3D7F4TAcjs.processCollections.call(void 0, config);
27
26
  const outDir = ".vaza-content";
28
27
  ensureDir(outDir);
29
28
  ensureDir("public");
30
29
  if (_optionalChain([config, 'access', _ => _.sitemap, 'optionalAccess', _2 => _2.enabled]) !== false) {
31
30
  writeJson(_path.join.call(void 0, outDir, "sitemap-data.json"), output.sitemap);
32
- const xml = _chunkYV2ZYIADcjs.renderSitemapXml.call(void 0, output.sitemap);
31
+ const xml = _chunkH3D7F4TAcjs.renderSitemapXml.call(void 0, output.sitemap);
33
32
  _fs.writeFileSync.call(void 0, "public/sitemap.xml", xml, "utf-8");
34
33
  }
35
34
  if (_optionalChain([config, 'access', _3 => _3.rss, 'optionalAccess', _4 => _4.enabled]) !== false) {
36
- const xml = _chunkYV2ZYIADcjs.renderRssXml.call(void 0, output.rss, config);
35
+ const xml = _chunkH3D7F4TAcjs.renderRssXml.call(void 0, output.rss, config);
37
36
  const rssPath = _nullishCoalesce(_optionalChain([config, 'access', _5 => _5.rss, 'optionalAccess', _6 => _6.path]), () => ( "/rss.xml"));
38
- _fs.writeFileSync.call(void 0,
39
- _path.join.call(void 0, "public", rssPath.replace(/^\//, "")),
40
- xml,
41
- "utf-8"
42
- );
37
+ _fs.writeFileSync.call(void 0, _path.join.call(void 0, "public", rssPath.replace(/^\//, "")), xml, "utf-8");
43
38
  }
44
39
  if (_optionalChain([config, 'access', _7 => _7.jsonLd, 'optionalAccess', _8 => _8.enabled]) !== false) {
45
40
  const jsonLdDir = _path.join.call(void 0, outDir, "json-ld");
@@ -57,8 +52,7 @@ async function processAndWrite(config) {
57
52
  writeJson(_path.join.call(void 0, outDir, "integrity-report.json"), output.integrity);
58
53
  const slugManifest = output.entries.map((e) => e.slug);
59
54
  writeJson(_path.join.call(void 0, outDir, "slugs.json"), slugManifest);
60
- const { logger } = await Promise.resolve().then(() => _interopRequireWildcard(require("../../logger-7WBTEDED.cjs")));
61
- logger.info(`Generated ${output.entries.length} entries`);
55
+ _chunkH3D7F4TAcjs.logger.info(`Generated ${output.entries.length} entries`);
62
56
  return output;
63
57
  }
64
58
  function ensureDir(dir) {
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/mehdi/vaza-content/dist/adapters/astro/index.cjs","../../../src/adapters/astro/index.ts"],"names":[],"mappings":"AAAA;AACE;AACA;AACA;AACF,4DAAiC;AACjC,oCAAiC;AACjC,oCAAiC;AACjC;AACA;ACJA,wBAAqD;AACrD,4BAA8B;AAWvB,SAAS,WAAA,CAAY,MAAA,EAAoB;AAC9C,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,cAAA;AAAA,IACN,KAAA,EAAO;AAAA,MACL,kBAAA,EAAoB,MAAA,CAAA,EAAA,GAAY;AAC9B,QAAA,MAAM,eAAA,CAAgB,MAAM,CAAA;AAAA,MAC9B;AAAA,IACF;AAAA,EACF,CAAA;AACF;AAKA,MAAA,SAAsB,gBAAA,CAAiB,MAAA,EAAyC;AAC9E,EAAA,OAAO,eAAA,CAAgB,MAAM,CAAA;AAC/B;AAEA,MAAA,SAAe,eAAA,CAAgB,MAAA,EAAyC;AACtE,EAAA,MAAM,OAAA,EAAS,MAAM,kDAAA,MAAyB,CAAA;AAC9C,EAAA,MAAM,OAAA,EAAS,eAAA;AAEf,EAAA,SAAA,CAAU,MAAM,CAAA;AAChB,EAAA,SAAA,CAAU,QAAQ,CAAA;AAGlB,EAAA,GAAA,iBAAI,MAAA,mBAAO,OAAA,6BAAS,UAAA,IAAY,KAAA,EAAO;AACrC,IAAA,SAAA,CAAU,wBAAA,MAAK,EAAQ,mBAAmB,CAAA,EAAG,MAAA,CAAO,OAAO,CAAA;AAC3D,IAAA,MAAM,IAAA,EAAM,gDAAA,MAAiB,CAAO,OAAO,CAAA;AAC3C,IAAA,+BAAA,oBAAc,EAAsB,GAAA,EAAK,OAAO,CAAA;AAAA,EAClD;AAGA,EAAA,GAAA,iBAAI,MAAA,qBAAO,GAAA,6BAAK,UAAA,IAAY,KAAA,EAAO;AACjC,IAAA,MAAM,IAAA,EAAM,4CAAA,MAAa,CAAO,GAAA,EAAK,MAAM,CAAA;AAC3C,IAAA,MAAM,QAAA,mCAAU,MAAA,qBAAO,GAAA,6BAAK,MAAA,UAAQ,YAAA;AACpC,IAAA,+BAAA;AAAA,MACE,wBAAA,QAAK,EAAU,OAAA,CAAQ,OAAA,CAAQ,KAAA,EAAO,EAAE,CAAC,CAAA;AAAA,MACzC,GAAA;AAAA,MACA;AAAA,IACF,CAAA;AAAA,EACF;AAGA,EAAA,GAAA,iBAAI,MAAA,qBAAO,MAAA,6BAAQ,UAAA,IAAY,KAAA,EAAO;AACpC,IAAA,MAAM,UAAA,EAAY,wBAAA,MAAK,EAAQ,SAAS,CAAA;AACxC,IAAA,SAAA,CAAU,SAAS,CAAA;AACnB,IAAA,IAAA,CAAA,MAAW,CAAC,IAAA,EAAM,OAAO,EAAA,GAAK,MAAA,CAAO,OAAA,CAAQ,MAAA,CAAO,MAAM,CAAA,EAAG;AAC3D,MAAA,SAAA,CAAU,wBAAA,SAAK,EAAW,CAAA,EAAA;AAC5B,IAAA;AACF,EAAA;AAGqB,EAAA;AACI,IAAA;AACzB,EAAA;AAGsB,EAAA;AACG,IAAA;AACzB,EAAA;AAGuB,EAAA;AAGK,EAAA;AACL,EAAA;AAEE,EAAA;AACA,EAAA;AAElB,EAAA;AACT;AAEsC;AACd,EAAA;AACQ,IAAA;AAC9B,EAAA;AACF;AAEsD;AAC7B,EAAA;AACE,EAAA;AAC3B;AD5BiC;AACA;AACA;AACA","file":"/Users/mehdi/vaza-content/dist/adapters/astro/index.cjs","sourcesContent":[null,"import { processCollections } from \"../../process.js\";\nimport type { VazaConfig, VazaOutput } from \"../../types.js\";\nimport { renderSitemapXml } from \"../../generate/sitemap.js\";\nimport { renderRssXml } from \"../../generate/rss.js\";\nimport { writeFileSync, mkdirSync, existsSync } from \"node:fs\";\nimport { join, dirname } from \"node:path\";\n\n/**\n * Astro adapter integration that hooks into build lifecycle.\n *\n * Usage in astro.config.mjs:\n * import { vazaContent } from 'vaza-content/astro'\n * export default defineConfig({\n * integrations: [vazaContent(vazaConfig)]\n * })\n */\nexport function vazaContent(config: VazaConfig) {\n return {\n name: \"vaza-content\",\n hooks: {\n \"astro:build:done\": async () => {\n await processAndWrite(config);\n },\n },\n };\n}\n\n/**\n * Standalone function to process and write outputs.\n */\nexport async function buildVazaContent(config: VazaConfig): Promise<VazaOutput> {\n return processAndWrite(config);\n}\n\nasync function processAndWrite(config: VazaConfig): Promise<VazaOutput> {\n const output = await processCollections(config);\n const outDir = \".vaza-content\";\n\n ensureDir(outDir);\n ensureDir(\"public\");\n\n // Write sitemap\n if (config.sitemap?.enabled !== false) {\n writeJson(join(outDir, \"sitemap-data.json\"), output.sitemap);\n const xml = renderSitemapXml(output.sitemap);\n writeFileSync(\"public/sitemap.xml\", xml, \"utf-8\");\n }\n\n // Write RSS\n if (config.rss?.enabled !== false) {\n const xml = renderRssXml(output.rss, config);\n const rssPath = config.rss?.path ?? \"/rss.xml\";\n writeFileSync(\n join(\"public\", rssPath.replace(/^\\//, \"\")),\n xml,\n \"utf-8\",\n );\n }\n\n // Write JSON-LD per slug\n if (config.jsonLd?.enabled !== false) {\n const jsonLdDir = join(outDir, \"json-ld\");\n ensureDir(jsonLdDir);\n for (const [slug, schemas] of Object.entries(output.jsonLd)) {\n writeJson(join(jsonLdDir, `${slug}.json`), schemas);\n }\n }\n\n // Write taxonomy data\n if (config.taxonomy?.enabled !== false) {\n writeJson(join(outDir, \"taxonomy.json\"), output.taxonomy);\n }\n\n // Write redirects\n if (config.redirects?.enabled !== false) {\n writeJson(join(outDir, \"redirects.json\"), output.redirects);\n }\n\n // Write integrity report\n writeJson(join(outDir, \"integrity-report.json\"), output.integrity);\n\n // Write slug manifest\n const slugManifest = output.entries.map((e) => e.slug);\n writeJson(join(outDir, \"slugs.json\"), slugManifest);\n\n const { logger } = await import(\"../../logger.js\");\n logger.info(`Generated ${output.entries.length} entries`);\n\n return output;\n}\n\nfunction ensureDir(dir: string): void {\n if (!existsSync(dir)) {\n mkdirSync(dir, { recursive: true });\n }\n}\n\nfunction writeJson(path: string, data: unknown): void {\n ensureDir(dirname(path));\n writeFileSync(path, JSON.stringify(data, null, 2), \"utf-8\");\n}\n"]}
1
+ {"version":3,"sources":["/Users/mehdi/vaza-content/dist/adapters/astro/index.cjs","../../../src/adapters/astro/index.ts"],"names":[],"mappings":"AAAA;AACE;AACA;AACA;AACA;AACF,4DAAiC;AACjC;AACA;ACPA,wBAAqD;AACrD,4BAA8B;AAiBvB,SAAS,WAAA,CAAY,MAAA,EAAoB;AAC9C,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,cAAA;AAAA,IACN,KAAA,EAAO;AAAA,MACL,mBAAA,EAAqB,MAAA,CAAA,EAAA,GAAY;AAC/B,QAAA,MAAM,eAAA,CAAgB,MAAM,CAAA;AAAA,MAC9B;AAAA,IACF;AAAA,EACF,CAAA;AACF;AAKA,MAAA,SAAsB,gBAAA,CACpB,MAAA,EACqB;AACrB,EAAA,OAAO,eAAA,CAAgB,MAAM,CAAA;AAC/B;AAEA,MAAA,SAAe,eAAA,CAAgB,MAAA,EAAyC;AACtE,EAAA,MAAM,OAAA,EAAS,MAAM,kDAAA,MAAyB,CAAA;AAC9C,EAAA,MAAM,OAAA,EAAS,eAAA;AAEf,EAAA,SAAA,CAAU,MAAM,CAAA;AAChB,EAAA,SAAA,CAAU,QAAQ,CAAA;AAGlB,EAAA,GAAA,iBAAI,MAAA,mBAAO,OAAA,6BAAS,UAAA,IAAY,KAAA,EAAO;AACrC,IAAA,SAAA,CAAU,wBAAA,MAAK,EAAQ,mBAAmB,CAAA,EAAG,MAAA,CAAO,OAAO,CAAA;AAC3D,IAAA,MAAM,IAAA,EAAM,gDAAA,MAAiB,CAAO,OAAO,CAAA;AAC3C,IAAA,+BAAA,oBAAc,EAAsB,GAAA,EAAK,OAAO,CAAA;AAAA,EAClD;AAGA,EAAA,GAAA,iBAAI,MAAA,qBAAO,GAAA,6BAAK,UAAA,IAAY,KAAA,EAAO;AACjC,IAAA,MAAM,IAAA,EAAM,4CAAA,MAAa,CAAO,GAAA,EAAK,MAAM,CAAA;AAC3C,IAAA,MAAM,QAAA,mCAAU,MAAA,qBAAO,GAAA,6BAAK,MAAA,UAAQ,YAAA;AACpC,IAAA,+BAAA,wBAAc,QAAK,EAAU,OAAA,CAAQ,OAAA,CAAQ,KAAA,EAAO,EAAE,CAAC,CAAA,EAAG,GAAA,EAAK,OAAO,CAAA;AAAA,EACxE;AAGA,EAAA,GAAA,iBAAI,MAAA,qBAAO,MAAA,6BAAQ,UAAA,IAAY,KAAA,EAAO;AACpC,IAAA,MAAM,UAAA,EAAY,wBAAA,MAAK,EAAQ,SAAS,CAAA;AACxC,IAAA,SAAA,CAAU,SAAS,CAAA;AACnB,IAAA,IAAA,CAAA,MAAW,CAAC,IAAA,EAAM,OAAO,EAAA,GAAK,MAAA,CAAO,OAAA,CAAQ,MAAA,CAAO,MAAM,CAAA,EAAG;AAC3D,MAAA,SAAA,CAAU,wBAAA,SAAK,EAAW,CAAA,EAAA;AAC5B,IAAA;AACF,EAAA;AAGqB,EAAA;AACI,IAAA;AACzB,EAAA;AAGsB,EAAA;AACG,IAAA;AACzB,EAAA;AAGuB,EAAA;AAGK,EAAA;AACL,EAAA;AAEE,EAAA;AAElB,EAAA;AACT;AAEsC;AACd,EAAA;AACQ,IAAA;AAC9B,EAAA;AACF;AAEsD;AAC7B,EAAA;AACE,EAAA;AAC3B;ADjCiC;AACA;AACA;AACA","file":"/Users/mehdi/vaza-content/dist/adapters/astro/index.cjs","sourcesContent":[null,"import { existsSync, mkdirSync, writeFileSync } from \"node:fs\";\nimport { dirname, join } from \"node:path\";\nimport { renderRssXml } from \"../../generate/rss.js\";\nimport { renderSitemapXml } from \"../../generate/sitemap.js\";\nimport { logger } from \"../../logger.js\";\nimport { processCollections } from \"../../process.js\";\nimport type { VazaConfig, VazaOutput } from \"../../types.js\";\n\n/**\n * Astro adapter -- integration that hooks into build lifecycle.\n *\n * Usage in astro.config.mjs:\n * import { vazaContent } from 'vaza-content/astro'\n * import vazaConfig from './vaza.config'\n * export default defineConfig({\n * integrations: [vazaContent(vazaConfig)]\n * })\n */\nexport function vazaContent(config: VazaConfig) {\n return {\n name: \"vaza-content\",\n hooks: {\n \"astro:build:start\": async () => {\n await processAndWrite(config);\n },\n },\n };\n}\n\n/**\n * Standalone function to process and write outputs.\n */\nexport async function buildVazaContent(\n config: VazaConfig,\n): Promise<VazaOutput> {\n return processAndWrite(config);\n}\n\nasync function processAndWrite(config: VazaConfig): Promise<VazaOutput> {\n const output = await processCollections(config);\n const outDir = \".vaza-content\";\n\n ensureDir(outDir);\n ensureDir(\"public\");\n\n // Write sitemap\n if (config.sitemap?.enabled !== false) {\n writeJson(join(outDir, \"sitemap-data.json\"), output.sitemap);\n const xml = renderSitemapXml(output.sitemap);\n writeFileSync(\"public/sitemap.xml\", xml, \"utf-8\");\n }\n\n // Write RSS\n if (config.rss?.enabled !== false) {\n const xml = renderRssXml(output.rss, config);\n const rssPath = config.rss?.path ?? \"/rss.xml\";\n writeFileSync(join(\"public\", rssPath.replace(/^\\//, \"\")), xml, \"utf-8\");\n }\n\n // Write JSON-LD per slug\n if (config.jsonLd?.enabled !== false) {\n const jsonLdDir = join(outDir, \"json-ld\");\n ensureDir(jsonLdDir);\n for (const [slug, schemas] of Object.entries(output.jsonLd)) {\n writeJson(join(jsonLdDir, `${slug}.json`), schemas);\n }\n }\n\n // Write taxonomy data\n if (config.taxonomy?.enabled !== false) {\n writeJson(join(outDir, \"taxonomy.json\"), output.taxonomy);\n }\n\n // Write redirects\n if (config.redirects?.enabled !== false) {\n writeJson(join(outDir, \"redirects.json\"), output.redirects);\n }\n\n // Write integrity report\n writeJson(join(outDir, \"integrity-report.json\"), output.integrity);\n\n // Write slug manifest\n const slugManifest = output.entries.map((e) => e.slug);\n writeJson(join(outDir, \"slugs.json\"), slugManifest);\n\n logger.info(`Generated ${output.entries.length} entries`);\n\n return output;\n}\n\nfunction ensureDir(dir: string): void {\n if (!existsSync(dir)) {\n mkdirSync(dir, { recursive: true });\n }\n}\n\nfunction writeJson(path: string, data: unknown): void {\n ensureDir(dirname(path));\n writeFileSync(path, JSON.stringify(data, null, 2), \"utf-8\");\n}\n"]}
@@ -1,10 +1,11 @@
1
- import { V as VazaConfig, a as VazaOutput } from '../../types-CgaidvaB.cjs';
1
+ import { V as VazaConfig, a as VazaOutput } from '../../types-DAfWIHiD.cjs';
2
2
 
3
3
  /**
4
- * Astro adapter integration that hooks into build lifecycle.
4
+ * Astro adapter -- integration that hooks into build lifecycle.
5
5
  *
6
6
  * Usage in astro.config.mjs:
7
7
  * import { vazaContent } from 'vaza-content/astro'
8
+ * import vazaConfig from './vaza.config'
8
9
  * export default defineConfig({
9
10
  * integrations: [vazaContent(vazaConfig)]
10
11
  * })
@@ -12,7 +13,7 @@ import { V as VazaConfig, a as VazaOutput } from '../../types-CgaidvaB.cjs';
12
13
  declare function vazaContent(config: VazaConfig): {
13
14
  name: string;
14
15
  hooks: {
15
- "astro:build:done": () => Promise<void>;
16
+ "astro:build:start": () => Promise<void>;
16
17
  };
17
18
  };
18
19
  /**
@@ -1,10 +1,11 @@
1
- import { V as VazaConfig, a as VazaOutput } from '../../types-CgaidvaB.js';
1
+ import { V as VazaConfig, a as VazaOutput } from '../../types-DAfWIHiD.js';
2
2
 
3
3
  /**
4
- * Astro adapter integration that hooks into build lifecycle.
4
+ * Astro adapter -- integration that hooks into build lifecycle.
5
5
  *
6
6
  * Usage in astro.config.mjs:
7
7
  * import { vazaContent } from 'vaza-content/astro'
8
+ * import vazaConfig from './vaza.config'
8
9
  * export default defineConfig({
9
10
  * integrations: [vazaContent(vazaConfig)]
10
11
  * })
@@ -12,7 +13,7 @@ import { V as VazaConfig, a as VazaOutput } from '../../types-CgaidvaB.js';
12
13
  declare function vazaContent(config: VazaConfig): {
13
14
  name: string;
14
15
  hooks: {
15
- "astro:build:done": () => Promise<void>;
16
+ "astro:build:start": () => Promise<void>;
16
17
  };
17
18
  };
18
19
  /**
@@ -1,19 +1,18 @@
1
1
  import {
2
+ logger,
2
3
  processCollections,
3
4
  renderRssXml,
4
5
  renderSitemapXml
5
- } from "../../chunk-FALSVGPG.js";
6
- import "../../chunk-PCRQY47G.js";
7
- import "../../chunk-DGUM43GV.js";
6
+ } from "../../chunk-OKXBDPYF.js";
8
7
 
9
8
  // src/adapters/astro/index.ts
10
- import { writeFileSync, mkdirSync, existsSync } from "fs";
11
- import { join, dirname } from "path";
9
+ import { existsSync, mkdirSync, writeFileSync } from "fs";
10
+ import { dirname, join } from "path";
12
11
  function vazaContent(config) {
13
12
  return {
14
13
  name: "vaza-content",
15
14
  hooks: {
16
- "astro:build:done": async () => {
15
+ "astro:build:start": async () => {
17
16
  await processAndWrite(config);
18
17
  }
19
18
  }
@@ -35,11 +34,7 @@ async function processAndWrite(config) {
35
34
  if (config.rss?.enabled !== false) {
36
35
  const xml = renderRssXml(output.rss, config);
37
36
  const rssPath = config.rss?.path ?? "/rss.xml";
38
- writeFileSync(
39
- join("public", rssPath.replace(/^\//, "")),
40
- xml,
41
- "utf-8"
42
- );
37
+ writeFileSync(join("public", rssPath.replace(/^\//, "")), xml, "utf-8");
43
38
  }
44
39
  if (config.jsonLd?.enabled !== false) {
45
40
  const jsonLdDir = join(outDir, "json-ld");
@@ -57,7 +52,6 @@ async function processAndWrite(config) {
57
52
  writeJson(join(outDir, "integrity-report.json"), output.integrity);
58
53
  const slugManifest = output.entries.map((e) => e.slug);
59
54
  writeJson(join(outDir, "slugs.json"), slugManifest);
60
- const { logger } = await import("../../logger-BGP7C274.js");
61
55
  logger.info(`Generated ${output.entries.length} entries`);
62
56
  return output;
63
57
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/adapters/astro/index.ts"],"sourcesContent":["import { processCollections } from \"../../process.js\";\nimport type { VazaConfig, VazaOutput } from \"../../types.js\";\nimport { renderSitemapXml } from \"../../generate/sitemap.js\";\nimport { renderRssXml } from \"../../generate/rss.js\";\nimport { writeFileSync, mkdirSync, existsSync } from \"node:fs\";\nimport { join, dirname } from \"node:path\";\n\n/**\n * Astro adapter integration that hooks into build lifecycle.\n *\n * Usage in astro.config.mjs:\n * import { vazaContent } from 'vaza-content/astro'\n * export default defineConfig({\n * integrations: [vazaContent(vazaConfig)]\n * })\n */\nexport function vazaContent(config: VazaConfig) {\n return {\n name: \"vaza-content\",\n hooks: {\n \"astro:build:done\": async () => {\n await processAndWrite(config);\n },\n },\n };\n}\n\n/**\n * Standalone function to process and write outputs.\n */\nexport async function buildVazaContent(config: VazaConfig): Promise<VazaOutput> {\n return processAndWrite(config);\n}\n\nasync function processAndWrite(config: VazaConfig): Promise<VazaOutput> {\n const output = await processCollections(config);\n const outDir = \".vaza-content\";\n\n ensureDir(outDir);\n ensureDir(\"public\");\n\n // Write sitemap\n if (config.sitemap?.enabled !== false) {\n writeJson(join(outDir, \"sitemap-data.json\"), output.sitemap);\n const xml = renderSitemapXml(output.sitemap);\n writeFileSync(\"public/sitemap.xml\", xml, \"utf-8\");\n }\n\n // Write RSS\n if (config.rss?.enabled !== false) {\n const xml = renderRssXml(output.rss, config);\n const rssPath = config.rss?.path ?? \"/rss.xml\";\n writeFileSync(\n join(\"public\", rssPath.replace(/^\\//, \"\")),\n xml,\n \"utf-8\",\n );\n }\n\n // Write JSON-LD per slug\n if (config.jsonLd?.enabled !== false) {\n const jsonLdDir = join(outDir, \"json-ld\");\n ensureDir(jsonLdDir);\n for (const [slug, schemas] of Object.entries(output.jsonLd)) {\n writeJson(join(jsonLdDir, `${slug}.json`), schemas);\n }\n }\n\n // Write taxonomy data\n if (config.taxonomy?.enabled !== false) {\n writeJson(join(outDir, \"taxonomy.json\"), output.taxonomy);\n }\n\n // Write redirects\n if (config.redirects?.enabled !== false) {\n writeJson(join(outDir, \"redirects.json\"), output.redirects);\n }\n\n // Write integrity report\n writeJson(join(outDir, \"integrity-report.json\"), output.integrity);\n\n // Write slug manifest\n const slugManifest = output.entries.map((e) => e.slug);\n writeJson(join(outDir, \"slugs.json\"), slugManifest);\n\n const { logger } = await import(\"../../logger.js\");\n logger.info(`Generated ${output.entries.length} entries`);\n\n return output;\n}\n\nfunction ensureDir(dir: string): void {\n if (!existsSync(dir)) {\n mkdirSync(dir, { recursive: true });\n }\n}\n\nfunction writeJson(path: string, data: unknown): void {\n ensureDir(dirname(path));\n writeFileSync(path, JSON.stringify(data, null, 2), \"utf-8\");\n}\n"],"mappings":";;;;;;;;;AAIA,SAAS,eAAe,WAAW,kBAAkB;AACrD,SAAS,MAAM,eAAe;AAWvB,SAAS,YAAY,QAAoB;AAC9C,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,oBAAoB,YAAY;AAC9B,cAAM,gBAAgB,MAAM;AAAA,MAC9B;AAAA,IACF;AAAA,EACF;AACF;AAKA,eAAsB,iBAAiB,QAAyC;AAC9E,SAAO,gBAAgB,MAAM;AAC/B;AAEA,eAAe,gBAAgB,QAAyC;AACtE,QAAM,SAAS,MAAM,mBAAmB,MAAM;AAC9C,QAAM,SAAS;AAEf,YAAU,MAAM;AAChB,YAAU,QAAQ;AAGlB,MAAI,OAAO,SAAS,YAAY,OAAO;AACrC,cAAU,KAAK,QAAQ,mBAAmB,GAAG,OAAO,OAAO;AAC3D,UAAM,MAAM,iBAAiB,OAAO,OAAO;AAC3C,kBAAc,sBAAsB,KAAK,OAAO;AAAA,EAClD;AAGA,MAAI,OAAO,KAAK,YAAY,OAAO;AACjC,UAAM,MAAM,aAAa,OAAO,KAAK,MAAM;AAC3C,UAAM,UAAU,OAAO,KAAK,QAAQ;AACpC;AAAA,MACE,KAAK,UAAU,QAAQ,QAAQ,OAAO,EAAE,CAAC;AAAA,MACzC;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAGA,MAAI,OAAO,QAAQ,YAAY,OAAO;AACpC,UAAM,YAAY,KAAK,QAAQ,SAAS;AACxC,cAAU,SAAS;AACnB,eAAW,CAAC,MAAM,OAAO,KAAK,OAAO,QAAQ,OAAO,MAAM,GAAG;AAC3D,gBAAU,KAAK,WAAW,GAAG,IAAI,OAAO,GAAG,OAAO;AAAA,IACpD;AAAA,EACF;AAGA,MAAI,OAAO,UAAU,YAAY,OAAO;AACtC,cAAU,KAAK,QAAQ,eAAe,GAAG,OAAO,QAAQ;AAAA,EAC1D;AAGA,MAAI,OAAO,WAAW,YAAY,OAAO;AACvC,cAAU,KAAK,QAAQ,gBAAgB,GAAG,OAAO,SAAS;AAAA,EAC5D;AAGA,YAAU,KAAK,QAAQ,uBAAuB,GAAG,OAAO,SAAS;AAGjE,QAAM,eAAe,OAAO,QAAQ,IAAI,CAAC,MAAM,EAAE,IAAI;AACrD,YAAU,KAAK,QAAQ,YAAY,GAAG,YAAY;AAElD,QAAM,EAAE,OAAO,IAAI,MAAM,OAAO,0BAAiB;AACjD,SAAO,KAAK,aAAa,OAAO,QAAQ,MAAM,UAAU;AAExD,SAAO;AACT;AAEA,SAAS,UAAU,KAAmB;AACpC,MAAI,CAAC,WAAW,GAAG,GAAG;AACpB,cAAU,KAAK,EAAE,WAAW,KAAK,CAAC;AAAA,EACpC;AACF;AAEA,SAAS,UAAU,MAAc,MAAqB;AACpD,YAAU,QAAQ,IAAI,CAAC;AACvB,gBAAc,MAAM,KAAK,UAAU,MAAM,MAAM,CAAC,GAAG,OAAO;AAC5D;","names":[]}
1
+ {"version":3,"sources":["../../../src/adapters/astro/index.ts"],"sourcesContent":["import { existsSync, mkdirSync, writeFileSync } from \"node:fs\";\nimport { dirname, join } from \"node:path\";\nimport { renderRssXml } from \"../../generate/rss.js\";\nimport { renderSitemapXml } from \"../../generate/sitemap.js\";\nimport { logger } from \"../../logger.js\";\nimport { processCollections } from \"../../process.js\";\nimport type { VazaConfig, VazaOutput } from \"../../types.js\";\n\n/**\n * Astro adapter -- integration that hooks into build lifecycle.\n *\n * Usage in astro.config.mjs:\n * import { vazaContent } from 'vaza-content/astro'\n * import vazaConfig from './vaza.config'\n * export default defineConfig({\n * integrations: [vazaContent(vazaConfig)]\n * })\n */\nexport function vazaContent(config: VazaConfig) {\n return {\n name: \"vaza-content\",\n hooks: {\n \"astro:build:start\": async () => {\n await processAndWrite(config);\n },\n },\n };\n}\n\n/**\n * Standalone function to process and write outputs.\n */\nexport async function buildVazaContent(\n config: VazaConfig,\n): Promise<VazaOutput> {\n return processAndWrite(config);\n}\n\nasync function processAndWrite(config: VazaConfig): Promise<VazaOutput> {\n const output = await processCollections(config);\n const outDir = \".vaza-content\";\n\n ensureDir(outDir);\n ensureDir(\"public\");\n\n // Write sitemap\n if (config.sitemap?.enabled !== false) {\n writeJson(join(outDir, \"sitemap-data.json\"), output.sitemap);\n const xml = renderSitemapXml(output.sitemap);\n writeFileSync(\"public/sitemap.xml\", xml, \"utf-8\");\n }\n\n // Write RSS\n if (config.rss?.enabled !== false) {\n const xml = renderRssXml(output.rss, config);\n const rssPath = config.rss?.path ?? \"/rss.xml\";\n writeFileSync(join(\"public\", rssPath.replace(/^\\//, \"\")), xml, \"utf-8\");\n }\n\n // Write JSON-LD per slug\n if (config.jsonLd?.enabled !== false) {\n const jsonLdDir = join(outDir, \"json-ld\");\n ensureDir(jsonLdDir);\n for (const [slug, schemas] of Object.entries(output.jsonLd)) {\n writeJson(join(jsonLdDir, `${slug}.json`), schemas);\n }\n }\n\n // Write taxonomy data\n if (config.taxonomy?.enabled !== false) {\n writeJson(join(outDir, \"taxonomy.json\"), output.taxonomy);\n }\n\n // Write redirects\n if (config.redirects?.enabled !== false) {\n writeJson(join(outDir, \"redirects.json\"), output.redirects);\n }\n\n // Write integrity report\n writeJson(join(outDir, \"integrity-report.json\"), output.integrity);\n\n // Write slug manifest\n const slugManifest = output.entries.map((e) => e.slug);\n writeJson(join(outDir, \"slugs.json\"), slugManifest);\n\n logger.info(`Generated ${output.entries.length} entries`);\n\n return output;\n}\n\nfunction ensureDir(dir: string): void {\n if (!existsSync(dir)) {\n mkdirSync(dir, { recursive: true });\n }\n}\n\nfunction writeJson(path: string, data: unknown): void {\n ensureDir(dirname(path));\n writeFileSync(path, JSON.stringify(data, null, 2), \"utf-8\");\n}\n"],"mappings":";;;;;;;;AAAA,SAAS,YAAY,WAAW,qBAAqB;AACrD,SAAS,SAAS,YAAY;AAiBvB,SAAS,YAAY,QAAoB;AAC9C,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,qBAAqB,YAAY;AAC/B,cAAM,gBAAgB,MAAM;AAAA,MAC9B;AAAA,IACF;AAAA,EACF;AACF;AAKA,eAAsB,iBACpB,QACqB;AACrB,SAAO,gBAAgB,MAAM;AAC/B;AAEA,eAAe,gBAAgB,QAAyC;AACtE,QAAM,SAAS,MAAM,mBAAmB,MAAM;AAC9C,QAAM,SAAS;AAEf,YAAU,MAAM;AAChB,YAAU,QAAQ;AAGlB,MAAI,OAAO,SAAS,YAAY,OAAO;AACrC,cAAU,KAAK,QAAQ,mBAAmB,GAAG,OAAO,OAAO;AAC3D,UAAM,MAAM,iBAAiB,OAAO,OAAO;AAC3C,kBAAc,sBAAsB,KAAK,OAAO;AAAA,EAClD;AAGA,MAAI,OAAO,KAAK,YAAY,OAAO;AACjC,UAAM,MAAM,aAAa,OAAO,KAAK,MAAM;AAC3C,UAAM,UAAU,OAAO,KAAK,QAAQ;AACpC,kBAAc,KAAK,UAAU,QAAQ,QAAQ,OAAO,EAAE,CAAC,GAAG,KAAK,OAAO;AAAA,EACxE;AAGA,MAAI,OAAO,QAAQ,YAAY,OAAO;AACpC,UAAM,YAAY,KAAK,QAAQ,SAAS;AACxC,cAAU,SAAS;AACnB,eAAW,CAAC,MAAM,OAAO,KAAK,OAAO,QAAQ,OAAO,MAAM,GAAG;AAC3D,gBAAU,KAAK,WAAW,GAAG,IAAI,OAAO,GAAG,OAAO;AAAA,IACpD;AAAA,EACF;AAGA,MAAI,OAAO,UAAU,YAAY,OAAO;AACtC,cAAU,KAAK,QAAQ,eAAe,GAAG,OAAO,QAAQ;AAAA,EAC1D;AAGA,MAAI,OAAO,WAAW,YAAY,OAAO;AACvC,cAAU,KAAK,QAAQ,gBAAgB,GAAG,OAAO,SAAS;AAAA,EAC5D;AAGA,YAAU,KAAK,QAAQ,uBAAuB,GAAG,OAAO,SAAS;AAGjE,QAAM,eAAe,OAAO,QAAQ,IAAI,CAAC,MAAM,EAAE,IAAI;AACrD,YAAU,KAAK,QAAQ,YAAY,GAAG,YAAY;AAElD,SAAO,KAAK,aAAa,OAAO,QAAQ,MAAM,UAAU;AAExD,SAAO;AACT;AAEA,SAAS,UAAU,KAAmB;AACpC,MAAI,CAAC,WAAW,GAAG,GAAG;AACpB,cAAU,KAAK,EAAE,WAAW,KAAK,CAAC;AAAA,EACpC;AACF;AAEA,SAAS,UAAU,MAAc,MAAqB;AACpD,YAAU,QAAQ,IAAI,CAAC;AACvB,gBAAc,MAAM,KAAK,UAAU,MAAM,MAAM,CAAC,GAAG,OAAO;AAC5D;","names":[]}
@@ -2,23 +2,22 @@
2
2
 
3
3
 
4
4
 
5
- var _chunkYV2ZYIADcjs = require('../../chunk-YV2ZYIAD.cjs');
6
5
 
7
-
8
- var _chunkWOCXEBQCcjs = require('../../chunk-WOCXEBQC.cjs');
9
- require('../../chunk-JEQ2X3Z6.cjs');
6
+ var _chunkH3D7F4TAcjs = require('../../chunk-H3D7F4TA.cjs');
10
7
 
11
8
  // src/adapters/next/index.ts
12
9
  var _fs = require('fs');
13
10
  var _path = require('path');
11
+ var processingPromise = null;
14
12
  function withVazaContent(nextConfig, vazaConfig) {
15
13
  const originalWebpack = nextConfig.webpack;
16
14
  return {
17
15
  ...nextConfig,
18
16
  webpack(config, options) {
19
- if (options.isServer && vazaConfig) {
20
- processAndWrite(vazaConfig).catch((err) => {
21
- _chunkWOCXEBQCcjs.logger.error("Build error:", err);
17
+ if (options.isServer && vazaConfig && !processingPromise) {
18
+ processingPromise = processAndWrite(vazaConfig);
19
+ processingPromise.catch((err) => {
20
+ _chunkH3D7F4TAcjs.logger.error("Build error:", err);
22
21
  process.exit(1);
23
22
  });
24
23
  }
@@ -33,17 +32,17 @@ async function buildVazaContent(config) {
33
32
  return processAndWrite(config);
34
33
  }
35
34
  async function processAndWrite(config) {
36
- const output = await _chunkYV2ZYIADcjs.processCollections.call(void 0, config);
35
+ const output = await _chunkH3D7F4TAcjs.processCollections.call(void 0, config);
37
36
  const outDir = ".vaza-content";
38
37
  ensureDir(outDir);
39
38
  if (_optionalChain([config, 'access', _ => _.sitemap, 'optionalAccess', _2 => _2.enabled]) !== false) {
40
39
  writeJson(_path.join.call(void 0, outDir, "sitemap-data.json"), output.sitemap);
41
- const xml = _chunkYV2ZYIADcjs.renderSitemapXml.call(void 0, output.sitemap);
40
+ const xml = _chunkH3D7F4TAcjs.renderSitemapXml.call(void 0, output.sitemap);
42
41
  ensureDir("public");
43
42
  _fs.writeFileSync.call(void 0, "public/sitemap.xml", xml, "utf-8");
44
43
  }
45
44
  if (_optionalChain([config, 'access', _3 => _3.rss, 'optionalAccess', _4 => _4.enabled]) !== false) {
46
- const xml = _chunkYV2ZYIADcjs.renderRssXml.call(void 0, output.rss, config);
45
+ const xml = _chunkH3D7F4TAcjs.renderRssXml.call(void 0, output.rss, config);
47
46
  const rssPath = _nullishCoalesce(_optionalChain([config, 'access', _5 => _5.rss, 'optionalAccess', _6 => _6.path]), () => ( "/rss.xml"));
48
47
  const rssFile = _path.join.call(void 0, "public", rssPath.replace(/^\//, ""));
49
48
  ensureDir(_path.dirname.call(void 0, rssFile));
@@ -65,8 +64,8 @@ async function processAndWrite(config) {
65
64
  writeJson(_path.join.call(void 0, outDir, "integrity-report.json"), output.integrity);
66
65
  const slugManifest = output.entries.map((e) => e.slug);
67
66
  writeJson(_path.join.call(void 0, outDir, "slugs.json"), slugManifest);
68
- _chunkWOCXEBQCcjs.logger.info(`Generated ${output.entries.length} entries`);
69
- _chunkWOCXEBQCcjs.logger.info(`Outputs written to ${outDir}/ and public/`);
67
+ _chunkH3D7F4TAcjs.logger.info(`Generated ${output.entries.length} entries`);
68
+ _chunkH3D7F4TAcjs.logger.info(`Outputs written to ${outDir}/ and public/`);
70
69
  return output;
71
70
  }
72
71
  function ensureDir(dir) {
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/mehdi/vaza-content/dist/adapters/next/index.cjs","../../../src/adapters/next/index.ts"],"names":[],"mappings":"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","file":"/Users/mehdi/vaza-content/dist/adapters/next/index.cjs","sourcesContent":[null,"import { processCollections } from \"../../process.js\";\nimport type { VazaConfig, VazaOutput } from \"../../types.js\";\nimport { renderSitemapXml } from \"../../generate/sitemap.js\";\nimport { renderRssXml } from \"../../generate/rss.js\";\nimport { logger } from \"../../logger.js\";\nimport { writeFileSync, mkdirSync, existsSync } from \"node:fs\";\nimport { join, dirname } from \"node:path\";\n\n/**\n * Next.js adapter -- wraps next.config and hooks into the build.\n *\n * Usage in next.config.ts:\n * import { withVazaContent } from 'vaza-content/next'\n * export default withVazaContent(nextConfig)\n */\nexport function withVazaContent(\n nextConfig: Record<string, unknown>,\n vazaConfig?: VazaConfig,\n): Record<string, unknown> {\n const originalWebpack = nextConfig.webpack as\n | ((config: unknown, options: unknown) => unknown)\n | undefined;\n\n return {\n ...nextConfig,\n webpack(config: unknown, options: Record<string, unknown>) {\n // Only run during server build (not client)\n if (options.isServer && vazaConfig) {\n // Schedule processing after webpack compilation\n processAndWrite(vazaConfig).catch((err: unknown) => {\n logger.error(\"Build error:\", err);\n process.exit(1);\n });\n }\n\n if (originalWebpack) {\n return originalWebpack(config, options);\n }\n return config;\n },\n };\n}\n\n/**\n * Standalone function to process and write outputs.\n * Can be called from a build script instead of withVazaContent.\n */\nexport async function buildVazaContent(config: VazaConfig): Promise<VazaOutput> {\n return processAndWrite(config);\n}\n\nasync function processAndWrite(config: VazaConfig): Promise<VazaOutput> {\n const output = await processCollections(config);\n const outDir = \".vaza-content\";\n\n ensureDir(outDir);\n\n // Write sitemap data\n if (config.sitemap?.enabled !== false) {\n writeJson(join(outDir, \"sitemap-data.json\"), output.sitemap);\n\n // Also write the XML to public/\n const xml = renderSitemapXml(output.sitemap);\n ensureDir(\"public\");\n writeFileSync(\"public/sitemap.xml\", xml, \"utf-8\");\n }\n\n // Write RSS\n if (config.rss?.enabled !== false) {\n const xml = renderRssXml(output.rss, config);\n const rssPath = config.rss?.path ?? \"/rss.xml\";\n const rssFile = join(\"public\", rssPath.replace(/^\\//, \"\"));\n ensureDir(dirname(rssFile));\n writeFileSync(rssFile, xml, \"utf-8\");\n }\n\n // Write JSON-LD per slug\n if (config.jsonLd?.enabled !== false) {\n const jsonLdDir = join(outDir, \"json-ld\");\n ensureDir(jsonLdDir);\n for (const [slug, schemas] of Object.entries(output.jsonLd)) {\n writeJson(join(jsonLdDir, `${slug}.json`), schemas);\n }\n }\n\n // Write taxonomy data\n if (config.taxonomy?.enabled !== false) {\n writeJson(join(outDir, \"taxonomy.json\"), output.taxonomy);\n }\n\n // Write redirects\n if (config.redirects?.enabled !== false) {\n writeJson(join(outDir, \"redirects.json\"), output.redirects);\n }\n\n // Write integrity report\n writeJson(join(outDir, \"integrity-report.json\"), output.integrity);\n\n // Write slug manifest for redirect detection\n const slugManifest = output.entries.map((e) => e.slug);\n writeJson(join(outDir, \"slugs.json\"), slugManifest);\n\n logger.info(`Generated ${output.entries.length} entries`);\n logger.info(`Outputs written to ${outDir}/ and public/`);\n\n return output;\n}\n\nfunction ensureDir(dir: string): void {\n if (!existsSync(dir)) {\n mkdirSync(dir, { recursive: true });\n }\n}\n\nfunction writeJson(path: string, data: unknown): void {\n ensureDir(dirname(path));\n writeFileSync(path, JSON.stringify(data, null, 2), \"utf-8\");\n}\n"]}
1
+ {"version":3,"sources":["/Users/mehdi/vaza-content/dist/adapters/next/index.cjs","../../../src/adapters/next/index.ts"],"names":[],"mappings":"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","file":"/Users/mehdi/vaza-content/dist/adapters/next/index.cjs","sourcesContent":[null,"import { existsSync, mkdirSync, writeFileSync } from \"node:fs\";\nimport { dirname, join } from \"node:path\";\nimport { renderRssXml } from \"../../generate/rss.js\";\nimport { renderSitemapXml } from \"../../generate/sitemap.js\";\nimport { logger } from \"../../logger.js\";\nimport { processCollections } from \"../../process.js\";\nimport type { VazaConfig, VazaOutput } from \"../../types.js\";\n\n// Track if processing is in progress to avoid duplicate runs\nlet processingPromise: Promise<VazaOutput> | null = null;\n\n/**\n * Next.js adapter -- wraps next.config and hooks into the build.\n *\n * Usage in next.config.ts:\n * import { withVazaContent } from 'vaza-content/next'\n * import vazaConfig from './vaza.config'\n * export default withVazaContent({ ... }, vazaConfig)\n */\nexport function withVazaContent(\n nextConfig: Record<string, unknown>,\n vazaConfig?: VazaConfig,\n): Record<string, unknown> {\n const originalWebpack = nextConfig.webpack as\n | ((config: unknown, options: unknown) => unknown)\n | undefined;\n\n return {\n ...nextConfig,\n webpack(config: unknown, options: Record<string, unknown>) {\n // Only run during server build (not client), and only once\n if (options.isServer && vazaConfig && !processingPromise) {\n processingPromise = processAndWrite(vazaConfig);\n processingPromise.catch((err: unknown) => {\n logger.error(\"Build error:\", err);\n process.exit(1);\n });\n }\n\n if (originalWebpack) {\n return originalWebpack(config, options);\n }\n return config;\n },\n };\n}\n\n/**\n * Standalone function to process and write outputs.\n * Recommended over withVazaContent for more reliable builds.\n * Call from a prebuild script or next.config.ts top level.\n */\nexport async function buildVazaContent(\n config: VazaConfig,\n): Promise<VazaOutput> {\n return processAndWrite(config);\n}\n\nasync function processAndWrite(config: VazaConfig): Promise<VazaOutput> {\n const output = await processCollections(config);\n const outDir = \".vaza-content\";\n\n ensureDir(outDir);\n\n // Write sitemap data\n if (config.sitemap?.enabled !== false) {\n writeJson(join(outDir, \"sitemap-data.json\"), output.sitemap);\n\n // Also write the XML to public/\n const xml = renderSitemapXml(output.sitemap);\n ensureDir(\"public\");\n writeFileSync(\"public/sitemap.xml\", xml, \"utf-8\");\n }\n\n // Write RSS\n if (config.rss?.enabled !== false) {\n const xml = renderRssXml(output.rss, config);\n const rssPath = config.rss?.path ?? \"/rss.xml\";\n const rssFile = join(\"public\", rssPath.replace(/^\\//, \"\"));\n ensureDir(dirname(rssFile));\n writeFileSync(rssFile, xml, \"utf-8\");\n }\n\n // Write JSON-LD per slug\n if (config.jsonLd?.enabled !== false) {\n const jsonLdDir = join(outDir, \"json-ld\");\n ensureDir(jsonLdDir);\n for (const [slug, schemas] of Object.entries(output.jsonLd)) {\n writeJson(join(jsonLdDir, `${slug}.json`), schemas);\n }\n }\n\n // Write taxonomy data\n if (config.taxonomy?.enabled !== false) {\n writeJson(join(outDir, \"taxonomy.json\"), output.taxonomy);\n }\n\n // Write redirects\n if (config.redirects?.enabled !== false) {\n writeJson(join(outDir, \"redirects.json\"), output.redirects);\n }\n\n // Write integrity report\n writeJson(join(outDir, \"integrity-report.json\"), output.integrity);\n\n // Write slug manifest for redirect detection\n const slugManifest = output.entries.map((e) => e.slug);\n writeJson(join(outDir, \"slugs.json\"), slugManifest);\n\n logger.info(`Generated ${output.entries.length} entries`);\n logger.info(`Outputs written to ${outDir}/ and public/`);\n\n return output;\n}\n\nfunction ensureDir(dir: string): void {\n if (!existsSync(dir)) {\n mkdirSync(dir, { recursive: true });\n }\n}\n\nfunction writeJson(path: string, data: unknown): void {\n ensureDir(dirname(path));\n writeFileSync(path, JSON.stringify(data, null, 2), \"utf-8\");\n}\n"]}
@@ -1,16 +1,18 @@
1
- import { V as VazaConfig, a as VazaOutput } from '../../types-CgaidvaB.cjs';
1
+ import { V as VazaConfig, a as VazaOutput } from '../../types-DAfWIHiD.cjs';
2
2
 
3
3
  /**
4
4
  * Next.js adapter -- wraps next.config and hooks into the build.
5
5
  *
6
6
  * Usage in next.config.ts:
7
7
  * import { withVazaContent } from 'vaza-content/next'
8
- * export default withVazaContent(nextConfig)
8
+ * import vazaConfig from './vaza.config'
9
+ * export default withVazaContent({ ... }, vazaConfig)
9
10
  */
10
11
  declare function withVazaContent(nextConfig: Record<string, unknown>, vazaConfig?: VazaConfig): Record<string, unknown>;
11
12
  /**
12
13
  * Standalone function to process and write outputs.
13
- * Can be called from a build script instead of withVazaContent.
14
+ * Recommended over withVazaContent for more reliable builds.
15
+ * Call from a prebuild script or next.config.ts top level.
14
16
  */
15
17
  declare function buildVazaContent(config: VazaConfig): Promise<VazaOutput>;
16
18
 
@@ -1,16 +1,18 @@
1
- import { V as VazaConfig, a as VazaOutput } from '../../types-CgaidvaB.js';
1
+ import { V as VazaConfig, a as VazaOutput } from '../../types-DAfWIHiD.js';
2
2
 
3
3
  /**
4
4
  * Next.js adapter -- wraps next.config and hooks into the build.
5
5
  *
6
6
  * Usage in next.config.ts:
7
7
  * import { withVazaContent } from 'vaza-content/next'
8
- * export default withVazaContent(nextConfig)
8
+ * import vazaConfig from './vaza.config'
9
+ * export default withVazaContent({ ... }, vazaConfig)
9
10
  */
10
11
  declare function withVazaContent(nextConfig: Record<string, unknown>, vazaConfig?: VazaConfig): Record<string, unknown>;
11
12
  /**
12
13
  * Standalone function to process and write outputs.
13
- * Can be called from a build script instead of withVazaContent.
14
+ * Recommended over withVazaContent for more reliable builds.
15
+ * Call from a prebuild script or next.config.ts top level.
14
16
  */
15
17
  declare function buildVazaContent(config: VazaConfig): Promise<VazaOutput>;
16
18
 
@@ -1,23 +1,22 @@
1
1
  import {
2
+ logger,
2
3
  processCollections,
3
4
  renderRssXml,
4
5
  renderSitemapXml
5
- } from "../../chunk-FALSVGPG.js";
6
- import {
7
- logger
8
- } from "../../chunk-PCRQY47G.js";
9
- import "../../chunk-DGUM43GV.js";
6
+ } from "../../chunk-OKXBDPYF.js";
10
7
 
11
8
  // src/adapters/next/index.ts
12
- import { writeFileSync, mkdirSync, existsSync } from "fs";
13
- import { join, dirname } from "path";
9
+ import { existsSync, mkdirSync, writeFileSync } from "fs";
10
+ import { dirname, join } from "path";
11
+ var processingPromise = null;
14
12
  function withVazaContent(nextConfig, vazaConfig) {
15
13
  const originalWebpack = nextConfig.webpack;
16
14
  return {
17
15
  ...nextConfig,
18
16
  webpack(config, options) {
19
- if (options.isServer && vazaConfig) {
20
- processAndWrite(vazaConfig).catch((err) => {
17
+ if (options.isServer && vazaConfig && !processingPromise) {
18
+ processingPromise = processAndWrite(vazaConfig);
19
+ processingPromise.catch((err) => {
21
20
  logger.error("Build error:", err);
22
21
  process.exit(1);
23
22
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/adapters/next/index.ts"],"sourcesContent":["import { processCollections } from \"../../process.js\";\nimport type { VazaConfig, VazaOutput } from \"../../types.js\";\nimport { renderSitemapXml } from \"../../generate/sitemap.js\";\nimport { renderRssXml } from \"../../generate/rss.js\";\nimport { logger } from \"../../logger.js\";\nimport { writeFileSync, mkdirSync, existsSync } from \"node:fs\";\nimport { join, dirname } from \"node:path\";\n\n/**\n * Next.js adapter -- wraps next.config and hooks into the build.\n *\n * Usage in next.config.ts:\n * import { withVazaContent } from 'vaza-content/next'\n * export default withVazaContent(nextConfig)\n */\nexport function withVazaContent(\n nextConfig: Record<string, unknown>,\n vazaConfig?: VazaConfig,\n): Record<string, unknown> {\n const originalWebpack = nextConfig.webpack as\n | ((config: unknown, options: unknown) => unknown)\n | undefined;\n\n return {\n ...nextConfig,\n webpack(config: unknown, options: Record<string, unknown>) {\n // Only run during server build (not client)\n if (options.isServer && vazaConfig) {\n // Schedule processing after webpack compilation\n processAndWrite(vazaConfig).catch((err: unknown) => {\n logger.error(\"Build error:\", err);\n process.exit(1);\n });\n }\n\n if (originalWebpack) {\n return originalWebpack(config, options);\n }\n return config;\n },\n };\n}\n\n/**\n * Standalone function to process and write outputs.\n * Can be called from a build script instead of withVazaContent.\n */\nexport async function buildVazaContent(config: VazaConfig): Promise<VazaOutput> {\n return processAndWrite(config);\n}\n\nasync function processAndWrite(config: VazaConfig): Promise<VazaOutput> {\n const output = await processCollections(config);\n const outDir = \".vaza-content\";\n\n ensureDir(outDir);\n\n // Write sitemap data\n if (config.sitemap?.enabled !== false) {\n writeJson(join(outDir, \"sitemap-data.json\"), output.sitemap);\n\n // Also write the XML to public/\n const xml = renderSitemapXml(output.sitemap);\n ensureDir(\"public\");\n writeFileSync(\"public/sitemap.xml\", xml, \"utf-8\");\n }\n\n // Write RSS\n if (config.rss?.enabled !== false) {\n const xml = renderRssXml(output.rss, config);\n const rssPath = config.rss?.path ?? \"/rss.xml\";\n const rssFile = join(\"public\", rssPath.replace(/^\\//, \"\"));\n ensureDir(dirname(rssFile));\n writeFileSync(rssFile, xml, \"utf-8\");\n }\n\n // Write JSON-LD per slug\n if (config.jsonLd?.enabled !== false) {\n const jsonLdDir = join(outDir, \"json-ld\");\n ensureDir(jsonLdDir);\n for (const [slug, schemas] of Object.entries(output.jsonLd)) {\n writeJson(join(jsonLdDir, `${slug}.json`), schemas);\n }\n }\n\n // Write taxonomy data\n if (config.taxonomy?.enabled !== false) {\n writeJson(join(outDir, \"taxonomy.json\"), output.taxonomy);\n }\n\n // Write redirects\n if (config.redirects?.enabled !== false) {\n writeJson(join(outDir, \"redirects.json\"), output.redirects);\n }\n\n // Write integrity report\n writeJson(join(outDir, \"integrity-report.json\"), output.integrity);\n\n // Write slug manifest for redirect detection\n const slugManifest = output.entries.map((e) => e.slug);\n writeJson(join(outDir, \"slugs.json\"), slugManifest);\n\n logger.info(`Generated ${output.entries.length} entries`);\n logger.info(`Outputs written to ${outDir}/ and public/`);\n\n return output;\n}\n\nfunction ensureDir(dir: string): void {\n if (!existsSync(dir)) {\n mkdirSync(dir, { recursive: true });\n }\n}\n\nfunction writeJson(path: string, data: unknown): void {\n ensureDir(dirname(path));\n writeFileSync(path, JSON.stringify(data, null, 2), \"utf-8\");\n}\n"],"mappings":";;;;;;;;;;;AAKA,SAAS,eAAe,WAAW,kBAAkB;AACrD,SAAS,MAAM,eAAe;AASvB,SAAS,gBACd,YACA,YACyB;AACzB,QAAM,kBAAkB,WAAW;AAInC,SAAO;AAAA,IACL,GAAG;AAAA,IACH,QAAQ,QAAiB,SAAkC;AAEzD,UAAI,QAAQ,YAAY,YAAY;AAElC,wBAAgB,UAAU,EAAE,MAAM,CAAC,QAAiB;AAClD,iBAAO,MAAM,gBAAgB,GAAG;AAChC,kBAAQ,KAAK,CAAC;AAAA,QAChB,CAAC;AAAA,MACH;AAEA,UAAI,iBAAiB;AACnB,eAAO,gBAAgB,QAAQ,OAAO;AAAA,MACxC;AACA,aAAO;AAAA,IACT;AAAA,EACF;AACF;AAMA,eAAsB,iBAAiB,QAAyC;AAC9E,SAAO,gBAAgB,MAAM;AAC/B;AAEA,eAAe,gBAAgB,QAAyC;AACtE,QAAM,SAAS,MAAM,mBAAmB,MAAM;AAC9C,QAAM,SAAS;AAEf,YAAU,MAAM;AAGhB,MAAI,OAAO,SAAS,YAAY,OAAO;AACrC,cAAU,KAAK,QAAQ,mBAAmB,GAAG,OAAO,OAAO;AAG3D,UAAM,MAAM,iBAAiB,OAAO,OAAO;AAC3C,cAAU,QAAQ;AAClB,kBAAc,sBAAsB,KAAK,OAAO;AAAA,EAClD;AAGA,MAAI,OAAO,KAAK,YAAY,OAAO;AACjC,UAAM,MAAM,aAAa,OAAO,KAAK,MAAM;AAC3C,UAAM,UAAU,OAAO,KAAK,QAAQ;AACpC,UAAM,UAAU,KAAK,UAAU,QAAQ,QAAQ,OAAO,EAAE,CAAC;AACzD,cAAU,QAAQ,OAAO,CAAC;AAC1B,kBAAc,SAAS,KAAK,OAAO;AAAA,EACrC;AAGA,MAAI,OAAO,QAAQ,YAAY,OAAO;AACpC,UAAM,YAAY,KAAK,QAAQ,SAAS;AACxC,cAAU,SAAS;AACnB,eAAW,CAAC,MAAM,OAAO,KAAK,OAAO,QAAQ,OAAO,MAAM,GAAG;AAC3D,gBAAU,KAAK,WAAW,GAAG,IAAI,OAAO,GAAG,OAAO;AAAA,IACpD;AAAA,EACF;AAGA,MAAI,OAAO,UAAU,YAAY,OAAO;AACtC,cAAU,KAAK,QAAQ,eAAe,GAAG,OAAO,QAAQ;AAAA,EAC1D;AAGA,MAAI,OAAO,WAAW,YAAY,OAAO;AACvC,cAAU,KAAK,QAAQ,gBAAgB,GAAG,OAAO,SAAS;AAAA,EAC5D;AAGA,YAAU,KAAK,QAAQ,uBAAuB,GAAG,OAAO,SAAS;AAGjE,QAAM,eAAe,OAAO,QAAQ,IAAI,CAAC,MAAM,EAAE,IAAI;AACrD,YAAU,KAAK,QAAQ,YAAY,GAAG,YAAY;AAElD,SAAO,KAAK,aAAa,OAAO,QAAQ,MAAM,UAAU;AACxD,SAAO,KAAK,sBAAsB,MAAM,eAAe;AAEvD,SAAO;AACT;AAEA,SAAS,UAAU,KAAmB;AACpC,MAAI,CAAC,WAAW,GAAG,GAAG;AACpB,cAAU,KAAK,EAAE,WAAW,KAAK,CAAC;AAAA,EACpC;AACF;AAEA,SAAS,UAAU,MAAc,MAAqB;AACpD,YAAU,QAAQ,IAAI,CAAC;AACvB,gBAAc,MAAM,KAAK,UAAU,MAAM,MAAM,CAAC,GAAG,OAAO;AAC5D;","names":[]}
1
+ {"version":3,"sources":["../../../src/adapters/next/index.ts"],"sourcesContent":["import { existsSync, mkdirSync, writeFileSync } from \"node:fs\";\nimport { dirname, join } from \"node:path\";\nimport { renderRssXml } from \"../../generate/rss.js\";\nimport { renderSitemapXml } from \"../../generate/sitemap.js\";\nimport { logger } from \"../../logger.js\";\nimport { processCollections } from \"../../process.js\";\nimport type { VazaConfig, VazaOutput } from \"../../types.js\";\n\n// Track if processing is in progress to avoid duplicate runs\nlet processingPromise: Promise<VazaOutput> | null = null;\n\n/**\n * Next.js adapter -- wraps next.config and hooks into the build.\n *\n * Usage in next.config.ts:\n * import { withVazaContent } from 'vaza-content/next'\n * import vazaConfig from './vaza.config'\n * export default withVazaContent({ ... }, vazaConfig)\n */\nexport function withVazaContent(\n nextConfig: Record<string, unknown>,\n vazaConfig?: VazaConfig,\n): Record<string, unknown> {\n const originalWebpack = nextConfig.webpack as\n | ((config: unknown, options: unknown) => unknown)\n | undefined;\n\n return {\n ...nextConfig,\n webpack(config: unknown, options: Record<string, unknown>) {\n // Only run during server build (not client), and only once\n if (options.isServer && vazaConfig && !processingPromise) {\n processingPromise = processAndWrite(vazaConfig);\n processingPromise.catch((err: unknown) => {\n logger.error(\"Build error:\", err);\n process.exit(1);\n });\n }\n\n if (originalWebpack) {\n return originalWebpack(config, options);\n }\n return config;\n },\n };\n}\n\n/**\n * Standalone function to process and write outputs.\n * Recommended over withVazaContent for more reliable builds.\n * Call from a prebuild script or next.config.ts top level.\n */\nexport async function buildVazaContent(\n config: VazaConfig,\n): Promise<VazaOutput> {\n return processAndWrite(config);\n}\n\nasync function processAndWrite(config: VazaConfig): Promise<VazaOutput> {\n const output = await processCollections(config);\n const outDir = \".vaza-content\";\n\n ensureDir(outDir);\n\n // Write sitemap data\n if (config.sitemap?.enabled !== false) {\n writeJson(join(outDir, \"sitemap-data.json\"), output.sitemap);\n\n // Also write the XML to public/\n const xml = renderSitemapXml(output.sitemap);\n ensureDir(\"public\");\n writeFileSync(\"public/sitemap.xml\", xml, \"utf-8\");\n }\n\n // Write RSS\n if (config.rss?.enabled !== false) {\n const xml = renderRssXml(output.rss, config);\n const rssPath = config.rss?.path ?? \"/rss.xml\";\n const rssFile = join(\"public\", rssPath.replace(/^\\//, \"\"));\n ensureDir(dirname(rssFile));\n writeFileSync(rssFile, xml, \"utf-8\");\n }\n\n // Write JSON-LD per slug\n if (config.jsonLd?.enabled !== false) {\n const jsonLdDir = join(outDir, \"json-ld\");\n ensureDir(jsonLdDir);\n for (const [slug, schemas] of Object.entries(output.jsonLd)) {\n writeJson(join(jsonLdDir, `${slug}.json`), schemas);\n }\n }\n\n // Write taxonomy data\n if (config.taxonomy?.enabled !== false) {\n writeJson(join(outDir, \"taxonomy.json\"), output.taxonomy);\n }\n\n // Write redirects\n if (config.redirects?.enabled !== false) {\n writeJson(join(outDir, \"redirects.json\"), output.redirects);\n }\n\n // Write integrity report\n writeJson(join(outDir, \"integrity-report.json\"), output.integrity);\n\n // Write slug manifest for redirect detection\n const slugManifest = output.entries.map((e) => e.slug);\n writeJson(join(outDir, \"slugs.json\"), slugManifest);\n\n logger.info(`Generated ${output.entries.length} entries`);\n logger.info(`Outputs written to ${outDir}/ and public/`);\n\n return output;\n}\n\nfunction ensureDir(dir: string): void {\n if (!existsSync(dir)) {\n mkdirSync(dir, { recursive: true });\n }\n}\n\nfunction writeJson(path: string, data: unknown): void {\n ensureDir(dirname(path));\n writeFileSync(path, JSON.stringify(data, null, 2), \"utf-8\");\n}\n"],"mappings":";;;;;;;;AAAA,SAAS,YAAY,WAAW,qBAAqB;AACrD,SAAS,SAAS,YAAY;AAQ9B,IAAI,oBAAgD;AAU7C,SAAS,gBACd,YACA,YACyB;AACzB,QAAM,kBAAkB,WAAW;AAInC,SAAO;AAAA,IACL,GAAG;AAAA,IACH,QAAQ,QAAiB,SAAkC;AAEzD,UAAI,QAAQ,YAAY,cAAc,CAAC,mBAAmB;AACxD,4BAAoB,gBAAgB,UAAU;AAC9C,0BAAkB,MAAM,CAAC,QAAiB;AACxC,iBAAO,MAAM,gBAAgB,GAAG;AAChC,kBAAQ,KAAK,CAAC;AAAA,QAChB,CAAC;AAAA,MACH;AAEA,UAAI,iBAAiB;AACnB,eAAO,gBAAgB,QAAQ,OAAO;AAAA,MACxC;AACA,aAAO;AAAA,IACT;AAAA,EACF;AACF;AAOA,eAAsB,iBACpB,QACqB;AACrB,SAAO,gBAAgB,MAAM;AAC/B;AAEA,eAAe,gBAAgB,QAAyC;AACtE,QAAM,SAAS,MAAM,mBAAmB,MAAM;AAC9C,QAAM,SAAS;AAEf,YAAU,MAAM;AAGhB,MAAI,OAAO,SAAS,YAAY,OAAO;AACrC,cAAU,KAAK,QAAQ,mBAAmB,GAAG,OAAO,OAAO;AAG3D,UAAM,MAAM,iBAAiB,OAAO,OAAO;AAC3C,cAAU,QAAQ;AAClB,kBAAc,sBAAsB,KAAK,OAAO;AAAA,EAClD;AAGA,MAAI,OAAO,KAAK,YAAY,OAAO;AACjC,UAAM,MAAM,aAAa,OAAO,KAAK,MAAM;AAC3C,UAAM,UAAU,OAAO,KAAK,QAAQ;AACpC,UAAM,UAAU,KAAK,UAAU,QAAQ,QAAQ,OAAO,EAAE,CAAC;AACzD,cAAU,QAAQ,OAAO,CAAC;AAC1B,kBAAc,SAAS,KAAK,OAAO;AAAA,EACrC;AAGA,MAAI,OAAO,QAAQ,YAAY,OAAO;AACpC,UAAM,YAAY,KAAK,QAAQ,SAAS;AACxC,cAAU,SAAS;AACnB,eAAW,CAAC,MAAM,OAAO,KAAK,OAAO,QAAQ,OAAO,MAAM,GAAG;AAC3D,gBAAU,KAAK,WAAW,GAAG,IAAI,OAAO,GAAG,OAAO;AAAA,IACpD;AAAA,EACF;AAGA,MAAI,OAAO,UAAU,YAAY,OAAO;AACtC,cAAU,KAAK,QAAQ,eAAe,GAAG,OAAO,QAAQ;AAAA,EAC1D;AAGA,MAAI,OAAO,WAAW,YAAY,OAAO;AACvC,cAAU,KAAK,QAAQ,gBAAgB,GAAG,OAAO,SAAS;AAAA,EAC5D;AAGA,YAAU,KAAK,QAAQ,uBAAuB,GAAG,OAAO,SAAS;AAGjE,QAAM,eAAe,OAAO,QAAQ,IAAI,CAAC,MAAM,EAAE,IAAI;AACrD,YAAU,KAAK,QAAQ,YAAY,GAAG,YAAY;AAElD,SAAO,KAAK,aAAa,OAAO,QAAQ,MAAM,UAAU;AACxD,SAAO,KAAK,sBAAsB,MAAM,eAAe;AAEvD,SAAO;AACT;AAEA,SAAS,UAAU,KAAmB;AACpC,MAAI,CAAC,WAAW,GAAG,GAAG;AACpB,cAAU,KAAK,EAAE,WAAW,KAAK,CAAC;AAAA,EACpC;AACF;AAEA,SAAS,UAAU,MAAc,MAAqB;AACpD,YAAU,QAAQ,IAAI,CAAC;AACvB,gBAAc,MAAM,KAAK,UAAU,MAAM,MAAM,CAAC,GAAG,OAAO;AAC5D;","names":[]}
@@ -1,59 +1,59 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
2
 
3
3
 
4
4
 
5
- var _chunkYV2ZYIADcjs = require('../../chunk-YV2ZYIAD.cjs');
6
- require('../../chunk-WOCXEBQC.cjs');
7
- require('../../chunk-JEQ2X3Z6.cjs');
5
+
6
+ var _chunkH3D7F4TAcjs = require('../../chunk-H3D7F4TA.cjs');
8
7
 
9
8
  // src/adapters/nuxt/index.ts
10
9
  var _fs = require('fs');
11
10
  var _path = require('path');
12
11
  function defineVazaContentModule(config) {
13
- return async function vazaContentModule() {
14
- await processAndWrite(config);
12
+ return async (_inlineOptions, nuxt) => {
13
+ if (_optionalChain([nuxt, 'optionalAccess', _ => _.hook])) {
14
+ nuxt.hook("build:before", async () => {
15
+ await processAndWrite(config);
16
+ });
17
+ } else {
18
+ await processAndWrite(config);
19
+ }
15
20
  };
16
21
  }
17
22
  async function buildVazaContent(config) {
18
23
  return processAndWrite(config);
19
24
  }
20
25
  async function processAndWrite(config) {
21
- const output = await _chunkYV2ZYIADcjs.processCollections.call(void 0, config);
26
+ const output = await _chunkH3D7F4TAcjs.processCollections.call(void 0, config);
22
27
  const outDir = ".vaza-content";
23
28
  ensureDir(outDir);
24
29
  ensureDir("public");
25
- if (_optionalChain([config, 'access', _ => _.sitemap, 'optionalAccess', _2 => _2.enabled]) !== false) {
30
+ if (_optionalChain([config, 'access', _2 => _2.sitemap, 'optionalAccess', _3 => _3.enabled]) !== false) {
26
31
  writeJson(_path.join.call(void 0, outDir, "sitemap-data.json"), output.sitemap);
27
- const xml = _chunkYV2ZYIADcjs.renderSitemapXml.call(void 0, output.sitemap);
32
+ const xml = _chunkH3D7F4TAcjs.renderSitemapXml.call(void 0, output.sitemap);
28
33
  _fs.writeFileSync.call(void 0, "public/sitemap.xml", xml, "utf-8");
29
34
  }
30
- if (_optionalChain([config, 'access', _3 => _3.rss, 'optionalAccess', _4 => _4.enabled]) !== false) {
31
- const xml = _chunkYV2ZYIADcjs.renderRssXml.call(void 0, output.rss, config);
32
- const rssPath = _nullishCoalesce(_optionalChain([config, 'access', _5 => _5.rss, 'optionalAccess', _6 => _6.path]), () => ( "/rss.xml"));
33
- _fs.writeFileSync.call(void 0,
34
- _path.join.call(void 0, "public", rssPath.replace(/^\//, "")),
35
- xml,
36
- "utf-8"
37
- );
35
+ if (_optionalChain([config, 'access', _4 => _4.rss, 'optionalAccess', _5 => _5.enabled]) !== false) {
36
+ const xml = _chunkH3D7F4TAcjs.renderRssXml.call(void 0, output.rss, config);
37
+ const rssPath = _nullishCoalesce(_optionalChain([config, 'access', _6 => _6.rss, 'optionalAccess', _7 => _7.path]), () => ( "/rss.xml"));
38
+ _fs.writeFileSync.call(void 0, _path.join.call(void 0, "public", rssPath.replace(/^\//, "")), xml, "utf-8");
38
39
  }
39
- if (_optionalChain([config, 'access', _7 => _7.jsonLd, 'optionalAccess', _8 => _8.enabled]) !== false) {
40
+ if (_optionalChain([config, 'access', _8 => _8.jsonLd, 'optionalAccess', _9 => _9.enabled]) !== false) {
40
41
  const jsonLdDir = _path.join.call(void 0, outDir, "json-ld");
41
42
  ensureDir(jsonLdDir);
42
43
  for (const [slug, schemas] of Object.entries(output.jsonLd)) {
43
44
  writeJson(_path.join.call(void 0, jsonLdDir, `${slug}.json`), schemas);
44
45
  }
45
46
  }
46
- if (_optionalChain([config, 'access', _9 => _9.taxonomy, 'optionalAccess', _10 => _10.enabled]) !== false) {
47
+ if (_optionalChain([config, 'access', _10 => _10.taxonomy, 'optionalAccess', _11 => _11.enabled]) !== false) {
47
48
  writeJson(_path.join.call(void 0, outDir, "taxonomy.json"), output.taxonomy);
48
49
  }
49
- if (_optionalChain([config, 'access', _11 => _11.redirects, 'optionalAccess', _12 => _12.enabled]) !== false) {
50
+ if (_optionalChain([config, 'access', _12 => _12.redirects, 'optionalAccess', _13 => _13.enabled]) !== false) {
50
51
  writeJson(_path.join.call(void 0, outDir, "redirects.json"), output.redirects);
51
52
  }
52
53
  writeJson(_path.join.call(void 0, outDir, "integrity-report.json"), output.integrity);
53
54
  const slugManifest = output.entries.map((e) => e.slug);
54
55
  writeJson(_path.join.call(void 0, outDir, "slugs.json"), slugManifest);
55
- const { logger } = await Promise.resolve().then(() => _interopRequireWildcard(require("../../logger-7WBTEDED.cjs")));
56
- logger.info(`Generated ${output.entries.length} entries`);
56
+ _chunkH3D7F4TAcjs.logger.info(`Generated ${output.entries.length} entries`);
57
57
  return output;
58
58
  }
59
59
  function ensureDir(dir) {
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/mehdi/vaza-content/dist/adapters/nuxt/index.cjs","../../../src/adapters/nuxt/index.ts"],"names":[],"mappings":"AAAA;AACE;AACA;AACA;AACF,4DAAiC;AACjC,oCAAiC;AACjC,oCAAiC;AACjC;AACA;ACJA,wBAAqD;AACrD,4BAA8B;AAWvB,SAAS,uBAAA,CAAwB,MAAA,EAAoB;AAC1D,EAAA,OAAO,MAAA,SAAe,iBAAA,CAAA,EAAoB;AACxC,IAAA,MAAM,eAAA,CAAgB,MAAM,CAAA;AAAA,EAC9B,CAAA;AACF;AAKA,MAAA,SAAsB,gBAAA,CAAiB,MAAA,EAAyC;AAC9E,EAAA,OAAO,eAAA,CAAgB,MAAM,CAAA;AAC/B;AAEA,MAAA,SAAe,eAAA,CAAgB,MAAA,EAAyC;AACtE,EAAA,MAAM,OAAA,EAAS,MAAM,kDAAA,MAAyB,CAAA;AAC9C,EAAA,MAAM,OAAA,EAAS,eAAA;AAEf,EAAA,SAAA,CAAU,MAAM,CAAA;AAChB,EAAA,SAAA,CAAU,QAAQ,CAAA;AAGlB,EAAA,GAAA,iBAAI,MAAA,mBAAO,OAAA,6BAAS,UAAA,IAAY,KAAA,EAAO;AACrC,IAAA,SAAA,CAAU,wBAAA,MAAK,EAAQ,mBAAmB,CAAA,EAAG,MAAA,CAAO,OAAO,CAAA;AAC3D,IAAA,MAAM,IAAA,EAAM,gDAAA,MAAiB,CAAO,OAAO,CAAA;AAC3C,IAAA,+BAAA,oBAAc,EAAsB,GAAA,EAAK,OAAO,CAAA;AAAA,EAClD;AAGA,EAAA,GAAA,iBAAI,MAAA,qBAAO,GAAA,6BAAK,UAAA,IAAY,KAAA,EAAO;AACjC,IAAA,MAAM,IAAA,EAAM,4CAAA,MAAa,CAAO,GAAA,EAAK,MAAM,CAAA;AAC3C,IAAA,MAAM,QAAA,mCAAU,MAAA,qBAAO,GAAA,6BAAK,MAAA,UAAQ,YAAA;AACpC,IAAA,+BAAA;AAAA,MACE,wBAAA,QAAK,EAAU,OAAA,CAAQ,OAAA,CAAQ,KAAA,EAAO,EAAE,CAAC,CAAA;AAAA,MACzC,GAAA;AAAA,MACA;AAAA,IACF,CAAA;AAAA,EACF;AAGA,EAAA,GAAA,iBAAI,MAAA,qBAAO,MAAA,6BAAQ,UAAA,IAAY,KAAA,EAAO;AACpC,IAAA,MAAM,UAAA,EAAY,wBAAA,MAAK,EAAQ,SAAS,CAAA;AACxC,IAAA,SAAA,CAAU,SAAS,CAAA;AACnB,IAAA,IAAA,CAAA,MAAW,CAAC,IAAA,EAAM,OAAO,EAAA,GAAK,MAAA,CAAO,OAAA,CAAQ,MAAA,CAAO,MAAM,CAAA,EAAG;AAC3D,MAAA,SAAA,CAAU,wBAAA,SAAK,EAAW,CAAA,EAAA;AAC5B,IAAA;AACF,EAAA;AAGqB,EAAA;AACI,IAAA;AACzB,EAAA;AAGsB,EAAA;AACG,IAAA;AACzB,EAAA;AAGuB,EAAA;AAGK,EAAA;AACL,EAAA;AAEE,EAAA;AACA,EAAA;AAElB,EAAA;AACT;AAEsC;AACd,EAAA;AACQ,IAAA;AAC9B,EAAA;AACF;AAEsD;AAC7B,EAAA;AACE,EAAA;AAC3B;AD5BiC;AACA;AACA;AACA","file":"/Users/mehdi/vaza-content/dist/adapters/nuxt/index.cjs","sourcesContent":[null,"import { processCollections } from \"../../process.js\";\nimport type { VazaConfig, VazaOutput } from \"../../types.js\";\nimport { renderSitemapXml } from \"../../generate/sitemap.js\";\nimport { renderRssXml } from \"../../generate/rss.js\";\nimport { writeFileSync, mkdirSync, existsSync } from \"node:fs\";\nimport { join, dirname } from \"node:path\";\n\n/**\n * Nuxt adapter module that hooks into the Nuxt build.\n *\n * Usage in nuxt.config.ts:\n * modules: [\n * '@nuxt/content',\n * ['vaza-content/nuxt', vazaConfig]\n * ]\n */\nexport function defineVazaContentModule(config: VazaConfig) {\n return async function vazaContentModule() {\n await processAndWrite(config);\n };\n}\n\n/**\n * Standalone function to process and write outputs.\n */\nexport async function buildVazaContent(config: VazaConfig): Promise<VazaOutput> {\n return processAndWrite(config);\n}\n\nasync function processAndWrite(config: VazaConfig): Promise<VazaOutput> {\n const output = await processCollections(config);\n const outDir = \".vaza-content\";\n\n ensureDir(outDir);\n ensureDir(\"public\");\n\n // Write sitemap\n if (config.sitemap?.enabled !== false) {\n writeJson(join(outDir, \"sitemap-data.json\"), output.sitemap);\n const xml = renderSitemapXml(output.sitemap);\n writeFileSync(\"public/sitemap.xml\", xml, \"utf-8\");\n }\n\n // Write RSS\n if (config.rss?.enabled !== false) {\n const xml = renderRssXml(output.rss, config);\n const rssPath = config.rss?.path ?? \"/rss.xml\";\n writeFileSync(\n join(\"public\", rssPath.replace(/^\\//, \"\")),\n xml,\n \"utf-8\",\n );\n }\n\n // Write JSON-LD per slug\n if (config.jsonLd?.enabled !== false) {\n const jsonLdDir = join(outDir, \"json-ld\");\n ensureDir(jsonLdDir);\n for (const [slug, schemas] of Object.entries(output.jsonLd)) {\n writeJson(join(jsonLdDir, `${slug}.json`), schemas);\n }\n }\n\n // Write taxonomy data\n if (config.taxonomy?.enabled !== false) {\n writeJson(join(outDir, \"taxonomy.json\"), output.taxonomy);\n }\n\n // Write redirects\n if (config.redirects?.enabled !== false) {\n writeJson(join(outDir, \"redirects.json\"), output.redirects);\n }\n\n // Write integrity report\n writeJson(join(outDir, \"integrity-report.json\"), output.integrity);\n\n // Write slug manifest\n const slugManifest = output.entries.map((e) => e.slug);\n writeJson(join(outDir, \"slugs.json\"), slugManifest);\n\n const { logger } = await import(\"../../logger.js\");\n logger.info(`Generated ${output.entries.length} entries`);\n\n return output;\n}\n\nfunction ensureDir(dir: string): void {\n if (!existsSync(dir)) {\n mkdirSync(dir, { recursive: true });\n }\n}\n\nfunction writeJson(path: string, data: unknown): void {\n ensureDir(dirname(path));\n writeFileSync(path, JSON.stringify(data, null, 2), \"utf-8\");\n}\n"]}
1
+ {"version":3,"sources":["/Users/mehdi/vaza-content/dist/adapters/nuxt/index.cjs","../../../src/adapters/nuxt/index.ts"],"names":[],"mappings":"AAAA;AACE;AACA;AACA;AACA;AACF,4DAAiC;AACjC;AACA;ACPA,wBAAqD;AACrD,4BAA8B;AAkBvB,SAAS,uBAAA,CAAwB,MAAA,EAAoB;AAC1D,EAAA,OAAO,MAAA,CACL,cAAA,EACA,IAAA,EAAA,GACG;AACH,IAAA,GAAA,iBAAI,IAAA,2BAAM,MAAA,EAAM;AAEd,MAAA,IAAA,CAAK,IAAA,CAAK,cAAA,EAAgB,MAAA,CAAA,EAAA,GAAY;AACpC,QAAA,MAAM,eAAA,CAAgB,MAAM,CAAA;AAAA,MAC9B,CAAC,CAAA;AAAA,IACH,EAAA,KAAO;AAEL,MAAA,MAAM,eAAA,CAAgB,MAAM,CAAA;AAAA,IAC9B;AAAA,EACF,CAAA;AACF;AAKA,MAAA,SAAsB,gBAAA,CACpB,MAAA,EACqB;AACrB,EAAA,OAAO,eAAA,CAAgB,MAAM,CAAA;AAC/B;AAEA,MAAA,SAAe,eAAA,CAAgB,MAAA,EAAyC;AACtE,EAAA,MAAM,OAAA,EAAS,MAAM,kDAAA,MAAyB,CAAA;AAC9C,EAAA,MAAM,OAAA,EAAS,eAAA;AAEf,EAAA,SAAA,CAAU,MAAM,CAAA;AAChB,EAAA,SAAA,CAAU,QAAQ,CAAA;AAGlB,EAAA,GAAA,iBAAI,MAAA,qBAAO,OAAA,6BAAS,UAAA,IAAY,KAAA,EAAO;AACrC,IAAA,SAAA,CAAU,wBAAA,MAAK,EAAQ,mBAAmB,CAAA,EAAG,MAAA,CAAO,OAAO,CAAA;AAC3D,IAAA,MAAM,IAAA,EAAM,gDAAA,MAAiB,CAAO,OAAO,CAAA;AAC3C,IAAA,+BAAA,oBAAc,EAAsB,GAAA,EAAK,OAAO,CAAA;AAAA,EAClD;AAGA,EAAA,GAAA,iBAAI,MAAA,qBAAO,GAAA,6BAAK,UAAA,IAAY,KAAA,EAAO;AACjC,IAAA,MAAM,IAAA,EAAM,4CAAA,MAAa,CAAO,GAAA,EAAK,MAAM,CAAA;AAC3C,IAAA,MAAM,QAAA,mCAAU,MAAA,qBAAO,GAAA,6BAAK,MAAA,UAAQ,YAAA;AACpC,IAAA,+BAAA,wBAAc,QAAK,EAAU,OAAA,CAAQ,OAAA,CAAQ,KAAA,EAAO,EAAE,CAAC,CAAA,EAAG,GAAA,EAAK,OAAO,CAAA;AAAA,EACxE;AAGA,EAAA,GAAA,iBAAI,MAAA,qBAAO,MAAA,6BAAQ,UAAA,IAAY,KAAA,EAAO;AACpC,IAAA,MAAM,UAAA,EAAY,wBAAA,MAAK,EAAQ,SAAS,CAAA;AACxC,IAAA,SAAA,CAAU,SAAS,CAAA;AACnB,IAAA,IAAA,CAAA,MAAW,CAAC,IAAA,EAAM,OAAO,EAAA,GAAK,MAAA,CAAO,OAAA,CAAQ,MAAA,CAAO,MAAM,CAAA,EAAG;AAC3D,MAAA,SAAA,CAAU,wBAAA,SAAK,EAAW,CAAA,EAAA;AAC5B,IAAA;AACF,EAAA;AAGqB,EAAA;AACI,IAAA;AACzB,EAAA;AAGsB,EAAA;AACG,IAAA;AACzB,EAAA;AAGuB,EAAA;AAGK,EAAA;AACL,EAAA;AAEE,EAAA;AAElB,EAAA;AACT;AAEsC;AACd,EAAA;AACQ,IAAA;AAC9B,EAAA;AACF;AAEsD;AAC7B,EAAA;AACE,EAAA;AAC3B;ADvCiC;AACA;AACA;AACA","file":"/Users/mehdi/vaza-content/dist/adapters/nuxt/index.cjs","sourcesContent":[null,"import { existsSync, mkdirSync, writeFileSync } from \"node:fs\";\nimport { dirname, join } from \"node:path\";\nimport { renderRssXml } from \"../../generate/rss.js\";\nimport { renderSitemapXml } from \"../../generate/sitemap.js\";\nimport { logger } from \"../../logger.js\";\nimport { processCollections } from \"../../process.js\";\nimport type { VazaConfig, VazaOutput } from \"../../types.js\";\n\n/**\n * Nuxt adapter -- module that hooks into the Nuxt build.\n *\n * Usage in nuxt.config.ts:\n * import { defineVazaContentModule } from 'vaza-content/nuxt'\n * import vazaConfig from './vaza.config'\n *\n * export default defineNuxtConfig({\n * modules: [defineVazaContentModule(vazaConfig)]\n * })\n */\nexport function defineVazaContentModule(config: VazaConfig) {\n return async (\n _inlineOptions: unknown,\n nuxt: { hook?: (event: string, fn: () => Promise<void>) => void },\n ) => {\n if (nuxt?.hook) {\n // Use Nuxt hook API if available\n nuxt.hook(\"build:before\", async () => {\n await processAndWrite(config);\n });\n } else {\n // Fallback: run immediately (e.g. when used as simple module)\n await processAndWrite(config);\n }\n };\n}\n\n/**\n * Standalone function to process and write outputs.\n */\nexport async function buildVazaContent(\n config: VazaConfig,\n): Promise<VazaOutput> {\n return processAndWrite(config);\n}\n\nasync function processAndWrite(config: VazaConfig): Promise<VazaOutput> {\n const output = await processCollections(config);\n const outDir = \".vaza-content\";\n\n ensureDir(outDir);\n ensureDir(\"public\");\n\n // Write sitemap\n if (config.sitemap?.enabled !== false) {\n writeJson(join(outDir, \"sitemap-data.json\"), output.sitemap);\n const xml = renderSitemapXml(output.sitemap);\n writeFileSync(\"public/sitemap.xml\", xml, \"utf-8\");\n }\n\n // Write RSS\n if (config.rss?.enabled !== false) {\n const xml = renderRssXml(output.rss, config);\n const rssPath = config.rss?.path ?? \"/rss.xml\";\n writeFileSync(join(\"public\", rssPath.replace(/^\\//, \"\")), xml, \"utf-8\");\n }\n\n // Write JSON-LD per slug\n if (config.jsonLd?.enabled !== false) {\n const jsonLdDir = join(outDir, \"json-ld\");\n ensureDir(jsonLdDir);\n for (const [slug, schemas] of Object.entries(output.jsonLd)) {\n writeJson(join(jsonLdDir, `${slug}.json`), schemas);\n }\n }\n\n // Write taxonomy data\n if (config.taxonomy?.enabled !== false) {\n writeJson(join(outDir, \"taxonomy.json\"), output.taxonomy);\n }\n\n // Write redirects\n if (config.redirects?.enabled !== false) {\n writeJson(join(outDir, \"redirects.json\"), output.redirects);\n }\n\n // Write integrity report\n writeJson(join(outDir, \"integrity-report.json\"), output.integrity);\n\n // Write slug manifest\n const slugManifest = output.entries.map((e) => e.slug);\n writeJson(join(outDir, \"slugs.json\"), slugManifest);\n\n logger.info(`Generated ${output.entries.length} entries`);\n\n return output;\n}\n\nfunction ensureDir(dir: string): void {\n if (!existsSync(dir)) {\n mkdirSync(dir, { recursive: true });\n }\n}\n\nfunction writeJson(path: string, data: unknown): void {\n ensureDir(dirname(path));\n writeFileSync(path, JSON.stringify(data, null, 2), \"utf-8\");\n}\n"]}
@@ -1,15 +1,19 @@
1
- import { V as VazaConfig, a as VazaOutput } from '../../types-CgaidvaB.cjs';
1
+ import { V as VazaConfig, a as VazaOutput } from '../../types-DAfWIHiD.cjs';
2
2
 
3
3
  /**
4
- * Nuxt adapter module that hooks into the Nuxt build.
4
+ * Nuxt adapter -- module that hooks into the Nuxt build.
5
5
  *
6
6
  * Usage in nuxt.config.ts:
7
- * modules: [
8
- * '@nuxt/content',
9
- * ['vaza-content/nuxt', vazaConfig]
10
- * ]
7
+ * import { defineVazaContentModule } from 'vaza-content/nuxt'
8
+ * import vazaConfig from './vaza.config'
9
+ *
10
+ * export default defineNuxtConfig({
11
+ * modules: [defineVazaContentModule(vazaConfig)]
12
+ * })
11
13
  */
12
- declare function defineVazaContentModule(config: VazaConfig): () => Promise<void>;
14
+ declare function defineVazaContentModule(config: VazaConfig): (_inlineOptions: unknown, nuxt: {
15
+ hook?: (event: string, fn: () => Promise<void>) => void;
16
+ }) => Promise<void>;
13
17
  /**
14
18
  * Standalone function to process and write outputs.
15
19
  */
@@ -1,15 +1,19 @@
1
- import { V as VazaConfig, a as VazaOutput } from '../../types-CgaidvaB.js';
1
+ import { V as VazaConfig, a as VazaOutput } from '../../types-DAfWIHiD.js';
2
2
 
3
3
  /**
4
- * Nuxt adapter module that hooks into the Nuxt build.
4
+ * Nuxt adapter -- module that hooks into the Nuxt build.
5
5
  *
6
6
  * Usage in nuxt.config.ts:
7
- * modules: [
8
- * '@nuxt/content',
9
- * ['vaza-content/nuxt', vazaConfig]
10
- * ]
7
+ * import { defineVazaContentModule } from 'vaza-content/nuxt'
8
+ * import vazaConfig from './vaza.config'
9
+ *
10
+ * export default defineNuxtConfig({
11
+ * modules: [defineVazaContentModule(vazaConfig)]
12
+ * })
11
13
  */
12
- declare function defineVazaContentModule(config: VazaConfig): () => Promise<void>;
14
+ declare function defineVazaContentModule(config: VazaConfig): (_inlineOptions: unknown, nuxt: {
15
+ hook?: (event: string, fn: () => Promise<void>) => void;
16
+ }) => Promise<void>;
13
17
  /**
14
18
  * Standalone function to process and write outputs.
15
19
  */