@form8ion/javascript 7.2.0 → 7.2.3
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 +145 -65
- package/lib/index.js.map +1 -1
- package/lib/index.mjs +161 -81
- package/lib/index.mjs.map +1 -1
- package/package.json +7 -7
package/lib/index.js
CHANGED
|
@@ -213,6 +213,90 @@ var enginesEnhancer = /*#__PURE__*/Object.freeze({
|
|
|
213
213
|
lift: lift$1
|
|
214
214
|
});
|
|
215
215
|
|
|
216
|
+
function write ({projectRoot, config}) {
|
|
217
|
+
return configFile.write({path: projectRoot, name: 'babel', format: core.fileTypes.JSON, config});
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
async function addIgnore ({projectRoot, ignore}) {
|
|
221
|
+
if (ignore) {
|
|
222
|
+
const existingConfig = JSON.parse(await fs.promises.readFile(`${projectRoot}/.babelrc.json`, 'utf-8'));
|
|
223
|
+
|
|
224
|
+
await write({projectRoot, config: {...existingConfig, ignore: [`./${ignore}/`]}});
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
async function scaffoldBabel ({projectRoot, preset}) {
|
|
229
|
+
if (!preset) {
|
|
230
|
+
throw new Error('No babel preset provided. Cannot configure babel transpilation');
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
await write({projectRoot, config: {presets: [preset.name]}});
|
|
234
|
+
|
|
235
|
+
return {
|
|
236
|
+
devDependencies: ['@babel/register', preset.packageName],
|
|
237
|
+
eslint: {}
|
|
238
|
+
};
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
async function lifter ({buildDirectory, projectRoot}) {
|
|
242
|
+
await addIgnore({ignore: buildDirectory, projectRoot});
|
|
243
|
+
|
|
244
|
+
return {};
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
function predicate ({projectRoot}) {
|
|
248
|
+
return core.fileExists(`${projectRoot}/.babelrc.json`);
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
async function scaffoldTypescript ({config, projectType, projectRoot, testFilenamePattern}) {
|
|
252
|
+
const eslintConfigs = ['typescript'];
|
|
253
|
+
const shareableTsConfigPackage = `${config.scope}/tsconfig`;
|
|
254
|
+
|
|
255
|
+
await core.writeConfigFile({
|
|
256
|
+
path: projectRoot,
|
|
257
|
+
name: 'tsconfig',
|
|
258
|
+
format: core.fileTypes.JSON,
|
|
259
|
+
config: {
|
|
260
|
+
$schema: 'https://json.schemastore.org/tsconfig',
|
|
261
|
+
extends: shareableTsConfigPackage,
|
|
262
|
+
compilerOptions: {
|
|
263
|
+
rootDir: 'src',
|
|
264
|
+
...javascriptCore.projectTypes.PACKAGE === projectType && {
|
|
265
|
+
outDir: 'lib',
|
|
266
|
+
declaration: true
|
|
267
|
+
}
|
|
268
|
+
},
|
|
269
|
+
include: ['src/**/*.ts'],
|
|
270
|
+
...testFilenamePattern && {exclude: [testFilenamePattern]}
|
|
271
|
+
}
|
|
272
|
+
});
|
|
273
|
+
|
|
274
|
+
return {
|
|
275
|
+
eslint: {configs: eslintConfigs},
|
|
276
|
+
eslintConfigs,
|
|
277
|
+
devDependencies: ['typescript', shareableTsConfigPackage],
|
|
278
|
+
vcsIgnore: {files: ['tsconfig.tsbuildinfo']}
|
|
279
|
+
};
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
function scaffoldDialect ({dialect, projectType, projectRoot, configs, testFilenamePattern}) {
|
|
283
|
+
switch (dialect) {
|
|
284
|
+
case javascriptCore.dialects.BABEL:
|
|
285
|
+
return scaffoldBabel({preset: configs.babelPreset, projectRoot});
|
|
286
|
+
case javascriptCore.dialects.TYPESCRIPT:
|
|
287
|
+
return scaffoldTypescript({config: configs.typescript, projectType, projectRoot, testFilenamePattern});
|
|
288
|
+
default:
|
|
289
|
+
return {};
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
var dialects = /*#__PURE__*/Object.freeze({
|
|
294
|
+
__proto__: null,
|
|
295
|
+
scaffold: scaffoldDialect,
|
|
296
|
+
test: predicate,
|
|
297
|
+
lift: lifter
|
|
298
|
+
});
|
|
299
|
+
|
|
216
300
|
function scaffoldScripts () {
|
|
217
301
|
return {};
|
|
218
302
|
}
|
|
@@ -306,6 +390,52 @@ async function scaffoldPackage ({
|
|
|
306
390
|
return {homepage: packageData.homepage};
|
|
307
391
|
}
|
|
308
392
|
|
|
393
|
+
const details = {
|
|
394
|
+
[javascriptCore.packageManagers.NPM]: {
|
|
395
|
+
installationCommand: 'install',
|
|
396
|
+
installationFlags: {
|
|
397
|
+
[javascriptCore.DEV_DEPENDENCY_TYPE]: `save-${javascriptCore.DEV_DEPENDENCY_TYPE}`,
|
|
398
|
+
[javascriptCore.PROD_DEPENDENCY_TYPE]: `save-${javascriptCore.PROD_DEPENDENCY_TYPE}`,
|
|
399
|
+
exact: 'save-exact'
|
|
400
|
+
}
|
|
401
|
+
},
|
|
402
|
+
[javascriptCore.packageManagers.YARN]: {
|
|
403
|
+
installationCommand: 'add',
|
|
404
|
+
installationFlags: {
|
|
405
|
+
[javascriptCore.DEV_DEPENDENCY_TYPE]: javascriptCore.DEV_DEPENDENCY_TYPE,
|
|
406
|
+
[javascriptCore.PROD_DEPENDENCY_TYPE]: javascriptCore.PROD_DEPENDENCY_TYPE,
|
|
407
|
+
exact: 'exact'
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
};
|
|
411
|
+
|
|
412
|
+
function getInstallationCommandFor(manager) {
|
|
413
|
+
return details[manager].installationCommand;
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
function getDependencyTypeFlag(manager, type) {
|
|
417
|
+
return details[manager].installationFlags[type];
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
function getExactFlag(manager) {
|
|
421
|
+
return details[manager].installationFlags.exact;
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
async function install$1 (dependencies, dependenciesType, projectRoot, packageManager = javascriptCore.packageManagers.NPM) {
|
|
425
|
+
if (dependencies.length) {
|
|
426
|
+
cliMessages.info(`Installing ${dependenciesType} dependencies`, {level: 'secondary'});
|
|
427
|
+
|
|
428
|
+
await execa__default["default"](
|
|
429
|
+
`. ~/.nvm/nvm.sh && nvm use && ${packageManager} ${
|
|
430
|
+
getInstallationCommandFor(packageManager)
|
|
431
|
+
} ${[...new Set(dependencies)].join(' ')} --${getDependencyTypeFlag(packageManager, dependenciesType)}${
|
|
432
|
+
javascriptCore.DEV_DEPENDENCY_TYPE === dependenciesType ? ` --${getExactFlag(packageManager)}` : ''
|
|
433
|
+
}`,
|
|
434
|
+
{shell: true, cwd: projectRoot}
|
|
435
|
+
);
|
|
436
|
+
} else cliMessages.warn(`No ${dependenciesType} dependencies to install`);
|
|
437
|
+
}
|
|
438
|
+
|
|
309
439
|
async function liftPackage ({
|
|
310
440
|
projectRoot,
|
|
311
441
|
scripts,
|
|
@@ -336,8 +466,8 @@ async function liftPackage ({
|
|
|
336
466
|
cliMessages.info('Installing dependencies');
|
|
337
467
|
|
|
338
468
|
try {
|
|
339
|
-
await
|
|
340
|
-
await
|
|
469
|
+
await install$1(dependencies || [], javascriptCore.PROD_DEPENDENCY_TYPE, projectRoot, packageManager);
|
|
470
|
+
await install$1([...devDependencies || []], javascriptCore.DEV_DEPENDENCY_TYPE, projectRoot, packageManager);
|
|
341
471
|
} catch (e) {
|
|
342
472
|
cliMessages.error('Failed to install dependencies');
|
|
343
473
|
}
|
|
@@ -360,15 +490,24 @@ async function resolvePackageManager ({projectRoot, packageManager}) {
|
|
|
360
490
|
async function lift ({projectRoot, vcs, results}) {
|
|
361
491
|
cliMessages.info('Lifting JavaScript-specific details');
|
|
362
492
|
|
|
363
|
-
const {
|
|
493
|
+
const {
|
|
494
|
+
scripts,
|
|
495
|
+
tags,
|
|
496
|
+
eslintConfigs,
|
|
497
|
+
eslint: eslint$1,
|
|
498
|
+
dependencies,
|
|
499
|
+
devDependencies,
|
|
500
|
+
packageManager: manager,
|
|
501
|
+
buildDirectory
|
|
502
|
+
} = results;
|
|
364
503
|
|
|
365
504
|
const packageManager = await resolvePackageManager({projectRoot, packageManager: manager});
|
|
366
505
|
|
|
367
506
|
const eslintResults = await eslint.lift({projectRoot, configs: [...eslintConfigs || [], ...eslint$1?.configs || []]});
|
|
368
507
|
const enhancerResults = await core.applyEnhancers({
|
|
369
508
|
results,
|
|
370
|
-
enhancers: [huskyPlugin__namespace, enginesEnhancer, coveragePlugin, commitConventionPlugin__namespace],
|
|
371
|
-
options: {packageManager, projectRoot, vcs}
|
|
509
|
+
enhancers: [huskyPlugin__namespace, enginesEnhancer, coveragePlugin, commitConventionPlugin__namespace, dialects],
|
|
510
|
+
options: {packageManager, projectRoot, vcs, buildDirectory}
|
|
372
511
|
});
|
|
373
512
|
|
|
374
513
|
await liftPackage(
|
|
@@ -656,64 +795,6 @@ async function prompt(
|
|
|
656
795
|
};
|
|
657
796
|
}
|
|
658
797
|
|
|
659
|
-
async function scaffoldBabel ({projectRoot, preset, buildDirectory}) {
|
|
660
|
-
if (!preset) {
|
|
661
|
-
throw new Error('No babel preset provided. Cannot configure babel transpilation');
|
|
662
|
-
}
|
|
663
|
-
|
|
664
|
-
await configFile.write({
|
|
665
|
-
path: projectRoot,
|
|
666
|
-
name: 'babel',
|
|
667
|
-
format: core.fileTypes.JSON,
|
|
668
|
-
config: {presets: [preset.name], ignore: [`./${buildDirectory}/`]}
|
|
669
|
-
});
|
|
670
|
-
|
|
671
|
-
return {
|
|
672
|
-
devDependencies: ['@babel/register', preset.packageName],
|
|
673
|
-
eslint: {}
|
|
674
|
-
};
|
|
675
|
-
}
|
|
676
|
-
|
|
677
|
-
async function scaffoldTypescript ({config, projectType, projectRoot, testFilenamePattern}) {
|
|
678
|
-
const eslintConfigs = ['typescript'];
|
|
679
|
-
const shareableTsConfigPackage = `${config.scope}/tsconfig`;
|
|
680
|
-
|
|
681
|
-
await fs.promises.writeFile(
|
|
682
|
-
`${projectRoot}/tsconfig.json`,
|
|
683
|
-
JSON.stringify({
|
|
684
|
-
$schema: 'https://json.schemastore.org/tsconfig',
|
|
685
|
-
extends: shareableTsConfigPackage,
|
|
686
|
-
compilerOptions: {
|
|
687
|
-
rootDir: 'src',
|
|
688
|
-
...javascriptCore.projectTypes.PACKAGE === projectType && {
|
|
689
|
-
outDir: 'lib',
|
|
690
|
-
declaration: true
|
|
691
|
-
}
|
|
692
|
-
},
|
|
693
|
-
include: ['src/**/*.ts'],
|
|
694
|
-
...testFilenamePattern && {exclude: [testFilenamePattern]}
|
|
695
|
-
})
|
|
696
|
-
);
|
|
697
|
-
|
|
698
|
-
return {
|
|
699
|
-
eslint: {configs: eslintConfigs},
|
|
700
|
-
eslintConfigs,
|
|
701
|
-
devDependencies: ['typescript', shareableTsConfigPackage],
|
|
702
|
-
vcsIgnore: {files: ['tsconfig.tsbuildinfo']}
|
|
703
|
-
};
|
|
704
|
-
}
|
|
705
|
-
|
|
706
|
-
function scaffoldDialect ({dialect, projectType, projectRoot, configs, buildDirectory, testFilenamePattern}) {
|
|
707
|
-
switch (dialect) {
|
|
708
|
-
case javascriptCore.dialects.BABEL:
|
|
709
|
-
return scaffoldBabel({preset: configs.babelPreset, projectRoot, buildDirectory});
|
|
710
|
-
case javascriptCore.dialects.TYPESCRIPT:
|
|
711
|
-
return scaffoldTypescript({config: configs.typescript, projectType, projectRoot, testFilenamePattern});
|
|
712
|
-
default:
|
|
713
|
-
return {};
|
|
714
|
-
}
|
|
715
|
-
}
|
|
716
|
-
|
|
717
798
|
function projectWillNotBeConsumed(projectType) {
|
|
718
799
|
return javascriptCore.projectTypes.APPLICATION === projectType || javascriptCore.projectTypes.CLI === projectType;
|
|
719
800
|
}
|
|
@@ -1466,7 +1547,6 @@ async function scaffolder (options) {
|
|
|
1466
1547
|
configs,
|
|
1467
1548
|
projectRoot,
|
|
1468
1549
|
projectType,
|
|
1469
|
-
buildDirectory: projectTypeResults.buildDirectory,
|
|
1470
1550
|
testFilenamePattern: verificationResults.testFilenamePattern
|
|
1471
1551
|
}),
|
|
1472
1552
|
scaffoldCodeStyle({
|
|
@@ -1506,8 +1586,8 @@ async function scaffolder (options) {
|
|
|
1506
1586
|
javascriptCore.scaffoldChoice(ciServices, ci, {projectRoot, vcs, visibility, projectType, projectName, nodeVersion, tests}),
|
|
1507
1587
|
commitConventionPlugin.scaffold({projectRoot, projectType, configs, pathWithinParent})
|
|
1508
1588
|
])),
|
|
1509
|
-
projectTypePluginResults,
|
|
1510
1589
|
projectTypeResults,
|
|
1590
|
+
projectTypePluginResults,
|
|
1511
1591
|
verificationResults,
|
|
1512
1592
|
codeStyleResults,
|
|
1513
1593
|
npmResults,
|