jamdesk 1.1.219 → 1.1.221

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 (41) hide show
  1. package/dist/__tests__/unit/docs-config.test.js +20 -0
  2. package/dist/__tests__/unit/docs-config.test.js.map +1 -1
  3. package/dist/__tests__/unit/logo-svg-text-wiring.test.d.ts +2 -0
  4. package/dist/__tests__/unit/logo-svg-text-wiring.test.d.ts.map +1 -0
  5. package/dist/__tests__/unit/logo-svg-text-wiring.test.js +14 -0
  6. package/dist/__tests__/unit/logo-svg-text-wiring.test.js.map +1 -0
  7. package/dist/__tests__/unit/logo-svg-text.test.d.ts +2 -0
  8. package/dist/__tests__/unit/logo-svg-text.test.d.ts.map +1 -0
  9. package/dist/__tests__/unit/logo-svg-text.test.js +64 -0
  10. package/dist/__tests__/unit/logo-svg-text.test.js.map +1 -0
  11. package/dist/__tests__/unit/svg-text-sync.test.d.ts +2 -0
  12. package/dist/__tests__/unit/svg-text-sync.test.d.ts.map +1 -0
  13. package/dist/__tests__/unit/svg-text-sync.test.js +16 -0
  14. package/dist/__tests__/unit/svg-text-sync.test.js.map +1 -0
  15. package/dist/commands/dev.d.ts.map +1 -1
  16. package/dist/commands/dev.js +5 -1
  17. package/dist/commands/dev.js.map +1 -1
  18. package/dist/commands/validate.d.ts.map +1 -1
  19. package/dist/commands/validate.js +5 -1
  20. package/dist/commands/validate.js.map +1 -1
  21. package/dist/lib/docs-config.d.ts.map +1 -1
  22. package/dist/lib/docs-config.js +3 -0
  23. package/dist/lib/docs-config.js.map +1 -1
  24. package/dist/lib/logo-svg-text.d.ts +8 -0
  25. package/dist/lib/logo-svg-text.d.ts.map +1 -0
  26. package/dist/lib/logo-svg-text.js +53 -0
  27. package/dist/lib/logo-svg-text.js.map +1 -0
  28. package/dist/lib/svg-text.d.ts +40 -0
  29. package/dist/lib/svg-text.d.ts.map +1 -0
  30. package/dist/lib/svg-text.js +226 -0
  31. package/dist/lib/svg-text.js.map +1 -0
  32. package/package.json +1 -1
  33. package/vendored/app/layout.tsx +2 -2
  34. package/vendored/lib/docs-types.ts +2 -0
  35. package/vendored/lib/logo-svg-text-warning.ts +55 -0
  36. package/vendored/lib/seo.ts +16 -0
  37. package/vendored/lib/svg-text.ts +221 -0
  38. package/vendored/lib/validate-config.ts +2 -0
  39. package/vendored/schema/docs-schema.json +6 -0
  40. package/vendored/shared/status-reporter.ts +5 -0
  41. package/vendored/workspace-package-lock.json +108 -108
