@form8ion/javascript 7.2.1 → 7.2.2

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 CHANGED
@@ -213,6 +213,90 @@ var enginesEnhancer = /*#__PURE__*/Object.freeze({
213
213
  lift: lift$1
214
214
  });
215
215
 
216
+ function write ({projectRoot, config}) {
217
+ return configFile.write({path: projectRoot, name: 'babel', format: core.fileTypes.JSON, config});
218
+ }
219
+
220
+ async function addIgnore ({projectRoot, ignore}) {
221
+ if (ignore) {
222
+ const existingConfig = JSON.parse(await fs.promises.readFile(`${projectRoot}/.babelrc.json`, 'utf-8'));
223
+
224
+ await write({projectRoot, config: {...existingConfig, ignore: [`./${ignore}/`]}});
225
+ }
226
+ }
227
+
228
+ async function scaffoldBabel ({projectRoot, preset}) {
229
+ if (!preset) {
230
+ throw new Error('No babel preset provided. Cannot configure babel transpilation');
231
+ }
232
+
233
+ await write({projectRoot, config: {presets: [preset.name]}});
234
+
235
+ return {
236
+ devDependencies: ['@babel/register', preset.packageName],
237
+ eslint: {}
238
+ };
239
+ }
240
+
241
+ async function lifter ({buildDirectory, projectRoot}) {
242
+ await addIgnore({ignore: buildDirectory, projectRoot});
243
+
244
+ return {};
245
+ }
246
+
247
+ function predicate ({projectRoot}) {
248
+ return core.fileExists(`${projectRoot}/.babelrc.json`);
249
+ }
250
+
251
+ async function scaffoldTypescript ({config, projectType, projectRoot, testFilenamePattern}) {
252
+ const eslintConfigs = ['typescript'];
253
+ const shareableTsConfigPackage = `${config.scope}/tsconfig`;
254
+
255
+ await core.writeConfigFile({
256
+ path: projectRoot,
257
+ name: 'tsconfig',
258
+ format: core.fileTypes.JSON,
259
+ config: {
260
+ $schema: 'https://json.schemastore.org/tsconfig',
261
+ extends: shareableTsConfigPackage,
262
+ compilerOptions: {
263
+ rootDir: 'src',
264
+ ...javascriptCore.projectTypes.PACKAGE === projectType && {
265
+ outDir: 'lib',
266
+ declaration: true
267
+ }
268
+ },
269
+ include: ['src/**/*.ts'],
270
+ ...testFilenamePattern && {exclude: [testFilenamePattern]}
271
+ }
272
+ });
273
+
274
+ return {
275
+ eslint: {configs: eslintConfigs},
276
+ eslintConfigs,
277
+ devDependencies: ['typescript', shareableTsConfigPackage],
278
+ vcsIgnore: {files: ['tsconfig.tsbuildinfo']}
279
+ };
280
+ }
281
+
282
+ function scaffoldDialect ({dialect, projectType, projectRoot, configs, testFilenamePattern}) {
283
+ switch (dialect) {
284
+ case javascriptCore.dialects.BABEL:
285
+ return scaffoldBabel({preset: configs.babelPreset, projectRoot});
286
+ case javascriptCore.dialects.TYPESCRIPT:
287
+ return scaffoldTypescript({config: configs.typescript, projectType, projectRoot, testFilenamePattern});
288
+ default:
289
+ return {};
290
+ }
291
+ }
292
+
293
+ var dialects = /*#__PURE__*/Object.freeze({
294
+ __proto__: null,
295
+ scaffold: scaffoldDialect,
296
+ test: predicate,
297
+ lift: lifter
298
+ });
299
+
216
300
  function scaffoldScripts () {
217
301
  return {};
218
302
  }
