jamdesk 1.1.70 → 1.1.72

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 (103) hide show
  1. package/dist/__tests__/integration/validate.integration.test.js +21 -0
  2. package/dist/__tests__/integration/validate.integration.test.js.map +1 -1
  3. package/dist/__tests__/unit/dev-loading-server.test.js +30 -14
  4. package/dist/__tests__/unit/dev-loading-server.test.js.map +1 -1
  5. package/dist/__tests__/unit/extract-hooks.test.js +102 -1
  6. package/dist/__tests__/unit/extract-hooks.test.js.map +1 -1
  7. package/dist/__tests__/unit/mdx-validator.test.js +22 -0
  8. package/dist/__tests__/unit/mdx-validator.test.js.map +1 -1
  9. package/dist/__tests__/unit/migrate-mdx.test.js +121 -1
  10. package/dist/__tests__/unit/migrate-mdx.test.js.map +1 -1
  11. package/dist/__tests__/unit/relative-mdx-imports.test.d.ts +2 -0
  12. package/dist/__tests__/unit/relative-mdx-imports.test.d.ts.map +1 -0
  13. package/dist/__tests__/unit/relative-mdx-imports.test.js +452 -0
  14. package/dist/__tests__/unit/relative-mdx-imports.test.js.map +1 -0
  15. package/dist/__tests__/unit/relocate-snippets.test.d.ts +2 -0
  16. package/dist/__tests__/unit/relocate-snippets.test.d.ts.map +1 -0
  17. package/dist/__tests__/unit/relocate-snippets.test.js +542 -0
  18. package/dist/__tests__/unit/relocate-snippets.test.js.map +1 -0
  19. package/dist/__tests__/unit/run-build-script.test.js +23 -1
  20. package/dist/__tests__/unit/run-build-script.test.js.map +1 -1
  21. package/dist/__tests__/unit/vendored-sync.test.js +5 -0
  22. package/dist/__tests__/unit/vendored-sync.test.js.map +1 -1
  23. package/dist/__tests__/unit/warn-relative-imports.test.d.ts +2 -0
  24. package/dist/__tests__/unit/warn-relative-imports.test.d.ts.map +1 -0
  25. package/dist/__tests__/unit/warn-relative-imports.test.js +44 -0
  26. package/dist/__tests__/unit/warn-relative-imports.test.js.map +1 -0
  27. package/dist/commands/dev.d.ts.map +1 -1
  28. package/dist/commands/dev.js +16 -1
  29. package/dist/commands/dev.js.map +1 -1
  30. package/dist/commands/migrate/convert-mdx.d.ts +5 -1
  31. package/dist/commands/migrate/convert-mdx.d.ts.map +1 -1
  32. package/dist/commands/migrate/convert-mdx.js +19 -6
  33. package/dist/commands/migrate/convert-mdx.js.map +1 -1
  34. package/dist/commands/migrate/extract-hooks.d.ts +26 -0
  35. package/dist/commands/migrate/extract-hooks.d.ts.map +1 -1
  36. package/dist/commands/migrate/extract-hooks.js +71 -12
  37. package/dist/commands/migrate/extract-hooks.js.map +1 -1
  38. package/dist/commands/migrate/fix-mdx-syntax.d.ts +38 -0
  39. package/dist/commands/migrate/fix-mdx-syntax.d.ts.map +1 -0
  40. package/dist/commands/migrate/fix-mdx-syntax.js +80 -0
  41. package/dist/commands/migrate/fix-mdx-syntax.js.map +1 -0
  42. package/dist/commands/migrate/index.d.ts.map +1 -1
  43. package/dist/commands/migrate/index.js +165 -3
  44. package/dist/commands/migrate/index.js.map +1 -1
  45. package/dist/commands/migrate/relocate-snippets.d.ts +30 -0
  46. package/dist/commands/migrate/relocate-snippets.d.ts.map +1 -0
  47. package/dist/commands/migrate/relocate-snippets.js +357 -0
  48. package/dist/commands/migrate/relocate-snippets.js.map +1 -0
  49. package/dist/commands/validate.d.ts.map +1 -1
  50. package/dist/commands/validate.js +31 -1
  51. package/dist/commands/validate.js.map +1 -1
  52. package/dist/lib/deps.d.ts.map +1 -1
  53. package/dist/lib/deps.js +7 -5
  54. package/dist/lib/deps.js.map +1 -1
  55. package/dist/lib/docs-config.d.ts +1 -0
  56. package/dist/lib/docs-config.d.ts.map +1 -1
  57. package/dist/lib/docs-config.js +53 -6
  58. package/dist/lib/docs-config.js.map +1 -1
  59. package/dist/lib/mdx-syntax-fixes.d.ts +14 -0
  60. package/dist/lib/mdx-syntax-fixes.d.ts.map +1 -0
  61. package/dist/lib/mdx-syntax-fixes.js +38 -0
  62. package/dist/lib/mdx-syntax-fixes.js.map +1 -0
  63. package/dist/lib/mdx-validator.d.ts +11 -2
  64. package/dist/lib/mdx-validator.d.ts.map +1 -1
  65. package/dist/lib/mdx-validator.js +41 -4
  66. package/dist/lib/mdx-validator.js.map +1 -1
  67. package/dist/lib/relative-mdx-imports.d.ts +44 -0
  68. package/dist/lib/relative-mdx-imports.d.ts.map +1 -0
  69. package/dist/lib/relative-mdx-imports.js +145 -0
  70. package/dist/lib/relative-mdx-imports.js.map +1 -0
  71. package/dist/lib/run-build-script.d.ts.map +1 -1
  72. package/dist/lib/run-build-script.js +7 -0
  73. package/dist/lib/run-build-script.js.map +1 -1
  74. package/dist/lib/warn-relative-imports.d.ts +2 -0
  75. package/dist/lib/warn-relative-imports.d.ts.map +1 -0
  76. package/dist/lib/warn-relative-imports.js +29 -0
  77. package/dist/lib/warn-relative-imports.js.map +1 -0
  78. package/package.json +2 -2
  79. package/vendored/app/(jd-system)/jd-inactive/BrandedInactive.tsx +118 -0
  80. package/vendored/app/(jd-system)/jd-inactive/layout.tsx +12 -0
  81. package/vendored/app/(jd-system)/jd-inactive/page.tsx +40 -0
  82. package/vendored/app/(unlock)/jd/unlock/page.tsx +32 -0
  83. package/vendored/app/[[...slug]]/page.tsx +63 -15
  84. package/vendored/app/globals.css +5 -0
  85. package/vendored/app/layout.tsx +36 -0
  86. package/vendored/components/navigation/Header.tsx +4 -2
  87. package/vendored/components/navigation/SocialFooter.tsx +4 -18
  88. package/vendored/lib/branding-url.ts +9 -0
  89. package/vendored/lib/build/error-parser.ts +26 -0
  90. package/vendored/lib/docs-isr.ts +33 -19
  91. package/vendored/lib/docs-types.ts +1 -1
  92. package/vendored/lib/email-notifier.ts +1 -1
  93. package/vendored/lib/isr-build-executor.ts +1 -1
  94. package/vendored/lib/layout-helpers.tsx +54 -2
  95. package/vendored/lib/middleware-helpers.ts +46 -8
  96. package/vendored/lib/preprocess-mdx.ts +62 -15
  97. package/vendored/lib/redis.ts +86 -0
  98. package/vendored/lib/revalidation-trigger.ts +29 -15
  99. package/vendored/lib/validate-config.ts +68 -7
  100. package/vendored/schema/docs-schema.json +1 -1
  101. package/vendored/scripts/compile-snippets.cjs +50 -7
  102. package/vendored/themes/index.ts +6 -4
  103. package/vendored/workspace-package-lock.json +118 -133
