jamdesk 1.1.161 → 1.1.162
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.
- package/dist/__tests__/unit/deploy-templates.test.js +41 -3
- package/dist/__tests__/unit/deploy-templates.test.js.map +1 -1
- package/dist/commands/deploy/templates.d.ts.map +1 -1
- package/dist/commands/deploy/templates.js +66 -37
- package/dist/commands/deploy/templates.js.map +1 -1
- package/package.json +1 -1
- package/vendored/workspace-package-lock.json +12 -12
|
@@ -52,11 +52,21 @@ describe('generateWorkerCode', () => {
|
|
|
52
52
|
const code = generateWorkerCode(testConfig);
|
|
53
53
|
expect(code).toContain('cacheEverything: true');
|
|
54
54
|
});
|
|
55
|
-
it('does not cache redirects or server errors', () => {
|
|
55
|
+
it('does not cache redirects, client errors, or server errors', () => {
|
|
56
56
|
const code = generateWorkerCode(testConfig);
|
|
57
57
|
expect(code).toContain('"300-399": 0');
|
|
58
|
+
expect(code).toContain('"400-499": 0');
|
|
58
59
|
expect(code).toContain('"500-599": 0');
|
|
59
60
|
});
|
|
61
|
+
it('tries the origin first for /_next/ assets and falls back to Jamdesk on 404', () => {
|
|
62
|
+
const code = generateWorkerCode(testConfig);
|
|
63
|
+
// The customer's root site may itself be a Next.js app serving /_next/ assets
|
|
64
|
+
// (e.g. mailfully.com). Blanket-proxying /_next/ to Jamdesk breaks that site's
|
|
65
|
+
// CSS/JS, so /_next/ must NOT be in the unconditional proxy list.
|
|
66
|
+
expect(code).not.toContain('"/_next/",');
|
|
67
|
+
expect(code).toContain('pathname.startsWith("/_next/")');
|
|
68
|
+
expect(code).toContain('originResponse.status !== 404');
|
|
69
|
+
});
|
|
60
70
|
it('passes redirects through to browser', () => {
|
|
61
71
|
const code = generateWorkerCode(testConfig);
|
|
62
72
|
expect(code).toContain('redirect: "manual"');
|
|
@@ -72,13 +82,41 @@ describe('generateWranglerConfig', () => {
|
|
|
72
82
|
const config = generateWranglerConfig(testConfig);
|
|
73
83
|
expect(config).toContain('name = "docs-proxy-example-com"');
|
|
74
84
|
});
|
|
75
|
-
it('uses
|
|
85
|
+
it('uses catch-all host routes, not per-asset routes', () => {
|
|
76
86
|
const config = generateWranglerConfig(testConfig);
|
|
77
87
|
expect(config).toContain('pattern = "example.com/*"');
|
|
78
|
-
//
|
|
88
|
+
// Path filtering is done inside the worker, not via routes.
|
|
79
89
|
expect(config).not.toContain('/_next/*');
|
|
80
90
|
expect(config).not.toContain('/_jd/*');
|
|
81
91
|
});
|
|
92
|
+
it('routes both the apex and www for a root domain', () => {
|
|
93
|
+
// Cloudflare patterns are host-exact, so "example.com/*" alone leaves
|
|
94
|
+
// www.example.com/docs falling through to the customer origin.
|
|
95
|
+
const config = generateWranglerConfig(testConfig);
|
|
96
|
+
expect(config).toContain('pattern = "example.com/*"');
|
|
97
|
+
expect(config).toContain('pattern = "www.example.com/*"');
|
|
98
|
+
expect(config).toContain('zone_name = "example.com"');
|
|
99
|
+
});
|
|
100
|
+
it('routes both hosts when the target is the www apex', () => {
|
|
101
|
+
const config = generateWranglerConfig({
|
|
102
|
+
...testConfig,
|
|
103
|
+
domain: 'www.example.com',
|
|
104
|
+
zoneName: 'example.com',
|
|
105
|
+
});
|
|
106
|
+
expect(config).toContain('pattern = "example.com/*"');
|
|
107
|
+
expect(config).toContain('pattern = "www.example.com/*"');
|
|
108
|
+
});
|
|
109
|
+
it('keeps a single route for a non-root subdomain target', () => {
|
|
110
|
+
const config = generateWranglerConfig({
|
|
111
|
+
...testConfig,
|
|
112
|
+
domain: 'docs.example.com',
|
|
113
|
+
zoneName: 'example.com',
|
|
114
|
+
});
|
|
115
|
+
expect(config).toContain('pattern = "docs.example.com/*"');
|
|
116
|
+
// A www variant of a subdomain makes no sense.
|
|
117
|
+
expect(config).not.toContain('www.docs.example.com');
|
|
118
|
+
expect(config).not.toContain('pattern = "www.example.com/*"');
|
|
119
|
+
});
|
|
82
120
|
it('catch-all route is independent of pathPrefix', () => {
|
|
83
121
|
const config = generateWranglerConfig({ ...testConfig, pathPrefix: '/reference' });
|
|
84
122
|
expect(config).toContain('pattern = "example.com/*"');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy-templates.test.js","sourceRoot":"","sources":["../../../src/__tests__/unit/deploy-templates.test.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"deploy-templates.test.js","sourceRoot":"","sources":["../../../src/__tests__/unit/deploy-templates.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../../src/commands/deploy/templates.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../../src/commands/deploy/templates.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAyFnE;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAyCvE;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAqBpE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAK1C;AAsCD;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAexD"}
|
|
@@ -18,10 +18,9 @@ export function generateWorkerCode(config) {
|
|
|
18
18
|
|
|
19
19
|
const JAMDESK_HOST = "${jamdeskHost}";
|
|
20
20
|
|
|
21
|
-
// Paths that
|
|
21
|
+
// Paths that are always proxied to Jamdesk
|
|
22
22
|
const PROXY_PATHS = [
|
|
23
23
|
"${pathPrefix}", // Documentation pages
|
|
24
|
-
"/_next/", // Next.js static assets (JS, CSS)
|
|
25
24
|
"/_jd/", // All Jamdesk assets (images, fonts, branding, analytics)
|
|
26
25
|
];
|
|
27
26
|
|
|
@@ -35,46 +34,60 @@ function shouldProxy(pathname) {
|
|
|
35
34
|
});
|
|
36
35
|
}
|
|
37
36
|
|
|
37
|
+
function proxyToJamdesk(request, url) {
|
|
38
|
+
// Rewrite the request to Jamdesk
|
|
39
|
+
const proxyUrl = new URL(request.url);
|
|
40
|
+
proxyUrl.hostname = JAMDESK_HOST;
|
|
41
|
+
|
|
42
|
+
// Clone headers and add proxy headers
|
|
43
|
+
const headers = new Headers(request.headers);
|
|
44
|
+
headers.set("Host", JAMDESK_HOST);
|
|
45
|
+
headers.set("X-Forwarded-Host", url.hostname);
|
|
46
|
+
headers.set("X-Forwarded-Proto", "https");
|
|
47
|
+
// Custom header for domain verification (Vercel strips standard forwarding headers)
|
|
48
|
+
headers.set("X-Jamdesk-Forwarded-Host", url.hostname);
|
|
49
|
+
|
|
50
|
+
// Don't follow redirects — let the browser handle them so the URL updates.
|
|
51
|
+
// Without this, redirects happen internally and the browser URL doesn't change,
|
|
52
|
+
// which causes the sidebar to mis-highlight the active page.
|
|
53
|
+
const proxyRequest = new Request(proxyUrl, {
|
|
54
|
+
method: request.method,
|
|
55
|
+
headers,
|
|
56
|
+
body: request.body,
|
|
57
|
+
redirect: "manual",
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
// Cache all content types at Cloudflare edge (CF doesn't cache HTML by default).
|
|
61
|
+
// Cache duration is controlled by upstream Cache-Control headers.
|
|
62
|
+
// Never cache redirects or errors — they must always hit origin.
|
|
63
|
+
return fetch(proxyRequest, {
|
|
64
|
+
cf: {
|
|
65
|
+
cacheEverything: true,
|
|
66
|
+
cacheTtlByStatus: { "300-399": 0, "400-499": 0, "500-599": 0 },
|
|
67
|
+
},
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
|
|
38
71
|
export default {
|
|
39
72
|
async fetch(request) {
|
|
40
73
|
const url = new URL(request.url);
|
|
41
74
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
return fetch(request);
|
|
75
|
+
if (shouldProxy(url.pathname)) {
|
|
76
|
+
return proxyToJamdesk(request, url);
|
|
45
77
|
}
|
|
46
78
|
|
|
47
|
-
//
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
headers.set("X-Jamdesk-Forwarded-Host", url.hostname);
|
|
58
|
-
|
|
59
|
-
// Don't follow redirects — let the browser handle them so the URL updates.
|
|
60
|
-
// Without this, redirects happen internally and the browser URL doesn't change,
|
|
61
|
-
// which causes the sidebar to mis-highlight the active page.
|
|
62
|
-
const proxyRequest = new Request(proxyUrl, {
|
|
63
|
-
method: request.method,
|
|
64
|
-
headers,
|
|
65
|
-
body: request.body,
|
|
66
|
-
redirect: "manual",
|
|
67
|
-
});
|
|
79
|
+
// /_next/ is ambiguous: the customer's root site may itself be a Next.js app
|
|
80
|
+
// serving its own /_next/ assets. Try the origin first and only fall back to
|
|
81
|
+
// Jamdesk on 404 — hashed asset filenames never collide between the two apps.
|
|
82
|
+
if (url.pathname.startsWith("/_next/")) {
|
|
83
|
+
const originResponse = await fetch(request);
|
|
84
|
+
if (originResponse.status !== 404) {
|
|
85
|
+
return originResponse;
|
|
86
|
+
}
|
|
87
|
+
return proxyToJamdesk(request, url);
|
|
88
|
+
}
|
|
68
89
|
|
|
69
|
-
|
|
70
|
-
// Cache duration is controlled by upstream Cache-Control headers.
|
|
71
|
-
// Never cache redirects or errors — they must always hit origin.
|
|
72
|
-
return fetch(proxyRequest, {
|
|
73
|
-
cf: {
|
|
74
|
-
cacheEverything: true,
|
|
75
|
-
cacheTtlByStatus: { "300-399": 0, "500-599": 0 },
|
|
76
|
-
},
|
|
77
|
-
});
|
|
90
|
+
return fetch(request);
|
|
78
91
|
},
|
|
79
92
|
};
|
|
80
93
|
`;
|
|
@@ -82,6 +95,20 @@ export default {
|
|
|
82
95
|
export function generateWranglerConfig(config) {
|
|
83
96
|
const { domain, zoneName } = config;
|
|
84
97
|
const workerName = `docs-proxy-${domain.replace(/\./g, '-')}`;
|
|
98
|
+
// Cloudflare route patterns are host-exact: "example.com/*" does NOT match
|
|
99
|
+
// "www.example.com". When the docs target is the zone root — the apex or its
|
|
100
|
+
// www — emit BOTH host patterns so /docs works whichever host visitors land
|
|
101
|
+
// on. Otherwise a customer whose marketing site answers on both apex and www
|
|
102
|
+
// gets a broken /docs on the host we didn't route (the www.mailfully.com
|
|
103
|
+
// case). A non-root subdomain target (docs.example.com) keeps its single
|
|
104
|
+
// host. Extra routes are harmless: the worker only intercepts docs paths and
|
|
105
|
+
// a route for a host with no DNS record simply never fires.
|
|
106
|
+
const patterns = domain === zoneName || domain === `www.${zoneName}`
|
|
107
|
+
? [zoneName, `www.${zoneName}`]
|
|
108
|
+
: [domain];
|
|
109
|
+
const routeLines = patterns
|
|
110
|
+
.map((p) => ` { pattern = "${p}/*", zone_name = "${zoneName}" },`)
|
|
111
|
+
.join('\n');
|
|
85
112
|
return `# Jamdesk Documentation Proxy Worker
|
|
86
113
|
# Generated by: jamdesk deploy-proxy cloudflare
|
|
87
114
|
#
|
|
@@ -92,9 +119,11 @@ main = "index.js"
|
|
|
92
119
|
compatibility_date = "2024-01-01"
|
|
93
120
|
|
|
94
121
|
# Route configuration
|
|
95
|
-
#
|
|
122
|
+
# These routes just decide which hostnames the worker runs on; the worker's
|
|
123
|
+
# shouldProxy() handles path filtering internally. A root domain gets both the
|
|
124
|
+
# apex and www so /docs works on either.
|
|
96
125
|
routes = [
|
|
97
|
-
|
|
126
|
+
${routeLines}
|
|
98
127
|
]
|
|
99
128
|
|
|
100
129
|
# Optional: Uncomment to add environment variables
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../../src/commands/deploy/templates.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,MAAM,UAAU,kBAAkB,CAAC,MAAwB;IACzD,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;IACpC,MAAM,WAAW,GAAG,GAAG,IAAI,cAAc,CAAC;IAE1C,OAAO;;;;aAII,UAAU,mCAAmC,WAAW;;;;;;wBAM7C,WAAW;;;;KAI9B,UAAU
|
|
1
|
+
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../../src/commands/deploy/templates.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.
|
|
3
|
+
"version": "1.1.162",
|
|
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",
|
|
@@ -251,9 +251,9 @@
|
|
|
251
251
|
}
|
|
252
252
|
},
|
|
253
253
|
"node_modules/@fortawesome/react-fontawesome": {
|
|
254
|
-
"version": "3.
|
|
255
|
-
"resolved": "https://registry.npmjs.org/@fortawesome/react-fontawesome/-/react-fontawesome-3.
|
|
256
|
-
"integrity": "sha512-
|
|
254
|
+
"version": "3.4.0",
|
|
255
|
+
"resolved": "https://registry.npmjs.org/@fortawesome/react-fontawesome/-/react-fontawesome-3.4.0.tgz",
|
|
256
|
+
"integrity": "sha512-EgY5CXzzm6WGnUB40j9qNajYmoJHC8TUV/rvpcmHUoPZmQyRlh8WuRaxaerjMq61NZAz0vS+MOoJaPbZWRDibw==",
|
|
257
257
|
"license": "MIT",
|
|
258
258
|
"engines": {
|
|
259
259
|
"node": ">=20"
|
|
@@ -1932,9 +1932,9 @@
|
|
|
1932
1932
|
}
|
|
1933
1933
|
},
|
|
1934
1934
|
"node_modules/@types/node": {
|
|
1935
|
-
"version": "25.9.
|
|
1936
|
-
"resolved": "https://registry.npmjs.org/@types/node/-/node-25.9.
|
|
1937
|
-
"integrity": "sha512-
|
|
1935
|
+
"version": "25.9.5",
|
|
1936
|
+
"resolved": "https://registry.npmjs.org/@types/node/-/node-25.9.5.tgz",
|
|
1937
|
+
"integrity": "sha512-OScDchr2fwuUmWdf4kZ9h7PcJiYDVInhJizG/biAq3cAvqwYktuy/TYGGdZNMtNTFUP7rnb0NU4TUdm82kt4Rg==",
|
|
1938
1938
|
"license": "MIT",
|
|
1939
1939
|
"dependencies": {
|
|
1940
1940
|
"undici-types": ">=7.24.0 <7.24.7"
|
|
@@ -2939,9 +2939,9 @@
|
|
|
2939
2939
|
"license": "MIT"
|
|
2940
2940
|
},
|
|
2941
2941
|
"node_modules/electron-to-chromium": {
|
|
2942
|
-
"version": "1.5.
|
|
2943
|
-
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.
|
|
2944
|
-
"integrity": "sha512-
|
|
2942
|
+
"version": "1.5.389",
|
|
2943
|
+
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.389.tgz",
|
|
2944
|
+
"integrity": "sha512-cEto7aeOqBfU1D+c5py5pE+ooscKE75JifxLBdFUZsqAxRS6y7kebtxAZvICszSl05gPjYHDTjY+lXpyGvpJbg==",
|
|
2945
2945
|
"license": "ISC"
|
|
2946
2946
|
},
|
|
2947
2947
|
"node_modules/enhanced-resolve": {
|
|
@@ -4094,9 +4094,9 @@
|
|
|
4094
4094
|
}
|
|
4095
4095
|
},
|
|
4096
4096
|
"node_modules/lru-cache": {
|
|
4097
|
-
"version": "11.5.
|
|
4098
|
-
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.
|
|
4099
|
-
"integrity": "sha512-
|
|
4097
|
+
"version": "11.5.2",
|
|
4098
|
+
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.2.tgz",
|
|
4099
|
+
"integrity": "sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==",
|
|
4100
4100
|
"license": "BlueOak-1.0.0",
|
|
4101
4101
|
"engines": {
|
|
4102
4102
|
"node": "20 || >=22"
|