@kodycodes/cli 1.27.5 → 1.27.7

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/bin.js CHANGED
@@ -2,7 +2,7 @@
2
2
  import { createRequire as __createRequire } from 'node:module'; const require = __createRequire(import.meta.url);
3
3
  import {
4
4
  runCli
5
- } from "./chunk-SH4B6ZSM.js";
5
+ } from "./chunk-JOBPEQR6.js";
6
6
  import "./chunk-2XPH7L2P.js";
7
7
  import "./chunk-SLNAWWQK.js";
8
8
  import "./chunk-YDWTXEKQ.js";
@@ -51,6 +51,97 @@ var appLogMarker = "kody-dev-log";
51
51
  var devRequestIdHeader = "x-kody-dev-request";
52
52
  var devErrorHeader = "x-kody-dev-error";
53
53
 
54
+ // src/dev/dev-proxy-origin.ts
55
+ var devPublicUrlHeader = "x-kody-dev-public-url";
56
+ var forwardingHeaderNames = [
57
+ "forwarded",
58
+ "x-forwarded-for",
59
+ "x-forwarded-host",
60
+ "x-forwarded-proto",
61
+ "x-forwarded-port",
62
+ "x-forwarded-prefix",
63
+ "x-real-ip"
64
+ ];
65
+ function normalizeHostHeader(value) {
66
+ if (!value) return null;
67
+ const first = value.split(",")[0]?.trim().toLowerCase() ?? "";
68
+ if (!first) return null;
69
+ return first;
70
+ }
71
+ function defaultLoopbackHostAliases(trustedHost) {
72
+ const parsed = splitHostPort(trustedHost);
73
+ if (!parsed) return [];
74
+ const { hostname, portSuffix } = parsed;
75
+ if (!isLoopbackHostname(hostname)) return [];
76
+ const aliases = /* @__PURE__ */ new Set();
77
+ for (const name of ["127.0.0.1", "localhost", "[::1]"]) {
78
+ if (name === hostname) continue;
79
+ aliases.add(`${name}${portSuffix}`);
80
+ }
81
+ return [...aliases];
82
+ }
83
+ function isAllowedDevHost(input) {
84
+ const incoming = normalizeHostHeader(input.incomingHost);
85
+ if (!incoming) return false;
86
+ const allowed = /* @__PURE__ */ new Set([
87
+ normalizeHostHeader(input.trustedHost),
88
+ ...defaultLoopbackHostAliases(input.trustedHost).map(
89
+ (alias) => normalizeHostHeader(alias)
90
+ ),
91
+ ...(input.aliases ?? []).map((alias) => normalizeHostHeader(alias)).filter((alias) => Boolean(alias))
92
+ ]);
93
+ return allowed.has(incoming);
94
+ }
95
+ function buildTrustedDevPublicUrl(input) {
96
+ const url = new URL(input.restPath + input.search, input.hostedUrl);
97
+ return url.href;
98
+ }
99
+ function trustedDevHostFromHostedUrl(hostedUrl) {
100
+ const url = new URL(hostedUrl);
101
+ return url.host;
102
+ }
103
+ function buildDevProxyUpstreamHeaders(input) {
104
+ const headers = {
105
+ ...input.incoming
106
+ };
107
+ for (const name of forwardingHeaderNames) {
108
+ delete headers[name];
109
+ }
110
+ for (const key of Object.keys(headers)) {
111
+ const lower = key.toLowerCase();
112
+ if (lower.startsWith("x-kody-dev-") || lower === runSecretHeader) {
113
+ delete headers[key];
114
+ }
115
+ }
116
+ headers.host = input.trustedHost;
117
+ headers[devPublicUrlHeader] = input.publicUrl;
118
+ headers[runSecretHeader] = input.runSecret;
119
+ headers[devRequestIdHeader] = input.requestId;
120
+ return headers;
121
+ }
122
+ function isLoopbackHostname(hostname) {
123
+ const host = hostname.replace(/^\[|\]$/g, "").toLowerCase();
124
+ return host === "127.0.0.1" || host === "localhost" || host === "::1";
125
+ }
126
+ function splitHostPort(hostHeader) {
127
+ const normalized = normalizeHostHeader(hostHeader);
128
+ if (!normalized) return null;
129
+ if (normalized.startsWith("[")) {
130
+ const end = normalized.indexOf("]");
131
+ if (end === -1) return null;
132
+ const hostname = normalized.slice(0, end + 1);
133
+ const rest = normalized.slice(end + 1);
134
+ const portSuffix = rest.startsWith(":") ? rest : "";
135
+ return { hostname, portSuffix };
136
+ }
137
+ const colon = normalized.lastIndexOf(":");
138
+ if (colon === -1) return { hostname: normalized, portSuffix: "" };
139
+ return {
140
+ hostname: normalized.slice(0, colon),
141
+ portSuffix: normalized.slice(colon)
142
+ };
143
+ }
144
+
54
145
  // src/package-local-runtime-source.ts
