@form8ion/javascript 12.2.0 → 12.4.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 +70 -27
- package/lib/index.js.map +1 -1
- package/lib/index.mjs +85 -42
- package/lib/index.mjs.map +1 -1
- package/package.json +9 -8
package/lib/index.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { questionNames as questionNames$2, questions } from '@travi/language-scaffolder-prompts';
|
|
2
2
|
import deepmerge from 'deepmerge';
|
|
3
3
|
import { fileTypes, fileExists, validateOptions, applyEnhancers, writeConfigFile } from '@form8ion/core';
|
|
4
|
-
import { scaffoldChoice, projectTypes as projectTypes$1, packageManagers, mergeIntoExistingPackageJson, dialects as dialects$1, writePackageJson, DEV_DEPENDENCY_TYPE, PROD_DEPENDENCY_TYPE } from '@form8ion/javascript-core';
|
|
4
|
+
import { scaffoldChoice, projectTypes as projectTypes$1, packageManagers as packageManagers$1, mergeIntoExistingPackageJson, dialects as dialects$1, writePackageJson, DEV_DEPENDENCY_TYPE, PROD_DEPENDENCY_TYPE } from '@form8ion/javascript-core';
|
|
5
5
|
import joi from 'joi';
|
|
6
6
|
import { prompt as prompt$1, Separator } from '@form8ion/overridable-prompts';
|
|
7
7
|
import { scaffold, lift as lift$3 } from '@form8ion/codecov';
|
|
@@ -22,11 +22,11 @@ import { resolve } from 'path';
|
|
|
22
22
|
import filedirname from 'filedirname';
|
|
23
23
|
import * as huskyPlugin from '@form8ion/husky';
|
|
24
24
|
import { scaffold as scaffold$3 } from '@form8ion/husky';
|
|
25
|
+
import { promises as promises$1 } from 'node:fs';
|
|
25
26
|
import { stringify, parse } from 'ini';
|
|
26
27
|
import { scaffold as scaffold$2 } from '@form8ion/prettier';
|
|
27
28
|
import * as eslintPlugin from '@form8ion/eslint';
|
|
28
29
|
import { scaffold as scaffold$1, test as test$1 } from '@form8ion/eslint';
|
|
29
|
-
import { promises as promises$1 } from 'node:fs';
|
|
30
30
|
import sortProperties from 'sort-object-keys';
|
|
31
31
|
|
|
32
32
|
const questionNames$1 = {
|
|
@@ -214,7 +214,7 @@ async function scaffoldCodeStyle ({
|
|
|
214
214
|
].filter(Boolean)));
|
|
215
215
|
}
|
|
216
216
|
|
|
217
|
-
function lifter$
|
|
217
|
+
function lifter$4 (options) {
|
|
218
218
|
return applyEnhancers({options, enhancers: [eslintPlugin]});
|
|
219
219
|
}
|
|
220
220
|
|
|
@@ -225,7 +225,7 @@ function tester$3 (options) {
|
|
|
225
225
|
var codeStylePlugin = /*#__PURE__*/Object.freeze({
|
|
226
226
|
__proto__: null,
|
|
227
227
|
scaffold: scaffoldCodeStyle,
|
|
228
|
-
lift: lifter$
|
|
228
|
+
lift: lifter$4,
|
|
229
229
|
test: tester$3
|
|
230
230
|
});
|
|
231
231
|
|
|
@@ -260,7 +260,7 @@ function tester$2 ({projectRoot}) {
|
|
|
260
260
|
return fileExists(`${projectRoot}/.npmrc`);
|
|
261
261
|
}
|
|
262
262
|
|
|
263
|
-
async function lifter$
|
|
263
|
+
async function lifter$3 ({projectRoot}) {
|
|
264
264
|
const pathToConfig = `${projectRoot}/.npmrc`;
|
|
265
265
|
|
|
266
266
|
const {
|
|
@@ -278,7 +278,7 @@ var npmConfigPlugin = /*#__PURE__*/Object.freeze({
|
|
|
278
278
|
__proto__: null,
|
|
279
279
|
scaffold: scaffoldNpmConfig,
|
|
280
280
|
test: tester$2,
|
|
281
|
-
lift: lifter$
|
|
281
|
+
lift: lifter$3
|
|
282
282
|
});
|
|
283
283
|
|
|
284
284
|
async function test({projectRoot}) {
|
|
@@ -302,22 +302,22 @@ var enginesEnhancer = /*#__PURE__*/Object.freeze({
|
|
|
302
302
|
});
|
|
303
303
|
|
|
304
304
|
function buildDocumentationCommand (packageManager) {
|
|
305
|
-
if (packageManagers.NPM === packageManager) return 'npm run generate:md';
|
|
306
|
-
if (packageManagers.YARN === packageManager) return 'yarn generate:md';
|
|
305
|
+
if (packageManagers$1.NPM === packageManager) return 'npm run generate:md';
|
|
306
|
+
if (packageManagers$1.YARN === packageManager) return 'yarn generate:md';
|
|
307
307
|
|
|
308
308
|
throw new Error(
|
|
309
309
|
`The ${packageManager} package manager is currently not supported. `
|
|
310
|
-
+ `Only ${Object.values(packageManagers).join(' and ')} are currently supported.`
|
|
310
|
+
+ `Only ${Object.values(packageManagers$1).join(' and ')} are currently supported.`
|
|
311
311
|
);
|
|
312
312
|
}
|
|
313
313
|
|
|
314
314
|
function getInstallationCommand(packageManager) {
|
|
315
|
-
if (packageManagers.NPM === packageManager) return 'npm install';
|
|
316
|
-
if (packageManagers.YARN === packageManager) return 'yarn add';
|
|
315
|
+
if (packageManagers$1.NPM === packageManager) return 'npm install';
|
|
316
|
+
if (packageManagers$1.YARN === packageManager) return 'yarn add';
|
|
317
317
|
|
|
318
318
|
throw new Error(
|
|
319
319
|
`The ${packageManager} package manager is currently not supported. `
|
|
320
|
-
+ `Only ${Object.values(packageManagers).join(' and ')} are currently supported.`
|
|
320
|
+
+ `Only ${Object.values(packageManagers$1).join(' and ')} are currently supported.`
|
|
321
321
|
);
|
|
322
322
|
}
|
|
323
323
|
|
|
@@ -751,7 +751,7 @@ function vcsRepositoryHostedOnGithub(vcs) {
|
|
|
751
751
|
return vcs && 'github' === vcs.host;
|
|
752
752
|
}
|
|
753
753
|
|
|
754
|
-
async function lifter$
|
|
754
|
+
async function lifter$2 ({projectRoot, packageDetails, vcs}) {
|
|
755
755
|
if (await isPackage({projectRoot, packageDetails})) return liftPackage$1({projectRoot, packageDetails});
|
|
756
756
|
if (await isCli({projectRoot, packageDetails})) return liftCli({projectRoot, packageDetails});
|
|
757
757
|
|
|
@@ -770,7 +770,7 @@ var projectTypes = /*#__PURE__*/Object.freeze({
|
|
|
770
770
|
__proto__: null,
|
|
771
771
|
scaffold: scaffoldProjectType,
|
|
772
772
|
test: tester$1,
|
|
773
|
-
lift: lifter$
|
|
773
|
+
lift: lifter$2
|
|
774
774
|
});
|
|
775
775
|
|
|
776
776
|
function write ({projectRoot, config}) {
|
|
@@ -798,7 +798,7 @@ async function scaffoldBabel ({projectRoot, preset}) {
|
|
|
798
798
|
};
|
|
799
799
|
}
|
|
800
800
|
|
|
801
|
-
async function lifter ({results, projectRoot}) {
|
|
801
|
+
async function lifter$1 ({results, projectRoot}) {
|
|
802
802
|
await addIgnore({ignore: results.buildDirectory, projectRoot});
|
|
803
803
|
|
|
804
804
|
return {};
|
|
@@ -852,7 +852,7 @@ var dialects = /*#__PURE__*/Object.freeze({
|
|
|
852
852
|
__proto__: null,
|
|
853
853
|
scaffold: scaffoldDialect,
|
|
854
854
|
test: predicate,
|
|
855
|
-
lift: lifter
|
|
855
|
+
lift: lifter$1
|
|
856
856
|
});
|
|
857
857
|
|
|
858
858
|
function buildPackageDetails ({
|
|
@@ -945,7 +945,7 @@ function defineVcsHostDetails (vcs, pathWithinParent) {
|
|
|
945
945
|
}
|
|
946
946
|
|
|
947
947
|
const details = {
|
|
948
|
-
[packageManagers.NPM]: {
|
|
948
|
+
[packageManagers$1.NPM]: {
|
|
949
949
|
installationCommand: 'install',
|
|
950
950
|
installationFlags: {
|
|
951
951
|
[DEV_DEPENDENCY_TYPE]: `save-${DEV_DEPENDENCY_TYPE}`,
|
|
@@ -953,7 +953,7 @@ const details = {
|
|
|
953
953
|
exact: 'save-exact'
|
|
954
954
|
}
|
|
955
955
|
},
|
|
956
|
-
[packageManagers.YARN]: {
|
|
956
|
+
[packageManagers$1.YARN]: {
|
|
957
957
|
installationCommand: 'add',
|
|
958
958
|
installationFlags: {
|
|
959
959
|
[DEV_DEPENDENCY_TYPE]: DEV_DEPENDENCY_TYPE,
|
|
@@ -975,7 +975,7 @@ function getExactFlag(manager) {
|
|
|
975
975
|
return details[manager].installationFlags.exact;
|
|
976
976
|
}
|
|
977
977
|
|
|
978
|
-
async function install$1 (dependencies, dependenciesType, projectRoot, packageManager = packageManagers.NPM) {
|
|
978
|
+
async function install$1 (dependencies, dependenciesType, projectRoot, packageManager = packageManagers$1.NPM) {
|
|
979
979
|
if (dependencies.length) {
|
|
980
980
|
info(`Installing ${dependenciesType} dependencies`, {level: 'secondary'});
|
|
981
981
|
|
|
@@ -1057,20 +1057,64 @@ async function liftPackage ({
|
|
|
1057
1057
|
}
|
|
1058
1058
|
}
|
|
1059
1059
|
|
|
1060
|
+
function determineLockfilePathFor (packageManager) {
|
|
1061
|
+
const lockfilePaths = {
|
|
1062
|
+
[packageManagers$1.NPM]: 'package-lock.json',
|
|
1063
|
+
[packageManagers$1.YARN]: 'yarn.lock'
|
|
1064
|
+
};
|
|
1065
|
+
|
|
1066
|
+
return lockfilePaths[packageManager];
|
|
1067
|
+
}
|
|
1068
|
+
|
|
1069
|
+
function npmIsUsed ({projectRoot}) {
|
|
1070
|
+
return fileExists(`${projectRoot}/${determineLockfilePathFor(packageManagers$1.NPM)}`);
|
|
1071
|
+
}
|
|
1072
|
+
|
|
1073
|
+
function yarnIsUsed ({projectRoot}) {
|
|
1074
|
+
return fileExists(`${projectRoot}/${determineLockfilePathFor(packageManagers$1.YARN)}`);
|
|
1075
|
+
}
|
|
1076
|
+
|
|
1077
|
+
async function jsPackageManagerIsUsed ({projectRoot}) {
|
|
1078
|
+
const [npmFound, yarnFound] = await Promise.all([
|
|
1079
|
+
npmIsUsed({projectRoot}),
|
|
1080
|
+
yarnIsUsed({projectRoot})
|
|
1081
|
+
]);
|
|
1082
|
+
|
|
1083
|
+
return npmFound || yarnFound;
|
|
1084
|
+
}
|
|
1085
|
+
|
|
1086
|
+
async function liftCorepack () {
|
|
1087
|
+
await execa('corepack', ['use', 'npm@latest']);
|
|
1088
|
+
}
|
|
1089
|
+
|
|
1090
|
+
async function lifter () {
|
|
1091
|
+
await liftCorepack();
|
|
1092
|
+
|
|
1093
|
+
return {};
|
|
1094
|
+
}
|
|
1095
|
+
|
|
1060
1096
|
async function resolvePackageManager ({projectRoot, packageManager}) {
|
|
1061
1097
|
if (packageManager) return packageManager;
|
|
1062
1098
|
|
|
1063
|
-
if (await
|
|
1064
|
-
return packageManagers.NPM;
|
|
1099
|
+
if (await npmIsUsed({projectRoot})) {
|
|
1100
|
+
return packageManagers$1.NPM;
|
|
1065
1101
|
}
|
|
1066
1102
|
|
|
1067
|
-
if (await
|
|
1068
|
-
return packageManagers.YARN;
|
|
1103
|
+
if (await yarnIsUsed({projectRoot})) {
|
|
1104
|
+
return packageManagers$1.YARN;
|
|
1069
1105
|
}
|
|
1070
1106
|
|
|
1071
1107
|
throw new Error('Package-manager could not be determined');
|
|
1072
1108
|
}
|
|
1073
1109
|
|
|
1110
|
+
var packageManagers = /*#__PURE__*/Object.freeze({
|
|
1111
|
+
__proto__: null,
|
|
1112
|
+
test: jsPackageManagerIsUsed,
|
|
1113
|
+
lift: lifter,
|
|
1114
|
+
determineCurrent: resolvePackageManager,
|
|
1115
|
+
defineLockfilePath: determineLockfilePathFor
|
|
1116
|
+
});
|
|
1117
|
+
|
|
1074
1118
|
async function lift ({projectRoot, vcs, results, pathWithinParent}) {
|
|
1075
1119
|
info('Lifting JavaScript-specific details');
|
|
1076
1120
|
|
|
@@ -1097,7 +1141,8 @@ async function lift ({projectRoot, vcs, results, pathWithinParent}) {
|
|
|
1097
1141
|
dialects,
|
|
1098
1142
|
codeStylePlugin,
|
|
1099
1143
|
npmConfigPlugin,
|
|
1100
|
-
projectTypes
|
|
1144
|
+
projectTypes,
|
|
1145
|
+
packageManagers
|
|
1101
1146
|
],
|
|
1102
1147
|
options: {packageManager, projectRoot, vcs, packageDetails: JSON.parse(packageContents)}
|
|
1103
1148
|
});
|
|
@@ -1326,8 +1371,8 @@ async function prompt(
|
|
|
1326
1371
|
name: questionNames$1.PACKAGE_MANAGER,
|
|
1327
1372
|
message: 'Which package manager will be used with this project?',
|
|
1328
1373
|
type: 'list',
|
|
1329
|
-
choices: Object.values(packageManagers),
|
|
1330
|
-
default: packageManagers.NPM
|
|
1374
|
+
choices: Object.values(packageManagers$1),
|
|
1375
|
+
default: packageManagers$1.NPM
|
|
1331
1376
|
},
|
|
1332
1377
|
{
|
|
1333
1378
|
name: questionNames$1.PROJECT_TYPE,
|
|
@@ -1441,13 +1486,17 @@ async function scaffoldNodeVersion ({projectRoot, nodeVersionCategory}) {
|
|
|
1441
1486
|
|
|
1442
1487
|
const version = await determineLatestVersionOf(nodeVersionCategory);
|
|
1443
1488
|
|
|
1444
|
-
await promises.writeFile(`${projectRoot}/.nvmrc`, version);
|
|
1489
|
+
await promises$1.writeFile(`${projectRoot}/.nvmrc`, version);
|
|
1445
1490
|
|
|
1446
1491
|
await install(nodeVersionCategory);
|
|
1447
1492
|
|
|
1448
1493
|
return version;
|
|
1449
1494
|
}
|
|
1450
1495
|
|
|
1496
|
+
function nvmIsUsed ({projectRoot}) {
|
|
1497
|
+
return fileExists(`${projectRoot}/.nvmrc`);
|
|
1498
|
+
}
|
|
1499
|
+
|
|
1451
1500
|
function buildBadgesDetails (contributors) {
|
|
1452
1501
|
return deepmerge.all(contributors).badges;
|
|
1453
1502
|
}
|
|
@@ -1540,16 +1589,7 @@ function buildAllowedHostsList ({packageManager, registries}) {
|
|
|
1540
1589
|
];
|
|
1541
1590
|
}
|
|
1542
1591
|
|
|
1543
|
-
const lockfileLintSupportedPackageManagers = [packageManagers.NPM, packageManagers.YARN];
|
|
1544
|
-
|
|
1545
|
-
function determineLockfilePathFor(packageManager) {
|
|
1546
|
-
const lockfilePaths = {
|
|
1547
|
-
[packageManagers.NPM]: 'package-lock.json',
|
|
1548
|
-
[packageManagers.YARN]: 'yarn.lock'
|
|
1549
|
-
};
|
|
1550
|
-
|
|
1551
|
-
return lockfilePaths[packageManager];
|
|
1552
|
-
}
|
|
1592
|
+
const lockfileLintSupportedPackageManagers = [packageManagers$1.NPM, packageManagers$1.YARN];
|
|
1553
1593
|
|
|
1554
1594
|
function lockfileLintSupports(packageManager) {
|
|
1555
1595
|
return lockfileLintSupportedPackageManagers.includes(packageManager);
|
|
@@ -1761,13 +1801,16 @@ async function scaffolder (options) {
|
|
|
1761
1801
|
}
|
|
1762
1802
|
|
|
1763
1803
|
async function tester ({projectRoot}) {
|
|
1764
|
-
const [
|
|
1765
|
-
|
|
1766
|
-
|
|
1767
|
-
fileExists(`${projectRoot}/yarn.lock`)
|
|
1804
|
+
const [nvmFound, jsPackageManagerFound] = await Promise.all([
|
|
1805
|
+
nvmIsUsed({projectRoot}),
|
|
1806
|
+
jsPackageManagerIsUsed({projectRoot})
|
|
1768
1807
|
]);
|
|
1769
1808
|
|
|
1770
|
-
|
|
1809
|
+
const jsProjectFound = nvmFound || jsPackageManagerFound;
|
|
1810
|
+
|
|
1811
|
+
if (jsProjectFound) info('JavaScript Project Detected');
|
|
1812
|
+
|
|
1813
|
+
return jsProjectFound;
|
|
1771
1814
|
}
|
|
1772
1815
|
|
|
1773
1816
|
const questionNames = {...questionNames$2, ...questionNames$1};
|