@qavajs/create 0.3.0 → 0.4.0

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/CHANGELOG.MD CHANGED
@@ -8,6 +8,12 @@ Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how
8
8
  :beetle: - bugfix
9
9
  :x: - deprecation
10
10
 
11
+ ## [0.4.0]
12
+ - :rocket: updated formatters to modern syntax
13
+ - :rocket: added .gitignore template
14
+ - :rocket: migrated to @inquirer/prompts
15
+ - :rocket: updated wizard to support built-in po
16
+
11
17
  ## [0.3.0]
12
18
  - :rocket: added @qavajs/validation as dependency
13
19
  - :rocket: added @qavajs/steps-memory as default module
package/lib/install.js CHANGED
@@ -35,14 +35,15 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
35
35
  return (mod && mod.__esModule) ? mod : { "default": mod };
36
36
  };
37
37
  Object.defineProperty(exports, "__esModule", { value: true });
38
+ exports.default = install;
38
39
  const promises_1 = require("node:fs/promises");
39
40
  const fs_extra_1 = require("fs-extra");
40
41
  const path_1 = require("path");
41
42
  const yarn_install_1 = __importDefault(require("yarn-install"));
42
43
  const deps_1 = __importStar(require("./deps"));
43
44
  const ejs_1 = require("ejs");
