@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.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,74 +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});
1065
-
1066
1020
  await mergeIntoExistingPackageJson({projectRoot, config: {private: true}});
1067
1021
 
1068
- return deepmerge(
1069
- {
1070
- eslintConfigs: [],
1071
- nextSteps: [{
1072
- summary: 'Add packages to your new monorepo',
1073
- description: 'Leverage [@form8ion/add-package-to-monorepo](https://npm.im/@form8ion/add-package-to-monorepo)'
1074
- + ' to scaffold new packages into your new monorepo'
1075
- }]
1076
- },
1077
- results
1078
- );
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
+ };
1079
1030
  }
1080
1031
 
1081
1032
  const defaultBuildDirectory = 'bin';
@@ -1123,12 +1074,8 @@ async function scaffoldProjectType ({
1123
1074
  packageName,
1124
1075
  packageManager,
1125
1076
  visibility,
1126
- applicationTypes,
1127
- packageTypes,
1128
1077
  packageBundlers,
1129
- monorepoTypes,
1130
1078
  scope,
1131
- tests,
1132
1079
  vcs,
1133
1080
  decisions,
1134
1081
  dialect,
@@ -1143,28 +1090,18 @@ async function scaffoldProjectType ({
1143
1090
  packageManager,
1144
1091
  visibility,
1145
1092
  scope,
1146
- packageTypes,
1147
1093
  packageBundlers,
1148
- tests,
1149
1094
  vcs,
1150
1095
  decisions,
1151
1096
  dialect,
1152
1097
  publishRegistry
1153
1098
  });
1154
1099
  case projectTypes.APPLICATION:
1155
- return scaffoldApplicationType({
1156
- projectRoot,
1157
- projectName,
1158
- packageName,
1159
- packageManager,
1160
- applicationTypes,
1161
- tests,
1162
- decisions
1163
- });
1100
+ return scaffoldApplicationType({projectRoot});
1164
1101
  case projectTypes.CLI:
1165
1102
  return scaffoldCliType({packageName, visibility, projectRoot, dialect, publishRegistry});
1166
1103
  case projectTypes.MONOREPO:
1167
- return scaffoldMonorepoType({monorepoTypes, projectRoot, packageManager, decisions});
1104
+ return scaffoldMonorepoType({projectRoot});
1168
1105
  case 'Other':
1169
1106
  return {
1170
1107
  eslintConfigs: []
@@ -1174,6 +1111,44 @@ async function scaffoldProjectType ({
1174
1111
  }
1175
1112
  }
1176
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
+ dialect,
1135
+ tests,
1136
+ decisions,
1137
+ plugins
1138
+ }) {
1139
+ const pluginsForProjectType = plugins[projectType];
1140
+
1141
+ if (!pluginsForProjectType) return {};
1142
+
1143
+ const chosenType = await chooseProjectTypePlugin({types: pluginsForProjectType, decisions, projectType});
1144
+
1145
+ return scaffoldChoice(
1146
+ pluginsForProjectType,
1147
+ chosenType,
1148
+ {projectRoot, projectName, packageName, packageManager, scope, tests, dialect}
1149
+ );
1150
+ }
1151
+
1177
1152
  async function scaffoldTesting ({
1178
1153
  projectRoot,
1179
1154
  visibility,
@@ -1447,7 +1422,7 @@ async function scaffolder (options) {
1447
1422
  pathWithinParent
1448
1423
  })
1449
1424
  ]);
1450
- const [nodeVersion, npmResults, dialectResults, codeStyleResults] = await Promise.all([
1425
+ const [nodeVersion, npmResults, dialectResults, codeStyleResults, projectTypePluginResults] = await Promise.all([
1451
1426
  scaffoldNodeVersion({projectRoot, nodeVersionCategory}),
1452
1427
  scaffoldNpmConfig({projectType, projectRoot, registries}),
1453
1428
  scaffoldDialect({
@@ -1467,6 +1442,22 @@ async function scaffolder (options) {
1467
1442
  configureLinting,
1468
1443
  buildDirectory: projectTypeResults.buildDirectory,
1469
1444
  eslint: verificationResults.eslint
1445
+ }),
1446
+ scaffoldProjectTypePlugin({
1447
+ projectRoot,
1448
+ projectType,
1449
+ projectName,
1450
+ packageName,
1451
+ packageManager,
1452
+ scope,
1453
+ dialect,
1454
+ tests,
1455
+ decisions,
1456
+ plugins: {
1457
+ [projectTypes.PACKAGE]: packageTypes,
1458
+ [projectTypes.APPLICATION]: applicationTypes,
1459
+ [projectTypes.MONOREPO]: monorepoTypes
1460
+ }
1470
1461
  })
1471
1462
  ]);
1472
1463
  const mergedContributions = deepmerge.all([
@@ -1479,6 +1470,7 @@ async function scaffolder (options) {
1479
1470
  scaffoldChoice(ciServices, ci, {projectRoot, vcs, visibility, projectType, projectName, nodeVersion, tests}),
1480
1471
  scaffold$5({projectRoot, projectType, configs, pathWithinParent})
1481
1472
  ])),
1473
+ projectTypePluginResults,
1482
1474
  projectTypeResults,
1483
1475
  verificationResults,
1484
1476
  codeStyleResults,