create-cloudflare 0.0.0-6b859a45 → 0.0.0-70a54e97

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/cli.js CHANGED
@@ -52612,7 +52612,9 @@ var require_typescript2 = __commonJS({
52612
52612
  // src/cli.ts
52613
52613
  var cli_exports = {};
52614
52614
  __export(cli_exports, {
52615
- main: () => main
52615
+ C3_DEFAULTS: () => C3_DEFAULTS,
52616
+ main: () => main,
52617
+ parseArgs: () => parseArgs
52616
52618
  });
52617
52619
  module.exports = __toCommonJS(cli_exports);
52618
52620
  var import_haikunator = __toESM(require_dist_node());
@@ -53153,8 +53155,6 @@ var space = (n = 1) => {
53153
53155
  return hidden("\u200A".repeat(n));
53154
53156
  };
53155
53157
  var logRaw = (msg) => {
53156
- if (process.env.VITEST)
53157
- return;
53158
53158
  process.stdout.write(`${msg}
53159
53159
  `);
53160
53160
  };
@@ -54347,174 +54347,165 @@ var logUpdateStderr = createLogUpdate(import_node_process6.default.stderr);
54347
54347
  var grayBar = gray(shapes.bar);
54348
54348
  var blCorner = gray(shapes.corners.bl);
54349
54349
  var leftT = gray(shapes.leftT);
54350
- var textInput = async (opts) => {
54351
- const { renderSubmitted, question, defaultValue, validate, acceptDefault } = opts;
54352
- const helpText = opts.helpText || ``;
54353
- const format3 = opts.format || ((val) => val);
54354
- const prompt = new oD({
54355
- defaultValue,
54356
- validate,
54357
- render() {
54358
- let body = "";
54359
- switch (this.state) {
54360
- case "initial":
54361
- body += `${blCorner} ${bold(question)} ${dim(helpText)}
54362
- `;
54363
- body += `${space(2)}${gray(format3(defaultValue))}
54364
- `;
54365
- break;
54366
- case "active":
54367
- body += `${blCorner} ${bold(question)} ${dim(helpText)}
54368
- `;
54369
- body += `${space(2)}${format3(this.value || dim(defaultValue))}
54370
- `;
54371
- break;
54372
- case "submit":
54373
- body += `${leftT} ${question}
54374
- `;
54375
- body += `${grayBar} ${renderSubmitted(
54376
- format3(this.value)
54377
- )}
54378
- ${grayBar}`;
54379
- break;
54380
- case "error":
54381
- body += `${leftT} ${status.error} ${dim(this.error)}
54382
- `;
54383
- body += `${grayBar}
54384
- `;
54385
- body += `${blCorner} ${question} ${dim(helpText)}
54386
- `;
54387
- body += `${space(2)}${format3(this.value)}
54388
- `;
54389
- break;
54390
- default:
54391
- break;
54392
- }
54393
- return body;
54394
- }
54395
- });
54396
- let value;
54397
- if (acceptDefault) {
54398
- logRaw(`${leftT} ${question}`);
54399
- logRaw(`${grayBar} ${renderSubmitted(defaultValue)}
54400
- ${grayBar}`);
54401
- value = defaultValue;
54402
- validate?.(value);
54403
- } else {
54404
- value = await prompt.prompt();
54405
- if (eD(value)) {
54406
- cancel("Operation cancelled.");
54407
- process.exit(0);
54408
- }
54409
- }
54350
+ var processArgument = async (args, name, promptConfig) => {
54351
+ let value = args[name];
54352
+ const renderSubmitted = getRenderers(promptConfig).submit;
54353
+ if (value !== void 0) {
54354
+ promptConfig.validate?.(value);
54355
+ const lines = renderSubmitted({ value });
54356
+ logRaw(lines.join("\n"));
54357
+ return value;
54358
+ }
54359
+ value = await inputPrompt(promptConfig);
54410
54360
  return value;
54411
54361
  };
54412
- var selectInput = async (opts) => {
54413
- const { question, options, renderSubmitted, defaultValue, acceptDefault } = opts;
54414
- const helpText = opts.helpText || ``;
54415
- const prompt = new ED({
54416
- options,
54417
- initialValue: defaultValue ?? options[0].value,
54418
- render() {
54419
- const renderOption = (opt, i) => {
54420
- const { label } = opt;
54421
- const active = i === this.cursor;
54422
- const text = active ? blue.underline(label) : dim(label);
54423
- const indicator = active ? blue(shapes.radioActive) : dim(shapes.radioInactive);
54424
- return `${space(2)}${indicator} ${text}`;
54425
- };
54426
- let body = ``;
54427
- switch (this.state) {
54428
- case "submit":
54429
- body += `${leftT} ${question}
54430
- `;
54431
- body += `${grayBar} ${renderSubmitted(options[this.cursor])}`;
54432
- body += `
54433
- ${grayBar}`;
54434
- break;
54435
- default:
54436
- body += `${blCorner} ${bold(question)} ${dim(helpText)}
54437
- `;
54438
- body += `${options.map(renderOption).join(`
54439
- `)}
54440
- `;
54441
- break;
54362
+ var inputPrompt = async (promptConfig) => {
54363
+ const renderers = getRenderers(promptConfig);
54364
+ let prompt;
54365
+ const dispatchRender = (props) => {
54366
+ const renderedLines = renderers[props.state](props);
54367
+ return renderedLines.join("\n");
54368
+ };
54369
+ if (promptConfig.type === "select") {
54370
+ prompt = new ED({
54371
+ ...promptConfig,
54372
+ options: promptConfig.options,
54373
+ initialValue: String(promptConfig.defaultValue),
54374
+ render() {
54375
+ return dispatchRender(this);
54442
54376
  }
54443
- return body;
54444
- }
54445
- });
54446
- let value;
54447
- if (acceptDefault) {
54448
- logRaw(`${leftT} ${question}`);
54449
- logRaw(
54450
- `${grayBar} ${renderSubmitted({
54451
- label: defaultValue,
54452
- value: defaultValue
54453
- })}`
54454
- );
54455
- logRaw(`${grayBar}`);
54456
- value = defaultValue;
54377
+ });
54378
+ } else if (promptConfig.type === "confirm") {
54379
+ prompt = new sD({
54380
+ ...promptConfig,
54381
+ initialValue: Boolean(promptConfig.defaultValue),
54382
+ active: promptConfig.activeText || "",
54383
+ inactive: promptConfig.inactiveText || "",
54384
+ render() {
54385
+ return dispatchRender(this);
54386
+ }
54387
+ });
54457
54388
  } else {
54458
- value = await prompt.prompt();
54459
- if (eD(value)) {
54460
- cancel("Operation cancelled.");
54461
- process.exit(0);
54462
- }
54389
+ prompt = new oD({
54390
+ ...promptConfig,
54391
+ defaultValue: String(promptConfig.defaultValue),
54392
+ render() {
54393
+ return dispatchRender(this);
54394
+ }
54395
+ });
54463
54396
  }
54464
- return value;
54397
+ const input = await prompt.prompt();
54398
+ if (eD(input)) {
54399
+ cancel("Operation cancelled.");
54400
+ process.exit(0);
54401
+ }
54402
+ return input;
54403
+ };
54404
+ var renderSubmit = (config14, value) => {
54405
+ const { question, label } = config14;
54406
+ const content = config14.type === "confirm" ? `${grayBar} ${brandColor(value)} ${dim(label)}` : `${grayBar} ${brandColor(label)} ${dim(value)}`;
54407
+ return [`${leftT} ${question}`, content, `${grayBar}`];
54465
54408
  };
54466
- var confirmInput = async (opts) => {
54409
+ var handleCancel = () => {
54410
+ cancel("Operation cancelled.");
54411
+ process.exit(0);
54412
+ };
54413
+ var getRenderers = (config14) => {
54414
+ switch (config14.type) {
54415
+ case "select":
54416
+ return getSelectRenderers(config14);
54417
+ case "confirm":
54418
+ return getConfirmRenderers(config14);
54419
+ case "text":
54420
+ return getTextRenderers(config14);
54421
+ }
54422
+ };
54423
+ var getTextRenderers = (config14) => {
54467
54424
  const {
54468
- activeText,
54469
- inactiveText,
54425
+ defaultValue,
54470
54426
  question,
54471
- renderSubmitted,
54472
- defaultValue = true,
54473
- acceptDefault
54474
- } = opts;
54475
- const helpText = opts.helpText || `(y/n)`;
54427
+ helpText: _helpText,
54428
+ format: _format
54429
+ } = config14;
54430
+ const helpText = _helpText ?? "";
54431
+ const format3 = _format ?? ((val) => String(val));
54432
+ return {
54433
+ initial: () => [
54434
+ `${blCorner} ${bold(question)} ${dim(helpText)}`,
54435
+ `${space(2)}${gray(format3(defaultValue))}`,
54436
+ ``
54437
+ // extra line for readability
54438
+ ],
54439
+ active: ({ value }) => [
54440
+ `${blCorner} ${bold(question)} ${dim(helpText)}`,
54441
+ `${space(2)}${format3(value || dim(defaultValue))}`,
54442
+ ``
54443
+ // extra line for readability
54444
+ ],
54445
+ error: ({ value, error }) => [
54446
+ `${leftT} ${status.error} ${dim(error)}`,
54447
+ `${grayBar}`,
54448
+ `${blCorner} ${question} ${dim(helpText)}`,
54449
+ `${space(2)}${format3(value)}`,
54450
+ ``
54451
+ // extra line for readability
54452
+ ],
54453
+ submit: ({ value }) => renderSubmit(config14, format3(value)),
54454
+ cancel: handleCancel
54455
+ };
54456
+ };
54457
+ var getSelectRenderers = (config14) => {
54458
+ const { options, question, helpText: _helpText } = config14;
54459
+ const helpText = _helpText ?? "";
54460
+ const defaultRenderer = ({ cursor }) => {
54461
+ const renderOption = (opt, i) => {
54462
+ const { label: optionLabel } = opt;
54463
+ const active = i === cursor;
54464
+ const text = active ? blue.underline(optionLabel) : dim(optionLabel);
54465
+ const indicator = active ? blue(shapes.radioActive) : dim(shapes.radioInactive);
54466
+ return `${space(2)}${indicator} ${text}`;
54467
+ };
54468
+ return [
54469
+ `${blCorner} ${bold(question)} ${dim(helpText)}`,
54470
+ `${options.map(renderOption).join(`
54471
+ `)}`,
54472
+ ``
54473
+ // extra line for readability
54474
+ ];
54475
+ };
54476
+ return {
54477
+ initial: defaultRenderer,
54478
+ active: defaultRenderer,
54479
+ confirm: defaultRenderer,
54480
+ error: defaultRenderer,
54481
+ submit: ({ value }) => renderSubmit(
54482
+ config14,
54483
+ options.find((o2) => o2.value === value)?.label
54484
+ ),
54485
+ cancel: handleCancel
54486
+ };
54487
+ };
54488
+ var getConfirmRenderers = (config14) => {
54489
+ const { activeText, inactiveText, question, helpText: _helpText } = config14;
54490
+ const helpText = _helpText ?? "";
54476
54491
  const active = activeText || "Yes";
54477
54492
  const inactive = inactiveText || "No";
54478
- const prompt = new sD({
54479
- active,
54480
- inactive,
54481
- initialValue: defaultValue,
54482
- render() {
54483
- const yesColor = this.value ? blue : dim;
54484
- const noColor = this.value ? dim : blue;
54485
- let body = ``;
54486
- switch (this.state) {
54487
- case "submit":
54488
- body += `${leftT} ${question}
54489
- `;
54490
- body += `${grayBar} ${renderSubmitted(this.value)}`;
54491
- body += `
54492
- ${grayBar}`;
54493
- break;
54494
- default:
54495
- body += `${blCorner} ${bold(question)} ${dim(helpText)}
54496
- `;
54497
- body += `${space(2)}${yesColor(active)} / ${noColor(inactive)}
54498
- `;
54499
- break;
54500
- }
54501
- return body;
54502
- }
54503
- });
54504
- let value;
54505
- if (acceptDefault) {
54506
- logRaw(`${leftT} ${question}`);
54507
- logRaw(`${grayBar} ${renderSubmitted(defaultValue)}`);
54508
- logRaw(`${grayBar}`);
54509
- value = defaultValue;
54510
- } else {
54511
- value = Boolean(await prompt.prompt());
54512
- if (eD(value)) {
54513
- cancel("Operation cancelled.");
54514
- process.exit(0);
54515
- }
54516
- }
54517
- return value;
54493
+ const defaultRenderer = ({ value }) => {
54494
+ const yesColor = value ? blue : dim;
54495
+ const noColor = value ? dim : blue;
54496
+ return [
54497
+ `${blCorner} ${bold(question)} ${dim(helpText)}`,
54498
+ `${space(2)}${yesColor(active)} / ${noColor(inactive)}`
54499
+ ];
54500
+ };
54501
+ return {
54502
+ initial: defaultRenderer,
54503
+ active: defaultRenderer,
54504
+ confirm: defaultRenderer,
54505
+ error: defaultRenderer,
54506
+ submit: ({ value }) => renderSubmit(config14, value ? "yes" : "no"),
54507
+ cancel: handleCancel
54508
+ };
54518
54509
  };
54519
54510
  var spinner = () => {
54520
54511
  const spinnerFrames = ["\u2524", "\u2518", "\u2534", "\u2514", "\u251C", "\u250C", "\u252C", "\u2510"];
@@ -59419,7 +59410,7 @@ var Yargs = YargsFactory(esm_default);
59419
59410
  var yargs_default = Yargs;
59420
59411
 
59421
59412
  // package.json
59422
- var version = "0.0.0-6b859a45";
59413
+ var version = "0.0.0-70a54e97";
59423
59414
 
59424
59415
  // src/common.ts
59425
59416
  var import_fs6 = require("fs");
@@ -59480,15 +59471,14 @@ var runCommand = async (command2, opts = {}) => {
59480
59471
  }
59481
59472
  return printAsyncStatus({
59482
59473
  useSpinner: opts.useSpinner ?? opts.silent,
59483
- startText: opts.startText || command2.join(" "),
59474
+ startText: opts.startText || command2.join(" ").trim(),
59484
59475
  doneText: opts.doneText,
59485
59476
  promise() {
59486
59477
  const [executable, ...args] = command2;
59487
- const squelch = opts.silent || process.env.VITEST;
59488
59478
  const cmd = (0, import_cross_spawn.spawn)(executable, [...args], {
59489
59479
  // TODO: ideally inherit stderr, but npm install uses this for warnings
59490
59480
  // stdio: [ioMode, ioMode, "inherit"],
59491
- stdio: squelch ? "pipe" : "inherit",
59481
+ stdio: opts.silent ? "pipe" : "inherit",
59492
59482
  env: {
59493
59483
  ...process.env,
59494
59484
  ...opts.env
@@ -59496,7 +59486,7 @@ var runCommand = async (command2, opts = {}) => {
59496
59486
  cwd: opts.cwd
59497
59487
  });
59498
59488
  let output = ``;
59499
- if (opts?.captureOutput ?? squelch) {
59489
+ if (opts.captureOutput ?? opts.silent) {
59500
59490
  cmd.stdout?.on("data", (data) => {
59501
59491
  output += data;
59502
59492
  });
@@ -59521,6 +59511,9 @@ var runCommand = async (command2, opts = {}) => {
59521
59511
  }
59522
59512
  }
59523
59513
  });
59514
+ cmd.on("error", (code) => {
59515
+ reject(code);
59516
+ });
59524
59517
  });
59525
59518
  }
59526
59519
  });
@@ -59631,10 +59624,14 @@ var installWrangler = async () => {
59631
59624
  };
59632
59625
  var isLoggedIn = async () => {
59633
59626
  const { npx: npx6 } = detectPackageManager();
59634
- const output = await runCommand(`${npx6} wrangler whoami`, {
59635
- silent: true
59636
- });
59637
- return !/not authenticated/.test(output);
59627
+ try {
59628
+ const output = await runCommand(`${npx6} wrangler whoami`, {
59629
+ silent: true
59630
+ });
59631
+ return /You are logged in/.test(output);
59632
+ } catch (error) {
59633
+ return false;
59634
+ }
59638
59635
  };
59639
59636
  var wranglerLogin = async () => {
59640
59637
  const { npx: npx6 } = detectPackageManager();
@@ -59779,14 +59776,12 @@ var setupProjectDirectory = (args) => {
59779
59776
  };
59780
59777
  var offerToDeploy = async (ctx) => {
59781
59778
  startSection(`Deploy with Cloudflare`, `Step 3 of 3`);
59782
- ctx.args.deploy = await confirmInput({
59779
+ const label = `deploy via \`${npm} run ${ctx.framework?.config.deployCommand ?? "deploy"}\``;
59780
+ ctx.args.deploy = await processArgument(ctx.args, "deploy", {
59781
+ type: "confirm",
59783
59782
  question: "Do you want to deploy your application?",
59784
- renderSubmitted: (value) => `${brandColor(value ? `yes` : `no`)} ${dim(
59785
- `deploying via \`${npm} run ${ctx.framework?.config.deployCommand ?? "deploy"}\``
59786
- )}`,
59787
- defaultValue: ctx.args.deploy ?? (ctx.args.wranglerDefaults ? false : true),
59788
- // if --wrangler-defaults, default to false, otherwise default to true
59789
- acceptDefault: ctx.args.wranglerDefaults
59783
+ label,
59784
+ defaultValue: C3_DEFAULTS.deploy
59790
59785
  });
59791
59786
  if (!ctx.args.deploy)
59792
59787
  return;
@@ -59840,14 +59835,12 @@ var chooseAccount = async (ctx) => {
59840
59835
  label: name,
59841
59836
  value: id
59842
59837
  }));
59843
- accountId = await selectInput({
59838
+ accountId = await inputPrompt({
59839
+ type: "select",
59844
59840
  question: "Which account do you want to use?",
59845
59841
  options: accountOptions,
59846
- renderSubmitted: (option) => {
59847
- return `${brandColor("account")} ${dim(option.label)}`;
59848
- },
59849
- defaultValue: accountOptions[0].value,
59850
- acceptDefault: ctx.args.wranglerDefaults
59842
+ label: "account",
59843
+ defaultValue: accountOptions[0].value
59851
59844
  });
59852
59845
  }
59853
59846
  const accountName = Object.keys(accounts).find(
@@ -59857,6 +59850,7 @@ var chooseAccount = async (ctx) => {
59857
59850
  };
59858
59851
  var printSummary = async (ctx) => {
59859
59852
  const nextSteps = [
59853
+ [`Navigate to the new directory`, `cd ${ctx.project.name}`],
59860
59854
  [
59861
59855
  `Run the development server`,
59862
59856
  `${npm} run ${ctx.framework?.config.devCommand ?? "start"}`
@@ -59919,11 +59913,11 @@ var offerGit = async (ctx) => {
59919
59913
  const insideGitRepo = await isInsideGitRepo(ctx.project.path);
59920
59914
  if (insideGitRepo)
59921
59915
  return;
59922
- ctx.args.git ??= await confirmInput({
59916
+ ctx.args.git = await processArgument(ctx.args, "git", {
59917
+ type: "confirm",
59923
59918
  question: "Do you want to use git for version control?",
59924
- renderSubmitted: (value) => `${brandColor("git")} ${dim(value ? `yes` : `no`)}`,
59925
- defaultValue: true,
59926
- acceptDefault: ctx.args.wranglerDefaults
59919
+ label: "git",
59920
+ defaultValue: C3_DEFAULTS.git
59927
59921
  });
59928
59922
  if (ctx.args.git) {
59929
59923
  await printAsyncStatus({
@@ -59983,6 +59977,24 @@ async function initializeGit(cwd) {
59983
59977
  await runCommand(`git init`, { useSpinner: false, silent: true, cwd });
59984
59978
  }
59985
59979
  }
59980
+ async function getProductionBranch(cwd) {
59981
+ try {
59982
+ const productionBranch = await runCommand(
59983
+ // "git branch --show-current", // git@^2.22
59984
+ "git rev-parse --abbrev-ref HEAD",
59985
+ // git@^1.6.3
59986
+ {
59987
+ silent: true,
59988
+ cwd,
59989
+ useSpinner: false,
59990
+ captureOutput: true
59991
+ }
59992
+ );
59993
+ return productionBranch.trim();
59994
+ } catch (err) {
59995
+ }
59996
+ return "main";
59997
+ }
59986
59998
 
59987
59999
  // src/pages.ts
59988
60000
  var import_path8 = require("path");
@@ -60191,25 +60203,19 @@ var docusaurus_default = config3;
60191
60203
  var { npm: npm4, dlx: dlx4 } = detectPackageManager();
60192
60204
  var generate4 = async (ctx) => {
60193
60205
  const defaultTemplate = "https://github.com/gatsbyjs/gatsby-starter-blog";
60194
- const useTemplate = await confirmInput({
60206
+ const useTemplate = await inputPrompt({
60207
+ type: "confirm",
60195
60208
  question: "Would you like to use a template?",
60196
- renderSubmitted: (value) => {
60197
- const status2 = value ? "yes" : "no";
60198
- return `${brandColor(`template`)} ${status2}`;
60199
- },
60200
- defaultValue: true,
60201
- acceptDefault: false
60209
+ label: "template",
60210
+ defaultValue: true
60202
60211
  });
60203
60212
  let templateUrl = "";
60204
60213
  if (useTemplate) {
60205
- templateUrl = await textInput({
60214
+ templateUrl = await inputPrompt({
60215
+ type: "text",
60206
60216
  question: `Please specify the url of the template you'd like to use`,
60207
- renderSubmitted: (value) => {
60208
- const result = `Using template \`${value}\``;
60209
- return `${brandColor("template")} ${dim(result)}`;
60210
- },
60211
- defaultValue: defaultTemplate,
60212
- acceptDefault: false
60217
+ label: "template",
60218
+ defaultValue: defaultTemplate
60213
60219
  });
60214
60220
  }
60215
60221
  const version2 = getFrameworkVersion(ctx);
@@ -60502,7 +60508,7 @@ var config11 = {
60502
60508
  displayName: "Solid",
60503
60509
  packageScripts: {
60504
60510
  "pages:dev": `wrangler pages dev ${compatDateFlag()} --proxy 3000 -- ${npm9} run dev`,
60505
- "pages:deploy": `${npm9} run build build && wrangler pages deploy ./dist/public`
60511
+ "pages:deploy": `${npm9} run build && wrangler pages deploy ./dist/public`
60506
60512
  }
60507
60513
  };
60508
60514
  var solid_default = config11;
@@ -60613,7 +60619,7 @@ var versionMap_default = {
60613
60619
  astro: "3.1.5",
60614
60620
  docusaurus: "2.4.1",
60615
60621
  gatsby: "5.10.0",
60616
- hono: "0.2.0",
60622
+ hono: "0.2.6",
60617
60623
  next: "13.4.2",
60618
60624
  nuxt: "3.4.2",
60619
60625
  qwik: "1.1.x",
@@ -60718,14 +60724,12 @@ var getFrameworkSelection = async (args) => {
60718
60724
  value: key
60719
60725
  })
60720
60726
  );
60721
- const framework = await selectInput({
60727
+ const framework = await processArgument(args, "framework", {
60728
+ type: "select",
60729
+ label: "framework",
60722
60730
  question: "Which development framework do you want to use?",
60723
60731
  options: frameworkOptions,
60724
- renderSubmitted: (option) => {
60725
- return `${brandColor("framework")} ${dim(option.label)}`;
60726
- },
60727
- defaultValue: args.framework ?? "svelte",
60728
- acceptDefault: Boolean(args.framework)
60732
+ defaultValue: C3_DEFAULTS.framework
60729
60733
  });
60730
60734
  framework || crash("A framework must be selected to continue.");
60731
60735
  if (!supportedFramework(framework)) {
@@ -60759,7 +60763,8 @@ var createProject = async (ctx) => {
60759
60763
  const CLOUDFLARE_ACCOUNT_ID = ctx.account.id;
60760
60764
  const compatFlags = ctx.framework?.config.compatibilityFlags?.join(" ");
60761
60765
  const compatFlagsArg = compatFlags ? `--compatibility-flags ${compatFlags}` : "";
60762
- const cmd = `${npx5} wrangler pages project create ${ctx.project.name} --production-branch main ${compatFlagsArg}`;
60766
+ const productionBranch = await getProductionBranch(ctx.project.path);
60767
+ const cmd = `${npx5} wrangler pages project create ${ctx.project.name} --production-branch ${productionBranch} ${compatFlagsArg}`;
60763
60768
  try {
60764
60769
  await retry(
60765
60770
  CREATE_PROJECT_RETRIES,
@@ -60768,7 +60773,7 @@ var createProject = async (ctx) => {
60768
60773
  cwd: ctx.project.path,
60769
60774
  env: { CLOUDFLARE_ACCOUNT_ID },
60770
60775
  startText: "Creating Pages project",
60771
- doneText: `${brandColor("created")} ${dim(`via \`${cmd}\``)}`
60776
+ doneText: `${brandColor("created")} ${dim(`via \`${cmd.trim()}\``)}`
60772
60777
  })
60773
60778
  );
60774
60779
  } catch (error) {
@@ -60802,14 +60807,12 @@ var runWorkersGenerator = async (args) => {
60802
60807
  await printSummary(ctx);
60803
60808
  };
60804
60809
  async function getTemplate(ctx) {
60805
- if (ctx.args.ts === void 0) {
60806
- ctx.args.ts = await confirmInput({
60807
- question: "Do you want to use TypeScript?",
60808
- renderSubmitted: (value) => `${brandColor("typescript")} ${dim(`${value ? "yes" : "no"}`)}`,
60809
- defaultValue: true,
60810
- acceptDefault: ctx.args.wranglerDefaults
60811
- });
60812
- }
60810
+ ctx.args.ts = await processArgument(ctx.args, "ts", {
60811
+ type: "confirm",
60812
+ question: "Do you want to use TypeScript?",
60813
+ label: "typescript",
60814
+ defaultValue: C3_DEFAULTS.ts
60815
+ });
60813
60816
  const preexisting = ctx.args.type === "pre-existing";
60814
60817
  const template = preexisting ? "hello-world" : ctx.args.type;
60815
60818
  const path3 = (0, import_path9.resolve)(
@@ -60833,12 +60836,16 @@ async function copyExistingWorkerFiles(ctx) {
60833
60836
  if (preexisting) {
60834
60837
  await chooseAccount(ctx);
60835
60838
  if (ctx.args.existingScript === void 0) {
60836
- ctx.args.existingScript = await textInput({
60837
- question: "Please specify the name of the existing worker in this account?",
60838
- renderSubmitted: (value) => `${brandColor("worker")} ${dim(`"${value}"`)}`,
60839
- defaultValue: ctx.project.name,
60840
- acceptDefault: ctx.args.wranglerDefaults
60841
- });
60839
+ ctx.args.existingScript = await processArgument(
60840
+ ctx.args,
60841
+ "existingScript",
60842
+ {
60843
+ type: "text",
60844
+ question: "Please specify the name of the existing worker in this account?",
60845
+ label: "worker",
60846
+ defaultValue: ctx.project.name
60847
+ }
60848
+ );
60842
60849
  }
60843
60850
  const tempdir = await (0, import_promises3.mkdtemp)(
60844
60851
  (0, import_path9.join)((0, import_os.tmpdir)(), "c3-wrangler-init--from-dash-")
@@ -60894,19 +60901,55 @@ async function updateFiles(ctx) {
60894
60901
  }
60895
60902
 
60896
60903
  // src/cli.ts
60904
+ var C3_DEFAULTS = {
60905
+ projectName: new import_haikunator.default().haikunate({ tokenHex: true }),
60906
+ type: "hello-world",
60907
+ framework: "angular",
60908
+ deploy: true,
60909
+ git: true,
60910
+ open: true,
60911
+ ts: true
60912
+ };
60913
+ var WRANGLER_DEFAULTS = {
60914
+ ...C3_DEFAULTS,
60915
+ deploy: false
60916
+ };
60897
60917
  var main = async (argv) => {
60898
60918
  const args = await parseArgs(argv);
60899
60919
  printBanner();
60920
+ const projectName = await processArgument(args, "projectName", {
60921
+ type: "text",
60922
+ question: `In which directory do you want to create your application?`,
60923
+ helpText: "also used as application name",
60924
+ defaultValue: C3_DEFAULTS.projectName,
60925
+ label: "dir",
60926
+ validate: (value) => validateProjectDirectory(String(value) || C3_DEFAULTS.projectName),
60927
+ format: (val) => `./${val}`
60928
+ });
60929
+ if (!args.type) {
60930
+ if (args.framework) {
60931
+ args.type = "webFramework";
60932
+ } else if (args.existingScript) {
60933
+ args.type = "pre-existing";
60934
+ }
60935
+ }
60936
+ const templateOptions = Object.entries(templateMap).filter(([_3, { hidden: hidden2 }]) => !hidden2).map(([value, { label }]) => ({ value, label }));
60937
+ const type = await processArgument(args, "type", {
60938
+ type: "select",
60939
+ question: "What type of application do you want to create?",
60940
+ label: "type",
60941
+ options: templateOptions,
60942
+ defaultValue: C3_DEFAULTS.type
60943
+ });
60944
+ if (!type || !Object.keys(templateMap).includes(type)) {
60945
+ return crash("An application type must be specified to continue.");
60946
+ }
60900
60947
  const validatedArgs = {
60901
60948
  ...args,
60902
- projectName: await validateName(args.projectName, {
60903
- acceptDefault: args.wranglerDefaults
60904
- }),
60905
- type: await validateType(args.type, {
60906
- acceptDefault: args.wranglerDefaults
60907
- })
60949
+ type,
60950
+ projectName
60908
60951
  };
60909
- const { handler } = templateMap[validatedArgs.type];
60952
+ const { handler } = templateMap[type];
60910
60953
  await handler(validatedArgs);
60911
60954
  };
60912
60955
  var printBanner = () => {
@@ -60923,42 +60966,17 @@ var parseArgs = async (argv) => {
60923
60966
  }).option("existing-script", {
60924
60967
  type: "string",
60925
60968
  hidden: templateMap["pre-existing"].hidden
60969
+ }).option("accept-defaults", {
60970
+ alias: "y",
60971
+ type: "boolean"
60926
60972
  }).option("wrangler-defaults", { type: "boolean", hidden: true }).version(version).help().argv;
60927
60973
  return {
60974
+ ...args.wranglerDefaults && WRANGLER_DEFAULTS,
60975
+ ...args.acceptDefaults && C3_DEFAULTS,
60928
60976
  projectName: args._[0],
60929
60977
  ...args
60930
60978
  };
60931
60979
  };
60932
- var validateName = async (name, { acceptDefault = false } = {}) => {
60933
- const defaultValue = name ?? new import_haikunator.default().haikunate({ tokenHex: true });
60934
- return textInput({
60935
- question: `In which directory do you want to create your application?`,
60936
- helpText: "also used as application name",
60937
- renderSubmitted: (value) => {
60938
- return `${brandColor("dir")} ${dim(value)}`;
60939
- },
60940
- defaultValue,
60941
- acceptDefault,
60942
- validate: (value) => validateProjectDirectory(value || defaultValue),
60943
- format: (val) => `./${val}`
60944
- });
60945
- };
60946
- var validateType = async (type, { acceptDefault = false } = {}) => {
60947
- const templateOptions = Object.entries(templateMap).filter(([_3, { hidden: hidden2 }]) => !hidden2).map(([value, { label }]) => ({ value, label }));
60948
- type = await selectInput({
60949
- question: "What type of application do you want to create?",
60950
- options: templateOptions,
60951
- renderSubmitted: (option) => {
60952
- return `${brandColor("type")} ${dim(option.label)}`;
60953
- },
60954
- defaultValue: type ?? "hello-world",
60955
- acceptDefault
60956
- });
60957
- if (!type || !Object.keys(templateMap).includes(type)) {
60958
- crash("An application type must be specified to continue.");
60959
- }
60960
- return type;
60961
- };
60962
60980
  var templateMap = {
60963
60981
  webFramework: {
60964
60982
  label: "Website or web app",
@@ -60996,7 +61014,9 @@ var templateMap = {
60996
61014
  main(process.argv).catch((e) => crash(e));
60997
61015
  // Annotate the CommonJS export names for ESM import in node:
60998
61016
  0 && (module.exports = {
60999
- main
61017
+ C3_DEFAULTS,
61018
+ main,
61019
+ parseArgs
61000
61020
  });
61001
61021
  /*! Bundled license information:
61002
61022
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-cloudflare",
3
- "version": "0.0.0-6b859a45",
3
+ "version": "0.0.0-70a54e97",
4
4
  "description": "A CLI for creating and deploying new applications to Cloudflare.",
5
5
  "keywords": [
6
6
  "cloudflare",
@@ -7,7 +7,6 @@
7
7
  "start": "wrangler dev"
8
8
  },
9
9
  "devDependencies": {
10
- "@cloudflare/workers-types": "^4.20230419.0",
11
10
  "itty-router": "^3.0.12",
12
11
  "wrangler": "^3.0.0"
13
12
  }
@@ -7,8 +7,6 @@
7
7
  "start": "wrangler dev"
8
8
  },
9
9
  "devDependencies": {
10
- "@cloudflare/workers-types": "^4.20230419.0",
11
- "typescript": "^5.0.4",
12
10
  "wrangler": "^3.0.0"
13
11
  }
14
12
  }
@@ -7,8 +7,6 @@
7
7
  "start": "wrangler dev"
8
8
  },
9
9
  "devDependencies": {
10
- "@cloudflare/workers-types": "^4.20230419.0",
11
- "typescript": "^5.0.4",
12
10
  "wrangler": "^3.0.0"
13
11
  }
14
12
  }
@@ -7,8 +7,6 @@
7
7
  "start": "wrangler dev"
8
8
  },
9
9
  "devDependencies": {
10
- "@cloudflare/workers-types": "^4.20230419.0",
11
- "typescript": "^5.0.4",
12
10
  "wrangler": "^3.0.0"
13
11
  }
14
12
  }