44
- const inquirer = import('inquirer').then(m => m.default);
45
- const packs = (deps) => deps.map(({ module }) => module);
45
+ const prompts_1 = require("@inquirer/prompts");
46
+ const packs = (deps) => deps.map(({ module }) => ({ value: module }));
46
47
  const packages = (moduleList, packageMap) => {
47
48
  return moduleList
48
49
  .map((module) => {
@@ -56,43 +57,32 @@ const replaceNewLines = (text) => text.replace(/(\r?\n\r?)+/g, '\n');
56
57
  function install() {
57
58
  return __awaiter(this, void 0, void 0, function* () {
58
59
  const requiredDeps = [...deps_1.default];
59
- const { prompt } = yield inquirer;
60
- const answers = yield prompt([
61
- {
62
- type: 'list',
60
+ const answers = {
61
+ moduleSystem: yield (0, prompts_1.select)({
63
62
  message: 'select module system you want to use:',
64
- name: 'moduleSystem',
65
63
  choices: [
66
- 'CommonJS',
67
- 'ES Modules',
68
- 'Typescript'
64
+ { value: 'CommonJS' },
65
+ { value: 'ES Modules' },
66
+ { value: 'Typescript' }
69
67
  ]
70
- },
71
- {
72
- type: 'checkbox',
68
+ }),
69
+ steps: yield (0, prompts_1.checkbox)({
73
70
  message: 'select step packages to install:',
74
- name: 'steps',
75
71
  choices: packs(deps_1.steps)
76
- },
77
- {
78
- type: 'checkbox',
79
- message: 'select modules to install:',
80
- name: 'modules',
81
- choices: packs(deps_1.modules)
82
- },
83
- {
84
- type: 'checkbox',
72
+ }),
73
+ formats: yield (0, prompts_1.checkbox)({
85
74
  message: 'select formatters (reporters) to install:',
86
- name: 'formats',
87
75
  choices: packs(deps_1.format)
88
- },
89
- {
90
- type: 'checkbox',
76
+ }),
77
+ modules: yield (0, prompts_1.checkbox)({
78
+ message: 'select modules to install:',
79
+ choices: packs(deps_1.modules)
80
+ }),
81
+ additionalModules: yield (0, prompts_1.checkbox)({
91
82
  message: 'select additional modules to install:',
92
- name: 'additionalModules',
93
83
  choices: packs(deps_1.additionalModules)
94
- },
95
- ]);
84
+ })
85
+ };
96
86
  const stepsPackages = ['@qavajs/steps-memory', ...packages(answers.steps, deps_1.steps)];
97
87
  const formatPackages = packages(answers.formats, deps_1.format);
98
88
  const modulePackages = packages(answers.modules, deps_1.modules);
@@ -107,6 +97,9 @@ function install() {
107
97
  }
108
98
  const isPOIncluded = isWdioIncluded || isPlaywrightIncluded;
109
99
  const isTemplateIncluded = answers.modules.includes('template');
100
+ // add .gitignore
101
+ const gitignoreTemplate = yield (0, promises_1.readFile)((0, path_1.resolve)(__dirname, '../templates/.gitignore'), 'utf-8');
102
+ yield (0, promises_1.writeFile)(`./.gitignore`, gitignoreTemplate, 'utf-8');
110
103
  // add package.json
111
104
  const packageJsonTemplate = yield (0, promises_1.readFile)((0, path_1.resolve)(__dirname, '../templates/package.json'), 'utf-8');
112
105
  yield (0, promises_1.writeFile)(`./package.json`, packageJsonTemplate, 'utf-8');
@@ -128,7 +121,7 @@ function install() {
128
121
  modules: JSON.stringify(modulePackages),
129
122
  format: JSON.stringify(deps_1.format
130
123
  .filter(p => formatPackages.includes(p.packageName))
131
- .map(p => p.packageName + (p.out ? `:${p.out}` : ''))),
124
+ .map(p => p.out ? [p.packageName, p.out] : p.packageName)),
132
125
  isWdioIncluded,
133
126
  isPlaywrightIncluded,
134
127
  isTemplateIncluded
@@ -140,12 +133,11 @@ function install() {
140
133
  if (isPOIncluded) {
141
134
  let poModule;
142
135
  if (isWdioIncluded)
143
- poModule = '@qavajs/po';
136
+ poModule = '@qavajs/steps-wdio/po';
144
137
  if (isPlaywrightIncluded)
145
- poModule = '@qavajs/po-playwright';
138
+ poModule = '@qavajs/steps-playwright/po';
146
139
  if (!poModule)
147
140
  throw new Error('No PO module');
148
- requiredDeps.push(poModule);
149
141
  const featureTemplate = yield (0, promises_1.readFile)((0, path_1.resolve)(__dirname, '../templates/feature.ejs'), 'utf-8');
150
142
  const featureEjs = (0, ejs_1.compile)(featureTemplate);
151
143
  const featureFile = featureEjs();
@@ -200,4 +192,3 @@ function install() {
200
192
  console.log(`npx qavajs --config config.${isTypescript ? 'ts' : 'js'}`);
201
193
  });
202
194
  }
203
- exports.default = install;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@qavajs/create",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "description": "initializer of @qavajs project",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -20,18 +20,17 @@
20
20
  "author": "Alexandr Galichenko",
21
21
  "license": "MIT",
22
22
  "dependencies": {
23
- "ejs": "^3.1.9",
23
+ "@inquirer/prompts": "^5.3.2",
24
+ "ejs": "^3.1.10",
24
25
  "fs-extra": "^11.2.0",
25
- "inquirer": "^9.2.16",
26
- "typescript": "^5.4.5",
26
+ "typescript": "^5.5.4",
27
27
  "yarn-install": "^1.0.0"
28
28
  },
29
29
  "devDependencies": {
30
30
  "@types/ejs": "^3.1.5",
31
31
  "@types/fs-extra": "^11.0.4",
32
- "@types/inquirer": "^9.0.7",
33
- "@types/node": "^20.11.28",
34
- "@vitest/coverage-v8": "^1.6.0",
35
- "vitest": "^1.6.0"
32
+ "@types/node": "^20.14.11",
33
+ "@vitest/coverage-v8": "^2.0.4",
34
+ "vitest": "^2.0.4"
36
35
  }
37
36
  }
package/src/install.ts CHANGED
@@ -2,20 +2,11 @@ import { readFile, writeFile } from 'node:fs/promises';
2
2
  import { ensureDir } from 'fs-extra';
3
3
  import { resolve } from 'path';
4
4
  import yarnInstall from 'yarn-install';
5
- import deps, {steps, format, modules, additionalModules, ModuleDefinition} from './deps';
5
+ import deps, { steps, format, modules, additionalModules, ModuleDefinition } from './deps';
6
6
  import { compile } from 'ejs';
7
- const inquirer = import('inquirer').then(m => m.default);
8
-
9
- type Answers = {
10
- steps: Array<string>,
11
- formats: Array<string>,
12
- modules: Array<string>,
13
- additionalModules: Array<string>,
14
- parallel: number,
15
- moduleSystem: string
16
- }
7
+ import { select, checkbox } from '@inquirer/prompts';
17
8
 
18
- const packs = (deps: Array<ModuleDefinition>) => deps.map(({module}) => module);
9
+ const packs = (deps: Array<ModuleDefinition>) => deps.map(({module}) => ({ value: module }));
19
10
  const packages = (moduleList: Array<string>, packageMap: Array<ModuleDefinition>): Array<string> => {
20
11
  return moduleList
21
12
  .map((module: string) => {
@@ -29,43 +20,33 @@ const replaceNewLines = (text: string) => text.replace(/(\r?\n\r?)+/g, '\n');
29
20
 
30
21
  export default async function install(): Promise<void> {
31
22
  const requiredDeps = [...deps];
32
- const { prompt } = await inquirer;
33
- const answers = await prompt([
34
- {
35
- type: 'list',
23
+
24
+ const answers = {
25
+ moduleSystem: await select({
36
26
  message: 'select module system you want to use:',
37
- name: 'moduleSystem',
38
27
  choices: [
39
- 'CommonJS',
40
- 'ES Modules',
41
- 'Typescript'
28
+ { value: 'CommonJS' },
29
+ { value: 'ES Modules' },
30
+ { value: 'Typescript' }
42
31
  ]
43
- },
44
- {
45
- type: 'checkbox',
32
+ }),
33
+ steps: await checkbox({
46
34
  message: 'select step packages to install:',
47
- name: 'steps',
48
35
  choices: packs(steps)
49
- },
50
- {
51
- type: 'checkbox',
52
- message: 'select modules to install:',
53
- name: 'modules',
54
- choices: packs(modules)
55
- },
56
- {
57
- type: 'checkbox',
36
+ }),
37
+ formats: await checkbox({
58
38
  message: 'select formatters (reporters) to install:',
59
- name: 'formats',
60
39
  choices: packs(format)
61
- },
62
- {
63
- type: 'checkbox',
40
+ }),
41
+ modules: await checkbox({
42
+ message: 'select modules to install:',
43
+ choices: packs(modules)
44
+ }),
45
+ additionalModules: await checkbox({
64
46
  message: 'select additional modules to install:',
65
- name: 'additionalModules',
66
47
  choices: packs(additionalModules)
67
- },
68
- ]) as Answers;
48
+ })
49
+ };
69
50
 
70
51
  const stepsPackages: Array<string> = ['@qavajs/steps-memory', ...packages(answers.steps, steps)];
71
52
  const formatPackages: Array<string> = packages(answers.formats, format);
@@ -83,6 +64,13 @@ export default async function install(): Promise<void> {
83
64
  const isPOIncluded: boolean = isWdioIncluded || isPlaywrightIncluded;
84
65
  const isTemplateIncluded: boolean = answers.modules.includes('template');
85
66
 
67
+ // add .gitignore
68
+ const gitignoreTemplate = await readFile(
69
+ resolve(__dirname, '../templates/.gitignore'),
70
+ 'utf-8'
71
+ );
72
+ await writeFile(`./.gitignore`, gitignoreTemplate, 'utf-8');
73
+
86
74
  // add package.json
87
75
  const packageJsonTemplate = await readFile(
88
76
  resolve(__dirname, '../templates/package.json'),
@@ -114,7 +102,7 @@ export default async function install(): Promise<void> {
114
102
  format: JSON.stringify(
115
103
  format
116
104
  .filter(p => formatPackages.includes(p.packageName))
117
- .map(p => p.packageName + (p.out ? `:${p.out}` : ''))
105
+ .map(p => p.out ? [p.packageName, p.out] : p.packageName)
118
106
  ),
119
107
  isWdioIncluded,
120
108
  isPlaywrightIncluded,
@@ -128,10 +116,9 @@ export default async function install(): Promise<void> {
128
116
 
129
117
  if (isPOIncluded) {
130
118
  let poModule: string | undefined;
131
- if (isWdioIncluded) poModule = '@qavajs/po';
132
- if (isPlaywrightIncluded) poModule = '@qavajs/po-playwright';
119
+ if (isWdioIncluded) poModule = '@qavajs/steps-wdio/po';
120
+ if (isPlaywrightIncluded) poModule = '@qavajs/steps-playwright/po';
133
121
  if (!poModule) throw new Error('No PO module');
134
- requiredDeps.push(poModule);
135
122
  const featureTemplate: string = await readFile(
136
123
  resolve(__dirname, '../templates/feature.ejs'),
137
124
  'utf-8'