@shipsite.dev/cli 0.2.19 → 0.2.21

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.
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=validate-links.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-links.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/validate-links.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,236 @@
1
+ import { describe, it, expect, vi, beforeEach } from 'vitest';
2
+ vi.mock('fs', () => ({
3
+ existsSync: vi.fn(),
4
+ readFileSync: vi.fn(),
5
+ readdirSync: vi.fn(),
6
+ statSync: vi.fn(),
7
+ }));
8
+ import { existsSync, readFileSync, readdirSync, statSync } from 'fs';
9
+ import { validateLinks } from '../commands/validate-links.js';
10
+ const mockExistsSync = vi.mocked(existsSync);
11
+ const mockReadFileSync = vi.mocked(readFileSync);
12
+ const mockReaddirSync = vi.mocked(readdirSync);
13
+ const mockStatSync = vi.mocked(statSync);
14
+ // ─── helpers ──────────────────────────────────────────────
15
+ function run(config, setupFs) {
16
+ const errors = [];
17
+ const warnings = [];
18
+ // Default: contentDir does not exist (no MDX scanning)
19
+ mockExistsSync.mockReturnValue(false);
20
+ if (setupFs)
21
+ setupFs();
22
+ validateLinks(config, '/content', (m) => errors.push(m), (m) => warnings.push(m));
23
+ return { errors, warnings };
24
+ }
25
+ const basePages = [
26
+ { slug: '' },
27
+ { slug: 'features' },
28
+ { slug: 'pricing' },
29
+ { slug: 'blog' },
30
+ { slug: 'blog/getting-started' },
31
+ { slug: 'privacy' },
32
+ { slug: 'terms' },
33
+ ];
34
+ beforeEach(() => {
35
+ vi.resetAllMocks();
36
+ });
37
+ // ─── navigation links ─────────────────────────────────────
38
+ describe('navigation links', () => {
39
+ it('passes when all navigation hrefs match valid slugs', () => {
40
+ const { errors } = run({
41
+ pages: basePages,
42
+ navigation: {
43
+ items: [
44
+ { href: '/features' },
45
+ { href: '/pricing' },
46
+ { href: '/blog' },
47
+ ],
48
+ },
49
+ });
50
+ expect(errors).toHaveLength(0);
51
+ });
52
+ it('reports dead navigation link', () => {
53
+ const { errors } = run({
54
+ pages: basePages,
55
+ navigation: {
56
+ items: [{ href: '/nonexistent' }],
57
+ },
58
+ });
59
+ expect(errors).toHaveLength(1);
60
+ expect(errors[0]).toContain('/nonexistent');
61
+ expect(errors[0]).toContain('navigation');
62
+ });
63
+ it('skips external navigation links', () => {
64
+ const { errors } = run({
65
+ pages: basePages,
66
+ navigation: {
67
+ items: [
68
+ { href: 'https://example.com' },
69
+ { href: 'mailto:hi@example.com' },
70
+ { href: 'tel:+1234567890' },
71
+ { href: '#section' },
72
+ ],
73
+ },
74
+ });
75
+ expect(errors).toHaveLength(0);
76
+ });
77
+ it('reports dead CTA link', () => {
78
+ const { errors } = run({
79
+ pages: basePages,
80
+ navigation: {
81
+ items: [],
82
+ cta: { href: '/signup' },
83
+ },
84
+ });
85
+ expect(errors).toHaveLength(1);
86
+ expect(errors[0]).toContain('/signup');
87
+ expect(errors[0]).toContain('navigation CTA');
88
+ });
89
+ it('skips external CTA link', () => {
90
+ const { errors } = run({
91
+ pages: basePages,
92
+ navigation: {
93
+ items: [],
94
+ cta: { href: 'https://app.example.com/signup' },
95
+ },
96
+ });
97
+ expect(errors).toHaveLength(0);
98
+ });
99
+ });
100
+ // ─── footer links ─────────────────────────────────────────
101
+ describe('footer links', () => {
102
+ it('passes when all footer hrefs match valid slugs', () => {
103
+ const { errors } = run({
104
+ pages: basePages,
105
+ footer: {
106
+ columns: [
107
+ { links: [{ href: '/features' }, { href: '/pricing' }] },
108
+ { links: [{ href: '/privacy' }, { href: '/terms' }] },
109
+ ],
110
+ },
111
+ });
112
+ expect(errors).toHaveLength(0);
113
+ });
114
+ it('reports dead footer link', () => {
115
+ const { errors } = run({
116
+ pages: basePages,
117
+ footer: {
118
+ columns: [{ links: [{ href: '/does-not-exist' }] }],
119
+ },
120
+ });
121
+ expect(errors).toHaveLength(1);
122
+ expect(errors[0]).toContain('/does-not-exist');
123
+ expect(errors[0]).toContain('footer');
124
+ });
125
+ it('skips external footer links', () => {
126
+ const { errors } = run({
127
+ pages: basePages,
128
+ footer: {
129
+ columns: [
130
+ {
131
+ links: [
132
+ { href: 'https://twitter.com/example' },
133
+ { href: 'mailto:info@example.com' },
134
+ ],
135
+ },
136
+ ],
137
+ },
138
+ });
139
+ expect(errors).toHaveLength(0);
140
+ });
141
+ });
142
+ // ─── MDX content links ───────────────────────────────────
143
+ function setupMdxFs(files) {
144
+ return () => {
145
+ mockExistsSync.mockReturnValue(true);
146
+ const entries = Object.keys(files).map((f) => f.split('/').pop());
147
+ mockReaddirSync.mockReturnValue(entries);
148
+ mockStatSync.mockReturnValue({ isDirectory: () => false });
149
+ mockReadFileSync.mockImplementation((p) => {
150
+ const name = String(p).split('/').pop();
151
+ return files[name] ?? '';
152
+ });
153
+ };
154
+ }
155
+ describe('MDX content links', () => {
156
+ it('reports dead markdown link in MDX', () => {
157
+ const { errors } = run({ pages: basePages }, setupMdxFs({ 'en.mdx': 'Check out [this page](/nonexistent) for more.' }));
158
+ expect(errors).toHaveLength(1);
159
+ expect(errors[0]).toContain('/nonexistent');
160
+ expect(errors[0]).toContain('content/');
161
+ });
162
+ it('passes valid markdown link in MDX', () => {
163
+ const { errors } = run({ pages: basePages }, setupMdxFs({ 'en.mdx': 'Check out [features](/features) page.' }));
164
+ expect(errors).toHaveLength(0);
165
+ });
166
+ it('reports dead JSX href in MDX', () => {
167
+ const { errors } = run({ pages: basePages }, setupMdxFs({ 'en.mdx': '<Button href="/missing-page">Click</Button>' }));
168
+ expect(errors).toHaveLength(1);
169
+ expect(errors[0]).toContain('/missing-page');
170
+ });
171
+ it('passes valid JSX href in MDX', () => {
172
+ const { errors } = run({ pages: basePages }, setupMdxFs({ 'en.mdx': '<Button href="/pricing">Buy</Button>' }));
173
+ expect(errors).toHaveLength(0);
174
+ });
175
+ it('skips external links in MDX', () => {
176
+ const { errors } = run({ pages: basePages }, setupMdxFs({
177
+ 'en.mdx': [
178
+ '[Google](https://google.com)',
179
+ '[Email](mailto:a@b.com)',
180
+ '<a href="tel:+123">Call</a>',
181
+ '[Section](#faq)',
182
+ ].join('\n'),
183
+ }));
184
+ expect(errors).toHaveLength(0);
185
+ });
186
+ it('finds multiple dead links in one file', () => {
187
+ const { errors } = run({ pages: basePages }, setupMdxFs({
188
+ 'en.mdx': [
189
+ '[A](/aaa)',
190
+ '[B](/bbb)',
191
+ '<Link href="/ccc">C</Link>',
192
+ ].join('\n'),
193
+ }));
194
+ expect(errors).toHaveLength(3);
195
+ });
196
+ it('skips scanning when contentDir does not exist', () => {
197
+ const { errors } = run({
198
+ pages: basePages,
199
+ navigation: { items: [{ href: '/features' }] },
200
+ });
201
+ expect(errors).toHaveLength(0);
202
+ });
203
+ });
204
+ // ─── edge cases ───────────────────────────────────────────
205
+ describe('edge cases', () => {
206
+ it('handles root slug (empty string → "/")', () => {
207
+ const { errors } = run({
208
+ pages: [{ slug: '' }],
209
+ navigation: { items: [{ href: '/' }] },
210
+ });
211
+ expect(errors).toHaveLength(0);
212
+ });
213
+ it('normalizes trailing slash', () => {
214
+ const { errors } = run({
215
+ pages: basePages,
216
+ navigation: { items: [{ href: '/features/' }] },
217
+ });
218
+ expect(errors).toHaveLength(0);
219
+ });
220
+ it('handles nested slug like blog/getting-started', () => {
221
+ const { errors } = run({
222
+ pages: basePages,
223
+ navigation: { items: [{ href: '/blog/getting-started' }] },
224
+ });
225
+ expect(errors).toHaveLength(0);
226
+ });
227
+ it('handles missing navigation and footer gracefully', () => {
228
+ const { errors } = run({ pages: basePages });
229
+ expect(errors).toHaveLength(0);
230
+ });
231
+ it('handles missing pages gracefully', () => {
232
+ const { errors } = run({});
233
+ expect(errors).toHaveLength(0);
234
+ });
235
+ });
236
+ //# sourceMappingURL=validate-links.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-links.test.js","sourceRoot":"","sources":["../../src/__tests__/validate-links.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ export declare function validateLinks(config: {
2
+ pages?: Array<{
3
+ slug: string;
4
+ }>;
5
+ navigation?: {
6
+ items?: Array<{
7
+ href: string;
8
+ }>;
9
+ cta?: {
10
+ href: string;
11
+ };
12
+ };
13
+ footer?: {
14
+ columns?: Array<{
15
+ links?: Array<{
16
+ href: string;
17
+ }>;
18
+ }>;
19
+ };
20
+ }, contentDir: string, fail: (msg: string) => void, _warn: (msg: string) => void): void;
21
+ //# sourceMappingURL=validate-links.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-links.d.ts","sourceRoot":"","sources":["../../src/commands/validate-links.ts"],"names":[],"mappings":"AAqBA,wBAAgB,aAAa,CAC3B,MAAM,EAAE;IACN,KAAK,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAChC,UAAU,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAAC,GAAG,CAAC,EAAE;YAAE,IAAI,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC;IACzE,MAAM,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,KAAK,CAAC;YAAE,KAAK,CAAC,EAAE,KAAK,CAAC;gBAAE,IAAI,EAAE,MAAM,CAAA;aAAE,CAAC,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC;CACnE,EACD,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,EAC3B,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAC3B,IAAI,CAuDN"}
@@ -0,0 +1,71 @@
1
+ import { join } from 'path';
2
+ import { existsSync, readFileSync, readdirSync, statSync } from 'fs';
3
+ function isExternal(href) {
4
+ return /^(https?:\/\/|mailto:|tel:|#)/.test(href);
5
+ }
6
+ function collectMdxFiles(dir) {
7
+ const files = [];
8
+ for (const entry of readdirSync(dir)) {
9
+ if (entry.startsWith('.') || entry.startsWith('_'))
10
+ continue;
11
+ const full = join(dir, entry);
12
+ if (statSync(full).isDirectory()) {
13
+ files.push(...collectMdxFiles(full));
14
+ }
15
+ else if (entry.endsWith('.mdx')) {
16
+ files.push(full);
17
+ }
18
+ }
19
+ return files;
20
+ }
21
+ export function validateLinks(config, contentDir, fail, _warn) {
22
+ // Step 1 — Build slug set
23
+ const slugs = new Set();
24
+ for (const page of config.pages || []) {
25
+ slugs.add('/' + page.slug);
26
+ }
27
+ function checkHref(href, context) {
28
+ if (isExternal(href))
29
+ return;
30
+ if (!href.startsWith('/'))
31
+ return; // relative or anchor-only — skip
32
+ // Strip trailing slash for comparison (but keep "/" as-is)
33
+ const normalized = href.length > 1 ? href.replace(/\/$/, '') : href;
34
+ if (!slugs.has(normalized)) {
35
+ fail(`Dead link "${href}" in ${context}`);
36
+ }
37
+ }
38
+ // Step 2 — Navigation
39
+ for (const item of config.navigation?.items || []) {
40
+ checkHref(item.href, 'navigation');
41
+ }
42
+ if (config.navigation?.cta) {
43
+ checkHref(config.navigation.cta.href, 'navigation CTA');
44
+ }
45
+ // Step 3 — Footer
46
+ for (const column of config.footer?.columns || []) {
47
+ for (const link of column.links || []) {
48
+ checkHref(link.href, 'footer');
49
+ }
50
+ }
51
+ // Step 4 — MDX content
52
+ if (!existsSync(contentDir))
53
+ return;
54
+ const mdxFiles = collectMdxFiles(contentDir);
55
+ const markdownLinkRe = /\[(?:[^\]]*)\]\(([^)]+)\)/g;
56
+ const jsxHrefRe = /href=["']([^"']+)["']/g;
57
+ for (const filePath of mdxFiles) {
58
+ const source = readFileSync(filePath, 'utf-8');
59
+ const rel = filePath.replace(contentDir + '/', '');
60
+ let match;
61
+ markdownLinkRe.lastIndex = 0;
62
+ while ((match = markdownLinkRe.exec(source)) !== null) {
63
+ checkHref(match[1], `content/${rel}`);
64
+ }
65
+ jsxHrefRe.lastIndex = 0;
66
+ while ((match = jsxHrefRe.exec(source)) !== null) {
67
+ checkHref(match[1], `content/${rel}`);
68
+ }
69
+ }
70
+ }
71
+ //# sourceMappingURL=validate-links.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-links.js","sourceRoot":"","sources":["../../src/commands/validate-links.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"AA8IA,wBAAsB,QAAQ,kBAsS7B"}
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"AA+IA,wBAAsB,QAAQ,kBAyS7B"}
@@ -1,5 +1,6 @@
1
1
  import { join, relative } from 'path';
