@form8ion/javascript 2.2.0 → 3.0.0-alpha.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.cjs.js +169 -4
- package/lib/index.cjs.js.map +1 -1
- package/lib/index.es.js +169 -6
- package/lib/index.es.js.map +1 -1
- package/package.json +3 -4
package/lib/index.cjs.js
CHANGED
|
@@ -11,7 +11,9 @@ var joi = require('joi');
|
|
|
11
11
|
var inquirer = require('inquirer');
|
|
12
12
|
var overridablePrompts = require('@form8ion/overridable-prompts');
|
|
13
13
|
var cliMessages = require('@travi/cli-messages');
|
|
14
|
-
var
|
|
14
|
+
var eslint = require('@form8ion/eslint');
|
|
15
|
+
var core = require('@form8ion/core');
|
|
16
|
+
var husky = require('@form8ion/husky');
|
|
15
17
|
var commitConvention = require('@form8ion/commit-convention');
|
|
16
18
|
var hoek = require('@hapi/hoek');
|
|
17
19
|
var execa = require('execa');
|
|
@@ -24,8 +26,6 @@ var camelcase = require('camelcase');
|
|
|
24
26
|
var makeDir = require('make-dir');
|
|
25
27
|
var touch = require('touch');
|
|
26
28
|
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
|
|
|
@@ -195,6 +195,157 @@ async function scaffoldUnitTesting ({
|
|
|
195
195
|
}, framework, coverage]);
|
|
196
196
|
}
|
|
197
197
|
|
|
198
|
+
async function applyEnhancers ({
|
|
199
|
+
results,
|
|
200
|
+
enhancers = {},
|
|
201
|
+
projectRoot
|
|
202
|
+
}) {
|
|
203
|
+
cliMessages.info('Applying Enhancers');
|
|
204
|
+
return Object.values(enhancers).reduce(async (acc, enhancer) => {
|
|
205
|
+
if (await enhancer.test({
|
|
206
|
+
projectRoot
|
|
207
|
+
})) {
|
|
208
|
+
const previousResults = await acc;
|
|
209
|
+
return deepmerge__default["default"](previousResults, await enhancer.lift({
|
|
210
|
+
results: previousResults,
|
|
211
|
+
projectRoot
|
|
212
|
+
}));
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
return acc;
|
|
216
|
+
}, results);
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
async function test$1({
|
|
220
|
+
projectRoot
|
|
221
|
+
}) {
|
|
222
|
+
const {
|
|
223
|
+
engines
|
|
224
|
+
} = JSON.parse(await fs.promises.readFile(`${projectRoot}/package.json`, 'utf8'));
|
|
225
|
+
return !!(engines !== null && engines !== void 0 && engines.node);
|
|
226
|
+
}
|
|
227
|
+
async function lift$1({
|
|
228
|
+
projectRoot
|
|
229
|
+
}) {
|
|
230
|
+
const {
|
|
231
|
+
name
|
|
232
|
+
} = JSON.parse(await fs.promises.readFile(`${projectRoot}/package.json`, 'utf8'));
|
|
233
|
+
return {
|
|
234
|
+
devDependencies: ['ls-engines'],
|
|
235
|
+
scripts: {
|
|
236
|
+
'lint:engines': 'ls-engines'
|
|
237
|
+
},
|
|
238
|
+
badges: {
|
|
239
|
+
consumer: {
|
|
240
|
+
node: {
|
|
241
|
+
img: `https://img.shields.io/node/v/${name}?logo=node.js`,
|
|
242
|
+
text: 'node'
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
};
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
var enginesEnhancer = /*#__PURE__*/Object.freeze({
|
|
250
|
+
__proto__: null,
|
|
251
|
+
test: test$1,
|
|
252
|
+
lift: lift$1
|
|
253
|
+
});
|
|
254
|
+
|
|
255
|
+
async function liftPackage ({
|
|
256
|
+
projectRoot,
|
|
257
|
+
scripts,
|
|
258
|
+
tags,
|
|
259
|
+
dependencies,
|
|
260
|
+
devDependencies,
|
|
261
|
+
packageManager
|
|
262
|
+
}) {
|
|
263
|
+
if (scripts || tags) {
|
|
264
|
+
cliMessages.info('Updating `package.json`', {
|
|
265
|
+
level: 'secondary'
|
|
266
|
+
});
|
|
267
|
+
const pathToPackageJson = `${projectRoot}/package.json`;
|
|
268
|
+
const existingPackageJsonContents = JSON.parse(await fs.promises.readFile(pathToPackageJson, 'utf8'));
|
|
269
|
+
await fs.promises.writeFile(pathToPackageJson, JSON.stringify(_objectSpread2(_objectSpread2({}, existingPackageJsonContents), {}, {
|
|
270
|
+
scripts: _objectSpread2(_objectSpread2({}, existingPackageJsonContents.scripts), scripts)
|
|
271
|
+
}, tags && {
|
|
272
|
+
keywords: existingPackageJsonContents.keywords ? [...existingPackageJsonContents.keywords, ...tags] : tags
|
|
273
|
+
}), null, 2));
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
cliMessages.info('Installing dependencies');
|
|
277
|
+
await javascriptCore.installDependencies(dependencies || [], javascriptCore.PROD_DEPENDENCY_TYPE, projectRoot, packageManager);
|
|
278
|
+
await javascriptCore.installDependencies([...(devDependencies || [])], javascriptCore.DEV_DEPENDENCY_TYPE, projectRoot, packageManager);
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
async function resolvePackageManager ({
|
|
282
|
+
projectRoot,
|
|
283
|
+
packageManager
|
|
284
|
+
}) {
|
|
285
|
+
if (packageManager) return packageManager;
|
|
286
|
+
|
|
287
|
+
if (await core.fileExists(`${projectRoot}/package-lock.json`)) {
|
|
288
|
+
return javascriptCore.packageManagers.NPM;
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
if (await core.fileExists(`${projectRoot}/yarn.lock`)) {
|
|
292
|
+
return javascriptCore.packageManagers.YARN;
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
throw new Error('Package-manager could not be determined');
|
|
296
|
+
}
|
|
297
|
+
|
|
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
|
+
async function lift ({
|
|
313
|
+
projectRoot,
|
|
314
|
+
results
|
|
315
|
+
}) {
|
|
316
|
+
cliMessages.info('Lifting JavaScript-specific details');
|
|
317
|
+
const {
|
|
318
|
+
scripts,
|
|
319
|
+
tags,
|
|
320
|
+
eslintConfigs,
|
|
321
|
+
dependencies,
|
|
322
|
+
devDependencies,
|
|
323
|
+
packageManager: manager
|
|
324
|
+
} = results;
|
|
325
|
+
const packageManager = await resolvePackageManager({
|
|
326
|
+
projectRoot,
|
|
327
|
+
packageManager: manager
|
|
328
|
+
});
|
|
329
|
+
const eslintResults = await eslint.lift({
|
|
330
|
+
projectRoot,
|
|
331
|
+
configs: eslintConfigs
|
|
332
|
+
});
|
|
333
|
+
const enhancerResults = await applyEnhancers({
|
|
334
|
+
results,
|
|
335
|
+
enhancers: [enhanceHuskyEnhancer(packageManager), enginesEnhancer],
|
|
336
|
+
projectRoot
|
|
337
|
+
});
|
|
338
|
+
await liftPackage(deepmerge__default["default"].all([{
|
|
339
|
+
projectRoot,
|
|
340
|
+
scripts,
|
|
341
|
+
tags,
|
|
342
|
+
dependencies,
|
|
343
|
+
devDependencies,
|
|
344
|
+
packageManager
|
|
345
|
+
}, enhancerResults, eslintResults]));
|
|
346
|
+
return enhancerResults;
|
|
347
|
+
}
|
|
348
|
+
|
|
198
349
|
function validate(options) {
|
|
199
350
|
const schema = joi__namespace.object().required().keys({
|
|
200
351
|
projectRoot: joi__namespace.string().required(),
|
|
@@ -1477,7 +1628,7 @@ async function scaffolder (options) {
|
|
|
1477
1628
|
scripts: mergedContributions.scripts,
|
|
1478
1629
|
pathWithinParent
|
|
1479
1630
|
});
|
|
1480
|
-
const liftResults = await
|
|
1631
|
+
const liftResults = await lift({
|
|
1481
1632
|
results: deepmerge__default["default"]({
|
|
1482
1633
|
devDependencies: ['npm-run-all'],
|
|
1483
1634
|
packageManager
|
|
@@ -1501,9 +1652,23 @@ async function scaffolder (options) {
|
|
|
1501
1652
|
};
|
|
1502
1653
|
}
|
|
1503
1654
|
|
|
1655
|
+
async function test ({
|
|
1656
|
+
projectRoot
|
|
1657
|
+
}) {
|
|
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
|
+
}
|
|
1665
|
+
}
|
|
1666
|
+
|
|
1504
1667
|
const questionNames = _objectSpread2(_objectSpread2({}, languageScaffolderPrompts.questionNames), questionNames$1);
|
|
1505
1668
|
|
|
1669
|
+
exports.lift = lift;
|
|
1506
1670
|
exports.questionNames = questionNames;
|
|
1507
1671
|
exports.scaffold = scaffolder;
|
|
1508
1672
|
exports.scaffoldUnitTesting = scaffoldUnitTesting;
|
|
1673
|
+
exports.test = test;
|
|
1509
1674
|
//# sourceMappingURL=index.cjs.js.map
|