55
146
  function createPackageLocalRuntimeModuleSource(input) {
56
147
  const ctxLiteral = JSON.stringify(input.packageContext);
@@ -385,6 +476,7 @@ import {
385
476
 
386
477
  const __kodyRunSecretHeader = ${JSON.stringify(runSecretHeader)};
387
478
  const __kodyRequestIdHeader = ${JSON.stringify(devRequestIdHeader)};
479
+ const __kodyPublicUrlHeader = ${JSON.stringify(devPublicUrlHeader)};
388
480
  const __kodyDevErrorHeader = ${JSON.stringify(devErrorHeader)};
389
481
  const __kodyLogMarker = ${JSON.stringify(appLogMarker)};
390
482
  const __kodyDevRequest = new AsyncLocalStorage();
@@ -463,16 +555,22 @@ export default {
463
555
  });
464
556
  },
465
557
  });
466
- const url = new URL(request.url);
558
+ // Public URL is set only by the Node proxy from the trusted listen
559
+ // origin (never from client Host). Rebuild request.url so CSRF checks
560
+ // comparing Origin to new URL(request.url).origin see the dev origin.
561
+ const publicUrl = request.headers.get(__kodyPublicUrlHeader);
562
+ const appUrl = publicUrl || request.url;
563
+ const url = new URL(appUrl);
467
564
  const tag = {
468
565
  id: request.headers.get(__kodyRequestIdHeader) ?? '-',
469
566
  method: request.method,
470
567
  path: url.pathname + url.search,
471
568
  };
