@form8ion/javascript 11.2.1 → 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
@@ -466,7 +466,7 @@ async function scaffoldPackageType ({
466
466
  ]);
467
467
  }
468
468
 
469
- async function lifter$1 ({projectRoot}) {
469
+ async function liftPublishable ({projectRoot}) {
470
470
  await mergeIntoExistingPackageJson({projectRoot, config: {publishConfig: {provenance: true}}});
471
471
 
472
472
  return {
@@ -475,15 +475,159 @@ async function lifter$1 ({projectRoot}) {
475
475
  };
476
476
  }
477
477
 
478
- async function tester$1 ({projectRoot}) {
478
+ function liftPackage$1 ({projectRoot}) {
479
+ return liftPublishable({projectRoot});
480
+ }
481
+
482
+ async function isPackage ({projectRoot}) {
479
483
  const {exports, publishConfig, bin} = JSON.parse(await promises$1.readFile(`${projectRoot}/package.json`, 'utf-8'));
480
484
 
481
485
  return !!exports || (!!publishConfig && !bin);
482
486
  }
483
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});
626
+ }
627
+
484
628
  var projectTypes = /*#__PURE__*/Object.freeze({
485
629
  __proto__: null,
486
- scaffold: scaffoldPackageType,
630
+ scaffold: scaffoldProjectType,
487
631
  lift: lifter$1,
488
632
  test: tester$1
489
633
  });
@@ -1220,125 +1364,6 @@ function buildPackageName (projectName, scope) {
1220
1364
  throw new Error(`The package name ${name} is invalid:${EOL}\t* ${errors.join(`${EOL}\t* `)}`);
1221
1365
  }
1222
1366
 
1223
- const defaultBuildDirectory$1 = 'public';
1224
-
1225
- async function scaffoldApplicationType ({projectRoot}) {
1226
- info('Scaffolding Application Details');
1227
-
1228
- await mergeIntoExistingPackageJson({projectRoot, config: {private: true}});
1229
-
1230
- const buildDirectory = defaultBuildDirectory$1;
1231
-
1232
- return {
1233
- scripts: {
1234
- clean: `rimraf ./${buildDirectory}`,
1235
- start: `node ./${buildDirectory}/index.js`,
1236
- prebuild: 'run-s clean'
1237
- },
1238
- dependencies: [],
1239
- devDependencies: ['rimraf'],
1240
- vcsIgnore: {files: ['.env'], directories: [`/${buildDirectory}/`]},
1241
- buildDirectory,
1242
- nextSteps: []
1243
- };
1244
- }
1245
-
1246
- async function scaffoldMonorepoType ({projectRoot}) {
1247
- info('Scaffolding Monorepo Details');
1248
-
1249
- await mergeIntoExistingPackageJson({projectRoot, config: {private: true}});
1250
-
1251
- return {
1252
- nextSteps: [{
1253
- summary: 'Add packages to your new monorepo',
1254
- description: 'Leverage [@form8ion/add-package-to-monorepo](https://npm.im/@form8ion/add-package-to-monorepo)'
1255
- + ' to scaffold new packages into your new monorepo'
1256
- }]
1257
- };
1258
- }
1259
-
1260
- const defaultBuildDirectory = 'bin';
1261
-
1262
- async function scaffoldCliType ({packageName, visibility, projectRoot, dialect, publishRegistry}) {
1263
- const [rollupResults] = await Promise.all([
1264
- scaffold$3({projectRoot, dialect, projectType: projectTypes$1.CLI}),
1265
- mergeIntoExistingPackageJson({
1266
- projectRoot,
1267
- config: {
1268
- bin: {},
1269
- files: [`${defaultBuildDirectory}/`],
1270
- publishConfig: {
1271
- access: 'Public' === visibility ? 'public' : 'restricted',
1272
- provenance: true,
1273
- ...publishRegistry && {registry: publishRegistry}
1274
- }
1275
- }
1276
- })
1277
- ]);
1278
-
1279
- return deepmerge(
1280
- rollupResults,
1281
- {
1282
- scripts: {
1283
- clean: `rimraf ./${defaultBuildDirectory}`,
1284
- prebuild: 'run-s clean',
1285
- build: 'npm-run-all --print-label --parallel build:*',
1286
- prepack: 'run-s build'
1287
- },
1288
- dependencies: ['update-notifier'],
1289
- devDependencies: ['rimraf'],
1290
- vcsIgnore: {files: [], directories: [`/${defaultBuildDirectory}/`]},
1291
- buildDirectory: defaultBuildDirectory,
1292
- badges: defineBadges(packageName, visibility),
1293
- nextSteps: []
1294
- }
1295
- );
1296
- }
1297
-
1298
- async function scaffoldProjectType ({
1299
- projectType,
1300
- projectRoot,
1301
- projectName,
1302
- packageName,
1303
- packageManager,
1304
- visibility,
1305
- packageBundlers,
1306
- scope,
1307
- vcs,
1308
- decisions,
1309
- dialect,
1310
- provideExample,
1311
- publishRegistry
1312
- }) {
1313
- switch (projectType) {
1314
- case projectTypes$1.PACKAGE:
1315
- return scaffoldPackageType({
1316
- projectRoot,
1317
- projectName,
1318
- packageName,
1319
- packageManager,
1320
- visibility,
1321
- scope,
1322
- packageBundlers,
1323
- vcs,
1324
- decisions,
1325
- dialect,
1326
- provideExample,
1327
- publishRegistry
1328
- });
1329
- case projectTypes$1.APPLICATION:
1330
- return scaffoldApplicationType({projectRoot});
1331
- case projectTypes$1.CLI:
1332
- return scaffoldCliType({packageName, visibility, projectRoot, dialect, publishRegistry});
1333
- case projectTypes$1.MONOREPO:
1334
- return scaffoldMonorepoType({projectRoot});
1335
- case 'Other':
1336
- return {};
1337
- default:
1338
- throw new Error(`The project-type of ${projectType} is invalid`);
1339
- }
1340
- }
1341
-
1342
1367
  async function chooseProjectTypePlugin ({types, projectType, decisions}) {
1343
1368
  if (!Object.keys(types).length) return 'Other';
1344
1369