@form8ion/javascript 15.8.3 → 16.0.0-beta.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.
Files changed (46) hide show
  1. package/README.md +4 -4
  2. package/example.js +2 -2
  3. package/lib/index.js +77 -63
  4. package/lib/index.js.map +1 -1
  5. package/package.json +18 -18
  6. package/src/code-style/lifter.js +2 -2
  7. package/src/dependencies/installer.js +5 -5
  8. package/src/dependencies/installer.test.js +8 -22
  9. package/src/dependencies/processor.js +10 -8
  10. package/src/dependencies/processor.test.js +31 -18
  11. package/src/dependencies/remover.js +2 -3
  12. package/src/dependencies/remover.test.js +4 -2
  13. package/src/lifter.js +8 -5
  14. package/src/lifter.test.js +12 -11
  15. package/src/node-version/scaffolder.js +4 -5
  16. package/src/node-version/scaffolder.test.js +5 -4
  17. package/src/node-version/tasks.js +4 -6
  18. package/src/node-version/tasks.test.js +5 -8
  19. package/src/options/schemas.js +2 -1
  20. package/src/options/schemas.test.js +12 -6
  21. package/src/options/validator.js +2 -1
  22. package/src/options/validator.test.js +2 -1
  23. package/src/package/lifter.js +3 -4
  24. package/src/package/lifter.test.js +8 -4
  25. package/src/package/scaffolder.js +2 -3
  26. package/src/package/scaffolder.test.js +3 -1
  27. package/src/project-type/application/scaffolder.js +2 -3
  28. package/src/project-type/application/scaffolder.test.js +3 -5
  29. package/src/project-type/monorepo/scaffolder.js +2 -3
  30. package/src/project-type/monorepo/scaffolder.test.js +3 -6
  31. package/src/project-type/package/scaffolder.js +2 -3
  32. package/src/project-type/package/scaffolder.test.js +6 -5
  33. package/src/project-type/publishable/access-level.js +1 -1
  34. package/src/project-type/publishable/access-level.test.js +6 -4
  35. package/src/project-type/scaffolder.js +4 -4
  36. package/src/project-type/scaffolder.test.js +15 -16
  37. package/src/prompts/conditionals.js +1 -1
  38. package/src/prompts/conditionals.test.js +27 -6
  39. package/src/prompts/questions.js +4 -4
  40. package/src/prompts/questions.test.js +21 -6
  41. package/src/prompts/validators.js +7 -2
  42. package/src/prompts/validators.test.js +9 -6
  43. package/src/scaffolder.js +7 -8
  44. package/src/scaffolder.test.js +6 -5
  45. package/src/tester.js +2 -4
  46. package/src/tester.test.js +5 -8
package/src/scaffolder.js CHANGED
@@ -1,5 +1,4 @@
1
1
  import deepmerge from 'deepmerge';
2
- import {info} from '@travi/cli-messages';
3
2
  import {projectTypes, scaffoldChoice} from '@form8ion/javascript-core';
4
3
  import {scaffold as scaffoldCommitConvention} from '@form8ion/commit-convention';
5
4
 
@@ -18,8 +17,8 @@ import buildDocumentationCommand from './documentation/generation-command.js';
18
17
  import {scaffold as scaffoldVerification} from './verification/index.js';
19
18
  import {scaffold as scaffoldCodeStyle} from './code-style/index.js';
20
19
 
