@form8ion/javascript 7.0.4 → 7.2.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,44 @@ 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
+ dialect,
1171
+ tests,
1172
+ decisions,
1173
+ plugins
1174
+ }) {
1175
+ const pluginsForProjectType = plugins[projectType];
1176
+
1177
+ if (!pluginsForProjectType) return {};
1178
+
1179
+ const chosenType = await chooseProjectTypePlugin({types: pluginsForProjectType, decisions, projectType});
1180
+
1181
+ return javascriptCore.scaffoldChoice(
1182
+ pluginsForProjectType,
1183
+ chosenType,
1184
+ {projectRoot, projectName, packageName, packageManager, scope, tests, dialect}
1185
+ );
1186
+ }
1187
+
1213
1188
  async function scaffoldTesting ({
1214
1189
  projectRoot,
1215
1190
  visibility,
@@ -1483,7 +1458,7 @@ async function scaffolder (options) {
1483
1458
  pathWithinParent
1484
1459
  })
1485
1460
  ]);
1486
- const [nodeVersion, npmResults, dialectResults, codeStyleResults] = await Promise.all([
1461
+ const [nodeVersion, npmResults, dialectResults, codeStyleResults, projectTypePluginResults] = await Promise.all([
1487
1462
  scaffoldNodeVersion({projectRoot, nodeVersionCategory}),
1488
1463
  scaffoldNpmConfig({projectType, projectRoot, registries}),
1489
1464
  scaffoldDialect({
@@ -1503,6 +1478,22 @@ async function scaffolder (options) {
1503
1478
  configureLinting,
1504
1479
  buildDirectory: projectTypeResults.buildDirectory,
1505
1480
  eslint: verificationResults.eslint
1481
+ }),
1482
+ scaffoldProjectTypePlugin({
1483
+ projectRoot,
1484
+ projectType,
1485
+ projectName,
1486
+ packageName,
1487
+ packageManager,
1488
+ scope,
1489
+ dialect,
1490
+ tests,
1491
+ decisions,
1492
+ plugins: {
1493
+ [javascriptCore.projectTypes.PACKAGE]: packageTypes,
1494
+ [javascriptCore.projectTypes.APPLICATION]: applicationTypes,
1495
+ [javascriptCore.projectTypes.MONOREPO]: monorepoTypes
1496
+ }
1506
1497
  })
1507
1498
  ]);
1508
1499
  const mergedContributions = deepmerge__default["default"].all([
@@ -1515,6 +1506,7 @@ async function scaffolder (options) {
1515
1506
  javascriptCore.scaffoldChoice(ciServices, ci, {projectRoot, vcs, visibility, projectType, projectName, nodeVersion, tests}),
1516
1507
  commitConventionPlugin.scaffold({projectRoot, projectType, configs, pathWithinParent})
1517
1508
  ])),
1509
+ projectTypePluginResults,
1518
1510
  projectTypeResults,
1519
1511
  verificationResults,
1520
1512
  codeStyleResults,