2
2
  import { existsSync, readFileSync, readdirSync, statSync } from 'fs';
3
+ import { validateLinks } from './validate-links.js';
3
4
  const errors = [];
4
5
  const warnings = [];
5
6
  function fail(message) {
@@ -295,6 +296,8 @@ export async function validate() {
295
296
  }
296
297
  }
297
298
  walkContentDirs(contentDir, '');
299
+ // Link validation
300
+ validateLinks(config, contentDir, fail, warn);
298
301
  // Output results
299
302
  if (warnings.length) {
300
303
  console.warn(' Warnings:');
@@ -1 +1 @@
1
- {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shipsite.dev/cli",
3
- "version": "0.2.19",
3
+ "version": "0.2.21",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/shipsite/shipsite",
@@ -16,7 +16,9 @@
16
16
  "scripts": {
17
17
  "build": "tsc",
18
18
  "dev": "tsc --watch",
19
- "clean": "rm -rf dist"
19
+ "clean": "rm -rf dist",
20
+ "test": "vitest run",
21
+ "test:watch": "vitest"
20
22
  },
21
23
  "dependencies": {
22
24
  "@shipsite.dev/core": "*",
@@ -24,6 +26,7 @@
24
26
  },
25
27
  "devDependencies": {
26
28
  "typescript": "^5.8.3",
27
- "@types/node": "^20"
29
+ "@types/node": "^20",
30
+ "vitest": "^4.0.18"
28
31
  }
29
32
  }