21
- export default async function scaffoldJavascript(options) {
22
- info('Initializing JavaScript project');
20
+ export default async function scaffoldJavascript(options, {logger}) {
21
+ logger.info('Initializing JavaScript project');
23
22
 
24
23
  const {
25
24
  projectRoot,
@@ -55,9 +54,9 @@ export default async function scaffoldJavascript(options) {
55
54
  provideExample,
56
55
  packageManager,
57
56
  dialect
58
- } = await prompt(ciServices, hosts, visibility, vcs, decisions, configs, pathWithinParent);
57
+ } = await prompt(ciServices, hosts, visibility, vcs, decisions, configs, pathWithinParent, {logger});
59
58
 
60
- info('Writing project files', {level: 'secondary'});
59
+ logger.info('Writing project files', {level: 'secondary'});
61
60
 
62
61
  const {packageName} = await scaffoldPackage({
63
62
  projectRoot,
@@ -67,7 +66,7 @@ export default async function scaffoldJavascript(options) {
67
66
  license,
68
67
  author,
69
68
  description
70
- });
69
+ }, {logger});
71
70
  const projectTypeResults = await scaffoldProjectType({
72
71
  projectType,
73
72
  projectRoot,
@@ -86,7 +85,7 @@ export default async function scaffoldJavascript(options) {
86
85
  dialect,
87
86
  provideExample,
88
87
  publishRegistry: configs.registries.publish
89
- });
88
+ }, {logger});
90
89
  const verificationResults = await scaffoldVerification({
91
90
  projectRoot,
92
91
  dialect,
@@ -100,7 +99,7 @@ export default async function scaffoldJavascript(options) {
100
99
  pathWithinParent
101
100
  });
102
101
  const [nodeVersion, npmResults, dialectResults, codeStyleResults] = await Promise.all([
103
- scaffoldNodeVersion({projectRoot, nodeVersionCategory}),
102
+ scaffoldNodeVersion({projectRoot, nodeVersionCategory}, {logger}),
104
103
  scaffoldNpmConfig({projectType, projectRoot}),
105
104
  scaffoldDialect({
106
105
  dialect,
@@ -62,6 +62,7 @@ describe('javascript project scaffolder', () => {
62
62
  const mergedVcsIgnore = any.simpleObject();
63
63
  const mergedNextSteps = any.listOf(any.simpleObject);
64
64
  const mergedResults = {...any.simpleObject(), vcsIgnore: mergedVcsIgnore, nextSteps: mergedNextSteps};
65
+ const logger = {info: () => undefined};
65
66
 
66
67
  beforeEach(() => {
67
68
  const projectName = any.word();
@@ -121,7 +122,7 @@ describe('javascript project scaffolder', () => {
121
122
  }
122
123
  });
123
124
  when(prompt)
124
- .calledWith(ciServices, hosts, visibility, vcs, decisions, configs, pathWithinParent)
125
+ .calledWith(ciServices, hosts, visibility, vcs, decisions, configs, pathWithinParent, {logger})
125
126
  .thenResolve({
126
127
  packageManager,
127
128
  dialect,
@@ -138,7 +139,7 @@ describe('javascript project scaffolder', () => {
138
139
  when(scaffoldDocumentation).calledWith({packageManager, projectTypeResults}).thenReturn(documentation);
139
140
  when(buildDocumentationCommand).calledWith(packageManager).thenReturn(documentationCommand);
140
141
  when(scaffoldPackage)
141
- .calledWith({projectRoot, projectName, scope, dialect, license, author, description})
142
+ .calledWith({projectRoot, projectName, scope, dialect, license, author, description}, {logger})
142
143
  .thenResolve(packageResults);
143
144
  when(scaffoldProjectType)
144
145
  .calledWith({
@@ -159,7 +160,7 @@ describe('javascript project scaffolder', () => {
159
160
  scope,
160
161
  tests,
161
162
  publishRegistry
162
- })
163
+ }, {logger})
163
164
  .thenResolve(projectTypeResults);
164
165
  when(scaffoldVerification)
165
166
  .calledWith({
@@ -175,7 +176,7 @@ describe('javascript project scaffolder', () => {
175
176
  integrationTestFrameworks
176
177
  })
177
178
  .thenResolve(verificationResults);
178
- when(scaffoldNodeVersion).calledWith({projectRoot, nodeVersionCategory}).thenResolve(nodeVersionResults);
179
+ when(scaffoldNodeVersion).calledWith({projectRoot, nodeVersionCategory}, {logger}).thenResolve(nodeVersionResults);
179
180
  when(scaffoldDialect)
180
181
  .calledWith({dialect, configs, projectRoot, projectType, testFilenamePattern})
181
182
  .thenResolve(dialectResults);
@@ -235,7 +236,7 @@ describe('javascript project scaffolder', () => {
235
236
  });
236
237
 
237
238
  it('should scaffold the javascript details', async () => {
238
- const results = await scaffold(options);
239
+ const results = await scaffold(options, {logger});
239
240
 
240
241
  expect(scaffoldPackageManager).toHaveBeenCalledWith({projectRoot, packageManager});
241
242
  expect(results).toEqual({
package/src/tester.js CHANGED
@@ -1,9 +1,7 @@
1
- import {info} from '@travi/cli-messages';
2
-
3
1
  import {test as nvmIsUsed} from './node-version/index.js';
4
2
  import {test as jsPackageManagerIsUsed} from './package-managers/index.js';
5
3
 
6
- export default async function projectUsesJavaScript({projectRoot}) {
4
+ export default async function projectUsesJavaScript({projectRoot}, {logger}) {
7
5
  const [nvmFound, jsPackageManagerFound] = await Promise.all([
8
6
  nvmIsUsed({projectRoot}),
9
7
  jsPackageManagerIsUsed({projectRoot})
@@ -11,7 +9,7 @@ export default async function projectUsesJavaScript({projectRoot}) {
11
9
 
12
10
  const jsProjectFound = nvmFound || jsPackageManagerFound;
13
11
 
14
- if (jsProjectFound) info('JavaScript Project Detected');
12
+ if (jsProjectFound) logger.info('JavaScript Project Detected');
15
13
 
16
14
  return jsProjectFound;
17
15
  }
@@ -1,4 +1,4 @@
1
- import {vi, it, describe, afterEach, expect} from 'vitest';
1
+ import {describe, expect, it, vi} from 'vitest';
2
2
  import any from '@travi/any';
3
3
  import {when} from 'vitest-when';
4
4
 
@@ -11,27 +11,24 @@ vi.mock('./package-managers/index.js');
11
11
 
12
12
  describe('javascript predicate', () => {
13
13
  const projectRoot = any.string();
14
-
15
- afterEach(() => {
16
- vi.clearAllMocks();
17
- });
14
+ const logger = {info: () => undefined};
18
15
 
19
16
  it('should return `true` if nvm is detected', async () => {
20
17
  when(nvmIsUsed).calledWith({projectRoot}).thenResolve(true);
21
18
 
22
- expect(await testApplicability({projectRoot})).toBe(true);
19
+ expect(await testApplicability({projectRoot}, {logger})).toBe(true);
23
20
  });
24
21
 
25
22
  it('should return `true` if a javascript package manager is detected', async () => {
26
23
  when(jsPackageManagerIsUsed).calledWith({projectRoot}).thenResolve(true);
27
24
 
28
- expect(await testApplicability({projectRoot})).toBe(true);
25
+ expect(await testApplicability({projectRoot}, {logger})).toBe(true);
29
26
  });
30
27
 
31
28
  it('should return `false` if neither nvm nor a js package manager is found', async () => {
32
29
  when(nvmIsUsed).calledWith({projectRoot}).thenResolve(false);
33
30
  when(jsPackageManagerIsUsed).calledWith({projectRoot}).thenResolve(false);
34
31
 
35
- expect(await testApplicability({projectRoot})).toBe(false);
32
+ expect(await testApplicability({projectRoot}, {logger})).toBe(false);
36
33
  });
37
34
  });