@form8ion/javascript 11.9.0 → 11.10.1
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 +74 -54
- package/lib/index.js.map +1 -1
- package/lib/index.mjs +75 -55
- package/lib/index.mjs.map +1 -1
- package/package.json +24 -24
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, writeConfigFile, applyEnhancers } from '@form8ion/core';
|
|
4
|
-
import { scaffoldChoice, projectTypes as projectTypes$1, packageManagers, dialects as dialects$1,
|
|
4
|
+
import { scaffoldChoice, projectTypes as projectTypes$1, packageManagers, 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';
|
|
@@ -342,10 +342,14 @@ run \`${buildDocumentationCommand(packageManager)}\` to inject the usage example
|
|
|
342
342
|
};
|
|
343
343
|
}
|
|
344
344
|
|
|
345
|
-
function
|
|
345
|
+
function determinePackageAccessLevelFromProjectVisibility ({projectVisibility}) {
|
|
346
|
+
return 'Public' === projectVisibility ? 'public' : 'restricted';
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
function defineBadges (packageName, accessLevel) {
|
|
346
350
|
return {
|
|
347
351
|
consumer: {
|
|
348
|
-
...'
|
|
352
|
+
...'public' === accessLevel && {
|
|
349
353
|
npm: {
|
|
350
354
|
img: `https://img.shields.io/npm/v/${packageName}?logo=npm`,
|
|
351
355
|
text: 'npm',
|
|
@@ -357,6 +361,55 @@ function defineBadges (packageName, visibility) {
|
|
|
357
361
|
};
|
|
358
362
|
}
|
|
359
363
|
|
|
364
|
+
function enhanceSlsa ({provenance}) {
|
|
365
|
+
if (provenance) {
|
|
366
|
+
return {
|
|
367
|
+
badges: {
|
|
368
|
+
status: {
|
|
369
|
+
slsa: {
|
|
370
|
+
img: 'https://slsa.dev/images/gh-badge-level2.svg',
|
|
371
|
+
url: 'https://slsa.dev',
|
|
372
|
+
text: 'SLSA Level 2'
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
};
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
return {};
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
async function liftProvenance ({projectRoot, packageDetails}) {
|
|
383
|
+
const {publishConfig: {access}} = packageDetails;
|
|
384
|
+
|
|
385
|
+
if ('public' === access) {
|
|
386
|
+
await mergeIntoExistingPackageJson({projectRoot, config: {publishConfig: {provenance: true}}});
|
|
387
|
+
|
|
388
|
+
return enhanceSlsa({provenance: true});
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
return {};
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
async function liftPublishable ({projectRoot, packageDetails}) {
|
|
395
|
+
const {name: packageName, publishConfig: {access: pacakgeAccessLevel}} = packageDetails;
|
|
396
|
+
|
|
397
|
+
return deepmerge(
|
|
398
|
+
await liftProvenance({packageDetails, projectRoot}),
|
|
399
|
+
{
|
|
400
|
+
devDependencies: ['publint'],
|
|
401
|
+
scripts: {'lint:publish': 'publint --strict'},
|
|
402
|
+
badges: defineBadges(packageName, pacakgeAccessLevel)
|
|
403
|
+
}
|
|
404
|
+
);
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
async function scaffoldPublishable ({packageName, packageAccessLevel}) {
|
|
408
|
+
return {
|
|
409
|
+
badges: await defineBadges(packageName, packageAccessLevel)
|
|
410
|
+
};
|
|
411
|
+
}
|
|
412
|
+
|
|
360
413
|
async function chooseBundler ({bundlers, decisions}) {
|
|
361
414
|
if (!Object.keys(bundlers).length) return 'Other';
|
|
362
415
|
|
|
@@ -467,7 +520,8 @@ async function scaffoldPackageType ({
|
|
|
467
520
|
}) {
|
|
468
521
|
info('Scaffolding Package Details');
|
|
469
522
|
|
|
470
|
-
const
|
|
523
|
+
const packageAccessLevel = determinePackageAccessLevelFromProjectVisibility({projectVisibility: visibility});
|
|
524
|
+
const [detailsForBuild, publishableResults] = await Promise.all([
|
|
471
525
|
buildDetails({
|
|
472
526
|
projectRoot,
|
|
473
527
|
projectName,
|
|
@@ -478,12 +532,13 @@ async function scaffoldPackageType ({
|
|
|
478
532
|
provideExample,
|
|
479
533
|
decisions
|
|
480
534
|
}),
|
|
535
|
+
scaffoldPublishable({packageName, packageAccessLevel}),
|
|
481
536
|
mergeIntoExistingPackageJson({
|
|
482
537
|
projectRoot,
|
|
483
538
|
config: {
|
|
484
539
|
files: ['example.js', ...dialects$1.COMMON_JS === dialect ? ['index.js'] : ['lib/']],
|
|
485
540
|
publishConfig: {
|
|
486
|
-
access:
|
|
541
|
+
access: packageAccessLevel,
|
|
487
542
|
...publishRegistry && {registry: publishRegistry}
|
|
488
543
|
},
|
|
489
544
|
sideEffects: false,
|
|
@@ -516,55 +571,18 @@ async function scaffoldPackageType ({
|
|
|
516
571
|
]);
|
|
517
572
|
|
|
518
573
|
return deepmerge.all([
|
|
574
|
+
publishableResults,
|
|
519
575
|
{
|
|
520
576
|
documentation: scaffoldPackageDocumentation({packageName, visibility, scope, packageManager, provideExample}),
|
|
521
577
|
nextSteps: [
|
|
522
578
|
{summary: 'Add the appropriate `save` flag to the installation instructions in the README'},
|
|
523
579
|
{summary: 'Publish pre-release versions to npm until package is stable enough to publish v1.0.0'}
|
|
524
|
-
]
|
|
525
|
-
badges: defineBadges(packageName, visibility)
|
|
580
|
+
]
|
|
526
581
|
},
|
|
527
582
|
detailsForBuild
|
|
528
583
|
]);
|
|
529
584
|
}
|
|
530
585
|
|
|
531
|
-
function enhanceSlsa ({provenance}) {
|
|
532
|
-
if (provenance) {
|
|
533
|
-
return {
|
|
534
|
-
badges: {
|
|
535
|
-
status: {
|
|
536
|
-
slsa: {
|
|
537
|
-
img: 'https://slsa.dev/images/gh-badge-level2.svg',
|
|
538
|
-
url: 'https://slsa.dev',
|
|
539
|
-
text: 'SLSA Level 2'
|
|
540
|
-
}
|
|
541
|
-
}
|
|
542
|
-
}
|
|
543
|
-
};
|
|
544
|
-
}
|
|
545
|
-
|
|
546
|
-
return {};
|
|
547
|
-
}
|
|
548
|
-
|
|
549
|
-
async function liftProvenance ({projectRoot, packageDetails}) {
|
|
550
|
-
const {publishConfig: {access}} = packageDetails;
|
|
551
|
-
|
|
552
|
-
if ('public' === access) {
|
|
553
|
-
await mergeIntoExistingPackageJson({projectRoot, config: {publishConfig: {provenance: true}}});
|
|
554
|
-
|
|
555
|
-
return enhanceSlsa({provenance: true});
|
|
556
|
-
}
|
|
557
|
-
|
|
558
|
-
return {};
|
|
559
|
-
}
|
|
560
|
-
|
|
561
|
-
async function liftPublishable ({projectRoot, packageDetails}) {
|
|
562
|
-
return deepmerge(
|
|
563
|
-
await liftProvenance({packageDetails, projectRoot}),
|
|
564
|
-
{devDependencies: ['publint'], scripts: {'lint:publish': 'publint --strict'}}
|
|
565
|
-
);
|
|
566
|
-
}
|
|
567
|
-
|
|
568
586
|
function liftPackage$1 ({projectRoot, packageDetails}) {
|
|
569
587
|
return liftPublishable({projectRoot, packageDetails});
|
|
570
588
|
}
|
|
@@ -613,22 +631,25 @@ async function scaffoldMonorepoType ({projectRoot}) {
|
|
|
613
631
|
const defaultBuildDirectory = 'bin';
|
|
614
632
|
|
|
615
633
|
async function scaffoldCliType ({packageName, visibility, projectRoot, dialect, publishRegistry}) {
|
|
616
|
-
const
|
|
634
|
+
const packageAccessLevel = determinePackageAccessLevelFromProjectVisibility({projectVisibility: visibility});
|
|
635
|
+
const [rollupResults, publishableResults] = await Promise.all([
|
|
617
636
|
scaffold$3({projectRoot, dialect, projectType: projectTypes$1.CLI}),
|
|
637
|
+
scaffoldPublishable({packageName, packageAccessLevel}),
|
|
618
638
|
mergeIntoExistingPackageJson({
|
|
619
639
|
projectRoot,
|
|
620
640
|
config: {
|
|
621
641
|
bin: {},
|
|
622
642
|
files: [`${defaultBuildDirectory}/`],
|
|
623
643
|
publishConfig: {
|
|
624
|
-
access:
|
|
644
|
+
access: packageAccessLevel,
|
|
625
645
|
...publishRegistry && {registry: publishRegistry}
|
|
626
646
|
}
|
|
627
647
|
}
|
|
628
648
|
})
|
|
629
649
|
]);
|
|
630
650
|
|
|
631
|
-
return deepmerge(
|
|
651
|
+
return deepmerge.all([
|
|
652
|
+
publishableResults,
|
|
632
653
|
rollupResults,
|
|
633
654
|
{
|
|
634
655
|
scripts: {
|
|
@@ -641,10 +662,9 @@ async function scaffoldCliType ({packageName, visibility, projectRoot, dialect,
|
|
|
641
662
|
devDependencies: ['rimraf'],
|
|
642
663
|
vcsIgnore: {files: [], directories: [`/${defaultBuildDirectory}/`]},
|
|
643
664
|
buildDirectory: defaultBuildDirectory,
|
|
644
|
-
badges: defineBadges(packageName, visibility),
|
|
645
665
|
nextSteps: []
|
|
646
666
|
}
|
|
647
|
-
);
|
|
667
|
+
]);
|
|
648
668
|
}
|
|
649
669
|
|
|
650
670
|
async function isCli ({packageDetails: {bin}}) {
|
|
@@ -699,6 +719,10 @@ async function scaffoldProjectType ({
|
|
|
699
719
|
}
|
|
700
720
|
}
|
|
701
721
|
|
|
722
|
+
async function tester$1 ({projectRoot, packageDetails}) {
|
|
723
|
+
return await isPackage({projectRoot, packageDetails}) || isCli({projectRoot, packageDetails});
|
|
724
|
+
}
|
|
725
|
+
|
|
702
726
|
async function lifter$1 ({projectRoot, packageDetails}) {
|
|
703
727
|
if (await isPackage({projectRoot, packageDetails})) return liftPackage$1({projectRoot, packageDetails});
|
|
704
728
|
if (await isCli({projectRoot, packageDetails})) return liftCli({projectRoot, packageDetails});
|
|
@@ -706,15 +730,11 @@ async function lifter$1 ({projectRoot, packageDetails}) {
|
|
|
706
730
|
return {};
|
|
707
731
|
}
|
|
708
732
|
|
|
709
|
-
async function tester$1 ({projectRoot, packageDetails}) {
|
|
710
|
-
return await isPackage({projectRoot, packageDetails}) || isCli({projectRoot, packageDetails});
|
|
711
|
-
}
|
|
712
|
-
|
|
713
733
|
var projectTypes = /*#__PURE__*/Object.freeze({
|
|
714
734
|
__proto__: null,
|
|
715
735
|
scaffold: scaffoldProjectType,
|
|
716
|
-
|
|
717
|
-
|
|
736
|
+
test: tester$1,
|
|
737
|
+
lift: lifter$1
|
|
718
738
|
});
|
|
719
739
|
|
|
720
740
|
function write ({projectRoot, config}) {
|