@form8ion/javascript 11.2.1 → 11.3.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
@@ -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,158 @@ 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
+ ...publishRegistry && {registry: publishRegistry}
538
+ }
539
+ }
540
+ })
541
+ ]);
542
+
543
+ return deepmerge(
544
+ rollupResults,
545
+ {
546
+ scripts: {
547
+ clean: `rimraf ./${defaultBuildDirectory}`,
548
+ prebuild: 'run-s clean',
549
+ build: 'npm-run-all --print-label --parallel build:*',
550
+ prepack: 'run-s build'
551
+ },
552
+ dependencies: ['update-notifier'],
553
+ devDependencies: ['rimraf'],
554
+ vcsIgnore: {files: [], directories: [`/${defaultBuildDirectory}/`]},
555
+ buildDirectory: defaultBuildDirectory,
556
+ badges: defineBadges(packageName, visibility),
557
+ nextSteps: []
558
+ }
559
+ );
560
+ }
561
+
562
+ async function isCli ({projectRoot}) {
563
+ const {bin} = JSON.parse(await promises$1.readFile(`${projectRoot}/package.json`, 'utf-8'));
564
+
565
+ return !!bin;
566
+ }
567
+
568
+ function liftCli ({projectRoot}) {
569
+ return liftPublishable({projectRoot});
570
+ }
571
+
572
+ async function scaffoldProjectType ({
573
+ projectType,
574
+ projectRoot,
575
+ projectName,
576
+ packageName,
577
+ packageManager,
578
+ visibility,
579
+ packageBundlers,
580
+ scope,
581
+ vcs,
582
+ decisions,
583
+ dialect,
584
+ provideExample,
585
+ publishRegistry
586
+ }) {
587
+ switch (projectType) {
588
+ case projectTypes$1.PACKAGE:
589
+ return scaffoldPackageType({
590
+ projectRoot,
591
+ projectName,
592
+ packageName,
593
+ packageManager,
594
+ visibility,
595
+ scope,
596
+ packageBundlers,
597
+ vcs,
598
+ decisions,
599
+ dialect,
600
+ provideExample,
601
+ publishRegistry
602
+ });
603
+ case projectTypes$1.APPLICATION:
604
+ return scaffoldApplicationType({projectRoot});
605
+ case projectTypes$1.CLI:
606
+ return scaffoldCliType({packageName, visibility, projectRoot, dialect, publishRegistry});
607
+ case projectTypes$1.MONOREPO:
608
+ return scaffoldMonorepoType({projectRoot});
609
+ case 'Other':
610
+ return {};
611
+ default:
612
+ throw new Error(`The project-type of ${projectType} is invalid`);
613
+ }
614
+ }
615
+
616
+ async function lifter$1 ({projectRoot}) {
617
+ if (await isPackage({projectRoot})) return liftPackage$1({projectRoot});
618
+ if (await isCli({projectRoot})) return liftCli({projectRoot});
619
+
620
+ return {};
621
+ }
622
+
623
+ async function tester$1 ({projectRoot}) {
624
+ return await isPackage({projectRoot}) || isCli({projectRoot});
625
+ }
626
+
484
627
  var projectTypes = /*#__PURE__*/Object.freeze({
485
628
  __proto__: null,
486
- scaffold: scaffoldPackageType,
629
+ scaffold: scaffoldProjectType,
487
630
  lift: lifter$1,
488
631
  test: tester$1
489
632
  });
@@ -1220,125 +1363,6 @@ function buildPackageName (projectName, scope) {
1220
1363
  throw new Error(`The package name ${name} is invalid:${EOL}\t* ${errors.join(`${EOL}\t* `)}`);
1221
1364
  }
1222
1365
 
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
1366
  async function chooseProjectTypePlugin ({types, projectType, decisions}) {
1343
1367
  if (!Object.keys(types).length) return 'Other';
1344
1368