@form8ion/javascript 3.0.0-alpha.1 → 3.1.0-alpha.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/README.md CHANGED
@@ -45,7 +45,13 @@ $ npm install @form8ion/javascript --save
45
45
 
46
46
  ```javascript
47
47
  const {dialects, projectTypes} = require('@form8ion/javascript-core');
48
- const {scaffold: scaffoldJavaScript, scaffoldUnitTesting, questionNames} = require('./lib/index.cjs');
48
+ const {
49
+ scaffold: scaffoldJavaScript,
50
+ lift: liftJavascript,
51
+ test: thisIsAJavaScriptProject,
52
+ scaffoldUnitTesting,
53
+ questionNames
54
+ } = require('@form8ion/javascript');
49
55
  ```
50
56
 
51
57
  #### Execute
@@ -53,9 +59,10 @@ const {scaffold: scaffoldJavaScript, scaffoldUnitTesting, questionNames} = requi
53
59
  ```javascript
54
60
  (async () => {
55
61
  const accountName = 'form8ion';
62
+ const projectRoot = process.cwd();
56
63
 
57
64
  await scaffoldJavaScript({
58
- projectRoot: process.cwd(),
65
+ projectRoot,
59
66
  projectName: 'project-name',
60
67
  visibility: 'Public',
61
68
  license: 'MIT',
@@ -83,6 +90,20 @@ const {scaffold: scaffoldJavaScript, scaffoldUnitTesting, questionNames} = requi
83
90
  }
84
91
  });
85
92
 
93
+ if (await thisIsAJavaScriptProject({projectRoot})) {
94
+ await liftJavascript({
95
+ projectRoot,
96
+ configs: {eslint: {scope: '@foo'}},
97
+ results: {
98
+ dependencies: [],
99
+ devDependencies: [],
100
+ scripts: {},
101
+ eslintConfigs: [],
102
+ packageManager: 'npm'
103
+ }
104
+ });
105
+ }
106
+
86
107
  await scaffoldUnitTesting({
87
108
  projectRoot: process.cwd(),
88
109
  frameworks: {
package/example.js CHANGED
@@ -5,9 +5,10 @@ import stubbedFs from 'mock-fs';
5
5
  import td from 'testdouble';
6
6
  import 'validate-npm-package-name';
7
7
 
8
- // remark-usage-ignore-next 9
8
+ // remark-usage-ignore-next 10
9
9
  stubbedFs({
10
10
  node_modules: stubbedFs.load(resolve(...[__dirname, 'node_modules'])),
11
+ '.nvmrc': 'v1.2.3',
11
12
  lib: stubbedFs.load(resolve(...[__dirname, 'lib'])),
12
13
  templates: stubbedFs.load(resolve(...[__dirname, 'templates']))
13
14
  });
@@ -17,14 +18,21 @@ td.when(execa('. ~/.nvm/nvm.sh && nvm ls-remote --lts', {shell: true}))
17
18
  td.when(execa('. ~/.nvm/nvm.sh && nvm install', {shell: true})).thenReturn({stdout: {pipe: () => undefined}});
18
19
 
19
20
  const {dialects, projectTypes} = require('@form8ion/javascript-core');
20
- const {scaffold: scaffoldJavaScript, scaffoldUnitTesting, questionNames} = require('./lib/index.cjs');
21
+ const {
22
+ scaffold: scaffoldJavaScript,
23
+ lift: liftJavascript,
24
+ test: thisIsAJavaScriptProject,
25
+ scaffoldUnitTesting,
26
+ questionNames
27
+ } = require('./lib/index.cjs');
21
28
 
22
29
  // #### Execute
23
30
  (async () => {
24
31
  const accountName = 'form8ion';
32
+ const projectRoot = process.cwd();
25
33
 
26
34
  await scaffoldJavaScript({
27
- projectRoot: process.cwd(),
35
+ projectRoot,
28
36
  projectName: 'project-name',
29
37
  visibility: 'Public',
30
38
  license: 'MIT',
@@ -52,6 +60,20 @@ const {scaffold: scaffoldJavaScript, scaffoldUnitTesting, questionNames} = requi
52
60
  }
53
61
  });
54
62
 
63
+ if (await thisIsAJavaScriptProject({projectRoot})) {
64
+ await liftJavascript({
65
+ projectRoot,
66
+ configs: {eslint: {scope: '@foo'}},
67
+ results: {
68
+ dependencies: [],
69
+ devDependencies: [],
70
+ scripts: {},
71
+ eslintConfigs: [],
72
+ packageManager: 'npm'
73
+ }
74
+ });
75
+ }
76
+
55
77
  await scaffoldUnitTesting({
56
78
  projectRoot: process.cwd(),
57
79
  frameworks: {
package/lib/index.cjs.js CHANGED
@@ -5,15 +5,13 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  var languageScaffolderPrompts = require('@travi/language-scaffolder-prompts');
6
6
  var deepmerge = require('deepmerge');
7
7
  var javascriptCore = require('@form8ion/javascript-core');
8
- var codecov = require('@form8ion/codecov');
9
- var fs = require('fs');
10
8
  var joi = require('joi');
11
9
  var inquirer = require('inquirer');
12
10
  var overridablePrompts = require('@form8ion/overridable-prompts');
13
- var cliMessages = require('@travi/cli-messages');
14
- var eslint = require('@form8ion/eslint');
11
+ var codecov = require('@form8ion/codecov');
12
+ var fs = require('fs');
15
13
  var core = require('@form8ion/core');
16
- var husky = require('@form8ion/husky');
14
+ var cliMessages = require('@travi/cli-messages');
17
15
  var commitConvention = require('@form8ion/commit-convention');
18
16
  var hoek = require('@hapi/hoek');
19
17
  var execa = require('execa');
@@ -26,6 +24,8 @@ var camelcase = require('camelcase');
26
24
  var makeDir = require('make-dir');
27
25
  var touch = require('touch');
28
26
  var path = require('path');
27
+ var husky = require('@form8ion/husky');
28
+ var eslint = require('@form8ion/eslint');
29
29
 
30
30
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
31
31
 
@@ -150,6 +150,45 @@ async function scaffoldCoverage ({
150
150
  }));
151
151
  }
152
152
 
153
+ function nycIsConfigured ({
154
+ projectRoot
155
+ }) {
156
+ return core.fileExists(`${projectRoot}/.nycrc`);
157
+ }
158
+
159
+ async function removeNyc ({
160
+ projectRoot
161
+ }) {
162
+ await Promise.all([fs.promises.unlink(`${projectRoot}/.nycrc`), fs.promises.rmdir(`${projectRoot}/.nyc_output`, {
163
+ recursive: true,
164
+ force: true
165
+ })]);
166
+ }
167
+
168
+ async function lift$2({
169
+ projectRoot
170
+ }) {
171
+ if (await nycIsConfigured({
172
+ projectRoot
173
+ })) {
174
+ const [c8Results] = await Promise.all([scaffoldC8({
175
+ projectRoot
176
+ }), removeNyc({
177
+ projectRoot
178
+ })]);
179
+ return c8Results;
180
+ }
181
+
182
+ return {};
183
+ }
184
+
185
+ var coveragePlugin = /*#__PURE__*/Object.freeze({
186
+ __proto__: null,
187
+ scaffold: scaffoldCoverage,
188
+ lift: lift$2,
189
+ test: nycIsConfigured
190
+ });
191
+
153
192
  const unitTestFrameworksSchema = joi__namespace.object().required().pattern(/^/, joi__namespace.object({
154
193
  scaffolder: joi__namespace.func().arity(1).required()
155
194
  }));
@@ -252,6 +291,20 @@ var enginesEnhancer = /*#__PURE__*/Object.freeze({
252
291
  lift: lift$1
253
292
  });
254
293
 
294
+ function enhanceHuskyEnhancer(packageManager) {
295
+ return {
296
+ test: husky.test,
297
+ lift: ({
298
+ projectRoot,
299
+ results
300
+ }) => husky.lift({
301
+ projectRoot,
302
+ results,
303
+ packageManager
304
+ })
305
+ };
306
+ }
307
+
255
308
  async function liftPackage ({
256
309
  projectRoot,
257
310
  scripts,
@@ -295,20 +348,6 @@ async function resolvePackageManager ({
295
348
  throw new Error('Package-manager could not be determined');
296
349
  }
297
350
 
298
- function enhanceHuskyEnhancer(packageManager) {
299
- return {
300
- test: husky.test,
301
- lift: ({
302
- projectRoot,
303
- results
304
- }) => husky.lift({
305
- projectRoot,
306
- results,
307
- packageManager
308
- })
309
- };
310
- }
311
-
312
351
  async function lift ({
313
352
  projectRoot,
314
353
  results
@@ -332,7 +371,7 @@ async function lift ({
332
371
  });
333
372
  const enhancerResults = await applyEnhancers({
334
373
  results,
335
- enhancers: [enhanceHuskyEnhancer(packageManager), enginesEnhancer],
374
+ enhancers: [enhanceHuskyEnhancer(packageManager), enginesEnhancer, coveragePlugin],
336
375
  projectRoot
337
376
  });
338
377
  await liftPackage(deepmerge__default["default"].all([{
@@ -1655,13 +1694,7 @@ async function scaffolder (options) {
1655
1694
  async function test ({
1656
1695
  projectRoot
1657
1696
  }) {
1658
- try {
1659
- const stats = await fs.promises.stat(`${projectRoot}/.nvmrc`);
1660
- return stats.isFile();
1661
- } catch (e) {
1662
- if ('ENOENT' === e.code) return false;
1663
- throw e;
1664
- }
1697
+ return core.fileExists(`${projectRoot}/.nvmrc`);
1665
1698
  }
1666
1699
 
1667
1700
  const questionNames = _objectSpread2(_objectSpread2({}, languageScaffolderPrompts.questionNames), questionNames$1);