Skip to content

Commit fb819f9

Browse files
authored
feat: add experimental_readRawConfig() (#7573)
* add experimental_readRawConfig and tests * move printBindings out of /config/index.ts * fixups * changeset * actually export
1 parent 5124b5d commit fb819f9

File tree

13 files changed

+573
-507
lines changed

13 files changed

+573
-507
lines changed

.changeset/blue-laws-bathe.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
---
2+
"wrangler": patch
3+
---
4+
5+
feat: add experimental_readRawConfig()
6+
7+
Adds a Wrangler API to find and read a config file

packages/wrangler/docs/how-to/add-a-binding.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
- `CfWorkerInit` in: `packages/wrangler/src/deployment-bundle/worker.ts` [ref](https://github.com/cloudflare/workers-sdk/blob/ce7db9d9cb4f5bcd5a326b86dde051cb54b999fb/packages/wrangler/src/deployment-bundle/worker.ts#L79C1-L85C2)
88
- `WorkerMetadataBinding` in: `packages/wrangler/src/deployment-bundle/create-worker-upload-form.ts` [ref-1](https://github.com/cloudflare/workers-sdk/blob/ce7db9d9cb4f5bcd5a326b86dde051cb54b999fb/packages/wrangler/src/deployment-bundle/create-worker-upload-form.ts#L65) [ref-2](https://github.com/cloudflare/workers-sdk/blob/ce7db9d9cb4f5bcd5a326b86dde051cb54b999fb/packages/wrangler/src/deployment-bundle/create-worker-upload-form.ts#L219-L225)
99
1. Add type to DevEnv `Binding` union in: `packages/wrangler/src/api/startDevWorker/types.ts` [ref](https://github.com/cloudflare/workers-sdk/blob/ce7db9d9cb4f5bcd5a326b86dde051cb54b999fb/packages/wrangler/src/api/startDevWorker/types.ts#L246)
10-
1. Add user-friendly output for `printBindings` in: `packages/wrangler/src/config/index.ts` [ref](https://github.com/cloudflare/workers-sdk/blob/ce7db9d9cb4f5bcd5a326b86dde051cb54b999fb/packages/wrangler/src/config/index.ts#L270-L280)
10+
1. Add user-friendly output for `printBindings` in: `packages/wrangler/src/utils/print-bindings.ts` [ref](https://github.com/cloudflare/workers-sdk/blob/ce7db9d9cb4f5bcd5a326b86dde051cb54b999fb/packages/wrangler/src/utils/print-bindings.ts)
1111
1. Add mapping functions to:
1212
- `createWorkerUploadForm` in: `packages/wrangler/src/deployment-bundle/create-worker-upload-form.ts` [ref](https://github.com/cloudflare/workers-sdk/blob/ce7db9d9cb4f5bcd5a326b86dde051cb54b999fb/packages/wrangler/src/deployment-bundle/create-worker-upload-form.ts#L219-L225)
1313
- `convertCfWorkerInitBindingstoBindings` in: `packages/wrangler/src/api/startDevWorker/utils.ts` [ref](https://github.com/cloudflare/workers-sdk/blob/ce7db9d9cb4f5bcd5a326b86dde051cb54b999fb/packages/wrangler/src/api/startDevWorker/utils.ts#L118-L123)

packages/wrangler/src/__tests__/configuration.test.ts

Lines changed: 53 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1+
import * as fs from "fs";
12
import path from "node:path";
2-
import { readConfig } from "../config";
3+
import { experimental_readRawConfig, readConfig } from "../config";
34
import { normalizeAndValidateConfig } from "../config/validation";
45
import { run } from "../experimental-flags";
56
import { normalizeString } from "./helpers/normalize";
@@ -6037,6 +6038,57 @@ describe("normalizeAndValidateConfig()", () => {
60376038
});
60386039
});
60396040

6041+
describe("experimental_readRawConfig()", () => {
6042+
describe.each(["json", "jsonc", "toml"])(
6043+
`with %s config files`,
6044+
(configType) => {
6045+
runInTempDir();
6046+
it(`should find a ${configType} config file given a specific path`, () => {
6047+
fs.mkdirSync("../folder", { recursive: true });
6048+
writeWranglerConfig({}, `../folder/config.${configType}`);
6049+
6050+
const result = experimental_readRawConfig({
6051+
config: `../folder/config.${configType}`,
6052+
});
6053+
expect(result.rawConfig).toEqual({
6054+
compatibility_date: "2022-01-12",
6055+
name: "test-name",
6056+
});
6057+
});
6058+
6059+
it("should find a config file given a specific script", () => {
6060+
fs.mkdirSync("./path/to", { recursive: true });
6061+
writeWranglerConfig(
6062+
{ name: "config-one" },
6063+
`./path/wrangler.${configType}`
6064+
);
6065+
6066+
fs.mkdirSync("../folder", { recursive: true });
6067+
writeWranglerConfig(
6068+
{ name: "config-two" },
6069+
`../folder/wrangler.${configType}`
6070+
);
6071+
6072+
let result = experimental_readRawConfig({
6073+
script: "./path/to/index.js",
6074+
});
6075+
expect(result.rawConfig).toEqual({
6076+
compatibility_date: "2022-01-12",
6077+
name: "config-one",
6078+
});
6079+
6080+
result = experimental_readRawConfig({
6081+
script: "../folder/index.js",
6082+
});
6083+
expect(result.rawConfig).toEqual({
6084+
compatibility_date: "2022-01-12",
6085+
name: "config-two",
6086+
});
6087+
});
6088+
}
6089+
);
6090+
});
6091+
60406092
function normalizePath(text: string): string {
60416093
return text
60426094
.replace("project\\wrangler.toml", "project/wrangler.toml")

packages/wrangler/src/api/startDevWorker/ConfigController.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import {
1010
isLegacyEnv,
1111
} from "../..";
1212
import { getAssetsOptions, validateAssetsArgsAndConfig } from "../../assets";
13-
import { printBindings, readConfig } from "../../config";
13+
import { readConfig } from "../../config";
1414
import { getEntry } from "../../deployment-bundle/entry";
1515
import {
1616
getBindings,
@@ -24,6 +24,7 @@ import { UserError } from "../../errors";
2424
import { logger } from "../../logger";
2525
import { requireApiToken, requireAuth } from "../../user";
2626
import { memoizeGetPort } from "../../utils/memoizeGetPort";
27+
import { printBindings } from "../../utils/print-bindings";
2728
import { getZoneIdForPreview } from "../../zones";
2829
import { Controller } from "./BaseController";
2930
import { castErrorCause } from "./events";

packages/wrangler/src/cli.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,3 +58,5 @@ const generateASSETSBinding: (
5858
// eslint-disable-next-line @typescript-eslint/no-var-requires
5959
require("./miniflare-cli/assets").default;
6060
export { generateASSETSBinding as unstable_generateASSETSBinding };
61+
62+
export { experimental_readRawConfig } from "./config";

packages/wrangler/src/config/config-helpers.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ export function resolveWranglerConfigPath({
1717
}
1818

1919
const leafPath = script !== undefined ? path.dirname(script) : process.cwd();
20-
2120
return findWranglerConfig(leafPath);
2221
}
2322

0 commit comments

Comments
 (0)