@whook/create 15.0.0 → 16.0.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/dist/index.js +7 -7
- package/dist/index.js.map +1 -1
- package/dist/services/createWhook.d.ts +5 -4
- package/dist/services/createWhook.js +28 -28
- package/dist/services/createWhook.js.map +1 -1
- package/dist/services/createWhook.test.js +79 -76
- package/dist/services/createWhook.test.js.map +1 -1
- package/package.json +12 -11
- package/src/index.ts +7 -11
- package/src/services/__snapshots__/createWhook.test.ts.snap +194 -190
- package/src/services/createWhook.test.ts +79 -76
- package/src/services/createWhook.ts +41 -45
package/dist/index.js
CHANGED
|
@@ -4,10 +4,10 @@ import { Knifecycle, constant } from 'knifecycle';
|
|
|
4
4
|
import { exec as _exec } from 'child_process';
|
|
5
5
|
import { default as fsExtra } from 'fs-extra';
|
|
6
6
|
import debug from 'debug';
|
|
7
|
-
import
|
|
7
|
+
import { join, resolve, dirname } from 'node:path';
|
|
8
8
|
import inquirer from 'inquirer';
|
|
9
9
|
import { createRequire } from 'module';
|
|
10
|
-
import {
|
|
10
|
+
import { initLog, initLock, initDelay } from 'common-services';
|
|
11
11
|
import initAuthor from './services/author.js';
|
|
12
12
|
import initProject from './services/project.js';
|
|
13
13
|
import initCreateWhook from './services/createWhook.js';
|
|
@@ -17,7 +17,7 @@ export async function runCreateWhook() {
|
|
|
17
17
|
try {
|
|
18
18
|
const $ = new Knifecycle();
|
|
19
19
|
// TODO: Use import.meta when Jest will support it
|
|
20
|
-
const require = createRequire(import.meta.url ||
|
|
20
|
+
const require = createRequire(import.meta.url || join(cwd(), 'src', 'services', 'API.test.ts'));
|
|
21
21
|
$.register(constant('CWD', cwd()));
|
|
22
22
|
$.register(constant('inquirer', inquirer));
|
|
23
23
|
$.register(constant('exec', _exec));
|
|
@@ -25,15 +25,15 @@ export async function runCreateWhook() {
|
|
|
25
25
|
$.register(constant('readFile', _readFile));
|
|
26
26
|
$.register(constant('copy', _copy));
|
|
27
27
|
$.register(constant('ensureDir', _ensureDir));
|
|
28
|
-
$.register(constant('SOURCE_DIR',
|
|
28
|
+
$.register(constant('SOURCE_DIR', resolve(dirname(require.resolve('@whook/example')), '..')));
|
|
29
29
|
$.register(constant('logger', {
|
|
30
30
|
output: info,
|
|
31
31
|
error: error,
|
|
32
32
|
debug: debug('whook'),
|
|
33
33
|
}));
|
|
34
|
-
$.register(
|
|
35
|
-
$.register(
|
|
36
|
-
$.register(
|
|
34
|
+
$.register(initLog);
|
|
35
|
+
$.register(initLock);
|
|
36
|
+
$.register(initDelay);
|
|
37
37
|
$.register(initAuthor);
|
|
38
38
|
$.register(initProject);
|
|
39
39
|
$.register(initCreateWhook);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,IAAI,IAAI,KAAK,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,IAAI,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,18 +1,19 @@
|
|
|
1
1
|
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
+
/// <reference types="node" resolution-mode="require"/>
|
|
3
|
+
import { exec as _exec } from 'node:child_process';
|
|
4
|
+
import { readFile as _readFile, readdir as _readdir } from 'node:fs/promises';
|
|
5
|
+
import { copy as _copy, outputFile as _outputFile } from 'fs-extra';
|
|
2
6
|
import _ora from 'ora';
|
|
3
|
-
import { exec as _exec } from 'child_process';
|
|
4
|
-
import { default as fsExtra } from 'fs-extra';
|
|
5
7
|
import type { LogService } from 'common-services';
|
|
6
8
|
import type { ProjectService } from './project.js';
|
|
7
9
|
import type { AuthorService } from './author.js';
|
|
8
|
-
declare const _writeFile: typeof fsExtra.writeFile, _readFile: typeof fsExtra.readFile, _copy: typeof fsExtra.copy, _readdir: typeof fsExtra.readdir;
|
|
9
10
|
export type CreateWhookService = () => Promise<void>;
|
|
10
11
|
declare const _default: import("knifecycle").ServiceInitializer<{
|
|
11
12
|
CWD: string;
|
|
12
13
|
SOURCE_DIR: string;
|
|
13
14
|
author: AuthorService;
|
|
14
15
|
project: ProjectService;
|
|
15
|
-
|
|
16
|
+
outputFile: typeof _outputFile;
|
|
16
17
|
readFile: typeof _readFile;
|
|
17
18
|
readdir: typeof _readdir;
|
|
18
19
|
exec: typeof _exec;
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import { autoService } from 'knifecycle';
|
|
2
|
-
import
|
|
2
|
+
import { exec as _exec } from 'node:child_process';
|
|
3
|
+
import { readFile as _readFile, readdir as _readdir } from 'node:fs/promises';
|
|
4
|
+
import { copy as _copy, outputFile as _outputFile } from 'fs-extra';
|
|
5
|
+
import { join, relative } from 'node:path';
|
|
3
6
|
import _axios from 'axios';
|
|
4
7
|
import _ora from 'ora';
|
|
5
8
|
import { printStackTrace, YError } from 'yerror';
|
|
6
|
-
import { exec as _exec } from 'child_process';
|
|
7
|
-
import { default as fsExtra } from 'fs-extra';
|
|
8
9
|
const GIT_IGNORE_URL = 'https://www.toptal.com/developers/gitignore/api/osx,node,linux';
|
|
9
10
|
const README_REGEXP = /^(?:[^]*)\[\/\/\]: # \(::contents:start\)\r?\n\r?\n([^]*)\r?\n\r?\n\[\/\/\]: # \(::contents:end\)(?:[^]*)$/gm;
|
|
10
|
-
|
|
11
|
-
export default autoService(async function initCreateWhook({ CWD, SOURCE_DIR, author, project, writeFile = _writeFile, readFile = _readFile, readdir = _readdir, exec = _exec, copy = _copy, axios = _axios, ora = _ora, log, }) {
|
|
11
|
+
export default autoService(async function initCreateWhook({ CWD, SOURCE_DIR, author, project, outputFile = _outputFile, readFile = _readFile, readdir = _readdir, exec = _exec, copy = _copy, axios = _axios, ora = _ora, log, }) {
|
|
12
12
|
return async function createWhook() {
|
|
13
13
|
log('warning', "🏁️ - Starting Whook project's creation!");
|
|
14
|
-
const basePackageJSON = JSON.parse((await readFile(
|
|
14
|
+
const basePackageJSON = JSON.parse((await readFile(join(SOURCE_DIR, 'package.json'))).toString());
|
|
15
15
|
const finalPackageJSON = {
|
|
16
16
|
name: project.name,
|
|
17
17
|
description: 'A new Whook project',
|
|
@@ -44,27 +44,30 @@ export default autoService(async function initCreateWhook({ CWD, SOURCE_DIR, aut
|
|
|
44
44
|
jest: basePackageJSON.jest,
|
|
45
45
|
metapak: undefined,
|
|
46
46
|
};
|
|
47
|
+
await readFile(join(SOURCE_DIR, 'src/watch.ts')).then((data) => {
|
|
48
|
+
return outputFile(join(project.directory, 'src/watch.ts'), data.toString().replace('../../', './'));
|
|
49
|
+
});
|
|
47
50
|
await Promise.all([
|
|
48
51
|
copy(SOURCE_DIR, project.directory, {
|
|
49
52
|
filter: (src, dest) => {
|
|
50
|
-
if (src.startsWith(
|
|
51
|
-
src.startsWith(
|
|
52
|
-
src.startsWith(
|
|
53
|
+
if (src.startsWith(join(SOURCE_DIR, 'node_modules')) ||
|
|
54
|
+
src.startsWith(join(SOURCE_DIR, 'dist')) ||
|
|
55
|
+
src.startsWith(join(SOURCE_DIR, 'coverage')) ||
|
|
53
56
|
[
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
57
|
+
join(SOURCE_DIR, 'package.json'),
|
|
58
|
+
join(SOURCE_DIR, 'package-lock.json'),
|
|
59
|
+
join(SOURCE_DIR, 'LICENSE'),
|
|
60
|
+
join(SOURCE_DIR, 'README.md'),
|
|
61
|
+
join(SOURCE_DIR, 'src/watch.ts'),
|
|
59
62
|
].includes(src)) {
|
|
60
|
-
log('debug',
|
|
63
|
+
log('debug', `💱 - Discarding "${src}" => "${dest} ("${relative(src, SOURCE_DIR)}").`);
|
|
61
64
|
return false;
|
|
62
65
|
}
|
|
63
|
-
log('debug',
|
|
66
|
+
log('debug', `💱 - Moving "${src}" => "${dest}".`);
|
|
64
67
|
return true;
|
|
65
68
|
},
|
|
66
69
|
}),
|
|
67
|
-
readFile(
|
|
70
|
+
readFile(join(SOURCE_DIR, 'README.md')).then((data) => outputFile(join(project.directory, 'README.md'), `# ${project.name}
|
|
68
71
|
|
|
69
72
|
${data.toString().replace(README_REGEXP, '$1')}
|
|
70
73
|
|
|
@@ -72,14 +75,14 @@ ${data.toString().replace(README_REGEXP, '$1')}
|
|
|
72
75
|
${author.name}
|
|
73
76
|
|
|
74
77
|
`)),
|
|
75
|
-
...(await readdir(
|
|
78
|
+
...(await readdir(join(SOURCE_DIR, 'src', 'config'))).map((environment) => environment === 'common'
|
|
76
79
|
? Promise.resolve()
|
|
77
|
-
:
|
|
80
|
+
: outputFile(join(project.directory, `.env.app.${environment}`), `# Loaded when APP_ENV=${environment}
|
|
78
81
|
|
|
79
82
|
# For JWT signing
|
|
80
83
|
JWT_SECRET=oudelali
|
|
81
84
|
`)),
|
|
82
|
-
|
|
85
|
+
outputFile(join(project.directory, '.env.node.development'), `# Loaded when NODE_ENV=development
|
|
83
86
|
|
|
84
87
|
# Allow to kill the process with still open sockets
|
|
85
88
|
DESTROY_SOCKETS=1'
|
|
@@ -87,11 +90,8 @@ DESTROY_SOCKETS=1'
|
|
|
87
90
|
# Common env var to get dev outputs
|
|
88
91
|
DEV_MODE=1
|
|
89
92
|
`),
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
return writeFile(path.join(project.directory, 'src/watch.ts'), data.toString().replace('../../', './'));
|
|
93
|
-
}),
|
|
94
|
-
writeFile(path.join(project.directory, 'tsconfig.json'), JSON.stringify({
|
|
93
|
+
outputFile(join(project.directory, 'package.json'), JSON.stringify(finalPackageJSON, null, 2)),
|
|
94
|
+
outputFile(join(project.directory, 'tsconfig.json'), JSON.stringify({
|
|
95
95
|
compilerOptions: {
|
|
96
96
|
module: 'Node16',
|
|
97
97
|
moduleResolution: 'Node16',
|
|
@@ -109,7 +109,7 @@ DEV_MODE=1
|
|
|
109
109
|
include: ['src/**/*.ts'],
|
|
110
110
|
exclude: ['node_modules'],
|
|
111
111
|
}, null, 2)),
|
|
112
|
-
|
|
112
|
+
outputFile(join(project.directory, 'LICENSE'), `Copyright ${author.name}, all rights reserved.`),
|
|
113
113
|
axios({
|
|
114
114
|
method: 'get',
|
|
115
115
|
url: GIT_IGNORE_URL,
|
|
@@ -118,7 +118,7 @@ DEV_MODE=1
|
|
|
118
118
|
'Accept-Encoding': 'gzip,deflate,compress',
|
|
119
119
|
},
|
|
120
120
|
})
|
|
121
|
-
.then((response) =>
|
|
121
|
+
.then((response) => outputFile(join(project.directory, '.gitignore'), `${response.data.toString()}
|
|
122
122
|
|
|
123
123
|
# Whook's files
|
|
124
124
|
builds/
|
|
@@ -169,7 +169,7 @@ builds/
|
|
|
169
169
|
});
|
|
170
170
|
log('error-stack', printStackTrace(err));
|
|
171
171
|
}
|
|
172
|
-
log('warning', `➕ - Run \`cd ${
|
|
172
|
+
log('warning', `➕ - Run \`cd ${relative(CWD, project.directory)}\` to enter the project.`);
|
|
173
173
|
log('warning', `➕ - Then run \`DRY_RUN=1 npm run dev\` to check installation.`);
|
|
174
174
|
log('warning', `➕ - And finally run \`npm run watch\` to start dev!`);
|
|
175
175
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createWhook.js","sourceRoot":"","sources":["../../src/services/createWhook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,IAAI,
|
|
1
|
+
{"version":3,"file":"createWhook.js","sourceRoot":"","sources":["../../src/services/createWhook.ts"],"names":[],"mappings":"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"}
|