@form8ion/javascript 7.0.3 → 7.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/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,73 +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});
1056
+ await javascriptCore.mergeIntoExistingPackageJson({projectRoot, config: {private: true}});
1101
1057
 
1102
- return deepmerge__default["default"](
1103
- {
1104
- eslintConfigs: [],
1105
- packageProperties: {private: true},
1106
- nextSteps: [{
1107
- summary: 'Add packages to your new monorepo',
1108
- description: 'Leverage [@form8ion/add-package-to-monorepo](https://npm.im/@form8ion/add-package-to-monorepo)'
1109
- + ' to scaffold new packages into your new monorepo'
1110
- }]
1111
- },
1112
- results
1113
- );
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
+ };
1114
1066
  }
1115
1067
 
1116
1068
  const defaultBuildDirectory = 'bin';
@@ -1158,12 +1110,8 @@ async function scaffoldProjectType ({
1158
1110
  packageName,
1159
1111
  packageManager,
1160
1112
  visibility,
1161
- applicationTypes,
1162
- packageTypes,
1163
1113
  packageBundlers,
1164
- monorepoTypes,
1165
1114
  scope,
1166
- tests,
1167
1115
  vcs,
1168
1116
  decisions,
1169
1117
  dialect,
@@ -1178,28 +1126,18 @@ async function scaffoldProjectType ({
1178
1126
  packageManager,
1179
1127
  visibility,
1180
1128
  scope,
1181
- packageTypes,
1182
1129
  packageBundlers,
1183
- tests,
1184
1130
  vcs,
1185
1131
  decisions,
1186
1132
  dialect,
1187
1133
  publishRegistry
1188
1134
  });
1189
1135
  case javascriptCore.projectTypes.APPLICATION:
1190
- return scaffoldApplicationType({
1191
- projectRoot,
1192
- projectName,
1193
- packageName,
1194
- packageManager,
1195
- applicationTypes,
1196
- tests,
1197
- decisions
1198
- });
1136
+ return scaffoldApplicationType({projectRoot});
1199
1137
  case javascriptCore.projectTypes.CLI:
1200
1138
  return scaffoldCliType({packageName, visibility, projectRoot, dialect, publishRegistry});
1201
1139
  case javascriptCore.projectTypes.MONOREPO:
1202
- return scaffoldMonorepoType({monorepoTypes, projectRoot, packageManager, decisions});
1140
+ return scaffoldMonorepoType({projectRoot});
1203
1141
  case 'Other':
1204
1142
  return {
1205
1143
  eslintConfigs: []
@@ -1209,6 +1147,43 @@ async function scaffoldProjectType ({
1209
1147
  }
1210
1148
  }
1211
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
+
1212
1187
  async function scaffoldTesting ({
1213
1188
  projectRoot,
1214
1189
  visibility,
@@ -1482,7 +1457,7 @@ async function scaffolder (options) {
1482
1457
  pathWithinParent
1483
1458
  })
1484
1459
  ]);
1485
- const [nodeVersion, npmResults, dialectResults, codeStyleResults] = await Promise.all([
1460
+ const [nodeVersion, npmResults, dialectResults, codeStyleResults, projectTypePluginResults] = await Promise.all([
1486
1461
  scaffoldNodeVersion({projectRoot, nodeVersionCategory}),
1487
1462
  scaffoldNpmConfig({projectType, projectRoot, registries}),
1488
1463
  scaffoldDialect({
@@ -1502,6 +1477,21 @@ async function scaffolder (options) {
1502
1477
  configureLinting,
1503
1478
  buildDirectory: projectTypeResults.buildDirectory,
1504
1479
  eslint: verificationResults.eslint
1480
+ }),
1481
+ scaffoldProjectTypePlugin({
1482
+ projectRoot,
1483
+ projectType,
1484
+ projectName,
1485
+ packageName,
1486
+ packageManager,
1487
+ scope,
1488
+ tests,
1489
+ decisions,
1490
+ plugins: {
1491
+ [javascriptCore.projectTypes.PACKAGE]: packageTypes,
1492
+ [javascriptCore.projectTypes.APPLICATION]: applicationTypes,
1493
+ [javascriptCore.projectTypes.MONOREPO]: monorepoTypes
1494
+ }
1505
1495
  })
1506
1496
  ]);
1507
1497
  const mergedContributions = deepmerge__default["default"].all([
@@ -1514,6 +1504,7 @@ async function scaffolder (options) {
1514
1504
  javascriptCore.scaffoldChoice(ciServices, ci, {projectRoot, vcs, visibility, projectType, projectName, nodeVersion, tests}),
1515
1505
  commitConventionPlugin.scaffold({projectRoot, projectType, configs, pathWithinParent})
1516
1506
  ])),
1507
+ projectTypePluginResults,
1517
1508
  projectTypeResults,
1518
1509
  verificationResults,
1519
1510
  codeStyleResults,