@@ -360,15 +444,24 @@ async function resolvePackageManager ({projectRoot, packageManager}) {
360
444
  async function lift ({projectRoot, vcs, results}) {
361
445
  cliMessages.info('Lifting JavaScript-specific details');
362
446
 
363
- const {scripts, tags, eslintConfigs, eslint: eslint$1, dependencies, devDependencies, packageManager: manager} = results;
447
+ const {
448
+ scripts,
449
+ tags,
450
+ eslintConfigs,
451
+ eslint: eslint$1,
452
+ dependencies,
453
+ devDependencies,
454
+ packageManager: manager,
455
+ buildDirectory
456
+ } = results;
364
457
 
365
458
  const packageManager = await resolvePackageManager({projectRoot, packageManager: manager});
366
459
 
367
460
  const eslintResults = await eslint.lift({projectRoot, configs: [...eslintConfigs || [], ...eslint$1?.configs || []]});
368
461
  const enhancerResults = await core.applyEnhancers({
369
462
  results,
370
- enhancers: [huskyPlugin__namespace, enginesEnhancer, coveragePlugin, commitConventionPlugin__namespace],
371
- options: {packageManager, projectRoot, vcs}
463
+ enhancers: [huskyPlugin__namespace, enginesEnhancer, coveragePlugin, commitConventionPlugin__namespace, dialects],
464
+ options: {packageManager, projectRoot, vcs, buildDirectory}
372
465
  });
373
466
 
374
467
  await liftPackage(
@@ -656,64 +749,6 @@ async function prompt(
656
749
  };
657
750
  }
658
751
 
659
- async function scaffoldBabel ({projectRoot, preset, buildDirectory}) {
660
- if (!preset) {
661
- throw new Error('No babel preset provided. Cannot configure babel transpilation');
662
- }
663
-
664
- await configFile.write({
665
- path: projectRoot,
666
- name: 'babel',
667
- format: core.fileTypes.JSON,
668
- config: {presets: [preset.name], ignore: [`./${buildDirectory}/`]}
669
- });
670
-
671
- return {
672
- devDependencies: ['@babel/register', preset.packageName],
673
- eslint: {}
674
- };
675
- }
676
-
677
- async function scaffoldTypescript ({config, projectType, projectRoot, testFilenamePattern}) {
678
- const eslintConfigs = ['typescript'];
679
- const shareableTsConfigPackage = `${config.scope}/tsconfig`;
680
-
681
- await fs.promises.writeFile(
682
- `${projectRoot}/tsconfig.json`,
683
- JSON.stringify({
684
- $schema: 'https://json.schemastore.org/tsconfig',
685
- extends: shareableTsConfigPackage,
686
- compilerOptions: {
687
- rootDir: 'src',
688
- ...javascriptCore.projectTypes.PACKAGE === projectType && {
689
- outDir: 'lib',
690
- declaration: true
691
- }
692
- },
693
- include: ['src/**/*.ts'],
694
- ...testFilenamePattern && {exclude: [testFilenamePattern]}
695
- })
696
- );
697
-
698
- return {
699
- eslint: {configs: eslintConfigs},
700
- eslintConfigs,
701
- devDependencies: ['typescript', shareableTsConfigPackage],
702
- vcsIgnore: {files: ['tsconfig.tsbuildinfo']}
703
- };
704
- }
705
-
706
- function scaffoldDialect ({dialect, projectType, projectRoot, configs, buildDirectory, testFilenamePattern}) {
707
- switch (dialect) {
708
- case javascriptCore.dialects.BABEL:
709
- return scaffoldBabel({preset: configs.babelPreset, projectRoot, buildDirectory});
710
- case javascriptCore.dialects.TYPESCRIPT:
711
- return scaffoldTypescript({config: configs.typescript, projectType, projectRoot, testFilenamePattern});
712
- default:
713
- return {};
714
- }
715
- }
716
-
717
752
  function projectWillNotBeConsumed(projectType) {
718
753
  return javascriptCore.projectTypes.APPLICATION === projectType || javascriptCore.projectTypes.CLI === projectType;
719
754
  }
@@ -1466,7 +1501,6 @@ async function scaffolder (options) {
1466
1501
  configs,
1467
1502
  projectRoot,
1468
1503
  projectType,
1469
- buildDirectory: projectTypeResults.buildDirectory,
1470
1504
  testFilenamePattern: verificationResults.testFilenamePattern
1471
1505
  }),
1472
1506
  scaffoldCodeStyle({
@@ -1506,8 +1540,8 @@ async function scaffolder (options) {
1506
1540
  javascriptCore.scaffoldChoice(ciServices, ci, {projectRoot, vcs, visibility, projectType, projectName, nodeVersion, tests}),
1507
1541
  commitConventionPlugin.scaffold({projectRoot, projectType, configs, pathWithinParent})
1508
1542
  ])),
1509
- projectTypePluginResults,
1510
1543
  projectTypeResults,
1544
+ projectTypePluginResults,
1511
1545
  verificationResults,
1512
1546
  codeStyleResults,
1513
1547
  npmResults,