@@ -240,6 +240,9 @@ export function formatValidationErrors(errors, navigation) {
240
240
  case 'minLength':
241
241
  return ` - Value at ${path} must not be empty`;
242
242
  case 'pattern':
243
+ // A bare "Invalid format" gives no hint that %s is the missing piece.
244
+ if (err.instancePath === '/seo/titleTemplate')
245
+ return ` - Invalid value at ${path}: must contain %s where the page title goes`;
243
246
  return ` - Invalid format at ${path}`;
244
247
  case 'anyOf':
245
248
  return ` - Invalid value at ${path}: does not match any allowed format`;
@@ -1 +1 @@
1
- {"version":3,"file":"docs-config.js","sourceRoot":"","sources":["../../src/lib/docs-config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"docs-config.js","sourceRoot":"","sources":["../../src/lib/docs-config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,gBAAgB,MAAM,aAAa,CAAC;AAC3C,gFAAgF;AAChF,MAAM,UAAU,GAAI,gBAAwB,CAAC,OAAO,IAAI,gBAAgB,CAAC;AACzE,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAEvC,4EAA4E;AAC5E,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC;AAErD,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAuD3C,sFAAsF;AACtF,0FAA0F;AAC1F,8EAA8E;AAC9E,kFAAkF;AAClF,qFAAqF;AACrF,uDAAuD;AACvD,MAAM,CAAC,MAAM,kBAAkB,GAAG,0CAA0C,CAAC;AAE7E,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO;IACtE,QAAQ,EAAE,SAAS,EAAE,MAAM;CAC5B,CAAC;AAEF,SAAS,kBAAkB,CAAC,MAAe;IACzC,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACxD,MAAM,MAAM,GAAI,MAAkC,CAAC,OAAO,CAAC;IAC3D,OAAO,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;AACvE,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,KAAc;IAClD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;AACpF,CAAC;AAED,SAAS,sBAAsB,CAAC,MAAc;IAC5C,OAAO;QACL,KAAK,EAAE,KAAK;QACZ,eAAe,EAAE,MAAM;QACvB,oEAAoE;QACpE,gEAAgE;QAChE,mCAAmC;QACnC,KAAK,EACH,GAAG,MAAM,oDAAoD;YAC7D,6EAA6E;YAC7E,yDAAyD,kBAAkB,eAAe;KAC7F,CAAC;AACJ,CAAC;AAED,4DAA4D;AAC5D,0EAA0E;AAC1E,kEAAkE;AAClE,oEAAoE;AACpE,4EAA4E;AAC5E,0EAA0E;AAC1E,4EAA4E;AAC5E,4EAA4E;AAC5E,gCAAgC;AAChC,SAAS,eAAe,CAAC,MAAkB;IACzC,MAAM,IAAI,GAAG,MAAM,CAAC,IAEP,CAAC;IACd,MAAM,GAAG,GAAG,IAAI,EAAE,GAAG,CAAC;IACtB,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAC;IAEpB,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,IAAI,EAAE,QAAQ,EAAE,OAAO,KAAK,IAAI,IAAI,GAAG,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;QAC7D,MAAM,CAAC,IAAI,CAAC,sFAAsF,CAAC,CAAC;QACpG,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,IAAI,GAAG,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;QACzB,IAAI,OAAO,GAAG,CAAC,QAAQ,KAAK,QAAQ,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClE,MAAM,CAAC,IAAI,CAAC,2FAA2F,CAAC,CAAC;QAC3G,CAAC;aAAM,CAAC;YACN,IAAI,EAAE,GAAG,KAAK,CAAC;YACf,IAAI,CAAC;gBACH,EAAE,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC;YACnD,CAAC;YAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,CAAC;YAC7B,IAAI,CAAC,EAAE;gBAAE,MAAM,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;QAC7E,CAAC;IACH,CAAC;IACD,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC;YACrC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;QACtE,IAAI,CAAC,KAAK;YAAE,MAAM,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAC;IAC9F,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAc;IAClD,OAAO;QACL,+EAA+E;QAC/E,EAAE;QACF,KAAK,MAAM,EAAE;QACb,EAAE;QACF,uEAAuE;QACvE,EAAE;QACF,uBAAuB;QACvB,EAAE;QACF,sEAAsE;QACtE,WAAW,kBAAkB,EAAE;KAChC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,mBAAmB;AACnB,IAAI,YAAY,GAAkB,IAAI,CAAC;AAEvC;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS;IAC7B,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,oDAAoD;IACpD,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,wCAAwC,CAAC,CAAC;IACzF,IAAI,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC;QACrC,MAAM,aAAa,GAAG,EAAE,CAAC,YAAY,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;QAClE,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAW,CAAC;QACnD,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,qCAAqC;IACrC,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC;QAE3D,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,mCAAmC,EAAE;YAChE,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B,CAAC,CAAC;QACH,YAAY,CAAC,OAAO,CAAC,CAAC;QAEtB,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;YAChB,YAAY,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAY,CAAC;YAC/C,OAAO,YAAY,CAAC;QACtB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,gDAAgD;IAClD,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,OAAe;IACzC,IAAI,CAAC;QACH,uDAAuD;QACvD,OAAO,KAAK,CAAC,KAAK,CAAC,OAAO,CAAe,CAAC;IAC5C,CAAC;IAAC,MAAM,CAAC;QACP,4BAA4B;QAC5B,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAe,CAAC;IAC3C,CAAC;AACH,CAAC;AAED,MAAM,eAAe,GAAG;IACtB,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM;IAC3C,WAAW,EAAE,QAAQ,EAAE,OAAO;CACtB,CAAC;AAEX;;;;;;;;;;;;;;;GAeG;AACH,SAAS,0BAA0B,CACjC,MAAqB,EACrB,UAA+C;IAE/C,IAAI,CAAC,UAAU;QAAE,OAAO,MAAM,CAAC;IAC/B,MAAM,OAAO,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC;IAC/D,0EAA0E;IAC1E,yEAAyE;IACzE,oDAAoD;IACpD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC;IACxC,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAE3B,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE;QAC3B,qEAAqE;QACrE,2EAA2E;QAC3E,IAAI,GAAG,CAAC,YAAY,KAAK,aAAa;YAAE,OAAO,IAAI,CAAC;QACpD,2EAA2E;QAC3E,IAAI,GAAG,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;YAC/B,MAAM,OAAO,GACV,GAAG,CAAC,MAAuC,CAAC,eAAe,CAAC;YAC/D,OAAO,CAAC,CAAC,OAAO,IAAI,OAAO,KAAK,OAAO;gBACpC,eAAqC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;QAC9D,CAAC;QACD,oEAAoE;QACpE,6CAA6C;QAC7C,IAAI,GAAG,CAAC,OAAO,KAAK,sBAAsB,EAAE,CAAC;YAC3C,MAAM,KAAK,GACR,GAAG,CAAC,MAA0C,CAAC,kBAAkB,CAAC;YACrE,OAAO,KAAK,KAAK,OAAO,CAAC;QAC3B,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,MAAwC,EAAE,UAAoC;IACnH,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnC,OAAO,0BAA0B,CAAC;IACpC,CAAC;IAED,oEAAoE;IACpE,4EAA4E;IAC5E,4EAA4E;IAC5E,+CAA+C;IAC/C,MAAM,WAAW,GAAG,0BAA0B,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAEnE,+DAA+D;IAC/D,iGAAiG;IACjG,MAAM,cAAc,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;IAErD,MAAM,SAAS,GAAG,EAAE,CAAC;IACrB,MAAM,QAAQ,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;QAC5D,MAAM,IAAI,GAAG,GAAG,CAAC,YAAY,IAAI,GAAG,CAAC;QAErC,QAAQ,GAAG,CAAC,OAAO,EAAE,CAAC;YACpB,KAAK,UAAU;gBACb,OAAO,+BAAgC,GAAG,CAAC,MAAuC,CAAC,eAAe,QAAQ,IAAI,EAAE,CAAC;YACnH,KAAK,MAAM;gBACT,OAAO,uBAAuB,IAAI,cAAe,GAAG,CAAC,MAA4B,CAAC,IAAI,EAAE,CAAC;YAC3F,KAAK,MAAM;gBACT,OAAO,wBAAwB,IAAI,oBAAqB,GAAG,CAAC,MAAuC,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAClI,KAAK,OAAO;gBACV,OAAO,wBAAwB,IAAI,cAAe,GAAG,CAAC,MAAoC,CAAC,YAAY,GAAG,CAAC;YAC7G,KAAK,sBAAsB;gBACzB,OAAO,yBAA0B,GAAG,CAAC,MAA0C,CAAC,kBAAkB,QAAQ,IAAI,EAAE,CAAC;YACnH,KAAK,WAAW;gBACd,OAAO,gBAAgB,IAAI,oBAAoB,CAAC;YAClD,KAAK,SAAS;gBACZ,sEAAsE;gBACtE,IAAI,GAAG,CAAC,YAAY,KAAK,oBAAoB;oBAAE,OAAO,wBAAwB,IAAI,6CAA6C,CAAC;gBAChI,OAAO,yBAAyB,IAAI,EAAE,CAAC;YACzC,KAAK,OAAO;gBACV,OAAO,wBAAwB,IAAI,qCAAqC,CAAC;YAC3E;gBACE,OAAO,OAAO,GAAG,CAAC,OAAO,OAAO,IAAI,EAAE,CAAC;QAC3C,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,cAAc,CAAC,MAAM,GAAG,SAAS,EAAE,CAAC;QACtC,QAAQ,CAAC,IAAI,CAAC,YAAY,cAAc,CAAC,MAAM,GAAG,SAAS,gBAAgB,CAAC,CAAC;IAC/E,CAAC;IAED,OAAO,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpC,CAAC;AAED;;;;;GAKG;AACH,SAAS,gBAAgB,CAAC,MAAqB;IAC7C,sEAAsE;IACtE,yCAAyC;IACzC,MAAM,YAAY,GAAG,IAAI,GAAG,EAAyB,CAAC;IACtD,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACtD,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACxB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC9B,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YAC/B,CAAC;YACD,YAAY,CAAC,GAAG,CAAC,MAAM,CAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAED,uEAAuE;IACvE,IAAI,cAAc,GAAkB,IAAI,CAAC;IACzC,KAAK,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,YAAY,EAAE,CAAC;QAC1C,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CACvC,CAAC,CAAC,OAAO,KAAK,OAAO,IAAI,CAAC,CAAC,YAAY,KAAK,QAAQ,CACrD,CAAC;QACF,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACxB,cAAc,GAAG,MAAM,CAAC;YACxB,MAAM;QACR,CAAC;IACH,CAAC;IAED,sDAAsD;IACtD,kEAAkE;IAClE,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;QACnC,wEAAwE;QACxE,IAAI,GAAG,CAAC,OAAO,KAAK,OAAO,IAAI,GAAG,CAAC,YAAY,KAAK,QAAQ,EAAE,CAAC;YAC7D,OAAO,KAAK,CAAC;QACf,CAAC;QAED,+EAA+E;QAC/E,IAAI,GAAG,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;YAC5B,OAAO,KAAK,CAAC;QACf,CAAC;QAED,wEAAwE;QACxE,wCAAwC;QACxC,IAAI,cAAc,KAAK,IAAI,EAAE,CAAC;YAC5B,MAAM,KAAK,GAAG,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;YACtD,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,cAAc,EAAE,CAAC;gBACzC,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,OAAO,iBAAiB,CAAC,QAAQ,CAAC,CAAC;AACrC,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CAAC,MAAqB;IAC9C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;QACzB,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,YAAY,IAAI,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/E,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAClB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACd,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC;AAED,sFAAsF;AACtF,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAC7B,MAAM,oBAAoB,GAAG,GAAG,CAAC;AACjC,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC;IACjC,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ;IACnD,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU;CAC9C,CAAC,CAAC;AAWH;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,QAAgB;IACrD,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,WAAW,GAAa,EAAE,CAAC;IAC/B,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,SAAS,GAAG,KAAK,CAAC;IAEtB,KAAK,UAAU,IAAI,CAAC,MAAc,EAAE,MAAc,EAAE,KAAa;QAC/D,IAAI,SAAS,IAAI,KAAK,GAAG,kBAAkB;YAAE,OAAO;QACpD,IAAI,OAAoB,CAAC;QACzB,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QACvE,CAAC;QAAC,MAAM,CAAC;YACP,OAAO;QACT,CAAC;QACD,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;YAChB,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;QAChD,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,KAAK,CAAC,cAAc,EAAE;gBAAE,SAAS;YACrC,IAAI,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;gBAAE,SAAS;YACxG,IAAI,EAAE,IAAI,GAAG,oBAAoB,EAAE,CAAC;gBAClC,SAAS,GAAG,IAAI,CAAC;gBACjB,OAAO;YACT,CAAC;YACD,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;YAC5D,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBACxB,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;YAC5D,CAAC;iBAAM,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;gBACxD,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACpB,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IAC5B,OAAO,CAAC,IAAI,EAAE,CAAC;IACf,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC;AAC7C,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,uBAAuB,CACrC,OAAiB,EACjB,WAAmB,EACnB,SAAkB,EAClB,SAAS,GAAY,KAAK;IAE1B,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,WAAW,CAAC,CAAC;IACzD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,iFAAiF;QACjF,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7C,IAAI,GAAG,KAAK,GAAG,EAAE,CAAC;YAChB,OAAO,mDAAmD,CAAC;QAC7D,CAAC;QACD,OAAO,0BAA0B,SAAS,CAAC,CAAC,CAAC,eAAe,GAAG,kBAAkB,CAAC;IACpF,CAAC;IACD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjE,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,SAAS,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7E,OAAO,0BAA0B,IAAI,GAAG,IAAI,qCAAqC,CAAC;IACpF,CAAC;IACD,MAAM,IAAI,GAAG,oDAAoD;UAC7D,wFAAwF,CAAC;IAC7F,OAAO,SAAS;QACd,CAAC,CAAC,GAAG,IAAI,uBAAuB,oBAAoB,uDAAuD;QAC3G,CAAC,CAAC,IAAI,CAAC;AACX,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,UAAkB,EAClB,QAAiB,EACjB,QAAiB;IAEjB,oBAAoB;IACpB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,uEAAuE;QACvE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;QAChF,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,OAAO,sBAAsB,CAAC,uCAAuC,CAAC,CAAC;QACzE,CAAC;QAED,MAAM,SAAS,GAAG,QAAQ;YACxB,CAAC,CAAC,yBAAyB,QAAQ,wDAAwD;YAC3F,CAAC,CAAC,gGAAgG,CAAC;QAErG,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;QAC5C,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAEnD,MAAM,kBAAkB,GAAG,QAAQ;YACjC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;YAC5F,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,WAAW,GAAG,kBAAkB;YACpC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,EAAE,WAAW,CAAC;YAClD,CAAC,CAAC,WAAW,CAAC;QAEhB,MAAM,aAAa,GAAG,uBAAuB,CAAC,SAAS,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;QAE7G,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC;IACtE,CAAC;IAED,sBAAsB;IACtB,IAAI,MAAkB,CAAC;IACvB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACrD,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;IAAC,OAAO,QAAQ,EAAE,CAAC;QAClB,MAAM,KAAK,GAAG,QAAiB,CAAC;QAChC,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,8BAA8B,KAAK,CAAC,OAAO,EAAE;SACrD,CAAC;IACJ,CAAC;IAED,uEAAuE;IACvE,8EAA8E;IAC9E,iDAAiD;IACjD,IAAI,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/B,OAAO,sBAAsB,CAAC,8BAA8B,CAAC,CAAC;IAChE,CAAC;IAED,mBAAmB;IACnB,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACjB,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,4CAA4C;SACpD,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QACvB,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,kDAAkD;SAC1D,CAAC;IACJ,CAAC;IAED,6BAA6B;IAC7B,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;QACrC,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,oKAAoK;SAC5K,CAAC;IACJ,CAAC;IAED,kCAAkC;IAClC,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC;IAC9B,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,KAAK;QACnD,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,SAAS,CAAC;IACjF,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,sGAAsG;SAC9G,CAAC;IACJ,CAAC;IAED,gEAAgE;IAChE,MAAM,WAAW,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAChE,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QACrC,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QAC9C,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACtC,IAAI,qBAAqB,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;gBACxC,OAAO,sBAAsB,CAAC,UAAU,MAAM,CAAC,KAAK,gCAAgC,CAAC,CAAC;YACxF,CAAC;YACD,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,KAAK,EAAE,UAAU,MAAM,CAAC,KAAK,8BAA8B,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;aACpF,CAAC;QACJ,CAAC;QACD,yEAAyE;QACzE,MAAM,CAAC,KAAK,GAAG,UAA2D,CAAC;IAC7E,CAAC;IAED,MAAM,SAAS,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IAC1C,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,sBAAsB,SAAS,CAAC,CAAC,CAAC,EAAE;YAC3C,SAAS,EAAE,cAAc;SAC1B,CAAC;IACJ,CAAC;IAED,iCAAiC;IACjC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;QACjC,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC;YAC/F,UAAU,CAAC,GAAG,CAAC,CAAC;YAChB,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACrC,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;YAE/B,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,MAAM,YAAY,GAAG,sBAAsB,CACzC,QAAQ,CAAC,MAAM,EACf,MAAM,CAAC,UAAiD,CACzD,CAAC;gBACF,OAAO;oBACL,KAAK,EAAE,KAAK;oBACZ,KAAK,EAAE,YAAY;iBACpB,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,mCAAmC;IACrC,CAAC;IAED,OAAO;QACL,KAAK,EAAE,IAAI;QACX,MAAM;KACP,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,UAAkB;IACrD,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IAC3D,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACvD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,MAAkB;IAChD,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,SAAS,aAAa,CAAC,CAAU;QAC/B,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ;YAAE,OAAO;QACxC,MAAM,GAAG,GAAG,CAA4B,CAAC;QACzC,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ;YAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACvD,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACrB,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACtB,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACpB,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACvB,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACzB,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACzB,IAAI,GAAG,CAAC,MAAM;YAAE,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5C,CAAC;IAED,SAAS,SAAS,CAAC,KAAc;QAC/B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,OAAO;QAClC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,OAAO,IAAI,KAAK,QAAQ;gBAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBAC1C,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;gBAAE,aAAa,CAAC,IAAI,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;IAED,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACjC,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { ConfigSuggestion } from './config-suggestions.js';
2
+ import { cardSvgLogoRef } from './svg-text.js';
3
+ /**
4
+ * Suggest outlining text in the SVG logo the social card draws. Mirrors the
5
+ * hosted build's check; any read failure means no suggestion, never an error.
6
+ */
7
+ export declare function suggestLogoSvgText(config: Parameters<typeof cardSvgLogoRef>[0], projectDir: string): ConfigSuggestion[];
8
+ //# sourceMappingURL=logo-svg-text.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logo-svg-text.d.ts","sourceRoot":"","sources":["../../src/lib/logo-svg-text.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAmE,MAAM,eAAe,CAAC;AAEhH;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,CAAC,CAAC,EAC5C,UAAU,EAAE,MAAM,GACjB,gBAAgB,EAAE,CA2BpB"}
@@ -0,0 +1,53 @@
1
+ import fs from 'fs';
2
+ import path from 'path';
3
+ import { isPathWithinProject } from './path-security.js';
4
+ import { cardSvgLogoRef, svgHasText, SVG_TEXT_MAX_BYTES, SVG_TEXT_MESSAGE, SVG_TEXT_LINK } from './svg-text.js';
5
+ /**
6
+ * Suggest outlining text in the SVG logo the social card draws. Mirrors the
7
+ * hosted build's check; any read failure means no suggestion, never an error.
8
+ */
9
+ export function suggestLogoSvgText(config, projectDir) {
10
+ try {
11
+ const ref = cardSvgLogoRef(config);
12
+ if (!ref)
13
+ return [];
14
+ // External refs are never project files; without this `//cdn/l.svg` would lose its slash and match a local path.
15
+ if (/^(https?:)?\/\//i.test(ref))
16
+ return [];
17
+ // Same normalisation as validate-branding, plus query/hash and "./" that a URL-style ref may carry.
18
+ let p = ref.split(/[?#]/)[0];
19
+ if (p.startsWith('./'))
20
+ p = p.slice(2);
21
+ if (p.startsWith('/'))
22
+ p = p.slice(1);
23
+ if (p.startsWith('public/'))
24
+ p = p.slice('public/'.length);
25
+ if (!p)
26
+ return [];
27
+ for (const rel of [p, path.join('public', p)]) {
28
+ // A ref like ../x.svg must not make us read outside the project.
29
+ if (!isPathWithinProject(rel, projectDir))
30
+ continue;
31
+ const abs = path.join(projectDir, rel);
32
+ let stat;
33
+ try {
34
+ stat = fs.statSync(abs);
35
+ }
36
+ catch {
37
+ continue;
38
+ }
39
+ if (!stat.isFile())
40
+ continue;
41
+ if (stat.size > SVG_TEXT_MAX_BYTES)
42
+ return [];
43
+ if (!svgHasText(fs.readFileSync(abs, 'utf-8')))
44
+ return [];
45
+ return [{ message: `${rel.split(path.sep).join('/')}: ${SVG_TEXT_MESSAGE}`, link: SVG_TEXT_LINK }];
46
+ }
47
+ }
48
+ catch {
49
+ // A logo we can't read must not break validate or dev.
50
+ }
51
+ return [];
52
+ }
53
+ //# sourceMappingURL=logo-svg-text.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logo-svg-text.js","sourceRoot":"","sources":["../../src/lib/logo-svg-text.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEhH;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAChC,MAA4C,EAC5C,UAAkB;IAElB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;QACnC,IAAI,CAAC,GAAG;YAAE,OAAO,EAAE,CAAC;QACpB,iHAAiH;QACjH,IAAI,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC;YAAE,OAAO,EAAE,CAAC;QAC5C,oGAAoG;QACpG,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACtC,IAAI,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC;YAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC3D,IAAI,CAAC,CAAC;YAAE,OAAO,EAAE,CAAC;QAClB,KAAK,MAAM,GAAG,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9C,iEAAiE;YACjE,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,UAAU,CAAC;gBAAE,SAAS;YACpD,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;YACvC,IAAI,IAAI,CAAC;YACT,IAAI,CAAC;gBAAC,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC;gBAAC,SAAS;YAAC,CAAC;YACpD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;gBAAE,SAAS;YAC7B,IAAI,IAAI,CAAC,IAAI,GAAG,kBAAkB;gBAAE,OAAO,EAAE,CAAC;YAC9C,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;gBAAE,OAAO,EAAE,CAAC;YAC1D,OAAO,CAAC,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,gBAAgB,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;QACrG,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,uDAAuD;IACzD,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * SVG Text Detection (visible <text> in the SVG logo the social card draws).
3
+ *
4
+ * AUTO-SYNCED: This file is automatically copied from build-service by vendor.js.
5
+ * DO NOT EDIT directly - edit builder/build-service/lib/svg-text.ts instead.
6
+ */
7
+ export declare const SVG_TEXT_MAX_BYTES = 1048576;
8
+ export declare const SVG_TEXT_MESSAGE = "This SVG logo has text in it that link previews can't show. Convert the text to outlines (paths) in your design tool and export it again.";
9
+ export declare const SVG_TEXT_LINK = "https://jamdesk.com/docs/content/seo#customize-the-social-card";
10
+ /**
11
+ * True when the SVG has a <text> element with visible characters.
12
+ * @vercel/og has no fonts for SVGs embedded as images, so such text draws blank
13
+ * (reproduced in prod 2026-10-05). Single forward scan with indexOf: every
14
+ * search moves past what it consumed, and anything unterminated ends the scan.
15
+ * A display:none element is tracked by name and depth inside the same scan, so
16
+ * skipping it never re-reads input.
17
+ */
18
+ export declare function svgHasText(svg: string): boolean;
19
+ type ImageValue = string | {
20
+ light?: string;
21
+ dark?: string;
22
+ } | undefined;
23
+ /**
24
+ * The SVG logo the generated social card draws, or null when it draws none.
25
+ * SVG logos are never rewritten, and neither fallback in seo.ts (the favicon
26
+ * swap at :176 and :212) applies to .svg, so a returned ref is the file drawn.
27
+ * Mirrors resolveImagePath and the card variant choice in seo.ts.
28
+ */
29
+ export declare function cardSvgLogoRef(config: {
30
+ logo?: ImageValue;
31
+ seo?: {
32
+ metatags?: Record<string, string>;
33
+ socialCard?: {
34
+ theme?: string;
35
+ customImage?: string;
36
+ };
37
+ };
38
+ }): string | null;
39
+ export {};
40
+ //# sourceMappingURL=svg-text.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"svg-text.d.ts","sourceRoot":"","sources":["../../src/lib/svg-text.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,eAAO,MAAM,kBAAkB,UAAY,CAAC;AAC5C,eAAO,MAAM,gBAAgB,8IACgH,CAAC;AAC9I,eAAO,MAAM,aAAa,mEAAmE,CAAC;AAwF9F;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAsF/C;AAED,KAAK,UAAU,GAAG,MAAM,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAAC;AAEzE;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE;IACrC,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,GAAG,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,UAAU,CAAC,EAAE;YAAE,KAAK,CAAC,EAAE,MAAM,CAAC;YAAC,WAAW,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC;CACpG,GAAG,MAAM,GAAG,IAAI,CAoBhB"}
@@ -0,0 +1,226 @@
1
+ /**
2
+ * SVG Text Detection (visible <text> in the SVG logo the social card draws).
3
+ *
4
+ * AUTO-SYNCED: This file is automatically copied from build-service by vendor.js.
5
+ * DO NOT EDIT directly - edit builder/build-service/lib/svg-text.ts instead.
6
+ */
7
+ // No imports on purpose: this file is copied verbatim into the CLI.
8
+ export const SVG_TEXT_MAX_BYTES = 1_048_576;
9
+ export const SVG_TEXT_MESSAGE = "This SVG logo has text in it that link previews can't show. Convert the text to outlines (paths) in your design tool and export it again.";
10
+ export const SVG_TEXT_LINK = 'https://jamdesk.com/docs/content/seo#customize-the-social-card';
11
+ // Elements whose contents are never painted, so a <text> inside them is not visible text.
12
+ const NON_RENDERED = new Set(['title', 'desc', 'metadata', 'script', 'style']);
13
+ // Entities that draw as blank space. Input is lowercased already. Any other
14
+ // entity (&#x44; and friends) is a visible character.
15
+ const BLANK_ENTITIES = [
16
+ '&nbsp;', '&#160;', '&#xa0;', '&#32;', '&#x20;', '&#9;', '&#x9;', '&#10;', '&#xa;', '&#13;', '&#xd;',
17
+ ];
18
+ /** Character data of a <text> body with nested tags (tspan etc.) dropped. */
19
+ function visibleData(body) {
20
+ let i = 0;
21
+ while (i < body.length) {
22
+ const lt = body.indexOf('<', i);
23
+ const end = lt === -1 ? body.length : lt;
24
+ for (let k = i; k < end; k++) {
25
+ const c = body.charCodeAt(k);
26
+ // Anything that is not whitespace counts. U+00A0 is blank, like its entities.
27
+ if (c === 38) {
28
+ // Fixed-size list, and k jumps past the match, so this stays linear.
29
+ const hit = BLANK_ENTITIES.find((e) => body.startsWith(e, k));
30
+ if (hit) {
31
+ k += hit.length - 1;
32
+ continue;
33
+ }
34
+ return true;
35
+ }
36
+ if (c !== 32 && c !== 9 && c !== 10 && c !== 13 && c !== 12 && c !== 160)
37
+ return true;
38
+ }
39
+ if (lt === -1)
40
+ return false;
41
+ const gt = body.indexOf('>', lt);
42
+ if (gt === -1)
43
+ return false;
44
+ i = gt + 1;
45
+ }
46
+ return false;
47
+ }
48
+ /**
49
+ * Index of the close tag for rawName at or after `from`, or -1. A match only
50
+ * counts when the name ends there, so </textPath is not the close of <text.
51
+ * The search only moves forward, so it stays linear.
52
+ */
53
+ function findClose(lc, rawName, from) {
54
+ const needle = '</' + rawName;
55
+ let at = lc.indexOf(needle, from);
56
+ while (at !== -1) {
57
+ const c = lc.charCodeAt(at + needle.length);
58
+ if (c === 62 || c === 32 || c === 9 || c === 10 || c === 13 || c === 12)
59
+ return at;
60
+ at = lc.indexOf(needle, at + 1);
61
+ }
62
+ return -1;
63
+ }
64
+ /**
65
+ * Index of the first '>' at or after `from` that is outside a quoted attribute
66
+ * value, or -1. A '>' inside "..." or '...' does not end the tag. One forward
67
+ * walk; an unterminated quote returns -1 (no later tag can be whole).
68
+ */
69
+ function tagEnd(lc, from) {
70
+ let quote = 0;
71
+ for (let k = from; k < lc.length; k++) {
72
+ const c = lc.charCodeAt(k);
73
+ if (quote) {
74
+ if (c === quote)
75
+ quote = 0;
76
+ }
77
+ else if (c === 34 || c === 39) {
78
+ quote = c;
79
+ }
80
+ else if (c === 62) {
81
+ return k;
82
+ }
83
+ }
84
+ return -1;
85
+ }
86
+ // display:none on an element or its style hides the whole subtree. Design tools
87
+ // leave the original text in a hidden layer after outlining a copy of it.
88
+ // visibility:hidden is not here on purpose: a child can set it back to visible.
89
+ const DISPLAY_NONE_ATTR = /(?:^|\s)display\s*=\s*(["'])\s*none\s*\1/;
90
+ const STYLE_ATTR = /(?:^|\s)style\s*=\s*(?:"([^"]*)"|'([^']*)')/;
91
+ const DISPLAY_NONE_CSS = /(?:^|[;\s])display\s*:\s*none(?![a-z0-9_-])/;
92
+ function isDisplayNone(attrs) {
93
+ if (DISPLAY_NONE_ATTR.test(attrs))
94
+ return true;
95
+ const style = STYLE_ATTR.exec(attrs);
96
+ return !!style && DISPLAY_NONE_CSS.test(style[1] ?? style[2]);
97
+ }
98
+ /**
99
+ * True when the SVG has a <text> element with visible characters.
100
+ * @vercel/og has no fonts for SVGs embedded as images, so such text draws blank
101
+ * (reproduced in prod 2026-10-05). Single forward scan with indexOf: every
102
+ * search moves past what it consumed, and anything unterminated ends the scan.
103
+ * A display:none element is tracked by name and depth inside the same scan, so
104
+ * skipping it never re-reads input.
105
+ */
106
+ export function svgHasText(svg) {
107
+ const lc = svg.toLowerCase();
108
+ // Raw name of the display:none element being skipped, and how many opens of
109
+ // that name are still unclosed. 0 means not inside a hidden element.
110
+ let hiddenName = '';
111
+ let hiddenDepth = 0;
112
+ let i = 0;
113
+ while (i < lc.length) {
114
+ const lt = lc.indexOf('<', i);
115
+ if (lt === -1)
116
+ return false;
117
+ if (lc.startsWith('<!--', lt)) {
118
+ const end = lc.indexOf('-->', lt + 4);
119
+ if (end === -1)
120
+ return false;
121
+ i = end + 3;
122
+ continue;
123
+ }
124
+ if (lc.startsWith('<![cdata[', lt)) {
125
+ const end = lc.indexOf(']]>', lt + 9);
126
+ if (end === -1)
127
+ return false;
128
+ i = end + 3;
129
+ continue;
130
+ }
131
+ if (lc.startsWith('<?', lt)) {
132
+ const end = lc.indexOf('?>', lt + 2);
133
+ if (end === -1)
134
+ return false;
135
+ i = end + 2;
136
+ continue;
137
+ }
138
+ const isClose = lc.charCodeAt(lt + 1) === 47;
139
+ const nameStart = isClose ? lt + 2 : lt + 1;
140
+ let n = nameStart;
141
+ while (n < lc.length) {
142
+ const c = lc.charCodeAt(n);
143
+ if (c === 32 || c === 9 || c === 10 || c === 13 || c === 12 || c === 47 || c === 62 || c === 60)
144
+ break;
145
+ n++;
146
+ }
147
+ const rawName = lc.slice(nameStart, n);
148
+ // Every tag is read up to its '>' (outside quotes) and the scan resumes after it, so no
149
+ // character is looked at twice. With no '>' left, no later tag can be whole.
150
+ const gt = tagEnd(lc, n);
151
+ if (gt === -1)
152
+ return false;
153
+ const selfClosing = lc.charCodeAt(gt - 1) === 47;
154
+ if (isClose) {
155
+ if (hiddenDepth > 0 && rawName === hiddenName)
156
+ hiddenDepth--;
157
+ i = gt + 1;
158
+ continue;
159
+ }
160
+ const local = rawName.slice(rawName.indexOf(':') + 1);
161
+ // HTML inside <foreignObject> is not drawn by the card either, so it counts like <text>.
162
+ const isText = local === 'text' || local === 'foreignobject';
163
+ if (isText || NON_RENDERED.has(local)) {
164
+ if (selfClosing) {
165
+ i = gt + 1;
166
+ continue;
167
+ }
168
+ // Jump over the body even when hidden: script or title content could
169
+ // otherwise look like tags and throw off the hidden depth count.
170
+ const close = findClose(lc, rawName, gt + 1);
171
+ if (close === -1)
172
+ return false;
173
+ if (isText &&
174
+ hiddenDepth === 0 &&
175
+ !isDisplayNone(lc.slice(n, gt)) &&
176
+ visibleData(lc.slice(gt + 1, close))) {
177
+ return true;
178
+ }
179
+ i = close;
180
+ continue;
181
+ }
182
+ if (!selfClosing) {
183
+ if (hiddenDepth > 0) {
184
+ if (rawName === hiddenName)
185
+ hiddenDepth++;
186
+ }
187
+ else if (isDisplayNone(lc.slice(n, gt))) {
188
+ hiddenName = rawName;
189
+ hiddenDepth = 1;
190
+ }
191
+ }
192
+ i = gt + 1;
193
+ }
194
+ return false;
195
+ }
196
+ /**
197
+ * The SVG logo the generated social card draws, or null when it draws none.
198
+ * SVG logos are never rewritten, and neither fallback in seo.ts (the favicon
199
+ * swap at :176 and :212) applies to .svg, so a returned ref is the file drawn.
200
+ * Mirrors resolveImagePath and the card variant choice in seo.ts.
201
+ */
202
+ export function cardSvgLogoRef(config) {
203
+ const card = config.seo?.socialCard;
204
+ // 'replace' with a usable global og:image serves that image instead of the card.
205
+ if (card?.customImage === 'replace') {
206
+ const og = config.seo?.metatags?.['og:image'];
207
+ const trimmed = typeof og === 'string' ? og.trim() : '';
208
+ if (trimmed && !trimmed.startsWith('data:'))
209
+ return null;
210
+ }
211
+ const logo = config.logo;
212
+ if (!logo)
213
+ return null;
214
+ let ref = '';
215
+ if (typeof logo === 'string') {
216
+ ref = logo;
217
+ }
218
+ else {
219
+ const { light, dark } = logo;
220
+ ref = (card?.theme === 'dark' ? dark || light : light || dark) || '';
221
+ }
222
+ if (!ref)
223
+ return null;
224
+ return /\.svg$/i.test(ref.split(/[?#]/)[0]) ? ref : null;
225
+ }
226
+ //# sourceMappingURL=svg-text.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"svg-text.js","sourceRoot":"","sources":["../../src/lib/svg-text.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jamdesk",
3
- "version": "1.1.219",
3
+ "version": "1.1.221",
4
4
  "description": "CLI for Jamdesk — build, preview, and deploy documentation sites from MDX. Dev server with hot reload, 50+ components, OpenAPI support, AI search, and Mintlify migration",
5
5
  "keywords": [
6
6
  "jamdesk",
@@ -20,7 +20,7 @@ import {
20
20
  } from '@/lib/page-isr-helpers';
21
21
  import { isRTLLanguage, resolveLanguageWithFallback, toHreflang } from '@/lib/language-utils';
22
22
  import type { DocsConfig } from '@/lib/docs-types';
23
- import { buildSiteTitle, getFaviconIcons, FALLBACK_METADATA } from '@/lib/seo';
23
+ import { buildSiteTitle, getFaviconIcons, getTitleTemplate, FALLBACK_METADATA } from '@/lib/seo';
24
24
  import { withR2OpsContext, emitR2OpsSummary } from '@/lib/r2-content';
25
25
  import { DocsChrome, getLocalFileContent, loadCustomAssets } from '@/lib/layout-helpers';
26
26
  import { filterNavigationForViewer } from '@/lib/viewer-navigation';
@@ -69,7 +69,7 @@ async function generateMetadataImpl(): Promise<Metadata> {
69
69
  const isEmbed = isIsrMode() && (await headers()).get('x-jd-layout') === 'embed';
70
70
  return {
71
71
  title: {
72
- template: `%s — ${config.name}`,
72
+ template: getTitleTemplate(config),
73
73
  default: buildSiteTitle(config.name),
74
74
  },
75
75
  description: config.description || `Documentation for ${config.name}`,
@@ -749,6 +749,8 @@ export interface SeoConfig {
749
749
  indexHiddenPages?: boolean;
750
750
  ai?: { llmsTxt?: boolean }; // default true; false suppresses llms.txt + llms-full.txt
751
751
  socialCard?: SocialCardConfig;
752
+ /** Browser tab and search title format; each `%s` becomes the page title (default: '%s — <name>'). Does not change og:title. */
753
+ titleTemplate?: string;
752
754
  }
753
755
 
754
756
  /**
@@ -0,0 +1,55 @@
1
+ import fs from 'fs';
2
+ import path from 'path';
3
+ import type { BuildWarning } from '../shared/status-reporter.js'; // vendored copy — NOT '../../shared'
4
+ import { svgHasText, SVG_TEXT_MESSAGE, SVG_TEXT_LINK, SVG_TEXT_MAX_BYTES } from './svg-text.js';
5
+ import { normalizeAssetPath } from './isr-build-executor.js';
6
+
7
+ /**
8
+ * Suggestion for an SVG logo whose <text> the OG card renderer paints blank.
9
+ * The reader is injected so the build (disk) and the CLI can each resolve the
10
+ * ref their own way; any read failure means "no warning", never a failed build.
11
+ * `file` is the real asset path the reader found, like logo_oversized reports.
12
+ */
13
+ export function logoSvgTextWarning(
14
+ ref: string | null,
15
+ read: (ref: string) => { file: string; svg: string } | null,
16
+ ): BuildWarning | null {
17
+ if (!ref || /^(?:https?:)?\/\//i.test(ref)) return null;
18
+ try {
19
+ const found = read(ref);
20
+ if (!found || !svgHasText(found.svg)) return null;
21
+ return { type: 'logo_svg_text', file: found.file, message: SVG_TEXT_MESSAGE, link: SVG_TEXT_LINK };
22
+ } catch {
23
+ return null;
24
+ }
25
+ }
26
+
27
+ /**
28
+ * Normalize a config image ref to the same key the upload loop uses: strip
29
+ * query/hash, leading ./ or ../, leading /, and a public/ prefix.
30
+ */
31
+ export function toAssetKey(ref: string): string {
32
+ return normalizeAssetPath(
33
+ ref.split('?')[0].split('#')[0]
34
+ .replace(/^(?:\.\.?\/)+/, '')
35
+ .replace(/^\/+/, ''),
36
+ );
37
+ }
38
+
39
+ /**
40
+ * Resolve a config logo ref to its collected asset and read the SVG text.
41
+ * Null when the asset is unknown or over the size cap (the scan is skipped,
42
+ * not the build). Extracted from build.ts so a test can exercise the real
43
+ * lookup instead of a fake reader.
44
+ */
45
+ export function readCardSvgLogo(
46
+ ref: string,
47
+ assetByNormalizedKey: Map<string, string>,
48
+ docsDir: string,
49
+ ): { file: string; svg: string } | null {
50
+ const asset = assetByNormalizedKey.get(toAssetKey(ref));
51
+ if (!asset) return null;
52
+ const full = path.join(docsDir, asset);
53
+ if (fs.statSync(full).size > SVG_TEXT_MAX_BYTES) return null;
54
+ return { file: asset, svg: fs.readFileSync(full, 'utf8') };
55
+ }
@@ -34,6 +34,22 @@ export function buildSiteTitle(configName: string): string {
34
34
  : `${configName} Documentation`;
35
35
  }
36
36
 
37
+ /**
38
+ * Root `title.template` for the site. Defaults to `%s — <name>`; sites opt in
39
+ * to their own via `seo.titleTemplate`.
40
+ *
41
+ * The schema already rejects a template without `%s`, but the runtime check
42
+ * stays: an older R2 config or a hand edit can slip past it, and a template
43
+ * with no `%s` would give every page the same title.
44
+ */
45
+ export function getTitleTemplate(config: { name: string; seo?: { titleTemplate?: unknown } }): string {
46
+ const custom = config.seo?.titleTemplate;
47
+ if (typeof custom === 'string' && custom.includes('%s')) {
48
+ return custom;
49
+ }
50
+ return `%s — ${config.name}`;
51
+ }
52
+
37
53
  /**
38
54
  * Icon descriptors for Next.js Metadata.icons.icon. When both light and
39
55
  * dark are configured the dark entry trails the primary with a