@create-node-app/core 0.0.0 → 0.1.1

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/index.d.ts CHANGED
@@ -3,6 +3,7 @@ type Addon = {
3
3
  ignorePackage?: boolean;
4
4
  };
5
5
 
6
+ declare const checkForLatestVersion: (packageName: string) => Promise<string | null>;
6
7
  declare const printEnvInfo: () => Promise<never>;
7
8
  type CnaOptions = {
8
9
  projectName: string;
@@ -36,4 +37,4 @@ type CnaOptionsTransform = (options: CnaOptions) => Promise<CnaOptions>;
36
37
  */
37
38
  declare const createNodeApp: (programName: string, options: CnaOptions, transformOptions: CnaOptionsTransform) => Promise<void>;
38
39
 
39
- export { CnaOptions, CnaOptionsTransform, createNodeApp, printEnvInfo };
40
+ export { CnaOptions, CnaOptionsTransform, checkForLatestVersion, createNodeApp, printEnvInfo };
package/dist/index.js CHANGED
@@ -30,12 +30,14 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
30
30
  // index.ts
31
31
  var create_node_app_core_exports = {};
32
32
  __export(create_node_app_core_exports, {
33
+ checkForLatestVersion: () => checkForLatestVersion,
33
34
  createNodeApp: () => createNodeApp,
34
35
  printEnvInfo: () => printEnvInfo
35
36
  });
36
37
  module.exports = __toCommonJS(create_node_app_core_exports);
37
38
  var import_chalk4 = __toESM(require("chalk"));
38
39
  var import_envinfo = __toESM(require("envinfo"));
40
+ var import_child_process4 = require("child_process");
39
41
 
40
42
  // installer.ts
41
43
  var import_underscore2 = __toESM(require("underscore"));
@@ -55,11 +57,16 @@ var import_semver = __toESM(require("semver"));
55
57
  var import_dns = __toESM(require("dns"));
56
58
  var import_url = require("url");
57
59
  var shouldUseYarn = () => {
58
- try {
59
- (0, import_child_process.execSync)("yarnpkg --version", { stdio: "ignore" });
60
- return true;
61
- } catch (e) {
62
- console.log(e);
60
+ const { hasMinYarnPnp, hasMaxYarnPnp } = checkYarnVersion();
61
+ if (!hasMinYarnPnp) {
62
+ return false;
63
+ }
64
+ if (!hasMaxYarnPnp) {
65
+ console.log(
66
+ import_chalk.default.yellow(
67
+ `You are using a pre-release version of Yarn which is not supported yet. To use Yarn, install v1.12.0 or higher.`
68
+ )
69
+ );
63
70
  return false;
64
71
  }
65
72
  };
@@ -75,8 +82,8 @@ var checkThatNpmCanReadCwd = () => {
75
82
  return true;
76
83
  }
77
84
  const lines = childOutput.split("\n");
78
- const prefix = " cwd = ";
79
- const line = lines.find((l) => l.indexOf(prefix) === 0);
85
+ const prefix = "; cwd = ";
86
+ const line = lines.find((line2) => line2.startsWith(prefix));
80
87
  if (typeof line !== "string") {
81
88
  return true;
82
89
  }
@@ -115,12 +122,41 @@ This is probably caused by a misconfigured system terminal shell.`
115
122
  }
116
123
  return false;
117
124
  };
125
+ var checkYarnVersion = () => {
126
+ const minYarnPnp = "1.12.0";
127
+ const maxYarnPnp = "2.0.0";
128
+ let hasMinYarnPnp = false;
129
+ let hasMaxYarnPnp = false;
130
+ let yarnVersion = null;
131
+ try {
132
+ yarnVersion = (0, import_child_process.execSync)("yarnpkg --version").toString().trim();
133
+ if (import_semver.default.valid(yarnVersion)) {
134
+ hasMinYarnPnp = import_semver.default.gte(yarnVersion, minYarnPnp);
135
+ hasMaxYarnPnp = import_semver.default.lt(yarnVersion, maxYarnPnp);
136
+ } else {
137
+ const trimmedYarnVersionMatch = /^(.+?)[-+].+$/.exec(yarnVersion);
138
+ if (trimmedYarnVersionMatch) {
139
+ const trimmedYarnVersion = trimmedYarnVersionMatch.pop();
140
+ if (trimmedYarnVersion) {
141
+ hasMinYarnPnp = import_semver.default.gte(trimmedYarnVersion, minYarnPnp);
142
+ hasMaxYarnPnp = import_semver.default.lt(trimmedYarnVersion, maxYarnPnp);
143
+ }
144
+ }
145
+ }
146
+ } catch (err) {
147
+ }
148
+ return {
149
+ hasMinYarnPnp,
150
+ hasMaxYarnPnp,
151
+ yarnVersion
152
+ };
153
+ };
118
154
  var checkNpmVersion = () => {
119
155
  let hasMinNpm = false;
120
- let npmVersion = void 0;
156
+ let npmVersion = null;
121
157
  try {
122
158
  npmVersion = (0, import_child_process.execSync)("npm --version").toString().trim();
123
- hasMinNpm = import_semver.default.gte(npmVersion, "3.0.0");
159
+ hasMinNpm = import_semver.default.gte(npmVersion, "6.0.0");
124
160
  } catch (err) {
125
161
  }
126
162
  return {
@@ -819,6 +855,24 @@ Please update to npm 3 or higher for a better, fully supported experience.
819
855
  };
820
856
 
821
857
  // index.ts
858
+ var checkForLatestVersion = async (packageName) => {
859
+ try {
860
+ const response = await fetch(
861
+ `https://registry.npmjs.org/-/package/${packageName}/dist-tags`
862
+ );
863
+ if (!response.ok) {
864
+ throw new Error("Registry request failed");
865
+ }
866
+ const { latest } = await response.json();
867
+ return latest;
868
+ } catch (error) {
869
+ try {
870
+ return (0, import_child_process4.execSync)(`npm view ${packageName} version`).toString().trim();
871
+ } catch (error2) {
872
+ }
873
+ }
874
+ return null;
875
+ };
822
876
  var printEnvInfo = async () => {
823
877
  console.log(import_chalk4.default.bold("\nEnvironment Info:"));
824
878
  const info = await import_envinfo.default.run(
@@ -862,6 +916,7 @@ var createNodeApp = async (programName, options, transformOptions) => {
862
916
  };
863
917
  // Annotate the CommonJS export names for ESM import in node:
864
918
  0 && (module.exports = {
919
+ checkForLatestVersion,
865
920
  createNodeApp,
866
921
  printEnvInfo
867
922
  });
package/dist/index.mjs CHANGED
@@ -9,6 +9,7 @@ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require
9
9
  // index.ts
10
10
  import chalk4 from "chalk";
11
11
  import envinfo from "envinfo";
12
+ import { execSync as execSync3 } from "child_process";
12
13
 
13
14
  // installer.ts
14
15
  import _2 from "underscore";
@@ -28,11 +29,16 @@ import semver from "semver";
28
29
  import dns from "dns";
29
30
  import { URL as URL2 } from "url";
30
31
  var shouldUseYarn = () => {
31
- try {
32
- execSync("yarnpkg --version", { stdio: "ignore" });
33
- return true;
34
- } catch (e) {
35
- console.log(e);
32
+ const { hasMinYarnPnp, hasMaxYarnPnp } = checkYarnVersion();
33
+ if (!hasMinYarnPnp) {
34
+ return false;
35
+ }
36
+ if (!hasMaxYarnPnp) {
37
+ console.log(
38
+ chalk.yellow(
39
+ `You are using a pre-release version of Yarn which is not supported yet. To use Yarn, install v1.12.0 or higher.`
40
+ )
41
+ );
36
42
  return false;
37
43
  }
38
44
  };
@@ -48,8 +54,8 @@ var checkThatNpmCanReadCwd = () => {
48
54
  return true;
49
55
  }
50
56
  const lines = childOutput.split("\n");
51
- const prefix = " cwd = ";
52
- const line = lines.find((l) => l.indexOf(prefix) === 0);
57
+ const prefix = "; cwd = ";
58
+ const line = lines.find((line2) => line2.startsWith(prefix));
53
59
  if (typeof line !== "string") {
54
60
  return true;
55
61
  }
@@ -88,12 +94,41 @@ This is probably caused by a misconfigured system terminal shell.`
88
94
  }
89
95
  return false;
90
96
  };
97
+ var checkYarnVersion = () => {
98
+ const minYarnPnp = "1.12.0";
99
+ const maxYarnPnp = "2.0.0";
100
+ let hasMinYarnPnp = false;
101
+ let hasMaxYarnPnp = false;
102
+ let yarnVersion = null;
103
+ try {
104
+ yarnVersion = execSync("yarnpkg --version").toString().trim();
105
+ if (semver.valid(yarnVersion)) {
106
+ hasMinYarnPnp = semver.gte(yarnVersion, minYarnPnp);
107
+ hasMaxYarnPnp = semver.lt(yarnVersion, maxYarnPnp);
108
+ } else {
109
+ const trimmedYarnVersionMatch = /^(.+?)[-+].+$/.exec(yarnVersion);
110
+ if (trimmedYarnVersionMatch) {
111
+ const trimmedYarnVersion = trimmedYarnVersionMatch.pop();
112
+ if (trimmedYarnVersion) {
113
+ hasMinYarnPnp = semver.gte(trimmedYarnVersion, minYarnPnp);
114
+ hasMaxYarnPnp = semver.lt(trimmedYarnVersion, maxYarnPnp);
115
+ }
116
+ }
117
+ }
118
+ } catch (err) {
119
+ }
120
+ return {
121
+ hasMinYarnPnp,
122
+ hasMaxYarnPnp,
123
+ yarnVersion
124
+ };
125
+ };
91
126
  var checkNpmVersion = () => {
92
127
  let hasMinNpm = false;
93
- let npmVersion = void 0;
128
+ let npmVersion = null;
94
129
  try {
95
130
  npmVersion = execSync("npm --version").toString().trim();
96
- hasMinNpm = semver.gte(npmVersion, "3.0.0");
131
+ hasMinNpm = semver.gte(npmVersion, "6.0.0");
97
132
  } catch (err) {
98
133
  }
99
134
  return {
@@ -792,6 +827,24 @@ Please update to npm 3 or higher for a better, fully supported experience.
792
827
  };
793
828
 
794
829
  // index.ts
830
+ var checkForLatestVersion = async (packageName) => {
831
+ try {
832
+ const response = await fetch(
833
+ `https://registry.npmjs.org/-/package/${packageName}/dist-tags`
834
+ );
835
+ if (!response.ok) {
836
+ throw new Error("Registry request failed");
837
+ }
838
+ const { latest } = await response.json();
839
+ return latest;
840
+ } catch (error) {
841
+ try {
842
+ return execSync3(`npm view ${packageName} version`).toString().trim();
843
+ } catch (error2) {
844
+ }
845
+ }
846
+ return null;
847
+ };
795
848
  var printEnvInfo = async () => {
796
849
  console.log(chalk4.bold("\nEnvironment Info:"));
797
850
  const info = await envinfo.run(
@@ -834,6 +887,7 @@ var createNodeApp = async (programName, options, transformOptions) => {
834
887
  });
835
888
  };
836
889
  export {
890
+ checkForLatestVersion,
837
891
  createNodeApp,
838
892
  printEnvInfo
839
893
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@create-node-app/core",
3
- "version": "0.0.0",
3
+ "version": "0.1.1",
4
4
  "main": "./dist/index.js",
5
5
  "module": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",