@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.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, mergeIntoExistingPackageJson, writePackageJson, DEV_DEPENDENCY_TYPE, PROD_DEPENDENCY_TYPE } from '@form8ion/javascript-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';
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 defineBadges (packageName, visibility) {
345
+ function determinePackageAccessLevelFromProjectVisibility ({projectVisibility}) {
346
+ return 'Public' === projectVisibility ? 'public' : 'restricted';
347
+ }
348
+
349
+ function defineBadges (packageName, accessLevel) {
346
350
  return {
347
351
  consumer: {
348
- ...'Public' === visibility && {
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 [detailsForBuild] = await Promise.all([
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: 'Public' === visibility ? 'public' : 'restricted',
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 [rollupResults] = await Promise.all([
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: 'Public' === visibility ? 'public' : 'restricted',
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
- lift: lifter$1,
717
- test: tester$1
736
+ test: tester$1,
737
+ lift: lifter$1
718
738
  });
719
739
 
720
740
  function write ({projectRoot, config}) {