472
- const headers = new Headers(request.headers);
473
- headers.delete(__kodyRunSecretHeader);
474
- headers.delete(__kodyRequestIdHeader);
475
- const appRequest = new Request(request, { headers });
569
+ const appRequest = new Request(appUrl, request);
570
+ appRequest.headers.delete(__kodyRunSecretHeader);
571
+ appRequest.headers.delete(__kodyRequestIdHeader);
572
+ appRequest.headers.delete(__kodyPublicUrlHeader);
573
+ appRequest.headers.set('host', url.host);
476
574
  return await __kodyDevRequest.run(tag, async () => {
477
575
  try {
478
576
  return await __kodyRunInLocalRuntime(async () => {
@@ -804,11 +902,14 @@ async function readBody(stream) {
804
902
 
805
903
  export {
806
904
  appLogMarker,
807
- devRequestIdHeader,
808
905
  devErrorHeader,
906
+ isAllowedDevHost,
907
+ buildTrustedDevPublicUrl,
908
+ trustedDevHostFromHostedUrl,
909
+ buildDevProxyUpstreamHeaders,
809
910
  createPackageLocalRuntimeModuleSource,
810
911
  createPackageAppEntrySource,
811
912
  runLocalPackageModule,
812
913
  buildLocalPackageContext
813
914
  };
814
- //# sourceMappingURL=chunk-IPQONA4Y.js.map
915
+ //# sourceMappingURL=chunk-7Y6B7ZKH.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/local-package-run.ts", "../src/dev/dev-protocol.ts", "../src/dev/dev-proxy-origin.ts", "../src/package-local-runtime-source.ts"],
4
+ "mappings": "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",
5
+ "names": ["response"]
6
+ }
@@ -1037,7 +1037,7 @@ ${url.href}
1037
1037
  apiUrl: typeof parsed.values["api-url"] === "string" ? parsed.values["api-url"] : void 0
1038
1038
  });
1039
1039
  if (target === "mock") {
1040
- const { ensureMockTarget } = await import("./mock-server-6BWDQQBE.js");
1040
+ const { ensureMockTarget } = await import("./mock-server-K7RN7H5Y.js");
1041
1041
  const mock = await ensureMockTarget({
1042
1042
  resetStorage: parsed.values["reset-storage"] === true,
1043
1043
  ...org ? { orgSlug: org } : {}
@@ -1160,7 +1160,7 @@ scopes: ${identity.token.scopes.join(", ") || "(none)"}
1160
1160
  let closeMock;
1161
1161
  try {
1162
1162
  if (target === "mock") {
1163
- const { ensureMockTarget } = await import("./mock-server-6BWDQQBE.js");
1163
+ const { ensureMockTarget } = await import("./mock-server-K7RN7H5Y.js");
1164
1164
  const mock = await ensureMockTarget({
1165
1165
  resetStorage: parsed.values["reset-storage"] === true
1166
1166
  });
@@ -1304,7 +1304,7 @@ scopes: ${identity.token.scopes.join(", ") || "(none)"}
1304
1304
  }
1305
1305
  try {
1306
1306
  if (target === "mock") {
1307
- const { ensureMockTarget } = await import("./mock-server-6BWDQQBE.js");
1307
+ const { ensureMockTarget } = await import("./mock-server-K7RN7H5Y.js");
1308
1308
  const mock = await ensureMockTarget({
1309
1309
  resetStorage: parsed.values["reset-storage"] === true,
1310
1310
  packageId: localPackageRun ? `local:${localPackageRun.kodyId}` : void 0,
@@ -1322,7 +1322,7 @@ scopes: ${identity.token.scopes.join(", ") || "(none)"}
1322
1322
  });
1323
1323
  }
1324
1324
  if (localPackageRun) {
1325
- const { buildLocalPackageContext, runLocalPackageModule } = await import("./local-package-run-MXKX5VST.js");
1325
+ const { buildLocalPackageContext, runLocalPackageModule } = await import("./local-package-run-EHCBREQ2.js");
1326
1326
  const result2 = await runLocalPackageModule({
1327
1327
  modulePath: localPackageRun.modulePath,
1328
1328
  params: args.params,
@@ -1439,7 +1439,7 @@ scopes: ${identity.token.scopes.join(", ") || "(none)"}
1439
1439
  runDevServe,
1440
1440
  runDevWebhook,
1441
1441
  tryAttachedDevFetch
1442
- } = await import("./dev-command-E5ZGSIWI.js");
1442
+ } = await import("./dev-command-REJBMSAK.js");
1443
1443
  const target = resolveTarget({
1444
1444
  command: "dev",
1445
1445
  flag: typeof parsed.values.target === "string" ? parsed.values.target : void 0
@@ -2084,4 +2084,4 @@ export {
2084
2084
  resolvePackagePublishTarget,
2085
2085
  shouldUseApiToken
2086
2086
  };
2087
- //# sourceMappingURL=chunk-SH4B6ZSM.js.map
2087
+ //# sourceMappingURL=chunk-JOBPEQR6.js.map
@@ -204,6 +204,10 @@ function closePackageSqlDbsForSession(sessionId) {
204
204
  openSqlDbs.delete(key);
205
205
  }
206
206
  }
207
+ function statementYieldsRows(stmt) {
208
+ if (typeof stmt.columns !== "function") return null;
209
+ return stmt.columns().length > 0;
210
+ }
207
211
  function packageStorageSql(state, packageId, query, bindings = [], env = process.env) {
208
212
  const db = openPackageSqlDb(state, packageId, env);
209
213
  const stmt = db.prepare(query);
@@ -216,18 +220,31 @@ function packageStorageSql(state, packageId, query, bindings = [], env = process
216
220
  if (value instanceof Uint8Array) return value;
217
221
  return String(value);
218
222
  });
219
- const trimmed = query.trimStart().toLowerCase();
220
- const isQuery = trimmed.startsWith("select") || trimmed.startsWith("with") || trimmed.startsWith("pragma") || trimmed.startsWith("explain");
221
- if (isQuery) {
222
- const rows = stmt.all(...params);
223
- return { rows };
223
+ const yields = statementYieldsRows(stmt);
224
+ if (yields === true) {
225
+ return { rows: plainSqlRows(stmt.all(...params)) };
224
226
  }
225
- const info = stmt.run(...params);
227
+ if (yields === false) {
228
+ const info = stmt.run(...params);
229
+ return {
230
+ rows: [],
231
+ changes: typeof info.changes === "number" ? info.changes : 0
232
+ };
233
+ }
234
+ const rows = plainSqlRows(stmt.all(...params));
235
+ if (rows.length > 0) return { rows };
236
+ const trimmed = query.trimStart().toLowerCase();
237
+ const isReadLike = trimmed.startsWith("select") || trimmed.startsWith("with") || trimmed.startsWith("pragma") || trimmed.startsWith("explain");
238
+ if (isReadLike) return { rows };
239
+ const changesRow = db.prepare("select changes() as c").get();
226
240
  return {
227
241
  rows: [],
228
- changes: typeof info.changes === "number" ? info.changes : 0
242
+ changes: typeof changesRow?.c === "number" ? changesRow.c : 0
229
243
  };
230
244
  }
245
+ function plainSqlRows(rows) {
246
+ return rows.map((row) => ({ ...row }));
247
+ }
231
248
 
232
249
  // src/mock/mock-server.ts
233
250
  var mockTokenPrefix = "kody_mock_";
@@ -743,4 +760,4 @@ export {
743
760
  ensureMockTarget,
744
761
  withMockServer
745
762
  };
746
- //# sourceMappingURL=chunk-SPEP3DUT.js.map
763
+ //# sourceMappingURL=chunk-RESLVNPE.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/mock/mock-server.ts", "../src/mock/mock-supported.ts", "../src/mock/mock-storage.ts"],
4
+ "mappings": "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",
5
+ "names": ["err"]
6
+ }
package/dist/cli.js CHANGED
@@ -9,7 +9,7 @@ import {
9
9
  resolvePackagePublishTarget,
10
10
  runCli,
11
11
  shouldUseApiToken
12
- } from "./chunk-SH4B6ZSM.js";
12
+ } from "./chunk-JOBPEQR6.js";
13
13
  import "./chunk-2XPH7L2P.js";
14
14
  import "./chunk-SLNAWWQK.js";
15
15
  import "./chunk-YDWTXEKQ.js";
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Trusted public origin for `kody dev` → workerd proxying.
3
+ *
4
+ * request.url must come from the CLI's listen origin (plus mount-stripped path),
5
+ * never from a client-supplied Host (DNS rebinding) or the internal workerd
6
+ * port. Forwarding headers are overwritten the same way.
7
+ */
8
+ import { type IncomingHttpHeaders } from 'node:http';
9
+ /** Proxy-only: absolute public URL for this request (never trust the client). */
10
+ export declare const devPublicUrlHeader = "x-kody-dev-public-url";
11
+ export declare function normalizeHostHeader(value: string | undefined): string | null;
12
+ /**
13
+ * Loopback Host aliases for the same port (browsers may send localhost while
14
+ * the proxy listens on 127.0.0.1, and vice versa).
15
+ */
16
+ export declare function defaultLoopbackHostAliases(trustedHost: string): Array<string>;
17
+ export declare function isAllowedDevHost(input: {
18
+ incomingHost: string | undefined;
19
+ trustedHost: string;
20
+ aliases?: ReadonlyArray<string>;
21
+ }): boolean;
22
+ export declare function buildTrustedDevPublicUrl(input: {
23
+ hostedUrl: string;
24
+ restPath: string;
25
+ search: string;
26
+ }): string;
27
+ export declare function trustedDevHostFromHostedUrl(hostedUrl: string): string;
28
+ /**
29
+ * Headers for the workerd hop: trusted Host + public URL, run secret, request
30
+ * id; strip client forwarding / spoofed kody-dev headers.
31
+ */
32
+ export declare function buildDevProxyUpstreamHeaders(input: {
33
+ incoming: IncomingHttpHeaders;
34
+ trustedHost: string;
35
+ publicUrl: string;
36
+ runSecret: string;
37
+ requestId: string;
38
+ }): Record<string, string | number | string[] | undefined>;
@@ -1,7 +1,7 @@
1
1
  import { createRequire as __createRequire } from 'node:module'; const require = __createRequire(import.meta.url);
2
2
  import {
3
3
  ensureMockTarget
4
- } from "./chunk-SPEP3DUT.js";
4
+ } from "./chunk-RESLVNPE.js";
5
5
  import {
6
6
  loadPackageManifest,
7
7
  resolveExportModulePath,
@@ -9,13 +9,16 @@ import {
9
9
  } from "./chunk-TUUFQYWP.js";
10
10
  import {
11
11
  appLogMarker,
12
+ buildDevProxyUpstreamHeaders,
12
13
  buildLocalPackageContext,
14
+ buildTrustedDevPublicUrl,
13
15
  createPackageAppEntrySource,
14
16
  createPackageLocalRuntimeModuleSource,
15
17
  devErrorHeader,
16
- devRequestIdHeader,
17
- runLocalPackageModule
18
- } from "./chunk-IPQONA4Y.js";
18
+ isAllowedDevHost,
19
+ runLocalPackageModule,
20
+ trustedDevHostFromHostedUrl
21
+ } from "./chunk-7Y6B7ZKH.js";
19
22
  import {
20
23
  forwardLocalGatewayFetchStream,
21
24
  installMockFetchShimModules,
@@ -40,7 +43,6 @@ import {
40
43
  parse,
41
44
  resolveLocalPackageGraph,
42
45
  runSecretEnvVar,
43
- runSecretHeader,
44
46
  writePackageModuleFiles
45
47
  } from "./chunk-ZL5FBDVT.js";
46
48
  import {
@@ -4639,8 +4641,26 @@ async function startPackageAppDev(options) {
4639
4641
  }
4640
4642
  }
4641
4643
  function forwardRequest(generation, req, res) {
4644
+ const trustedHost = trustedDevHostFromHostedUrl(hostedUrl);
4645
+ if (!isAllowedDevHost({
4646
+ incomingHost: req.headers.host,
4647
+ trustedHost,
4648
+ aliases: options.hostAliases
4649
+ })) {
4650
+ res.writeHead(400, { "content-type": "text/plain; charset=utf-8" });
4651
+ res.end(
4652
+ `Unrecognized Host ${JSON.stringify(req.headers.host ?? "")}. Open the URL kody dev printed (${hostedUrl}).
4653
+ `
4654
+ );
4655
+ return Promise.resolve();
4656
+ }
4642
4657
  const incomingUrl = new URL(req.url ?? "/", hostedUrl);
4643
4658
  const restPath = stripMount(incomingUrl.pathname, appBasePath);
4659
+ const publicUrl = buildTrustedDevPublicUrl({
4660
+ hostedUrl,
4661
+ restPath,
4662
+ search: incomingUrl.search
4663
+ });
4644
4664
  const forwardUrl = new URL(
4645
4665
  restPath + incomingUrl.search,
4646
4666
  `http://127.0.0.1:${generation.workerd.port}`
@@ -4650,12 +4670,13 @@ async function startPackageAppDev(options) {
4650
4670
  method: req.method ?? "GET",
4651
4671
  path: restPath + incomingUrl.search
4652
4672
  };
4653
- const headers = {
4654
- ...req.headers,
4655
- host: `127.0.0.1:${generation.workerd.port}`,
4656
- [runSecretHeader]: runSecret,
4657
- [devRequestIdHeader]: tag.id
4658
- };
4673
+ const headers = buildDevProxyUpstreamHeaders({
4674
+ incoming: req.headers,
4675
+ trustedHost,
4676
+ publicUrl,
4677
+ runSecret,
4678
+ requestId: tag.id
4679
+ });
4659
4680
  return new Promise((resolve9, reject) => {
4660
4681
  const upstream = httpRequest(
4661
4682
  forwardUrl,
@@ -5666,4 +5687,4 @@ export {
5666
5687
  chokidar/esm/index.js:
5667
5688
  (*! chokidar - MIT License (c) 2012 Paul Miller (paulmillr.com) *)
5668
5689
  */
5669
- //# sourceMappingURL=dev-command-E5ZGSIWI.js.map
5690
+ //# sourceMappingURL=dev-command-REJBMSAK.js.map