@form8ion/javascript 7.0.2 → 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.mjs CHANGED
@@ -793,19 +793,6 @@ function buildPackageName (projectName, scope) {
793
793
  throw new Error(`The package name ${name} is invalid:${EOL}\t* ${errors.join(`${EOL}\t* `)}`);
794
794
  }
795
795
 
796
- async function chooseApplicationType ({types, projectType, decisions}) {
797
- if (!Object.keys(types).length) return 'Other';
798
-
799
- const answers = await prompt$1([{
800
- name: questionNames$1.PROJECT_TYPE_CHOICE,
801
- type: 'list',
802
- message: `What type of ${projectType} is this?`,
803
- choices: [...Object.keys(types), new Separator(), 'Other']
804
- }], decisions);
805
-
806
- return answers[questionNames$1.PROJECT_TYPE_CHOICE];
807
- }
808
-
809
796
  function getInstallationCommand(packageManager) {
810
797
  if (packageManagers.NPM === packageManager) return 'npm install';
811
798
  if (packageManagers.YARN === packageManager) return 'yarn add';
@@ -943,9 +930,7 @@ async function scaffoldPackageType ({
943
930
  packageManager,
944
931
  visibility,
945
932
  scope,
946
- packageTypes,
947
933
  packageBundlers,
948
- tests,
949
934
  decisions,
950
935
  dialect,
951
936
  publishRegistry
@@ -990,13 +975,6 @@ async function scaffoldPackageType ({
990
975
  })
991
976
  ]);
992
977
 
993
- const chosenType = await chooseApplicationType({types: packageTypes, projectType: 'package', decisions});
994
- const results = await scaffoldChoice(
995
- packageTypes,
996
- chosenType,
997
- {projectRoot, projectName, packageName, tests, scope}
998
- );
999
-
1000
978
  return deepmerge.all([
1001
979
  {
1002
980
  documentation: scaffoldPackageDocumentation({packageName, visibility, scope, packageManager}),
@@ -1008,73 +986,47 @@ async function scaffoldPackageType ({
1008
986
  scripts: {},
1009
987
  badges: defineBadges(packageName, visibility)
1010
988
  },
1011
- detailsForBuild,
1012
- results
989
+ detailsForBuild
1013
990
  ]);
1014
991
  }
1015
992
 
1016
- const defaultBuildDirectory$1 = 'lib';
993
+ const defaultBuildDirectory$1 = 'public';
1017
994
 
1018
- async function scaffoldApplicationType ({
1019
- applicationTypes,
1020
- projectRoot,
1021
- projectName,
1022
- packageName,
1023
- packageManager,
1024
- tests,
1025
- decisions
1026
- }) {
995
+ async function scaffoldApplicationType ({projectRoot}) {
1027
996
  info('Scaffolding Application Details');
1028
997
 
1029
- const [chosenType] = await Promise.all([
1030
- chooseApplicationType({types: applicationTypes, projectType: 'application', decisions}),
1031
- mergeIntoExistingPackageJson({projectRoot, config: {private: true}})
1032
- ]);
1033
-
1034
- const results = await scaffoldChoice(
1035
- applicationTypes,
1036
- chosenType,
1037
- {projectRoot, projectName, packageName, packageManager, tests}
1038
- );
998
+ await mergeIntoExistingPackageJson({projectRoot, config: {private: true}});
1039
999
 
1040
- const buildDirectory = results.buildDirectory || defaultBuildDirectory$1;
1000
+ const buildDirectory = defaultBuildDirectory$1;
1041
1001
 
1042
- return deepmerge(
1043
- {
1044
- scripts: {
1045
- clean: `rimraf ./${buildDirectory}`,
1046
- start: `node ./${buildDirectory}/index.js`,
1047
- prebuild: 'run-s clean'
1048
- },
1049
- dependencies: [],
1050
- devDependencies: ['rimraf'],
1051
- vcsIgnore: {files: ['.env'], directories: [`/${buildDirectory}/`]},
1052
- buildDirectory,
1053
- eslintConfigs: [],
1054
- nextSteps: []
1002
+ return {
1003
+ scripts: {
1004
+ clean: `rimraf ./${buildDirectory}`,
1005
+ start: `node ./${buildDirectory}/index.js`,
1006
+ prebuild: 'run-s clean'
1055
1007
  },
1056
- results
1057
- );
1008
+ dependencies: [],
1009
+ devDependencies: ['rimraf'],
1010
+ vcsIgnore: {files: ['.env'], directories: [`/${buildDirectory}/`]},
1011
+ buildDirectory,
1012
+ eslintConfigs: [],
1013
+ nextSteps: []
1014
+ };
1058
1015
  }
1059
1016
 
1060
- async function scaffoldMonorepoType ({monorepoTypes, projectRoot, packageManager, decisions}) {
1017
+ async function scaffoldMonorepoType ({projectRoot}) {
1061
1018
  info('Scaffolding Monorepo Details');
1062
1019
 
1063
- const chosenType = await chooseApplicationType({types: monorepoTypes, projectType: projectTypes.MONOREPO, decisions});
1064
- const results = await scaffoldChoice(monorepoTypes, chosenType, {projectRoot, packageManager});
1020
+ await mergeIntoExistingPackageJson({projectRoot, config: {private: true}});
1065
1021
 
1066
- return deepmerge(
1067
- {
1068
- eslintConfigs: [],
1069
- packageProperties: {private: true},
1070
- nextSteps: [{
1071
- summary: 'Add packages to your new monorepo',
1072
- description: 'Leverage [@form8ion/add-package-to-monorepo](https://npm.im/@form8ion/add-package-to-monorepo)'
1073
- + ' to scaffold new packages into your new monorepo'
1074
- }]
1075
- },
1076
- results
1077
- );
1022
+ return {
1023
+ eslintConfigs: [],
1024
+ nextSteps: [{
1025
+ summary: 'Add packages to your new monorepo',
1026
+ description: 'Leverage [@form8ion/add-package-to-monorepo](https://npm.im/@form8ion/add-package-to-monorepo)'
1027
+ + ' to scaffold new packages into your new monorepo'
1028
+ }]
1029
+ };
1078
1030
  }
1079
1031
 
1080
1032
  const defaultBuildDirectory = 'bin';
@@ -1122,12 +1074,8 @@ async function scaffoldProjectType ({
1122
1074
  packageName,
1123
1075
  packageManager,
1124
1076
  visibility,
1125
- applicationTypes,
1126
- packageTypes,
1127
1077
  packageBundlers,
1128
- monorepoTypes,
1129
1078
  scope,
1130
- tests,
1131
1079
  vcs,
1132
1080
  decisions,
1133
1081
  dialect,
@@ -1142,28 +1090,18 @@ async function scaffoldProjectType ({
1142
1090
  packageManager,
1143
1091
  visibility,
1144
1092
  scope,
1145
- packageTypes,
1146
1093
  packageBundlers,
1147
- tests,
1148
1094
  vcs,
1149
1095
  decisions,
1150
1096
  dialect,
1151
1097
  publishRegistry
1152
1098
  });
1153
1099
  case projectTypes.APPLICATION:
1154
- return scaffoldApplicationType({
1155
- projectRoot,
1156
- projectName,
1157
- packageName,
1158
- packageManager,
1159
- applicationTypes,
1160
- tests,
1161
- decisions
1162
- });
1100
+ return scaffoldApplicationType({projectRoot});
1163
1101
  case projectTypes.CLI:
1164
1102
  return scaffoldCliType({packageName, visibility, projectRoot, dialect, publishRegistry});
1165
1103
  case projectTypes.MONOREPO:
1166
- return scaffoldMonorepoType({monorepoTypes, projectRoot, packageManager, decisions});
1104
+ return scaffoldMonorepoType({projectRoot});
1167
1105
  case 'Other':
1168
1106
  return {
1169
1107
  eslintConfigs: []
@@ -1173,6 +1111,43 @@ async function scaffoldProjectType ({
1173
1111
  }
1174
1112
  }
1175
1113
 
1114
+ async function chooseProjectTypePlugin ({types, projectType, decisions}) {
1115
+ if (!Object.keys(types).length) return 'Other';
1116
+
1117
+ const answers = await prompt$1([{
1118
+ name: questionNames$1.PROJECT_TYPE_CHOICE,
1119
+ type: 'list',
1120
+ message: `What type of ${projectType} is this?`,
1121
+ choices: [...Object.keys(types), new Separator(), 'Other']
1122
+ }], decisions);
1123
+
1124
+ return answers[questionNames$1.PROJECT_TYPE_CHOICE];
1125
+ }
1126
+
1127
+ async function scaffoldProjectTypePlugin ({
1128
+ projectRoot,
1129
+ projectType,
1130
+ projectName,
1131
+ packageName,
1132
+ packageManager,
1133
+ scope,
1134
+ tests,
1135
+ decisions,
1136
+ plugins
1137
+ }) {
1138
+ const pluginsForProjectType = plugins[projectType];
1139
+
1140
+ if (!pluginsForProjectType) return {};
1141
+
1142
+ const chosenType = await chooseProjectTypePlugin({types: pluginsForProjectType, decisions, projectType});
1143
+
1144
+ return scaffoldChoice(
1145
+ pluginsForProjectType,
1146
+ chosenType,
1147
+ {projectRoot, projectName, packageName, packageManager, scope, tests}
1148
+ );
1149
+ }
1150
+
1176
1151
  async function scaffoldTesting ({
1177
1152
  projectRoot,
1178
1153
  visibility,
@@ -1476,7 +1451,22 @@ async function scaffolder (options) {
1476
1451
  {buildDirectory: `./${projectTypeResults.buildDirectory}`, projectRoot, projectName, nodeVersion}
1477
1452
  ),
1478
1453
  scaffoldChoice(ciServices, ci, {projectRoot, vcs, visibility, projectType, projectName, nodeVersion, tests}),
1479
- scaffold$5({projectRoot, projectType, configs, pathWithinParent})
1454
+ scaffold$5({projectRoot, projectType, configs, pathWithinParent}),
1455
+ scaffoldProjectTypePlugin({
1456
+ projectRoot,
1457
+ projectType,
1458
+ projectName,
1459
+ packageName,
1460
+ packageManager,
1461
+ scope,
1462
+ tests,
1463
+ decisions,
1464
+ plugins: {
1465
+ [projectTypes.PACKAGE]: packageTypes,
1466
+ [projectTypes.APPLICATION]: applicationTypes,
1467
+ [projectTypes.MONOREPO]: monorepoTypes
1468
+ }
1469
+ })
1480
1470
  ])),
1481
1471
  projectTypeResults,
1482
1472
  verificationResults,