@form8ion/javascript 7.2.2 → 7.2.5
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 +142 -95
- package/lib/index.js.map +1 -1
- package/lib/index.mjs +150 -103
- package/lib/index.mjs.map +1 -1
- package/package.json +4 -4
package/lib/index.js
CHANGED
|
@@ -191,6 +191,87 @@ async function scaffoldUnitTesting ({projectRoot, frameworks, decisions, visibil
|
|
|
191
191
|
]);
|
|
192
192
|
}
|
|
193
193
|
|
|
194
|
+
async function scaffoldEslint ({config, projectRoot, additionalConfiguration}) {
|
|
195
|
+
const {scope} = config;
|
|
196
|
+
const {ignore} = additionalConfiguration;
|
|
197
|
+
|
|
198
|
+
return eslint.scaffold({scope, projectRoot, ignore});
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
function lifter$1 ({results: {buildDirectory, eslintConfigs, eslint: eslint$1}, projectRoot}) {
|
|
202
|
+
return eslint.lift({projectRoot, configs: [...eslintConfigs || [], ...eslint$1?.configs || []], buildDirectory});
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
async function scaffoldRemark ({config, projectRoot, projectType, vcs, dialect}) {
|
|
206
|
+
await configFile.write({
|
|
207
|
+
format: core.fileTypes.JSON,
|
|
208
|
+
path: projectRoot,
|
|
209
|
+
name: 'remark',
|
|
210
|
+
config: {
|
|
211
|
+
settings: {
|
|
212
|
+
listItemIndent: 1,
|
|
213
|
+
emphasis: '_',
|
|
214
|
+
strong: '_',
|
|
215
|
+
bullet: '*',
|
|
216
|
+
incrementListMarker: false
|
|
217
|
+
},
|
|
218
|
+
plugins: [
|
|
219
|
+
config,
|
|
220
|
+
['remark-toc', {tight: true}],
|
|
221
|
+
...javascriptCore.projectTypes.PACKAGE === projectType ? [['remark-usage', {heading: 'example'}]] : [],
|
|
222
|
+
...!vcs ? [['validate-links', {repository: false}]] : []
|
|
223
|
+
]
|
|
224
|
+
}
|
|
225
|
+
});
|
|
226
|
+
|
|
227
|
+
return deepmerge__default["default"](
|
|
228
|
+
{
|
|
229
|
+
devDependencies: [config, 'remark-cli', 'remark-toc'],
|
|
230
|
+
scripts: {
|
|
231
|
+
'lint:md': 'remark . --frail',
|
|
232
|
+
'generate:md': 'remark . --output'
|
|
233
|
+
}
|
|
234
|
+
},
|
|
235
|
+
{
|
|
236
|
+
...javascriptCore.projectTypes.PACKAGE === projectType && {
|
|
237
|
+
devDependencies: ['remark-usage'],
|
|
238
|
+
...javascriptCore.dialects.COMMON_JS !== dialect && {scripts: {'pregenerate:md': 'run-s build'}}
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
);
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
async function scaffoldCodeStyle ({
|
|
245
|
+
projectRoot,
|
|
246
|
+
projectType,
|
|
247
|
+
dialect,
|
|
248
|
+
configs,
|
|
249
|
+
vcs,
|
|
250
|
+
configureLinting,
|
|
251
|
+
eslint
|
|
252
|
+
}) {
|
|
253
|
+
return deepmerge__default["default"].all(await Promise.all([
|
|
254
|
+
configs.eslint
|
|
255
|
+
&& configureLinting
|
|
256
|
+
&& scaffoldEslint({projectRoot, config: configs.eslint, additionalConfiguration: eslint}),
|
|
257
|
+
scaffoldRemark({
|
|
258
|
+
projectRoot,
|
|
259
|
+
projectType,
|
|
260
|
+
dialect,
|
|
261
|
+
vcs,
|
|
262
|
+
config: configs.remark || '@form8ion/remark-lint-preset'
|
|
263
|
+
}),
|
|
264
|
+
prettier.scaffold({projectRoot, config: configs.prettier})
|
|
265
|
+
].filter(Boolean)));
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
var codeStylePlugin = /*#__PURE__*/Object.freeze({
|
|
269
|
+
__proto__: null,
|
|
270
|
+
scaffold: scaffoldCodeStyle,
|
|
271
|
+
lift: lifter$1,
|
|
272
|
+
test: eslint.test
|
|
273
|
+
});
|
|
274
|
+
|
|
194
275
|
async function test$1({projectRoot}) {
|
|
195
276
|
const {engines} = JSON.parse(await fs.promises.readFile(`${projectRoot}/package.json`, 'utf8'));
|
|
196
277
|
|
|
@@ -238,8 +319,8 @@ async function scaffoldBabel ({projectRoot, preset}) {
|
|
|
238
319
|
};
|
|
239
320
|
}
|
|
240
321
|
|
|
241
|
-
async function lifter ({
|
|
242
|
-
await addIgnore({ignore: buildDirectory, projectRoot});
|
|
322
|
+
async function lifter ({results, projectRoot}) {
|
|
323
|
+
await addIgnore({ignore: results.buildDirectory, projectRoot});
|
|
243
324
|
|
|
244
325
|
return {};
|
|
245
326
|
}
|
|
@@ -390,6 +471,52 @@ async function scaffoldPackage ({
|
|
|
390
471
|
return {homepage: packageData.homepage};
|
|
391
472
|
}
|
|
392
473
|
|
|
474
|
+
const details = {
|
|
475
|
+
[javascriptCore.packageManagers.NPM]: {
|
|
476
|
+
installationCommand: 'install',
|
|
477
|
+
installationFlags: {
|
|
478
|
+
[javascriptCore.DEV_DEPENDENCY_TYPE]: `save-${javascriptCore.DEV_DEPENDENCY_TYPE}`,
|
|
479
|
+
[javascriptCore.PROD_DEPENDENCY_TYPE]: `save-${javascriptCore.PROD_DEPENDENCY_TYPE}`,
|
|
480
|
+
exact: 'save-exact'
|
|
481
|
+
}
|
|
482
|
+
},
|
|
483
|
+
[javascriptCore.packageManagers.YARN]: {
|
|
484
|
+
installationCommand: 'add',
|
|
485
|
+
installationFlags: {
|
|
486
|
+
[javascriptCore.DEV_DEPENDENCY_TYPE]: javascriptCore.DEV_DEPENDENCY_TYPE,
|
|
487
|
+
[javascriptCore.PROD_DEPENDENCY_TYPE]: javascriptCore.PROD_DEPENDENCY_TYPE,
|
|
488
|
+
exact: 'exact'
|
|
489
|
+
}
|
|
490
|
+
}
|
|
491
|
+
};
|
|
492
|
+
|
|
493
|
+
function getInstallationCommandFor(manager) {
|
|
494
|
+
return details[manager].installationCommand;
|
|
495
|
+
}
|
|
496
|
+
|
|
497
|
+
function getDependencyTypeFlag(manager, type) {
|
|
498
|
+
return details[manager].installationFlags[type];
|
|
499
|
+
}
|
|
500
|
+
|
|
501
|
+
function getExactFlag(manager) {
|
|
502
|
+
return details[manager].installationFlags.exact;
|
|
503
|
+
}
|
|
504
|
+
|
|
505
|
+
async function install$1 (dependencies, dependenciesType, projectRoot, packageManager = javascriptCore.packageManagers.NPM) {
|
|
506
|
+
if (dependencies.length) {
|
|
507
|
+
cliMessages.info(`Installing ${dependenciesType} dependencies`, {level: 'secondary'});
|
|
508
|
+
|
|
509
|
+
await execa__default["default"](
|
|
510
|
+
`. ~/.nvm/nvm.sh && nvm use && ${packageManager} ${
|
|
511
|
+
getInstallationCommandFor(packageManager)
|
|
512
|
+
} ${[...new Set(dependencies)].join(' ')} --${getDependencyTypeFlag(packageManager, dependenciesType)}${
|
|
513
|
+
javascriptCore.DEV_DEPENDENCY_TYPE === dependenciesType ? ` --${getExactFlag(packageManager)}` : ''
|
|
514
|
+
}`,
|
|
515
|
+
{shell: true, cwd: projectRoot}
|
|
516
|
+
);
|
|
517
|
+
} else cliMessages.warn(`No ${dependenciesType} dependencies to install`);
|
|
518
|
+
}
|
|
519
|
+
|
|
393
520
|
async function liftPackage ({
|
|
394
521
|
projectRoot,
|
|
395
522
|
scripts,
|
|
@@ -420,8 +547,8 @@ async function liftPackage ({
|
|
|
420
547
|
cliMessages.info('Installing dependencies');
|
|
421
548
|
|
|
422
549
|
try {
|
|
423
|
-
await
|
|
424
|
-
await
|
|
550
|
+
await install$1(dependencies || [], javascriptCore.PROD_DEPENDENCY_TYPE, projectRoot, packageManager);
|
|
551
|
+
await install$1([...devDependencies || []], javascriptCore.DEV_DEPENDENCY_TYPE, projectRoot, packageManager);
|
|
425
552
|
} catch (e) {
|
|
426
553
|
cliMessages.error('Failed to install dependencies');
|
|
427
554
|
}
|
|
@@ -447,28 +574,23 @@ async function lift ({projectRoot, vcs, results}) {
|
|
|
447
574
|
const {
|
|
448
575
|
scripts,
|
|
449
576
|
tags,
|
|
450
|
-
eslintConfigs,
|
|
451
|
-
eslint: eslint$1,
|
|
452
577
|
dependencies,
|
|
453
578
|
devDependencies,
|
|
454
|
-
packageManager: manager
|
|
455
|
-
buildDirectory
|
|
579
|
+
packageManager: manager
|
|
456
580
|
} = results;
|
|
457
581
|
|
|
458
582
|
const packageManager = await resolvePackageManager({projectRoot, packageManager: manager});
|
|
459
583
|
|
|
460
|
-
const eslintResults = await eslint.lift({projectRoot, configs: [...eslintConfigs || [], ...eslint$1?.configs || []]});
|
|
461
584
|
const enhancerResults = await core.applyEnhancers({
|
|
462
585
|
results,
|
|
463
|
-
enhancers: [huskyPlugin__namespace, enginesEnhancer, coveragePlugin, commitConventionPlugin__namespace, dialects],
|
|
464
|
-
options: {packageManager, projectRoot, vcs
|
|
586
|
+
enhancers: [huskyPlugin__namespace, enginesEnhancer, coveragePlugin, commitConventionPlugin__namespace, dialects, codeStylePlugin],
|
|
587
|
+
options: {packageManager, projectRoot, vcs}
|
|
465
588
|
});
|
|
466
589
|
|
|
467
590
|
await liftPackage(
|
|
468
591
|
deepmerge__default["default"].all([
|
|
469
592
|
{projectRoot, scripts, tags, dependencies, devDependencies, packageManager},
|
|
470
|
-
enhancerResults
|
|
471
|
-
eslintResults
|
|
593
|
+
enhancerResults
|
|
472
594
|
])
|
|
473
595
|
);
|
|
474
596
|
|
|
@@ -1281,15 +1403,17 @@ async function scaffoldLockfileLint ({projectRoot, packageManager, registries})
|
|
|
1281
1403
|
);
|
|
1282
1404
|
}
|
|
1283
1405
|
|
|
1284
|
-
await
|
|
1285
|
-
|
|
1286
|
-
JSON
|
|
1406
|
+
await configFile.write({
|
|
1407
|
+
name: 'lockfile-lint',
|
|
1408
|
+
format: core.fileTypes.JSON,
|
|
1409
|
+
path: projectRoot,
|
|
1410
|
+
config: {
|
|
1287
1411
|
path: determineLockfilePathFor(packageManager),
|
|
1288
1412
|
type: packageManager,
|
|
1289
1413
|
'validate-https': true,
|
|
1290
1414
|
'allowed-hosts': buildAllowedHostsList({packageManager, registries})
|
|
1291
|
-
}
|
|
1292
|
-
);
|
|
1415
|
+
}
|
|
1416
|
+
});
|
|
1293
1417
|
|
|
1294
1418
|
return {
|
|
1295
1419
|
devDependencies: ['lockfile-lint'],
|
|
@@ -1334,82 +1458,6 @@ async function scaffoldVerification({
|
|
|
1334
1458
|
return deepmerge__default["default"].all([testingResults, lintingResults, huskyResults]);
|
|
1335
1459
|
}
|
|
1336
1460
|
|
|
1337
|
-
async function scaffoldEslint ({config, projectRoot, buildDirectory, additionalConfiguration}) {
|
|
1338
|
-
const {scope} = config;
|
|
1339
|
-
const {ignore} = additionalConfiguration;
|
|
1340
|
-
const ignores = deepmerge__default["default"](ignore, {directories: [`/${buildDirectory}/`]});
|
|
1341
|
-
|
|
1342
|
-
return eslint.scaffold({scope, projectRoot, ignore: {directories: ignores.directories}});
|
|
1343
|
-
}
|
|
1344
|
-
|
|
1345
|
-
async function scaffoldRemark ({config, projectRoot, projectType, vcs, dialect}) {
|
|
1346
|
-
await configFile.write({
|
|
1347
|
-
format: core.fileTypes.JSON,
|
|
1348
|
-
path: projectRoot,
|
|
1349
|
-
name: 'remark',
|
|
1350
|
-
config: {
|
|
1351
|
-
settings: {
|
|
1352
|
-
listItemIndent: 1,
|
|
1353
|
-
emphasis: '_',
|
|
1354
|
-
strong: '_',
|
|
1355
|
-
bullet: '*',
|
|
1356
|
-
incrementListMarker: false
|
|
1357
|
-
},
|
|
1358
|
-
plugins: [
|
|
1359
|
-
config,
|
|
1360
|
-
['remark-toc', {tight: true}],
|
|
1361
|
-
...javascriptCore.projectTypes.PACKAGE === projectType ? [['remark-usage', {heading: 'example'}]] : [],
|
|
1362
|
-
...!vcs ? [['validate-links', {repository: false}]] : []
|
|
1363
|
-
]
|
|
1364
|
-
}
|
|
1365
|
-
});
|
|
1366
|
-
|
|
1367
|
-
return deepmerge__default["default"](
|
|
1368
|
-
{
|
|
1369
|
-
devDependencies: [config, 'remark-cli', 'remark-toc'],
|
|
1370
|
-
scripts: {
|
|
1371
|
-
'lint:md': 'remark . --frail',
|
|
1372
|
-
'generate:md': 'remark . --output'
|
|
1373
|
-
}
|
|
1374
|
-
},
|
|
1375
|
-
{
|
|
1376
|
-
...javascriptCore.projectTypes.PACKAGE === projectType && {
|
|
1377
|
-
devDependencies: ['remark-usage'],
|
|
1378
|
-
...javascriptCore.dialects.COMMON_JS !== dialect && {scripts: {'pregenerate:md': 'run-s build'}}
|
|
1379
|
-
}
|
|
1380
|
-
}
|
|
1381
|
-
);
|
|
1382
|
-
}
|
|
1383
|
-
|
|
1384
|
-
async function scaffoldCodeStyle ({
|
|
1385
|
-
projectRoot,
|
|
1386
|
-
projectType,
|
|
1387
|
-
dialect,
|
|
1388
|
-
configs,
|
|
1389
|
-
vcs,
|
|
1390
|
-
configureLinting,
|
|
1391
|
-
buildDirectory,
|
|
1392
|
-
eslint
|
|
1393
|
-
}) {
|
|
1394
|
-
return deepmerge__default["default"].all(await Promise.all([
|
|
1395
|
-
configs.eslint && configureLinting
|
|
1396
|
-
&& scaffoldEslint({
|
|
1397
|
-
projectRoot,
|
|
1398
|
-
config: configs.eslint,
|
|
1399
|
-
buildDirectory,
|
|
1400
|
-
additionalConfiguration: eslint
|
|
1401
|
-
}),
|
|
1402
|
-
scaffoldRemark({
|
|
1403
|
-
projectRoot,
|
|
1404
|
-
projectType,
|
|
1405
|
-
dialect,
|
|
1406
|
-
vcs,
|
|
1407
|
-
config: configs.remark || '@form8ion/remark-lint-preset'
|
|
1408
|
-
}),
|
|
1409
|
-
prettier.scaffold({projectRoot, config: configs.prettier})
|
|
1410
|
-
].filter(Boolean)));
|
|
1411
|
-
}
|
|
1412
|
-
|
|
1413
1461
|
async function scaffolder (options) {
|
|
1414
1462
|
cliMessages.info('Initializing JavaScript project');
|
|
1415
1463
|
|
|
@@ -1510,7 +1558,6 @@ async function scaffolder (options) {
|
|
|
1510
1558
|
configs,
|
|
1511
1559
|
vcs,
|
|
1512
1560
|
configureLinting,
|
|
1513
|
-
buildDirectory: projectTypeResults.buildDirectory,
|
|
1514
1561
|
eslint: verificationResults.eslint
|
|
1515
1562
|
}),
|
|
1516
1563
|
scaffoldProjectTypePlugin({
|