@form8ion/javascript 11.2.0 → 11.3.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.mjs CHANGED
@@ -423,7 +423,6 @@ async function scaffoldPackageType ({
423
423
  files: ['example.js', ...dialects$1.COMMON_JS === dialect ? ['index.js'] : ['lib/']],
424
424
  publishConfig: {
425
425
  access: 'Public' === visibility ? 'public' : 'restricted',
426
- provenance: true,
427
426
  ...publishRegistry && {registry: publishRegistry}
428
427
  },
429
428
  sideEffects: false,
@@ -461,15 +460,13 @@ async function scaffoldPackageType ({
461
460
  {summary: 'Add the appropriate `save` flag to the installation instructions in the README'},
462
461
  {summary: 'Publish pre-release versions to npm until package is stable enough to publish v1.0.0'}
463
462
  ],
464
- scripts: {'lint:publish': 'publint'},
465
- badges: defineBadges(packageName, visibility),
466
- devDependencies: ['publint']
463
+ badges: defineBadges(packageName, visibility)
467
464
  },
468
465
  detailsForBuild
469
466
  ]);
470
467
  }
471
468
 
472
- async function lifter$1 ({projectRoot}) {
469
+ async function liftPublishable ({projectRoot}) {
473
470
  await mergeIntoExistingPackageJson({projectRoot, config: {publishConfig: {provenance: true}}});
474
471
 
475
472
  return {
@@ -478,15 +475,159 @@ async function lifter$1 ({projectRoot}) {
478
475
  };
479
476
  }
480
477
 
481
- async function tester$1 ({projectRoot}) {
482
- const {exports, publishConfig} = JSON.parse(await promises$1.readFile(`${projectRoot}/package.json`, 'utf-8'));
478
+ function liftPackage$1 ({projectRoot}) {
479
+ return liftPublishable({projectRoot});
480
+ }
483
481
 
484
- return !!exports || !!publishConfig;
482
+ async function isPackage ({projectRoot}) {
483
+ const {exports, publishConfig, bin} = JSON.parse(await promises$1.readFile(`${projectRoot}/package.json`, 'utf-8'));
484
+
485
+ return !!exports || (!!publishConfig && !bin);
486
+ }
487
+
488
+ const defaultBuildDirectory$1 = 'public';
489
+
490
+ async function scaffoldApplicationType ({projectRoot}) {
491
+ info('Scaffolding Application Details');
492
+
493
+ await mergeIntoExistingPackageJson({projectRoot, config: {private: true}});
494
+
495
+ const buildDirectory = defaultBuildDirectory$1;
496
+
497
+ return {
498
+ scripts: {
499
+ clean: `rimraf ./${buildDirectory}`,
500
+ start: `node ./${buildDirectory}/index.js`,
501
+ prebuild: 'run-s clean'
502
+ },
503
+ dependencies: [],
504
+ devDependencies: ['rimraf'],
505
+ vcsIgnore: {files: ['.env'], directories: [`/${buildDirectory}/`]},
506
+ buildDirectory,
507
+ nextSteps: []
508
+ };
509
+ }
510
+
511
+ async function scaffoldMonorepoType ({projectRoot}) {
512
+ info('Scaffolding Monorepo Details');
513
+
514
+ await mergeIntoExistingPackageJson({projectRoot, config: {private: true}});
515
+
516
+ return {
517
+ nextSteps: [{
518
+ summary: 'Add packages to your new monorepo',
519
+ description: 'Leverage [@form8ion/add-package-to-monorepo](https://npm.im/@form8ion/add-package-to-monorepo)'
520
+ + ' to scaffold new packages into your new monorepo'
521
+ }]
522
+ };
523
+ }
524
+
525
+ const defaultBuildDirectory = 'bin';
526
+
527
+ async function scaffoldCliType ({packageName, visibility, projectRoot, dialect, publishRegistry}) {
528
+ const [rollupResults] = await Promise.all([
529
+ scaffold$3({projectRoot, dialect, projectType: projectTypes$1.CLI}),
530
+ mergeIntoExistingPackageJson({
531
+ projectRoot,
532
+ config: {
533
+ bin: {},
534
+ files: [`${defaultBuildDirectory}/`],
535
+ publishConfig: {
536
+ access: 'Public' === visibility ? 'public' : 'restricted',
537
+ provenance: true,
538
+ ...publishRegistry && {registry: publishRegistry}
539
+ }
540
+ }
541
+ })
542
+ ]);
543
+
544
+ return deepmerge(
545
+ rollupResults,
546
+ {
547
+ scripts: {
548
+ clean: `rimraf ./${defaultBuildDirectory}`,
549
+ prebuild: 'run-s clean',
550
+ build: 'npm-run-all --print-label --parallel build:*',
551
+ prepack: 'run-s build'
552
+ },
553
+ dependencies: ['update-notifier'],
554
+ devDependencies: ['rimraf'],
555
+ vcsIgnore: {files: [], directories: [`/${defaultBuildDirectory}/`]},
556
+ buildDirectory: defaultBuildDirectory,
557
+ badges: defineBadges(packageName, visibility),
558
+ nextSteps: []
559
+ }
560
+ );
561
+ }
562
+
563
+ async function isCli ({projectRoot}) {
564
+ const {bin} = JSON.parse(await promises$1.readFile(`${projectRoot}/package.json`, 'utf-8'));
565
+
566
+ return !!bin;
567
+ }
568
+
569
+ function liftCli ({projectRoot}) {
570
+ return liftPublishable({projectRoot});
571
+ }
572
+
573
+ async function scaffoldProjectType ({
574
+ projectType,
575
+ projectRoot,
576
+ projectName,
577
+ packageName,
578
+ packageManager,
579
+ visibility,
580
+ packageBundlers,
581
+ scope,
582
+ vcs,
583
+ decisions,
584
+ dialect,
585
+ provideExample,
586
+ publishRegistry
587
+ }) {
588
+ switch (projectType) {
589
+ case projectTypes$1.PACKAGE:
590
+ return scaffoldPackageType({
591
+ projectRoot,
592
+ projectName,
593
+ packageName,
594
+ packageManager,
595
+ visibility,
596
+ scope,
597
+ packageBundlers,
598
+ vcs,
599
+ decisions,
600
+ dialect,
601
+ provideExample,
602
+ publishRegistry
603
+ });
604
+ case projectTypes$1.APPLICATION:
605
+ return scaffoldApplicationType({projectRoot});
606
+ case projectTypes$1.CLI:
607
+ return scaffoldCliType({packageName, visibility, projectRoot, dialect, publishRegistry});
608
+ case projectTypes$1.MONOREPO:
609
+ return scaffoldMonorepoType({projectRoot});
610
+ case 'Other':
611
+ return {};
612
+ default:
613
+ throw new Error(`The project-type of ${projectType} is invalid`);
614
+ }
615
+ }
616
+
617
+ async function lifter$1 ({projectRoot}) {
618
+ if (await isPackage({projectRoot})) return liftPackage$1({projectRoot});
619
+ if (await isCli({projectRoot})) return liftCli({projectRoot});
620
+
621
+ return {};
622
+ }
623
+
624
+ async function tester$1 ({projectRoot}) {
625
+ return await isPackage({projectRoot}) || isCli({projectRoot});
485
626
  }
486
627
 
487
628
  var projectTypes = /*#__PURE__*/Object.freeze({
488
629
  __proto__: null,
489
- scaffold: scaffoldPackageType,
630
+ scaffold: scaffoldProjectType,
490
631
  lift: lifter$1,
491
632
  test: tester$1
492
633
  });
@@ -1223,125 +1364,6 @@ function buildPackageName (projectName, scope) {
1223
1364
  throw new Error(`The package name ${name} is invalid:${EOL}\t* ${errors.join(`${EOL}\t* `)}`);
1224
1365
  }
1225
1366
 
1226
- const defaultBuildDirectory$1 = 'public';
1227
-
1228
- async function scaffoldApplicationType ({projectRoot}) {
1229
- info('Scaffolding Application Details');
1230
-
1231
- await mergeIntoExistingPackageJson({projectRoot, config: {private: true}});
1232
-
1233
- const buildDirectory = defaultBuildDirectory$1;
1234
-
1235
- return {
1236
- scripts: {
1237
- clean: `rimraf ./${buildDirectory}`,
1238
- start: `node ./${buildDirectory}/index.js`,
1239
- prebuild: 'run-s clean'
1240
- },
1241
- dependencies: [],
1242
- devDependencies: ['rimraf'],
1243
- vcsIgnore: {files: ['.env'], directories: [`/${buildDirectory}/`]},
1244
- buildDirectory,
1245
- nextSteps: []
1246
- };
1247
- }
1248
-
1249
- async function scaffoldMonorepoType ({projectRoot}) {
1250
- info('Scaffolding Monorepo Details');
1251
-
1252
- await mergeIntoExistingPackageJson({projectRoot, config: {private: true}});
1253
-
1254
- return {
1255
- nextSteps: [{
1256
- summary: 'Add packages to your new monorepo',
1257
- description: 'Leverage [@form8ion/add-package-to-monorepo](https://npm.im/@form8ion/add-package-to-monorepo)'
1258
- + ' to scaffold new packages into your new monorepo'
1259
- }]
1260
- };
1261
- }
1262
-
1263
- const defaultBuildDirectory = 'bin';
1264
-
1265
- async function scaffoldCliType ({packageName, visibility, projectRoot, dialect, publishRegistry}) {
1266
- const [rollupResults] = await Promise.all([
1267
- scaffold$3({projectRoot, dialect, projectType: projectTypes$1.CLI}),
1268
- mergeIntoExistingPackageJson({
1269
- projectRoot,
1270
- config: {
1271
- bin: {},
1272
- files: [`${defaultBuildDirectory}/`],
1273
- publishConfig: {
1274
- access: 'Public' === visibility ? 'public' : 'restricted',
1275
- provenance: true,
1276
- ...publishRegistry && {registry: publishRegistry}
1277
- }
1278
- }
1279
- })
1280
- ]);
1281
-
1282
- return deepmerge(
1283
- rollupResults,
1284
- {
1285
- scripts: {
1286
- clean: `rimraf ./${defaultBuildDirectory}`,
1287
- prebuild: 'run-s clean',
1288
- build: 'npm-run-all --print-label --parallel build:*',
1289
- prepack: 'run-s build'
1290
- },
1291
- dependencies: ['update-notifier'],
1292
- devDependencies: ['rimraf'],
1293
- vcsIgnore: {files: [], directories: [`/${defaultBuildDirectory}/`]},
1294
- buildDirectory: defaultBuildDirectory,
1295
- badges: defineBadges(packageName, visibility),
1296
- nextSteps: []
1297
- }
1298
- );
1299
- }
1300
-
1301
- async function scaffoldProjectType ({
1302
- projectType,
1303
- projectRoot,
1304
- projectName,
1305
- packageName,
1306
- packageManager,
1307
- visibility,
1308
- packageBundlers,
1309
- scope,
1310
- vcs,
1311
- decisions,
1312
- dialect,
1313
- provideExample,
1314
- publishRegistry
1315
- }) {
1316
- switch (projectType) {
1317
- case projectTypes$1.PACKAGE:
1318
- return scaffoldPackageType({
1319
- projectRoot,
1320
- projectName,
1321
- packageName,
1322
- packageManager,
1323
- visibility,
1324
- scope,
1325
- packageBundlers,
1326
- vcs,
1327
- decisions,
1328
- dialect,
1329
- provideExample,
1330
- publishRegistry
1331
- });
1332
- case projectTypes$1.APPLICATION:
1333
- return scaffoldApplicationType({projectRoot});
1334
- case projectTypes$1.CLI:
1335
- return scaffoldCliType({packageName, visibility, projectRoot, dialect, publishRegistry});
1336
- case projectTypes$1.MONOREPO:
1337
- return scaffoldMonorepoType({projectRoot});
1338
- case 'Other':
1339
- return {};
1340
- default:
1341
- throw new Error(`The project-type of ${projectType} is invalid`);
1342
- }
1343
- }
1344
-
1345
1367
  async function chooseProjectTypePlugin ({types, projectType, decisions}) {
1346
1368
  if (!Object.keys(types).length) return 'Other';
1347
1369