create-cloudflare 0.0.0-d8d46b2d → 0.0.0-d96bc7dd

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
@@ -3814,7 +3814,7 @@ var init_args = __esm({
3814
3814
  var version, devDependencies;
3815
3815
  var init_package = __esm({
3816
3816
  "package.json"() {
3817
- version = "0.0.0-d8d46b2d";
3817
+ version = "0.0.0-d96bc7dd";
3818
3818
  devDependencies = {
3819
3819
  "@babel/parser": "^7.21.3",
3820
3820
  "@babel/types": "^7.21.4",
@@ -24222,9 +24222,9 @@ var init_package2 = __esm({
24222
24222
  "create-docusaurus": "3.1.1",
24223
24223
  "create-hono": "0.3.2",
24224
24224
  "create-next-app": "14.1.0",
24225
- "create-qwik": "1.4.3",
24225
+ "create-qwik": "1.4.4",
24226
24226
  "create-react-app": "5.0.1",
24227
- "create-remix": "2.5.1",
24227
+ "create-remix": "2.6.0",
24228
24228
  "create-solid": "0.4.10",
24229
24229
  "create-svelte": "6.0.8",
24230
24230
  "create-vue": "3.9.2",
@@ -25812,7 +25812,7 @@ var init_poll = __esm({
25812
25812
  var version2;
25813
25813
  var init_package3 = __esm({
25814
25814
  "../wrangler/package.json"() {
25815
- version2 = "3.26.0";
25815
+ version2 = "3.27.0";
25816
25816
  }
25817
25817
  });
25818
25818
 
@@ -41691,159 +41691,6 @@ var init_c37 = __esm({
41691
41691
  }
41692
41692
  });
41693
41693
 
41694
- // templates/qwik/c3.ts
41695
- var c3_exports8 = {};
41696
- __export(c3_exports8, {
41697
- default: () => c3_default8
41698
- });
41699
- var npm8, npx4, generate8, configure5, config7, c3_default8;
41700
- var init_c38 = __esm({
41701
- "templates/qwik/c3.ts"() {
41702
- init_cli();
41703
- init_command();
41704
- init_files();
41705
- init_packages();
41706
- init_common2();
41707
- ({ npm: npm8, npx: npx4 } = detectPackageManager());
41708
- generate8 = async (ctx) => {
41709
- await runFrameworkGenerator(ctx, ["basic", ctx.project.name]);
41710
- };
41711
- configure5 = async () => {
41712
- const cmd = [npx4, "qwik", "add", "cloudflare-pages"];
41713
- endSection(`Running ${quoteShellArgs(cmd)}`);
41714
- await runCommand(cmd);
41715
- };
41716
- config7 = {
41717
- configVersion: 1,
41718
- id: "qwik",
41719
- displayName: "Qwik",
41720
- platform: "pages",
41721
- generate: generate8,
41722
- configure: configure5,
41723
- transformPackageJson: async () => ({
41724
- scripts: {
41725
- "pages:dev": `wrangler pages dev ${await compatDateFlag()} -- ${npm8} run dev`,
41726
- "pages:deploy": `${npm8} run build && wrangler pages deploy ./dist`
41727
- }
41728
- })
41729
- };
41730
- c3_default8 = config7;
41731
- }
41732
- });
41733
-
41734
- // templates/react/c3.ts
41735
- var c3_exports9 = {};
41736
- __export(c3_exports9, {
41737
- default: () => c3_default9
41738
- });
41739
- var npm9, generate9, config8, c3_default9;
41740
- var init_c39 = __esm({
41741
- "templates/react/c3.ts"() {
41742
- init_cli();
41743
- init_command();
41744
- init_files();
41745
- init_packages();
41746
- ({ npm: npm9 } = detectPackageManager());
41747
- generate9 = async (ctx) => {
41748
- await runFrameworkGenerator(ctx, [ctx.project.name]);
41749
- logRaw("");
41750
- };
41751
- config8 = {
41752
- configVersion: 1,
41753
- id: "react",
41754
- displayName: "React",
41755
- platform: "pages",
41756
- generate: generate9,
41757
- transformPackageJson: async () => ({
41758
- scripts: {
41759
- "pages:dev": `wrangler pages dev ${await compatDateFlag()} --port 3000 -- ${npm9} start`,
41760
- "pages:deploy": `${npm9} run build && wrangler pages deploy ./build`
41761
- }
41762
- })
41763
- };
41764
- c3_default9 = config8;
41765
- }
41766
- });
41767
-
41768
- // templates/remix/c3.ts
41769
- var c3_exports10 = {};
41770
- __export(c3_exports10, {
41771
- default: () => c3_default10
41772
- });
41773
- var npm10, generate10, config9, c3_default10;
41774
- var init_c310 = __esm({
41775
- "templates/remix/c3.ts"() {
41776
- init_cli();
41777
- init_command();
41778
- init_packages();
41779
- ({ npm: npm10 } = detectPackageManager());
41780
- generate10 = async (ctx) => {
41781
- await runFrameworkGenerator(ctx, [
41782
- ctx.project.name,
41783
- "--template",
41784
- "https://github.com/remix-run/remix/tree/main/templates/cloudflare-pages"
41785
- ]);
41786
- logRaw("");
41787
- };
41788
- config9 = {
41789
- configVersion: 1,
41790
- id: "remix",
41791
- displayName: "Remix",
41792
- platform: "pages",
41793
- generate: generate10,
41794
- transformPackageJson: async () => ({
41795
- scripts: {
41796
- "pages:deploy": `${npm10} run build && wrangler pages deploy ./public`
41797
- }
41798
- }),
41799
- devScript: "dev",
41800
- testFlags: ["--typescript", "--no-install", "--no-git-init"]
41801
- };
41802
- c3_default10 = config9;
41803
- }
41804
- });
41805
-
41806
- // templates/solid/c3.ts
41807
- var c3_exports11 = {};
41808
- __export(c3_exports11, {
41809
- default: () => c3_default11
41810
- });
41811
- var npm11, generate11, config10, c3_default11;
41812
- var init_c311 = __esm({
41813
- "templates/solid/c3.ts"() {
41814
- init_cli();
41815
- init_command();
41816
- init_files();
41817
- init_packages();
41818
- ({ npm: npm11 } = detectPackageManager());
41819
- generate11 = async (ctx) => {
41820
- await runFrameworkGenerator(ctx, [ctx.project.name]);
41821
- logRaw("");
41822
- };
41823
- config10 = {
41824
- configVersion: 1,
41825
- id: "solid",
41826
- displayName: "Solid",
41827
- platform: "pages",
41828
- copyFiles: {
41829
- js: { path: "./js" },
41830
- ts: { path: "./ts" }
41831
- },
41832
- generate: generate11,
41833
- transformPackageJson: async () => ({
41834
- scripts: {
41835
- "pages:preview": `${npm11} run build && npx wrangler pages dev dist ${await compatDateFlag()} --compatibility-flag nodejs_compat`,
41836
- "pages:deploy": `${npm11} run build && wrangler pages deploy ./dist`
41837
- }
41838
- }),
41839
- devScript: "dev",
41840
- previewScript: "pages:preview",
41841
- compatibilityFlags: ["nodejs_compat"]
41842
- };
41843
- c3_default11 = config10;
41844
- }
41845
- });
41846
-
41847
41694
  // ../../node_modules/.pnpm/tslib@2.5.3/node_modules/tslib/tslib.es6.mjs
41848
41695
  var tslib_es6_exports = {};
41849
41696
  __export(tslib_es6_exports, {
@@ -72907,6 +72754,7 @@ var init_codemod = __esm({
72907
72754
  typescriptParser = __toESM(require_typescript2());
72908
72755
  init_files();
72909
72756
  parseTs = (src) => {
72757
+ src = src.trim();
72910
72758
  try {
72911
72759
  return recast.parse(src, { parser: typescriptParser });
72912
72760
  } catch (error2) {
@@ -72936,6 +72784,200 @@ var init_codemod = __esm({
72936
72784
  }
72937
72785
  });
72938
72786
 
72787
+ // templates/qwik/c3.ts
72788
+ var c3_exports8 = {};
72789
+ __export(c3_exports8, {
72790
+ default: () => c3_default8
72791
+ });
72792
+ var npm8, npx4, generate8, configure5, addBindingsProxy, config7, c3_default8;
72793
+ var init_c38 = __esm({
72794
+ "templates/qwik/c3.ts"() {
72795
+ init_cli();
72796
+ init_colors();
72797
+ init_interactive();
72798
+ init_codemod();
72799
+ init_command();
72800
+ init_files();
72801
+ init_packages();
72802
+ init_common2();
72803
+ ({ npm: npm8, npx: npx4 } = detectPackageManager());
72804
+ generate8 = async (ctx) => {
72805
+ await runFrameworkGenerator(ctx, ["basic", ctx.project.name]);
72806
+ };
72807
+ configure5 = async (ctx) => {
72808
+ const cmd = [npx4, "qwik", "add", "cloudflare-pages"];
72809
+ endSection(`Running ${quoteShellArgs(cmd)}`);
72810
+ await runCommand(cmd);
72811
+ addBindingsProxy(ctx);
72812
+ };
72813
+ addBindingsProxy = (ctx) => {
72814
+ if (!usesTypescript(ctx)) {
72815
+ return;
72816
+ }
72817
+ const s = spinner();
72818
+ s.start("Updating `vite.config.ts`");
72819
+ const envDeclaration = `
72820
+ let env = {};
72821
+
72822
+ if(process.env.NODE_ENV === 'development') {
72823
+ const { getBindingsProxy } = await import('wrangler');
72824
+ const { bindings } = await getBindingsProxy();
72825
+ env = bindings;
72826
+ }
72827
+ `;
72828
+ transformFile("vite.config.ts", {
72829
+ visitProgram: function(n2) {
72830
+ const lastImportIndex = n2.node.body.findLastIndex(
72831
+ (t) => t.type === "ImportDeclaration"
72832
+ );
72833
+ n2.get("body").insertAt(lastImportIndex + 1, envDeclaration);
72834
+ return false;
72835
+ }
72836
+ });
72837
+ const platformObject = parseTs(`{ platform: { env } }`);
72838
+ transformFile("vite.config.ts", {
72839
+ visitCallExpression: function(n2) {
72840
+ const callee = n2.node.callee;
72841
+ if (callee.name === "qwikCity") {
72842
+ n2.node.arguments = [platformObject];
72843
+ }
72844
+ this.traverse(n2);
72845
+ }
72846
+ });
72847
+ s.stop(`${brandColor("updated")} \`vite.config.ts\``);
72848
+ };
72849
+ config7 = {
72850
+ configVersion: 1,
72851
+ id: "qwik",
72852
+ displayName: "Qwik",
72853
+ platform: "pages",
72854
+ devScript: "dev",
72855
+ deployScript: "deploy",
72856
+ generate: generate8,
72857
+ configure: configure5,
72858
+ transformPackageJson: async () => ({
72859
+ scripts: {
72860
+ deploy: `${npm8} run build && wrangler pages deploy ./dist`
72861
+ }
72862
+ })
72863
+ };
72864
+ c3_default8 = config7;
72865
+ }
72866
+ });
72867
+
72868
+ // templates/react/c3.ts
72869
+ var c3_exports9 = {};
72870
+ __export(c3_exports9, {
72871
+ default: () => c3_default9
72872
+ });
72873
+ var npm9, generate9, config8, c3_default9;
72874
+ var init_c39 = __esm({
72875
+ "templates/react/c3.ts"() {
72876
+ init_cli();
72877
+ init_command();
72878
+ init_files();
72879
+ init_packages();
72880
+ ({ npm: npm9 } = detectPackageManager());
72881
+ generate9 = async (ctx) => {
72882
+ await runFrameworkGenerator(ctx, [ctx.project.name]);
72883
+ logRaw("");
72884
+ };
72885
+ config8 = {
72886
+ configVersion: 1,
72887
+ id: "react",
72888
+ displayName: "React",
72889
+ platform: "pages",
72890
+ generate: generate9,
72891
+ transformPackageJson: async () => ({
72892
+ scripts: {
72893
+ "pages:dev": `wrangler pages dev ${await compatDateFlag()} --port 3000 -- ${npm9} start`,
72894
+ "pages:deploy": `${npm9} run build && wrangler pages deploy ./build`
72895
+ }
72896
+ })
72897
+ };
72898
+ c3_default9 = config8;
72899
+ }
72900
+ });
72901
+
72902
+ // templates/remix/c3.ts
72903
+ var c3_exports10 = {};
72904
+ __export(c3_exports10, {
72905
+ default: () => c3_default10
72906
+ });
72907
+ var npm10, generate10, config9, c3_default10;
72908
+ var init_c310 = __esm({
72909
+ "templates/remix/c3.ts"() {
72910
+ init_cli();
72911
+ init_command();
72912
+ init_packages();
72913
+ ({ npm: npm10 } = detectPackageManager());
72914
+ generate10 = async (ctx) => {
72915
+ await runFrameworkGenerator(ctx, [
72916
+ ctx.project.name,
72917
+ "--template",
72918
+ "https://github.com/remix-run/remix/tree/main/templates/cloudflare-pages"
72919
+ ]);
72920
+ logRaw("");
72921
+ };
72922
+ config9 = {
72923
+ configVersion: 1,
72924
+ id: "remix",
72925
+ displayName: "Remix",
72926
+ platform: "pages",
72927
+ generate: generate10,
72928
+ transformPackageJson: async () => ({
72929
+ scripts: {
72930
+ "pages:deploy": `${npm10} run build && wrangler pages deploy ./public`
72931
+ }
72932
+ }),
72933
+ devScript: "dev",
72934
+ testFlags: ["--typescript", "--no-install", "--no-git-init"]
72935
+ };
72936
+ c3_default10 = config9;
72937
+ }
72938
+ });
72939
+
72940
+ // templates/solid/c3.ts
72941
+ var c3_exports11 = {};
72942
+ __export(c3_exports11, {
72943
+ default: () => c3_default11
72944
+ });
72945
+ var npm11, generate11, config10, c3_default11;
72946
+ var init_c311 = __esm({
72947
+ "templates/solid/c3.ts"() {
72948
+ init_cli();
72949
+ init_command();
72950
+ init_files();
72951
+ init_packages();
72952
+ ({ npm: npm11 } = detectPackageManager());
72953
+ generate11 = async (ctx) => {
72954
+ await runFrameworkGenerator(ctx, [ctx.project.name]);
72955
+ logRaw("");
72956
+ };
72957
+ config10 = {
72958
+ configVersion: 1,
72959
+ id: "solid",
72960
+ displayName: "Solid",
72961
+ platform: "pages",
72962
+ copyFiles: {
72963
+ js: { path: "./js" },
72964
+ ts: { path: "./ts" }
72965
+ },
72966
+ generate: generate11,
72967
+ transformPackageJson: async () => ({
72968
+ scripts: {
72969
+ "pages:preview": `${npm11} run build && npx wrangler pages dev dist ${await compatDateFlag()} --compatibility-flag nodejs_compat`,
72970
+ "pages:deploy": `${npm11} run build && wrangler pages deploy ./dist`
72971
+ }
72972
+ }),
72973
+ devScript: "dev",
72974
+ previewScript: "pages:preview",
72975
+ compatibilityFlags: ["nodejs_compat"]
72976
+ };
72977
+ c3_default11 = config10;
72978
+ }
72979
+ });
72980
+
72939
72981
  // templates/svelte/templates.ts
72940
72982
  var platformInterface;
72941
72983
  var init_templates2 = __esm({
@@ -78589,19 +78631,29 @@ var downloadRemoteTemplate = async (src) => {
78589
78631
  return crash(`Failed to clone remote template: ${src}`);
78590
78632
  }
78591
78633
  };
78592
- var updatePackageJson = async (ctx) => {
78593
- const s = spinner();
78594
- s.start("Updating `package.json`");
78634
+ var updatePackageName = async (ctx) => {
78595
78635
  const placeholderNames = ["<TBD>", "TBD", ""];
78596
78636
  const pkgJsonPath = (0, import_path11.resolve)(ctx.project.path, "package.json");
78597
- let pkgJson = readJSON(pkgJsonPath);
78598
- if (placeholderNames.includes(pkgJson.name)) {
78599
- pkgJson.name = ctx.project.name;
78637
+ const pkgJson = readJSON(pkgJsonPath);
78638
+ if (!placeholderNames.includes(pkgJson.name)) {
78639
+ return;
78600
78640
  }
78601
- if (ctx.template.transformPackageJson) {
78602
- const transformed = await ctx.template.transformPackageJson(pkgJson);
78603
- pkgJson = (0, import_deepmerge.default)(pkgJson, transformed);
78641
+ const s = spinner();
78642
+ s.start("Updating name in `package.json`");
78643
+ pkgJson.name = ctx.project.name;
78644
+ writeJSON(pkgJsonPath, pkgJson);
78645
+ s.stop(`${brandColor("updated")} ${dim("`package.json`")}`);
78646
+ };
78647
+ var updatePackageScripts = async (ctx) => {
78648
+ if (!ctx.template.transformPackageJson) {
78649
+ return;
78604
78650
  }
78651
+ const s = spinner();
78652
+ s.start("Updating `package.json` scripts");
78653
+ const pkgJsonPath = (0, import_path11.resolve)(ctx.project.path, "package.json");
78654
+ let pkgJson = readJSON(pkgJsonPath);
78655
+ const transformed = await ctx.template.transformPackageJson(pkgJson);
78656
+ pkgJson = (0, import_deepmerge.default)(pkgJson, transformed);
78605
78657
  writeJSON(pkgJsonPath, pkgJson);
78606
78658
  s.stop(`${brandColor("updated")} ${dim("`package.json`")}`);
78607
78659
  };
@@ -78672,7 +78724,7 @@ var create = async (ctx) => {
78672
78724
  await template.generate(ctx);
78673
78725
  }
78674
78726
  await copyTemplateFiles(ctx);
78675
- await updatePackageJson(ctx);
78727
+ await updatePackageName(ctx);
78676
78728
  (0, import_process3.chdir)(ctx.project.path);
78677
78729
  await npmInstall(ctx);
78678
78730
  await rectifyPmMismatch(ctx);
@@ -78687,6 +78739,7 @@ var configure7 = async (ctx) => {
78687
78739
  if (template.configure) {
78688
78740
  await template.configure({ ...ctx });
78689
78741
  }
78742
+ await updatePackageScripts(ctx);
78690
78743
  await offerGit(ctx);
78691
78744
  await gitCommit(ctx);
78692
78745
  endSection(`Application configured`);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-cloudflare",
3
- "version": "0.0.0-d8d46b2d",
3
+ "version": "0.0.0-d96bc7dd",
4
4
  "description": "A CLI for creating and deploying new applications to Cloudflare.",
5
5
  "keywords": [
6
6
  "cloudflare",
@@ -65,9 +65,9 @@
65
65
  "which-pm-runs": "^1.1.0",
66
66
  "yargs": "^17.7.1",
67
67
  "yarn": "^1.22.19",
68
- "@cloudflare/workers-tsconfig": "0.0.0",
69
- "wrangler": "3.26.0",
70
- "@cloudflare/cli": "1.1.1"
68
+ "@cloudflare/cli": "1.1.1",
69
+ "wrangler": "3.27.0",
70
+ "@cloudflare/workers-tsconfig": "0.0.0"
71
71
  },
72
72
  "engines": {
73
73
  "node": ">=18.14.1"
@@ -1,9 +1,13 @@
1
1
  import { endSection } from "@cloudflare/cli";
2
+ import { brandColor } from "@cloudflare/cli/colors";
3
+ import { spinner } from "@cloudflare/cli/interactive";
4
+ import { parseTs, transformFile } from "helpers/codemod";
2
5
  import { runCommand, runFrameworkGenerator } from "helpers/command";
3
- import { compatDateFlag } from "helpers/files";
6
+ import { usesTypescript } from "helpers/files";
4
7
  import { detectPackageManager } from "helpers/packages";
5
8
  import { quoteShellArgs } from "../../src/common";
6
9
  import type { TemplateConfig } from "../../src/templates";
10
+ import type * as recast from "recast";
7
11
  import type { C3Context } from "types";
8
12
 
9
13
  const { npm, npx } = detectPackageManager();
@@ -12,11 +16,62 @@ const generate = async (ctx: C3Context) => {
12
16
  await runFrameworkGenerator(ctx, ["basic", ctx.project.name]);
13
17
  };
14
18
 
15
- const configure = async () => {
19
+ const configure = async (ctx: C3Context) => {
16
20
  // Add the pages integration
17
21
  const cmd = [npx, "qwik", "add", "cloudflare-pages"];
18
22
  endSection(`Running ${quoteShellArgs(cmd)}`);
19
23
  await runCommand(cmd);
24
+
25
+ addBindingsProxy(ctx);
26
+ };
27
+
28
+ const addBindingsProxy = (ctx: C3Context) => {
29
+ // Qwik only has a typescript template atm.
30
+ // This check is an extra precaution
31
+ if (!usesTypescript(ctx)) {
32
+ return;
33
+ }
34
+
35
+ const s = spinner();
36
+ s.start("Updating `vite.config.ts`");
37
+
38
+ // Insert the env declaration after the last import (but before the rest of the body)
39
+ const envDeclaration = `
40
+ let env = {};
41
+
42
+ if(process.env.NODE_ENV === 'development') {
43
+ const { getBindingsProxy } = await import('wrangler');
44
+ const { bindings } = await getBindingsProxy();
45
+ env = bindings;
46
+ }
47
+ `;
48
+
49
+ transformFile("vite.config.ts", {
50
+ visitProgram: function (n) {
51
+ const lastImportIndex = n.node.body.findLastIndex(
52
+ (t) => t.type === "ImportDeclaration"
53
+ );
54
+ n.get("body").insertAt(lastImportIndex + 1, envDeclaration);
55
+
56
+ return false;
57
+ },
58
+ });
59
+
60
+ // Populate the `qwikCity` plugin with the platform object containing the `env` defined above.
61
+ const platformObject = parseTs(`{ platform: { env } }`);
62
+
63
+ transformFile("vite.config.ts", {
64
+ visitCallExpression: function (n) {
65
+ const callee = n.node.callee as recast.types.namedTypes.Identifier;
66
+ if (callee.name === "qwikCity") {
67
+ n.node.arguments = [platformObject];
68
+ }
69
+
70
+ this.traverse(n);
71
+ },
72
+ });
73
+
74
+ s.stop(`${brandColor("updated")} \`vite.config.ts\``);
20
75
  };
21
76
 
22
77
  const config: TemplateConfig = {
@@ -24,12 +79,13 @@ const config: TemplateConfig = {
24
79
  id: "qwik",
25
80
  displayName: "Qwik",
26
81
  platform: "pages",
82
+ devScript: "dev",
83
+ deployScript: "deploy",
27
84
  generate,
28
85
  configure,
29
86
  transformPackageJson: async () => ({
30
87
  scripts: {
31
- "pages:dev": `wrangler pages dev ${await compatDateFlag()} -- ${npm} run dev`,
32
- "pages:deploy": `${npm} run build && wrangler pages deploy ./dist`,
88
+ deploy: `${npm} run build && wrangler pages deploy ./dist`,
33
89
  },
34
90
  }),
35
91
  };