@@ -17,6 +17,34 @@ const require = createRequire(import.meta.url);
17
17
  const Ajv = require('ajv').default || require('ajv');
18
18
  const __filename = fileURLToPath(import.meta.url);
19
19
  const __dirname = path.dirname(__filename);
20
+ // Mintlify-migration helpers — KEEP IN SYNC with build-service/lib/validate-config.ts
21
+ // (canonical) and cli/vendored/lib/validate-config.ts (auto-synced via `npm run vendor`).
22
+ // The CLI's `cli/src/` cannot import from `cli/vendored/` (different tsconfig
23
+ // module resolution), matching the established pattern of normalize-config.ts and
24
+ // navigation-validator.ts. The vendored copy lives under different module-resolution
25
+ // rules and is excluded from `cli/src/`'s tsc compile.
26
+ export const MIGRATION_DOCS_URL = 'https://jamdesk.com/docs/setup/migration';
27
+ const MINTLIFY_THEMES = [
28
+ 'mint', 'maple', 'palm', 'willow', 'quill', 'aspen', 'linden', 'prism',
29
+ 'almond', 'sequoia', 'luma',
30
+ ];
31
+ function isMintlifyBySchema(config) {
32
+ if (!config || typeof config !== 'object')
33
+ return false;
34
+ const schema = config.$schema;
35
+ return typeof schema === 'string' && schema.includes('mintlify.com');
36
+ }
37
+ function isMintlifyByThemeName(theme) {
38
+ return typeof theme === 'string' && MINTLIFY_THEMES.includes(theme.toLowerCase());
39
+ }
40
+ function mintlifyMigrationError(reason) {
41
+ return {
42
+ valid: false,
43
+ error: `${reason} This project hasn't been migrated to Jamdesk yet ` +
44
+ '— run `jamdesk migrate` from your project directory to convert your config ' +
45
+ `(and Mintlify-only MDX components) automatically. See ${MIGRATION_DOCS_URL} for details.`,
46
+ };
47
+ }
20
48
  // Cache the schema
21
49
  let cachedSchema = null;
