@form8ion/javascript 7.0.4 → 7.1.0

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/lib/index.js CHANGED
@@ -829,19 +829,6 @@ function buildPackageName (projectName, scope) {
829
829
  throw new Error(`The package name ${name} is invalid:${os.EOL}\t* ${errors.join(`${os.EOL}\t* `)}`);
830
830
  }
831
831
 
832
- async function chooseApplicationType ({types, projectType, decisions}) {
833
- if (!Object.keys(types).length) return 'Other';
834
-
835
- const answers = await overridablePrompts.prompt([{
836
- name: questionNames$1.PROJECT_TYPE_CHOICE,
837
- type: 'list',
838
- message: `What type of ${projectType} is this?`,
839
- choices: [...Object.keys(types), new overridablePrompts.Separator(), 'Other']
840
- }], decisions);
841
-
842
- return answers[questionNames$1.PROJECT_TYPE_CHOICE];
843
- }
844
-
845
832
  function getInstallationCommand(packageManager) {
846
833
  if (javascriptCore.packageManagers.NPM === packageManager) return 'npm install';
847
834
  if (javascriptCore.packageManagers.YARN === packageManager) return 'yarn add';
@@ -979,9 +966,7 @@ async function scaffoldPackageType ({
979
966
  packageManager,
980
967
  visibility,
981
968
  scope,
982
- packageTypes,
983
969
  packageBundlers,
984
- tests,
985
970
  decisions,
986
971
  dialect,
987
972
  publishRegistry
@@ -1026,13 +1011,6 @@ async function scaffoldPackageType ({
1026
1011
  })
1027
1012
  ]);
1028
1013
 
1029
- const chosenType = await chooseApplicationType({types: packageTypes, projectType: 'package', decisions});
1030
- const results = await javascriptCore.scaffoldChoice(
1031
- packageTypes,
1032
- chosenType,
1033
- {projectRoot, projectName, packageName, tests, scope}
1034
- );
1035
-
1036
1014
  return deepmerge__default["default"].all([
1037
1015
  {
1038
1016
  documentation: scaffoldPackageDocumentation({packageName, visibility, scope, packageManager}),
@@ -1044,74 +1022,47 @@ async function scaffoldPackageType ({
1044
1022
  scripts: {},
1045
1023
  badges: defineBadges(packageName, visibility)
1046
1024
  },
1047
- detailsForBuild,
1048
- results
1025
+ detailsForBuild
1049
1026
  ]);
1050
1027
  }
1051
1028
 
1052
- const defaultBuildDirectory$1 = 'lib';
1029
+ const defaultBuildDirectory$1 = 'public';
1053
1030
 
1054
- async function scaffoldApplicationType ({
1055
- applicationTypes,
1056
- projectRoot,
1057
- projectName,
1058
- packageName,
1059
- packageManager,
1060
- tests,
1061
- decisions
1062
- }) {
1031
+ async function scaffoldApplicationType ({projectRoot}) {
1063
1032
  cliMessages.info('Scaffolding Application Details');
1064
1033
 
1065
- const [chosenType] = await Promise.all([
1066
- chooseApplicationType({types: applicationTypes, projectType: 'application', decisions}),
1067
- javascriptCore.mergeIntoExistingPackageJson({projectRoot, config: {private: true}})
1068
- ]);
1069
-
1070
- const results = await javascriptCore.scaffoldChoice(
1071
- applicationTypes,
1072
- chosenType,
1073
- {projectRoot, projectName, packageName, packageManager, tests}
1074
- );
1034
+ await javascriptCore.mergeIntoExistingPackageJson({projectRoot, config: {private: true}});
1075
1035
 
1076
- const buildDirectory = results.buildDirectory || defaultBuildDirectory$1;
1036
+ const buildDirectory = defaultBuildDirectory$1;
1077
1037
 
1078
- return deepmerge__default["default"](
1079
- {
1080
- scripts: {
1081
- clean: `rimraf ./${buildDirectory}`,
1082
- start: `node ./${buildDirectory}/index.js`,
1083
- prebuild: 'run-s clean'
1084
- },
1085
- dependencies: [],
1086
- devDependencies: ['rimraf'],
1087
- vcsIgnore: {files: ['.env'], directories: [`/${buildDirectory}/`]},
1088
- buildDirectory,
1089
- eslintConfigs: [],
1090
- nextSteps: []
1038
+ return {
1039
+ scripts: {
1040
+ clean: `rimraf ./${buildDirectory}`,
1041
+ start: `node ./${buildDirectory}/index.js`,
1042
+ prebuild: 'run-s clean'
1091
1043
  },
1092
- results
1093
- );
1044
+ dependencies: [],
1045
+ devDependencies: ['rimraf'],
1046
+ vcsIgnore: {files: ['.env'], directories: [`/${buildDirectory}/`]},
1047
+ buildDirectory,
1048
+ eslintConfigs: [],
1049
+ nextSteps: []
1050
+ };
1094
1051
  }
1095
1052
 
1096
- async function scaffoldMonorepoType ({monorepoTypes, projectRoot, packageManager, decisions}) {
1053
+ async function scaffoldMonorepoType ({projectRoot}) {
1097
1054
  cliMessages.info('Scaffolding Monorepo Details');
1098
1055
 
1099
- const chosenType = await chooseApplicationType({types: monorepoTypes, projectType: javascriptCore.projectTypes.MONOREPO, decisions});
1100
- const results = await javascriptCore.scaffoldChoice(monorepoTypes, chosenType, {projectRoot, packageManager});
1101
-
1102
1056
  await javascriptCore.mergeIntoExistingPackageJson({projectRoot, config: {private: true}});
1103
1057
 
1104
- return deepmerge__default["default"](
1105
- {
1106
- eslintConfigs: [],
1107
- nextSteps: [{
1108
- summary: 'Add packages to your new monorepo',
1109
- description: 'Leverage [@form8ion/add-package-to-monorepo](https://npm.im/@form8ion/add-package-to-monorepo)'
1110
- + ' to scaffold new packages into your new monorepo'
1111
- }]
1112
- },
1113
- results
1114
- );
1058
+ return {
1059
+ eslintConfigs: [],
1060
+ nextSteps: [{
1061
+ summary: 'Add packages to your new monorepo',
1062
+ description: 'Leverage [@form8ion/add-package-to-monorepo](https://npm.im/@form8ion/add-package-to-monorepo)'
1063
+ + ' to scaffold new packages into your new monorepo'
1064
+ }]
1065
+ };
1115
1066
  }
1116
1067
 
1117
1068
  const defaultBuildDirectory = 'bin';
@@ -1159,12 +1110,8 @@ async function scaffoldProjectType ({
1159
1110
  packageName,
1160
1111
  packageManager,
1161
1112
  visibility,
1162
- applicationTypes,
1163
- packageTypes,
1164
1113
  packageBundlers,
1165
- monorepoTypes,
1166
1114
  scope,
1167
- tests,
1168
1115
  vcs,
1169
1116
  decisions,
1170
1117
  dialect,
@@ -1179,28 +1126,18 @@ async function scaffoldProjectType ({
1179
1126
  packageManager,
1180
1127
  visibility,
1181
1128
  scope,
1182
- packageTypes,
1183
1129
  packageBundlers,
1184
- tests,
1185
1130
  vcs,
1186
1131
  decisions,
1187
1132
  dialect,
1188
1133
  publishRegistry
1189
1134
  });
1190
1135
  case javascriptCore.projectTypes.APPLICATION:
1191
- return scaffoldApplicationType({
1192
- projectRoot,
1193
- projectName,
1194
- packageName,
1195
- packageManager,
1196
- applicationTypes,
1197
- tests,
1198
- decisions
1199
- });
1136
+ return scaffoldApplicationType({projectRoot});
1200
1137
  case javascriptCore.projectTypes.CLI:
1201
1138
  return scaffoldCliType({packageName, visibility, projectRoot, dialect, publishRegistry});
1202
1139
  case javascriptCore.projectTypes.MONOREPO:
1203
- return scaffoldMonorepoType({monorepoTypes, projectRoot, packageManager, decisions});
1140
+ return scaffoldMonorepoType({projectRoot});
1204
1141
  case 'Other':
1205
1142
  return {
1206
1143
  eslintConfigs: []
@@ -1210,6 +1147,43 @@ async function scaffoldProjectType ({
1210
1147
  }
1211
1148
  }
1212
1149
 
1150
+ async function chooseProjectTypePlugin ({types, projectType, decisions}) {
1151
+ if (!Object.keys(types).length) return 'Other';
1152
+
1153
+ const answers = await overridablePrompts.prompt([{
1154
+ name: questionNames$1.PROJECT_TYPE_CHOICE,
1155
+ type: 'list',
1156
+ message: `What type of ${projectType} is this?`,
1157
+ choices: [...Object.keys(types), new overridablePrompts.Separator(), 'Other']
1158
+ }], decisions);
1159
+
1160
+ return answers[questionNames$1.PROJECT_TYPE_CHOICE];
1161
+ }
1162
+
1163
+ async function scaffoldProjectTypePlugin ({
1164
+ projectRoot,
1165
+ projectType,
1166
+ projectName,
1167
+ packageName,
1168
+ packageManager,
1169
+ scope,
1170
+ tests,
1171
+ decisions,
1172
+ plugins
1173
+ }) {
1174
+ const pluginsForProjectType = plugins[projectType];
1175
+
1176
+ if (!pluginsForProjectType) return {};
1177
+
1178
+ const chosenType = await chooseProjectTypePlugin({types: pluginsForProjectType, decisions, projectType});
1179
+
1180
+ return javascriptCore.scaffoldChoice(
1181
+ pluginsForProjectType,
1182
+ chosenType,
1183
+ {projectRoot, projectName, packageName, packageManager, scope, tests}
1184
+ );
1185
+ }
1186
+
1213
1187
  async function scaffoldTesting ({
1214
1188
  projectRoot,
1215
1189
  visibility,
@@ -1513,7 +1487,22 @@ async function scaffolder (options) {
1513
1487
  {buildDirectory: `./${projectTypeResults.buildDirectory}`, projectRoot, projectName, nodeVersion}
1514
1488
  ),
1515
1489
  javascriptCore.scaffoldChoice(ciServices, ci, {projectRoot, vcs, visibility, projectType, projectName, nodeVersion, tests}),
1516
- commitConventionPlugin.scaffold({projectRoot, projectType, configs, pathWithinParent})
1490
+ commitConventionPlugin.scaffold({projectRoot, projectType, configs, pathWithinParent}),
1491
+ scaffoldProjectTypePlugin({
1492
+ projectRoot,
1493
+ projectType,
1494
+ projectName,
1495
+ packageName,
1496
+ packageManager,
1497
+ scope,
1498
+ tests,
1499
+ decisions,
1500
+ plugins: {
1501
+ [javascriptCore.projectTypes.PACKAGE]: packageTypes,
1502
+ [javascriptCore.projectTypes.APPLICATION]: applicationTypes,
1503
+ [javascriptCore.projectTypes.MONOREPO]: monorepoTypes
1504
+ }
1505
+ })
1517
1506
  ])),
1518
1507
  projectTypeResults,
1519
1508
  verificationResults,