22
50
  /**
@@ -175,6 +203,11 @@ function deduplicateErrors(errors) {
175
203
  export async function validateConfig(configPath) {
176
204
  // Check file exists
177
205
  if (!fs.existsSync(configPath)) {
206
+ // mint.json sitting where docs.json should be is the un-migrated case.
207
+ const mintPath = path.join(path.dirname(path.resolve(configPath)), 'mint.json');
208
+ if (fs.existsSync(mintPath)) {
209
+ return mintlifyMigrationError('Found `mint.json` but no `docs.json`.');
210
+ }
178
211
  return {
179
212
  valid: false,
180
213
  error: 'docs.json not found. Run `jamdesk init` to create a new project.',
@@ -193,6 +226,12 @@ export async function validateConfig(configPath) {
193
226
  error: `Failed to parse docs.json: ${error.message}`,
194
227
  };
195
228
  }
229
+ // Mintlify-shaped configs trip every structural rule below. Detect via
230
+ // $schema BEFORE structural validation so customers see "run jamdesk migrate"
231
+ // instead of "Array of groups is not supported".
232
+ if (isMintlifyBySchema(config)) {
233
+ return mintlifyMigrationError('Mintlify `$schema` detected.');
234
+ }
196
235
  // Basic validation
197
236
  if (!config.name) {
198
237
  return {
@@ -223,13 +262,21 @@ export async function validateConfig(configPath) {
223
262
  error: 'Navigation must have at least one of: anchors, tabs, groups, pages.',
224
263
  };
225
264
  }
226
- // Validate theme
265
+ // Validate theme. Comparison is case-insensitive on both sides.
227
266
  const validThemes = ['jam', 'nebula', 'pulsar'];
228
- if (config.theme && !validThemes.includes(config.theme)) {
229
- return {
230
- valid: false,
231
- error: `Theme "${config.theme}" is not supported. Valid: ${validThemes.join(', ')}`,
232
- };
267
+ if (typeof config.theme === 'string') {
268
+ const themeLower = config.theme.toLowerCase();
269
+ if (!validThemes.includes(themeLower)) {
270
+ if (isMintlifyByThemeName(config.theme)) {
271
+ return mintlifyMigrationError(`Theme "${config.theme}" looks like a Mintlify theme.`);
272
+ }
273
+ return {
274
+ valid: false,
275
+ error: `Theme "${config.theme}" is not supported. Valid: ${validThemes.join(', ')}`,
276
+ };
277
+ }
278
+ // Normalize so downstream schema validation (lowercase enum) accepts it.
279
+ config.theme = themeLower;
233
280
  }
234
281
  // Schema validation if available
235
282
  try {
@@ -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":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Pure MDX syntax-fix transforms shared by `jamdesk dev` (in-memory before
3
+ * MDX compile) and `jamdesk migrate` (on disk).
4
+ *
5
+ * Mirror of `unindentClosingTagAfterList` in
6
+ * builder/build-service/lib/preprocess-mdx.ts — keep regex in sync. The cli
7
+ * variant additionally returns 1-based touched-line numbers for migrate's
8
+ * report output.
9
+ */
10
+ export declare function unindentClosingTagsAfterLists(content: string): {
11
+ content: string;
12
+ lines: number[];
13
+ };
14
+ //# sourceMappingURL=mdx-syntax-fixes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mdx-syntax-fixes.d.ts","sourceRoot":"","sources":["../../src/lib/mdx-syntax-fixes.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,MAAM,GACd;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,CAyBtC"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Pure MDX syntax-fix transforms shared by `jamdesk dev` (in-memory before
3
+ * MDX compile) and `jamdesk migrate` (on disk).
4
+ *
5
+ * Mirror of `unindentClosingTagAfterList` in
6
+ * builder/build-service/lib/preprocess-mdx.ts — keep regex in sync. The cli
7
+ * variant additionally returns 1-based touched-line numbers for migrate's
8
+ * report output.
9
+ */
10
+ const LIST_ITEM_LINE = /^\s*(?:[-*+]\s|\d+\.\s)/;
11
+ const INDENTED_CLOSING_TAG = /^(\s+)(<\/[A-Z][\w-]*>)\s*$/;
12
+ const HAS_INDENTED_CLOSING_TAG = /^\s+<\/[A-Z]/m;
13
+ export function unindentClosingTagsAfterLists(content) {
14
+ // Cheap prefilter — the migrate command iterates every MDX file and the
15
+ // validator runs on every dev validate. Most files have no indented
16
+ // closing tag at all; skip the split+walk in that case.
17
+ if (!HAS_INDENTED_CLOSING_TAG.test(content))
18
+ return { content, lines: [] };
19
+ const lines = content.split('\n');
20
+ const out = [];
21
+ const touched = [];
22
+ let lastNonBlank = '';
23
+ for (let i = 0; i < lines.length; i++) {
24
+ const line = lines[i];
25
+ const closing = line.match(INDENTED_CLOSING_TAG);
26
+ if (closing && LIST_ITEM_LINE.test(lastNonBlank)) {
27
+ out.push(closing[2]);
28
+ touched.push(i + 1);
29
+ lastNonBlank = closing[2];
30
+ continue;
31
+ }
32
+ out.push(line);
33
+ if (line.trim() !== '')
34
+ lastNonBlank = line;
35
+ }
36
+ return { content: out.join('\n'), lines: touched };
37
+ }
38
+ //# sourceMappingURL=mdx-syntax-fixes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mdx-syntax-fixes.js","sourceRoot":"","sources":["../../src/lib/mdx-syntax-fixes.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,cAAc,GAAG,yBAAyB,CAAC;AACjD,MAAM,oBAAoB,GAAG,6BAA6B,CAAC;AAC3D,MAAM,wBAAwB,GAAG,eAAe,CAAC;AAEjD,MAAM,UAAU,6BAA6B,CAC3C,OAAe;IAEf,wEAAwE;IACxE,oEAAoE;IACpE,wDAAwD;IACxD,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IAE3E,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,YAAY,GAAG,EAAE,CAAC;IAEtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;QACjD,IAAI,OAAO,IAAI,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;YACjD,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;YACrB,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACpB,YAAY,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YAC1B,SAAS;QACX,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACf,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE;YAAE,YAAY,GAAG,IAAI,CAAC;IAC9C,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AACrD,CAAC"}
@@ -18,9 +18,18 @@ export interface MdxValidationError {
18
18
  */
19
19
  export declare function buildMdxNotFoundError(depsDir: string): Error;
20
20
  /**
21
- * Validate a single MDX file's content
21
+ * Validate a single MDX file's content.
22
+ *
23
+ * @param applySyntaxFixes - Whether to apply the same in-memory rewrites
24
+ * that build-service's preprocessMdx pipeline applies at render time
25
+ * (e.g. unindenting closing tags absorbed by list items). Default `true`
26
+ * so dev's gate matches what actually compiles. Pass `false` to see the
27
+ * verdict against raw on-disk content — used by `jamdesk migrate` to
28
+ * detect files that *would* break without the runtime safety net.
22
29
  */
23
- export declare function validateMdxFile(content: string, filePath: string): Promise<MdxValidationError | null>;
30
+ export declare function validateMdxFile(content: string, filePath: string, options?: {
31
+ applySyntaxFixes?: boolean;
32
+ }): Promise<MdxValidationError | null>;
24
33
  /**
25
34
  * Extract all page paths from navigation config.
26
35
  * Handles tabs, anchors, groups, languages (multi-language), and flat array structures.
@@ -1 +1 @@
1
- {"version":3,"file":"mdx-validator.d.ts","sourceRoot":"","sources":["../../src/lib/mdx-validator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAWD;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,CAQ5D;AAmBD;;GAEG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAyBpC;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,GAAG,GAAG,MAAM,EAAE,CAoDzD;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,GAAG,EACX,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,kBAAkB,EAAE,CAAC,CA4B/B"}
1
+ {"version":3,"file":"mdx-validator.d.ts","sourceRoot":"","sources":["../../src/lib/mdx-validator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAUH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAWD;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,CAQ5D;AAmBD;;;;;;;;;GASG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE;IAAE,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAAO,GAC3C,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CA+BpC;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,GAAG,GAAG,MAAM,EAAE,CAiEzD;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,GAAG,EACX,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,kBAAkB,EAAE,CAAC,CA4B/B"}
@@ -10,6 +10,7 @@ import { homedir } from 'os';
10
10
  import { createRequire } from 'module';
11
11
  import { pathToFileURL } from 'url';
12
12
  import { preprocessFrontmatter } from './frontmatter-utils.js';
13
+ import { unindentClosingTagsAfterLists } from './mdx-syntax-fixes.js';
13
14
  let cachedMdx = null;
14
15
  /**
15
16
  * Build the user-facing error thrown when @mdx-js/mdx can't be resolved.
@@ -43,9 +44,17 @@ async function importMdx() {
43
44
  return cachedMdx;
44
45
  }
45
46
  /**
46
- * Validate a single MDX file's content
47
+ * Validate a single MDX file's content.
48
+ *
49
+ * @param applySyntaxFixes - Whether to apply the same in-memory rewrites
50
+ * that build-service's preprocessMdx pipeline applies at render time
51
+ * (e.g. unindenting closing tags absorbed by list items). Default `true`
52
+ * so dev's gate matches what actually compiles. Pass `false` to see the
53
+ * verdict against raw on-disk content — used by `jamdesk migrate` to
54
+ * detect files that *would* break without the runtime safety net.
47
55
  */
48
- export async function validateMdxFile(content, filePath) {
56
+ export async function validateMdxFile(content, filePath, options = {}) {
57
+ const { applySyntaxFixes = true } = options;
49
58
  const { compile } = await importMdx();
50
59
  const matter = (await import('gray-matter')).default;
51
60
  // Pre-process frontmatter to handle common issues
@@ -61,9 +70,13 @@ export async function validateMdxFile(content, filePath) {
61
70
  suggestion: 'Check YAML syntax between --- markers',
62
71
  };
63
72
  }
64
- // Step 2: Validate MDX syntax
73
+ // Step 2: Validate MDX syntax. By default, mirror the runtime preprocess
74
+ // pipeline so dev's gate matches what gets compiled at request time.
75
+ const toCompile = applySyntaxFixes
76
+ ? unindentClosingTagsAfterLists(processedContent).content
77
+ : processedContent;
65
78
  try {
66
- await compile(processedContent, { jsx: true });
79
+ await compile(toCompile, { jsx: true });
67
80
  return null; // Valid
68
81
  }
69
82
  catch (err) {
@@ -97,6 +110,10 @@ export function extractAllPages(navigation) {
97
110
  if ('tabs' in item && Array.isArray(item.tabs)) {
98
111
  processItems(item.tabs);
99
112
  }
113
+ // Handle dropdowns (Mintlify navigation grouping)
114
+ if ('dropdowns' in item && Array.isArray(item.dropdowns)) {
115
+ processItems(item.dropdowns);
116
+ }
100
117
  }
101
118
  }
102
119
  }
@@ -119,6 +136,15 @@ export function extractAllPages(navigation) {
119
136
  if (navigation.groups && Array.isArray(navigation.groups)) {
120
137
  processItems(navigation.groups);
121
138
  }
139
+ // Handle pages structure: { pages: [...] } — produced by
140
+ // convertMintlifyToJamdesk when the source had a top-level navigation array.
141
+ if (navigation.pages && Array.isArray(navigation.pages)) {
142
+ processItems(navigation.pages);
143
+ }
144
+ // Handle top-level dropdowns: { dropdowns: [...] }
145
+ if (navigation.dropdowns && Array.isArray(navigation.dropdowns)) {
146
+ processItems(navigation.dropdowns);
147
+ }
122
148
  // Handle flat array: [...]
123
149
  if (Array.isArray(navigation)) {
124
150
  processItems(navigation);
@@ -168,6 +194,17 @@ function formatMdxError(err, filePath) {
168
194
  suggestion =
169
195
  'A < character is being parsed as JSX. Use &lt; or rewrite (e.g., "Below 50%" instead of "<50%")';
170
196
  }
197
+ else if (message.includes('Expected the closing tag') &&
198
+ message.includes('listItem')) {
199
+ // Indented closing tags get absorbed into the previous list item:
200
+ // - last bullet
201
+ // </Card> ← 2-space indent makes this part of the listItem
202
+ // The fix is always to unindent the closing tag flush-left (or
203
+ // separate it from the list with a blank line).
204
+ suggestion =
205
+ 'Closing tag is indented and got absorbed into the preceding list item. ' +
206
+ 'Unindent the closing tag flush-left, or add a blank line between the last list item and the closing tag.';
207
+ }
171
208
  else if (message.includes('Expected closing tag')) {
172
209
  suggestion = 'Add the missing closing tag or use self-closing syntax (<Component />)';
173
210
  }
@@ -1 +1 @@
1
- {"version":3,"file":"mdx-validator.js","sourceRoot":"","sources":["../../src/lib/mdx-validator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mdx-validator.js","sourceRoot":"","sources":["../../src/lib/mdx-validator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Detect and rewrite parent-relative MDX imports.
3
+ *
4
+ * Mintlify supports `import X from '../snippets/foo.mdx'`; Jamdesk only
5
+ * resolves root-relative `import X from '/snippets/foo.mdx'`. The
6
+ * detector finds candidates; the rewriter fixes the ones that resolve
7
+ * under a `snippets/` directory (conservative — see plan).
8
+ */
9
+ export interface RelativeMdxImport {
10
+ /** The import specifier as written, e.g. '../snippets/foo.mdx'. */
11
+ specifier: string;
12
+ /** 1-indexed line number in the source. */
13
+ line: number;
14
+ /** The full matched import statement (for replacement). */
15
+ raw: string;
16
+ }
17
+ export declare function stripFencedCodeBlocks(content: string): string;
18
+ /**
19
+ * Pass `alreadyStripped: true` when the caller already ran
20
+ * `stripFencedCodeBlocks` — avoids redoing the regex pass when the same
21
+ * stripped content drives multiple analyses (e.g. link extraction +
22
+ * import detection during relocation).
23
+ */
24
+ export declare function detectRelativeMdxImports(content: string, alreadyStripped?: boolean): RelativeMdxImport[];
25
+ export interface RewriteResult {
26
+ /** Content with applicable imports rewritten. */
27
+ content: string;
28
+ /** Specifiers that were successfully rewritten. */
29
+ rewrites: {
30
+ from: string;
31
+ to: string;
32
+ line: number;
33
+ }[];
34
+ /** Human-readable warnings for imports left untouched. */
35
+ warnings: string[];
36
+ }
37
+ /**
38
+ * Rewrite parent-relative MDX imports to root-relative `/snippets/*` form
39
+ * when the resolved target sits under a top-level `snippets/` directory.
40
+ * Imports that resolve elsewhere (siblings, non-existent files, paths
41
+ * outside `projectRoot`) are left untouched and reported in `warnings`.
42
+ */
43
+ export declare function rewriteRelativeMdxImports(content: string, filePath: string, projectRoot: string): Promise<RewriteResult>;
44
+ //# sourceMappingURL=relative-mdx-imports.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relative-mdx-imports.d.ts","sourceRoot":"","sources":["../../src/lib/relative-mdx-imports.ts"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AAEH,MAAM,WAAW,iBAAiB;IAChC,mEAAmE;IACnE,SAAS,EAAE,MAAM,CAAC;IAClB,2CAA2C;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,2DAA2D;IAC3D,GAAG,EAAE,MAAM,CAAC;CACb;AA8BD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAQ7D;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,MAAM,EACf,eAAe,UAAQ,GACtB,iBAAiB,EAAE,CAiBrB;AAED,MAAM,WAAW,aAAa;IAC5B,iDAAiD;IACjD,OAAO,EAAE,MAAM,CAAC;IAChB,mDAAmD;IACnD,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACvD,0DAA0D;IAC1D,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;;;;GAKG;AACH,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,aAAa,CAAC,CA0FxB"}
@@ -0,0 +1,145 @@
1
+ // builder/cli/src/lib/relative-mdx-imports.ts
2
+ import fs from 'fs-extra';
3
+ import path from 'node:path';
4
+ // Captures: import <binding> from '<./or../><path>.mdx';
5
+ // Quotes: single or double. Named: { Foo, Bar } (multi-line ok). Default: Foo.
6
+ // Namespace: * as Foo. Type-only: import type X. Combined: Default, { Named }.
7
+ // Side-effect imports (`import "..mdx"` with no binding) are intentionally
8
+ // ignored — MDX needs a binding to render the snippet.
9
+ //
10
+ // Anchored to start-of-line (with `gm` + `^[ \t]*`) so the regex can't match
11
+ // the literal English word "import" inside a heading or prose paragraph and
12
+ // then bridge across multiple lines to the real import — that produced wrong
13
+ // `line` numbers in user-facing warnings (validate/dev print `<file>:<line>`).
14
+ //
15
+ // The binding character class allows identifiers, `$`, `*` (namespace), commas,
16
+ // braces, spaces, and newlines (for multi-line `{ ... }` lists). It explicitly
17
+ // excludes quotes and slashes so the bridge can't extend past the next `"` or
18
+ // jump into a sibling import on a later line.
19
+ const RELATIVE_MDX_IMPORT_RE = /^[ \t]*import\s+(?:type\s+)?[\w$*{}, \n\r]+\s+from\s+["'](\.{1,2}\/[^"']+\.mdx)["']\s*;?/gm;
20
+ // Replaces fenced code-block bodies with same-shape blanks so line numbers are
21
+ // preserved but imports inside fences don't match. Handles both ``` and ~~~
22
+ // fences with optional info strings (e.g. ```mdx shared/example.mdx wrap).
23
+ // Indent class is `( *)` (not the CommonMark `{0,3}`) so we also catch fences
24
+ // nested in numbered list items / `<CodeGroup>` blocks where the fence opens
25
+ // at column 4+ (real Mintlify pattern in `create/reusable-snippets.mdx`).
26
+ // The capture binds `\1` to the exact indent so the close has to match.
27
+ const FENCED_CODE_BLOCK_RE = /^( *)(```+|~~~+)[^\n]*\n([\s\S]*?)\n\1\2\s*$/gm;
28
+ export function stripFencedCodeBlocks(content) {
29
+ return content.replace(FENCED_CODE_BLOCK_RE, (match, _indent, _fence, body) => {
30
+ // Replace body with blank lines of same count to preserve line numbers.
31
+ const bodyLines = body.split('\n').length;
32
+ const fenceOpen = match.split('\n')[0];
33
+ const fenceClose = match.split('\n').slice(-1)[0];
34
+ return [fenceOpen, ...Array(bodyLines).fill(''), fenceClose].join('\n');
35
+ });
36
+ }
37
+ /**
38
+ * Pass `alreadyStripped: true` when the caller already ran
39
+ * `stripFencedCodeBlocks` — avoids redoing the regex pass when the same
40
+ * stripped content drives multiple analyses (e.g. link extraction +
41
+ * import detection during relocation).
42
+ */
43
+ export function detectRelativeMdxImports(content, alreadyStripped = false) {
44
+ const stripped = alreadyStripped ? content : stripFencedCodeBlocks(content);
45
+ const out = [];
46
+ RELATIVE_MDX_IMPORT_RE.lastIndex = 0;
47
+ let match;
48
+ while ((match = RELATIVE_MDX_IMPORT_RE.exec(stripped)) !== null) {
49
+ const before = stripped.slice(0, match.index);
50
+ // 1-indexed line of the `import` keyword. Line numbers preserved by
51
+ // stripFencedCodeBlocks (replaces body with same-count blank lines).
52
+ const line = before.split('\n').length;
53
+ out.push({
54
+ specifier: match[1],
55
+ line,
56
+ raw: match[0],
57
+ });
58
+ }
59
+ return out;
60
+ }
61
+ /**
62
+ * Rewrite parent-relative MDX imports to root-relative `/snippets/*` form
63
+ * when the resolved target sits under a top-level `snippets/` directory.
64
+ * Imports that resolve elsewhere (siblings, non-existent files, paths
65
+ * outside `projectRoot`) are left untouched and reported in `warnings`.
66
+ */
67
+ export async function rewriteRelativeMdxImports(content, filePath, projectRoot) {
68
+ const matches = detectRelativeMdxImports(content);
69
+ const rewrites = [];
70
+ const warnings = [];
71
+ const fileDir = path.dirname(filePath);
72
+ const snippetsRoot = path.join(projectRoot, 'snippets');
73
+ const relPath = path.relative(projectRoot, filePath);
74
+ let next = content;
75
+ for (const m of matches) {
76
+ const resolved = path.resolve(fileDir, m.specifier);
77
+ if (!(await fs.pathExists(resolved))) {
78
+ // Resume-after-partial: a previous relocate run may have moved the
79
+ // file to `/snippets/<sameRel>` while leaving this importer's path
80
+ // untouched (e.g. user manually moved files, or relocate aborted
81
+ // mid-flight on a second pass). The relocator preserves source-dir
82
+ // structure when moving, so probing `snippets/<resolved-rel>` is
83
+ // the inverse of that move and cheaply makes re-runs idempotent.
84
+ const resolvedRel = path.relative(projectRoot, resolved);
85
+ if (!resolvedRel.startsWith('..') &&
86
+ !path.isAbsolute(resolvedRel) &&
87
+ !resolvedRel.startsWith(`snippets${path.sep}`)) {
88
+ const movedCandidate = path.join(snippetsRoot, resolvedRel);
89
+ if (await fs.pathExists(movedCandidate)) {
90
+ const newSpec = `/snippets/${resolvedRel.replaceAll(path.sep, '/')}`;
91
+ // Replacer functions (not strings) — `$` in user paths would
92
+ // otherwise be interpreted as String.replace backreferences.
93
+ const newImport = m.raw.replace(m.specifier, () => newSpec);
94
+ next = next.replace(m.raw, () => newImport);
95
+ rewrites.push({ from: m.specifier, to: newSpec, line: m.line });
96
+ continue;
97
+ }
98
+ }
99
+ // Mintlify-style root-snippets fallback. `../snippets/X` from `zh/folder/`
100
+ // resolves literally to `zh/snippets/X` (doesn't exist), but the user
101
+ // almost always meant `<root>/snippets/X` — Mintlify resolves it that
102
+ // way regardless of depth, and localized pages copy the import verbatim.
103
+ const rootSnippetMatch = m.specifier.match(/^(?:\.\.\/)+snippets\/(.+\.mdx)$/);
104
+ if (rootSnippetMatch) {
105
+ const rootCandidate = path.join(snippetsRoot, rootSnippetMatch[1]);
106
+ if (await fs.pathExists(rootCandidate)) {
107
+ const newSpec = `/snippets/${rootSnippetMatch[1]}`;
108
+ const newImport = m.raw.replace(m.specifier, () => newSpec);
109
+ next = next.replace(m.raw, () => newImport);
110
+ rewrites.push({ from: m.specifier, to: newSpec, line: m.line });
111
+ continue;
112
+ }
113
+ }
114
+ warnings.push(`${relPath}:${m.line}: ${m.specifier} — target file doesn't exist; ` +
115
+ `create the snippet or remove this import`);
116
+ continue;
117
+ }
118
+ const rel = path.relative(snippetsRoot, resolved);
119
+ if (rel.startsWith('..') || path.isAbsolute(rel)) {
120
+ // Target exists but isn't under /snippets/. The user has to decide.
121
+ const targetRel = path.relative(projectRoot, resolved);
122
+ const suggestedSnippetPath = `/snippets/${path.basename(resolved)}`;
123
+ // If the suggested destination already holds a different file,
124
+ // saying "Move the file to <X>" would clobber. Surface the conflict
125
+ // so the user knows to rename or merge instead.
126
+ const collision = await fs.pathExists(path.join(snippetsRoot, path.basename(resolved)));
127
+ if (collision) {
128
+ warnings.push(`${relPath}:${m.line}: ${m.specifier} → ${targetRel} is not under /snippets/, ` +
129
+ `but ${suggestedSnippetPath} already exists with different content. ` +
130
+ `Rename one of the files or inline this import.`);
131
+ }
132
+ else {
133
+ warnings.push(`${relPath}:${m.line}: ${m.specifier} → ${targetRel} is not under /snippets/. ` +
134
+ `Move the file to ${suggestedSnippetPath} (and update this import) or inline its content.`);
135
+ }
136
+ continue;
137
+ }
138
+ const newSpec = `/snippets/${rel.replaceAll(path.sep, '/')}`;
139
+ const newImport = m.raw.replace(m.specifier, () => newSpec);
140
+ next = next.replace(m.raw, () => newImport);
141
+ rewrites.push({ from: m.specifier, to: newSpec, line: m.line });
142
+ }
143
+ return { content: next, rewrites, warnings };
144
+ }
145
+ //# sourceMappingURL=relative-mdx-imports.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relative-mdx-imports.js","sourceRoot":"","sources":["../../src/lib/relative-mdx-imports.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,WAAW,CAAC;AAoB7B,yDAAyD;AACzD,+EAA+E;AAC/E,+EAA+E;AAC/E,2EAA2E;AAC3E,uDAAuD;AACvD,EAAE;AACF,6EAA6E;AAC7E,4EAA4E;AAC5E,6EAA6E;AAC7E,+EAA+E;AAC/E,EAAE;AACF,gFAAgF;AAChF,+EAA+E;AAC/E,8EAA8E;AAC9E,8CAA8C;AAC9C,MAAM,sBAAsB,GAC1B,4FAA4F,CAAC;AAE/F,+EAA+E;AAC/E,4EAA4E;AAC5E,2EAA2E;AAC3E,8EAA8E;AAC9E,6EAA6E;AAC7E,0EAA0E;AAC1E,wEAAwE;AACxE,MAAM,oBAAoB,GACxB,gDAAgD,CAAC;AAEnD,MAAM,UAAU,qBAAqB,CAAC,OAAe;IACnD,OAAO,OAAO,CAAC,OAAO,CAAC,oBAAoB,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;QAC5E,wEAAwE;QACxE,MAAM,SAAS,GAAI,IAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;QACtD,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACvC,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClD,OAAO,CAAC,SAAS,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CACtC,OAAe,EACf,eAAe,GAAG,KAAK;IAEvB,MAAM,QAAQ,GAAG,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAC5E,MAAM,GAAG,GAAwB,EAAE,CAAC;IACpC,sBAAsB,CAAC,SAAS,GAAG,CAAC,CAAC;IACrC,IAAI,KAA6B,CAAC;IAClC,OAAO,CAAC,KAAK,GAAG,sBAAsB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAChE,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QAC9C,oEAAoE;QACpE,qEAAqE;QACrE,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;QACvC,GAAG,CAAC,IAAI,CAAC;YACP,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;YACnB,IAAI;YACJ,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;SACd,CAAC,CAAC;IACL,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAWD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,OAAe,EACf,QAAgB,EAChB,WAAmB;IAEnB,MAAM,OAAO,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAC;IAClD,MAAM,QAAQ,GAA8B,EAAE,CAAC;IAC/C,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACvC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IACxD,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IAErD,IAAI,IAAI,GAAG,OAAO,CAAC;IACnB,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC;QAEpD,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;YACrC,mEAAmE;YACnE,mEAAmE;YACnE,iEAAiE;YACjE,mEAAmE;YACnE,iEAAiE;YACjE,iEAAiE;YACjE,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;YACzD,IACE,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC;gBAC7B,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;gBAC7B,CAAC,WAAW,CAAC,UAAU,CAAC,WAAW,IAAI,CAAC,GAAG,EAAE,CAAC,EAC9C,CAAC;gBACD,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;gBAC5D,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;oBACxC,MAAM,OAAO,GAAG,aAAa,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;oBACrE,6DAA6D;oBAC7D,6DAA6D;oBAC7D,MAAM,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC;oBAC5D,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;oBAC5C,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;oBAChE,SAAS;gBACX,CAAC;YACH,CAAC;YAED,2EAA2E;YAC3E,sEAAsE;YACtE,sEAAsE;YACtE,yEAAyE;YACzE,MAAM,gBAAgB,GAAG,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;YAC/E,IAAI,gBAAgB,EAAE,CAAC;gBACrB,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;gBACnE,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;oBACvC,MAAM,OAAO,GAAG,aAAa,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;oBACnD,MAAM,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC;oBAC5D,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;oBAC5C,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;oBAChE,SAAS;gBACX,CAAC;YACH,CAAC;YACD,QAAQ,CAAC,IAAI,CACX,GAAG,OAAO,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,SAAS,gCAAgC;gBACpE,0CAA0C,CAC3C,CAAC;YACF,SAAS;QACX,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QAClD,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACjD,oEAAoE;YACpE,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;YACvD,MAAM,oBAAoB,GAAG,aAAa,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YACpE,+DAA+D;YAC/D,oEAAoE;YACpE,gDAAgD;YAChD,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YACxF,IAAI,SAAS,EAAE,CAAC;gBACd,QAAQ,CAAC,IAAI,CACX,GAAG,OAAO,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,SAAS,MAAM,SAAS,4BAA4B;oBAC/E,OAAO,oBAAoB,0CAA0C;oBACrE,gDAAgD,CACjD,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,IAAI,CACX,GAAG,OAAO,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,SAAS,MAAM,SAAS,4BAA4B;oBAC/E,oBAAoB,oBAAoB,kDAAkD,CAC3F,CAAC;YACJ,CAAC;YACD,SAAS;QACX,CAAC;QAED,MAAM,OAAO,GAAG,aAAa,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;QAC7D,MAAM,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC;QAC5D,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAC5C,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;AAC/C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"run-build-script.d.ts","sourceRoot":"","sources":["../../src/lib/run-build-script.ts"],"names":[],"mappings":"AAkBA,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAOD,wBAAsB,cAAc,CAClC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GACjE,OAAO,CAAC,YAAY,CAAC,CAgBvB;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EAAE,EACjB,OAAO,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GACjE,OAAO,CAAC;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,EAAE,YAAY,EAAE,CAAA;CAAE,CAAC,CAIjE"}
1
+ {"version":3,"file":"run-build-script.d.ts","sourceRoot":"","sources":["../../src/lib/run-build-script.ts"],"names":[],"mappings":"AAkBA,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAOD,wBAAsB,cAAc,CAClC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GACjE,OAAO,CAAC,YAAY,CAAC,CAsBvB;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EAAE,EACjB,OAAO,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GACjE,OAAO,CAAC;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,EAAE,YAAY,EAAE,CAAA;CAAE,CAAC,CAIjE"}
@@ -31,6 +31,13 @@ export async function runBuildScript(script, options) {
31
31
  if (stderr)
32
32
  process.stderr.write(stderr);
33
33
  }
34
+ else if (stderr) {
35
+ // Successful scripts that wrote to stderr signalled a non-fatal warning
36
+ // (e.g. compile-snippets snippet-name collision). Surfacing these even
37
+ // in non-verbose mode means the next dev start doesn't blow up
38
+ // mysteriously when the warning's resolution lapses.
39
+ process.stderr.write(stderr);
40
+ }
34
41
  return { script, success: true };
35
42
  }
36
43
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"run-build-script.js","sourceRoot":"","sources":["../../src/lib/run-build-script.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAEjC,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AAUlC,qEAAqE;AACrE,iDAAiD;AACjD,uDAAuD;AACvD,MAAM,UAAU,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAEpC,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,MAAc,EACd,OAAkE;IAElE,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,gBAAgB,MAAM,EAAE,EAAE;YACnE,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,SAAS,EAAE,UAAU;SACtB,CAAC,CAAC;QACH,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,IAAI,MAAM;gBAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACzC,IAAI,MAAM;gBAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC3C,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACnC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,GAAG,KAA6C,CAAC;QACxD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC;IAC/E,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,OAAiB,EACjB,OAAkE;IAElE,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAClF,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IACnD,OAAO,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AACxE,CAAC"}
1
+ {"version":3,"file":"run-build-script.js","sourceRoot":"","sources":["../../src/lib/run-build-script.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAEjC,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AAUlC,qEAAqE;AACrE,iDAAiD;AACjD,uDAAuD;AACvD,MAAM,UAAU,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAEpC,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,MAAc,EACd,OAAkE;IAElE,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,gBAAgB,MAAM,EAAE,EAAE;YACnE,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,SAAS,EAAE,UAAU;SACtB,CAAC,CAAC;QACH,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,IAAI,MAAM;gBAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACzC,IAAI,MAAM;gBAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC3C,CAAC;aAAM,IAAI,MAAM,EAAE,CAAC;YAClB,wEAAwE;YACxE,uEAAuE;YACvE,+DAA+D;YAC/D,qDAAqD;YACrD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC/B,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACnC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,GAAG,KAA6C,CAAC;QACxD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC;IAC/E,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,OAAiB,EACjB,OAAkE;IAElE,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAClF,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IACnD,OAAO,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AACxE,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function warnOnRelativeMdxImports(projectDir: string): Promise<number>;
2
+ //# sourceMappingURL=warn-relative-imports.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"warn-relative-imports.d.ts","sourceRoot":"","sources":["../../src/lib/warn-relative-imports.ts"],"names":[],"mappings":"AAIA,wBAAsB,wBAAwB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA0BlF"}
@@ -0,0 +1,29 @@
1
+ import { glob } from 'glob';
2
+ import { readFile } from 'node:fs/promises';
3
+ import { detectRelativeMdxImports } from './relative-mdx-imports.js';
4
+ export async function warnOnRelativeMdxImports(projectDir) {
5
+ const files = await glob('**/*.mdx', {
6
+ cwd: projectDir,
7
+ ignore: ['**/node_modules/**', '**/.git/**'],
8
+ absolute: true,
9
+ });
10
+ let offending = 0;
11
+ for (const file of files) {
12
+ try {
13
+ const content = await readFile(file, 'utf-8');
14
+ if (detectRelativeMdxImports(content).length > 0)
15
+ offending++;
16
+ }
17
+ catch {
18
+ // unreadable file — skip
19
+ }
20
+ }
21
+ if (offending > 0) {
22
+ console.warn(`\n⚠ Found ${offending} MDX file(s) with parent-relative imports. ` +
23
+ `Run "jamdesk migrate" to auto-fix; "jamdesk validate" lists each one with the ` +
24
+ `specific manual action when migrate can't help. Pages with these imports will ` +
25
+ `fail to compile.\n`);
26
+ }
27
+ return offending;
28
+ }
29
+ //# sourceMappingURL=warn-relative-imports.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"warn-relative-imports.js","sourceRoot":"","sources":["../../src/lib/warn-relative-imports.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAErE,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,UAAkB;IAC/D,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE;QACnC,GAAG,EAAE,UAAU;QACf,MAAM,EAAE,CAAC,oBAAoB,EAAE,YAAY,CAAC;QAC5C,QAAQ,EAAE,IAAI;KACf,CAAC,CAAC;IAEH,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAC9C,IAAI,wBAAwB,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC;gBAAE,SAAS,EAAE,CAAC;QAChE,CAAC;QAAC,MAAM,CAAC;YACP,yBAAyB;QAC3B,CAAC;IACH,CAAC;IAED,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;QAClB,OAAO,CAAC,IAAI,CACV,aAAa,SAAS,6CAA6C;YACnE,gFAAgF;YAChF,gFAAgF;YAChF,oBAAoB,CACrB,CAAC;IACJ,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}