@whook/create 13.0.0 → 13.1.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.
@@ -9,6 +9,26 @@ import type { PathLike } from 'fs-extra';
9
9
  const _packageJSON = JSON.parse(
10
10
  readFileSync('../whook-example/package.json').toString(),
11
11
  );
12
+ const FILE_CONTENTS = {
13
+ 'README.md': `
14
+ # test
15
+ > yolo
16
+
17
+ [//]: # (::contents:start)
18
+
19
+ YOLO
20
+
21
+ [//]: # (::contents:end)
22
+
23
+ # Authors
24
+ Mr Bean
25
+ `,
26
+ 'watch.ts': `
27
+ the watch.ts file contents
28
+ with'../../' replaced so
29
+ equal to './'!
30
+ `,
31
+ };
12
32
 
13
33
  describe('initCreateWhook', () => {
14
34
  const CWD = '/home/whoiam/projects/';
@@ -60,27 +80,23 @@ describe('initCreateWhook', () => {
60
80
  oraInstance.start.mockReset();
61
81
  oraInstance.start.mockReturnValue(oraInstance);
62
82
  oraInstance.stopAndPersist.mockReset();
63
- readFile.mockResolvedValue(
64
- Buffer.from(`
65
- # test
66
- > yolo
67
-
68
- [//]: # (::contents:start)
69
-
70
- YOLO
71
-
72
- [//]: # (::contents:end)
73
-
74
- # Authors
75
- Mr Bean
83
+ readFile.mockImplementation(async (file) => {
84
+ if (file.toString().endsWith('package.json')) {
85
+ return Buffer.from(JSON.stringify(packageJSON));
86
+ }
87
+ const key = Object.keys(FILE_CONTENTS).find((key) =>
88
+ file.toString().endsWith(key),
89
+ );
76
90
 
77
- `),
78
- );
91
+ if (key) {
92
+ return Buffer.from(FILE_CONTENTS[key]);
93
+ }
94
+ return Buffer.from('NO_FILE_CONTENTS');
95
+ });
79
96
  });
80
97
 
81
98
  it('should work', async () => {
82
- readFile.mockResolvedValueOnce(Buffer.from(JSON.stringify(packageJSON)));
83
- readdir.mockResolvedValueOnce(['development', 'production']);
99
+ readdir.mockResolvedValueOnce(['local', 'production']);
84
100
  copy.mockImplementationOnce((_, _2, { filter }) =>
85
101
  Promise.all(
86
102
  [
@@ -149,11 +165,11 @@ Mr Bean
149
165
  "@whook/http-transaction": "<current_version>",
150
166
  "@whook/swagger-ui": "<current_version>",
151
167
  "@whook/whook": "<current_version>",
152
- "application-services": "^3.0.0",
153
- "common-services": "^14.0.0",
168
+ "application-services": "^4.0.0",
169
+ "common-services": "^15.0.0",
154
170
  "http-auth-utils": "^5.0.1",
155
- "jwt-service": "^10.0.1",
156
- "knifecycle": "^16.0.1",
171
+ "jwt-service": "^10.0.4",
172
+ "knifecycle": "^17.0.1",
157
173
  "openapi-schema-validator": "^12.1.3",
158
174
  "openapi-types": "^12.1.3",
159
175
  "pkg-dir": "^7.0.0",
@@ -177,7 +193,7 @@ Mr Bean
177
193
  "eslint-config-prettier": "^9.0.0",
178
194
  "eslint-plugin-prettier": "^5.0.0",
179
195
  "jest": "^29.6.2",
180
- "jsarch": "^6.0.1",
196
+ "jsarch": "^6.0.3",
181
197
  "parse-gitignore": "^1.0.1",
182
198
  "prettier": "^3.0.2",
183
199
  "rimraf": "^5.0.1",
@@ -272,17 +288,17 @@ Mr Bean
272
288
  "build": "rimraf 'dist' && tsc --outDir dist",
273
289
  "cover": "npm run jest -- --coverage",
274
290
  "debug": "NODE_OPTIONS=\${NODE_OPTIONS:-'--inspect'} NODE_ENV=\${NODE_ENV:-development} DEV_MODE=1 DESTROY_SOCKETS=1 DEBUG=\${DEBUG:-whook} ts-node --esm --logError bin/dev",
275
- "dev": "NODE_ENV=\${NODE_ENV:-development} DEV_MODE=1 DESTROY_SOCKETS=1 ts-node --esm --logError --files bin/dev.js",
291
+ "dev": "PROJECT_SRC="$PWD/src" NODE_ENV=\${NODE_ENV:-development} DEV_MODE=1 DESTROY_SOCKETS=1 ts-node --esm --logError --files bin/dev.js",
276
292
  "jest": "NODE_OPTIONS=--experimental-vm-modules NODE_ENV=test jest",
277
293
  "lint": "eslint 'src/**/*.ts'",
278
- "postbuild": "PROJECT_SRC="$PWD/src" NODE_ENV=\${NODE_ENV:-development} ts-node --esm --files -- bin/build.js",
294
+ "postbuild": "PROJECT_SRC="$PWD/dist" NODE_ENV=\${NODE_ENV:-development} ts-node --esm --files -- bin/build.js",
279
295
  "prettier": "prettier --write 'src/**/*.ts'",
280
296
  "rebuild": "swc ./src -s -d dist -C jsc.target=es2022",
281
297
  "start": "PROJECT_SRC="$PWD/dist" NODE_ENV=\${NODE_ENV:-development} node bin/start.js",
282
298
  "test": "NODE_ENV=test npm run build && npm run jest",
283
299
  "type-check": "tsc --pretty --noEmit",
284
- "watch": "NODE_ENV=\${NODE_ENV:-development} DEV_MODE=1 DESTROY_SOCKETS=1 ts-node --esm --logError --files bin/watch.js",
285
- "whook": "NODE_ENV=\${NODE_ENV:-development} whook",
300
+ "watch": "PROJECT_SRC="$PWD/src" NODE_ENV=\${NODE_ENV:-development} DEV_MODE=1 DESTROY_SOCKETS=1 ts-node --esm --logError --files bin/watch.js",
301
+ "whook": "PROJECT_SRC="$PWD/dist" NODE_ENV=\${NODE_ENV:-development} whook",
286
302
  "whook-debug": "NODE_OPTIONS=\${NODE_OPTIONS:-'--inspect'} PROJECT_SRC="$PWD/src" NODE_ENV=\${NODE_ENV:-development} DEBUG=\${DEBUG:-whook} ts-node --esm --logError --files -- bin/whook.js",
287
303
  "whook-dev": "PROJECT_SRC="$PWD/src" NODE_ENV=\${NODE_ENV:-development} ts-node --esm --logError --files -- bin/whook.js",
288
304
  "whook-repl": "PROJECT_SRC="$PWD/src" NODE_ENV=\${NODE_ENV:-development} ts-node --esm --logError --files -- bin/repl.js",
@@ -306,8 +322,7 @@ Mr Bean
306
322
  });
307
323
 
308
324
  it('should handle network issues', async () => {
309
- readFile.mockResolvedValueOnce(Buffer.from(JSON.stringify(packageJSON)));
310
- readdir.mockResolvedValueOnce(['development', 'production']);
325
+ readdir.mockResolvedValueOnce(['local', 'production']);
311
326
  copy.mockImplementationOnce((_, _2, { filter }) =>
312
327
  Promise.all(
313
328
  [
@@ -372,11 +387,11 @@ Mr Bean
372
387
  "@whook/http-transaction": "<current_version>",
373
388
  "@whook/swagger-ui": "<current_version>",
374
389
  "@whook/whook": "<current_version>",
375
- "application-services": "^3.0.0",
376
- "common-services": "^14.0.0",
390
+ "application-services": "^4.0.0",
391
+ "common-services": "^15.0.0",
377
392
  "http-auth-utils": "^5.0.1",
378
- "jwt-service": "^10.0.1",
379
- "knifecycle": "^16.0.1",
393
+ "jwt-service": "^10.0.4",
394
+ "knifecycle": "^17.0.1",
380
395
  "openapi-schema-validator": "^12.1.3",
381
396
  "openapi-types": "^12.1.3",
382
397
  "pkg-dir": "^7.0.0",
@@ -400,7 +415,7 @@ Mr Bean
400
415
  "eslint-config-prettier": "^9.0.0",
401
416
  "eslint-plugin-prettier": "^5.0.0",
402
417
  "jest": "^29.6.2",
403
- "jsarch": "^6.0.1",
418
+ "jsarch": "^6.0.3",
404
419
  "parse-gitignore": "^1.0.1",
405
420
  "prettier": "^3.0.2",
406
421
  "rimraf": "^5.0.1",
@@ -495,17 +510,17 @@ Mr Bean
495
510
  "build": "rimraf 'dist' && tsc --outDir dist",
496
511
  "cover": "npm run jest -- --coverage",
497
512
  "debug": "NODE_OPTIONS=\${NODE_OPTIONS:-'--inspect'} NODE_ENV=\${NODE_ENV:-development} DEV_MODE=1 DESTROY_SOCKETS=1 DEBUG=\${DEBUG:-whook} ts-node --esm --logError bin/dev",
498
- "dev": "NODE_ENV=\${NODE_ENV:-development} DEV_MODE=1 DESTROY_SOCKETS=1 ts-node --esm --logError --files bin/dev.js",
513
+ "dev": "PROJECT_SRC="$PWD/src" NODE_ENV=\${NODE_ENV:-development} DEV_MODE=1 DESTROY_SOCKETS=1 ts-node --esm --logError --files bin/dev.js",
499
514
  "jest": "NODE_OPTIONS=--experimental-vm-modules NODE_ENV=test jest",
500
515
  "lint": "eslint 'src/**/*.ts'",
501
- "postbuild": "PROJECT_SRC="$PWD/src" NODE_ENV=\${NODE_ENV:-development} ts-node --esm --files -- bin/build.js",
516
+ "postbuild": "PROJECT_SRC="$PWD/dist" NODE_ENV=\${NODE_ENV:-development} ts-node --esm --files -- bin/build.js",
502
517
  "prettier": "prettier --write 'src/**/*.ts'",
503
518
  "rebuild": "swc ./src -s -d dist -C jsc.target=es2022",
504
519
  "start": "PROJECT_SRC="$PWD/dist" NODE_ENV=\${NODE_ENV:-development} node bin/start.js",
505
520
  "test": "NODE_ENV=test npm run build && npm run jest",
506
521
  "type-check": "tsc --pretty --noEmit",
507
- "watch": "NODE_ENV=\${NODE_ENV:-development} DEV_MODE=1 DESTROY_SOCKETS=1 ts-node --esm --logError --files bin/watch.js",
508
- "whook": "NODE_ENV=\${NODE_ENV:-development} whook",
522
+ "watch": "PROJECT_SRC="$PWD/src" NODE_ENV=\${NODE_ENV:-development} DEV_MODE=1 DESTROY_SOCKETS=1 ts-node --esm --logError --files bin/watch.js",
523
+ "whook": "PROJECT_SRC="$PWD/dist" NODE_ENV=\${NODE_ENV:-development} whook",
509
524
  "whook-debug": "NODE_OPTIONS=\${NODE_OPTIONS:-'--inspect'} PROJECT_SRC="$PWD/src" NODE_ENV=\${NODE_ENV:-development} DEBUG=\${DEBUG:-whook} ts-node --esm --logError --files -- bin/whook.js",
510
525
  "whook-dev": "PROJECT_SRC="$PWD/src" NODE_ENV=\${NODE_ENV:-development} ts-node --esm --logError --files -- bin/whook.js",
511
526
  "whook-repl": "PROJECT_SRC="$PWD/src" NODE_ENV=\${NODE_ENV:-development} ts-node --esm --logError --files -- bin/repl.js",
@@ -529,8 +544,7 @@ Mr Bean
529
544
  });
530
545
 
531
546
  it('should handle git initialization problems', async () => {
532
- readFile.mockResolvedValueOnce(Buffer.from(JSON.stringify(packageJSON)));
533
- readdir.mockResolvedValueOnce(['development', 'production']);
547
+ readdir.mockResolvedValueOnce(['local', 'production']);
534
548
  copy.mockResolvedValueOnce(new YError('E_ACCESS'));
535
549
  axios.mockResolvedValueOnce({
536
550
  data: 'node_modules',
@@ -580,11 +594,11 @@ Mr Bean
580
594
  "@whook/http-transaction": "<current_version>",
581
595
  "@whook/swagger-ui": "<current_version>",
582
596
  "@whook/whook": "<current_version>",
583
- "application-services": "^3.0.0",
584
- "common-services": "^14.0.0",
597
+ "application-services": "^4.0.0",
598
+ "common-services": "^15.0.0",
585
599
  "http-auth-utils": "^5.0.1",
586
- "jwt-service": "^10.0.1",
587
- "knifecycle": "^16.0.1",
600
+ "jwt-service": "^10.0.4",
601
+ "knifecycle": "^17.0.1",
588
602
  "openapi-schema-validator": "^12.1.3",
589
603
  "openapi-types": "^12.1.3",
590
604
  "pkg-dir": "^7.0.0",
@@ -608,7 +622,7 @@ Mr Bean
608
622
  "eslint-config-prettier": "^9.0.0",
609
623
  "eslint-plugin-prettier": "^5.0.0",
610
624
  "jest": "^29.6.2",
611
- "jsarch": "^6.0.1",
625
+ "jsarch": "^6.0.3",
612
626
  "parse-gitignore": "^1.0.1",
613
627
  "prettier": "^3.0.2",
614
628
  "rimraf": "^5.0.1",
@@ -703,17 +717,17 @@ Mr Bean
703
717
  "build": "rimraf 'dist' && tsc --outDir dist",
704
718
  "cover": "npm run jest -- --coverage",
705
719
  "debug": "NODE_OPTIONS=\${NODE_OPTIONS:-'--inspect'} NODE_ENV=\${NODE_ENV:-development} DEV_MODE=1 DESTROY_SOCKETS=1 DEBUG=\${DEBUG:-whook} ts-node --esm --logError bin/dev",
706
- "dev": "NODE_ENV=\${NODE_ENV:-development} DEV_MODE=1 DESTROY_SOCKETS=1 ts-node --esm --logError --files bin/dev.js",
720
+ "dev": "PROJECT_SRC="$PWD/src" NODE_ENV=\${NODE_ENV:-development} DEV_MODE=1 DESTROY_SOCKETS=1 ts-node --esm --logError --files bin/dev.js",
707
721
  "jest": "NODE_OPTIONS=--experimental-vm-modules NODE_ENV=test jest",
708
722
  "lint": "eslint 'src/**/*.ts'",
709
- "postbuild": "PROJECT_SRC="$PWD/src" NODE_ENV=\${NODE_ENV:-development} ts-node --esm --files -- bin/build.js",
723
+ "postbuild": "PROJECT_SRC="$PWD/dist" NODE_ENV=\${NODE_ENV:-development} ts-node --esm --files -- bin/build.js",
710
724
  "prettier": "prettier --write 'src/**/*.ts'",
711
725
  "rebuild": "swc ./src -s -d dist -C jsc.target=es2022",
712
726
  "start": "PROJECT_SRC="$PWD/dist" NODE_ENV=\${NODE_ENV:-development} node bin/start.js",
713
727
  "test": "NODE_ENV=test npm run build && npm run jest",
714
728
  "type-check": "tsc --pretty --noEmit",
715
- "watch": "NODE_ENV=\${NODE_ENV:-development} DEV_MODE=1 DESTROY_SOCKETS=1 ts-node --esm --logError --files bin/watch.js",
716
- "whook": "NODE_ENV=\${NODE_ENV:-development} whook",
729
+ "watch": "PROJECT_SRC="$PWD/src" NODE_ENV=\${NODE_ENV:-development} DEV_MODE=1 DESTROY_SOCKETS=1 ts-node --esm --logError --files bin/watch.js",
730
+ "whook": "PROJECT_SRC="$PWD/dist" NODE_ENV=\${NODE_ENV:-development} whook",
717
731
  "whook-debug": "NODE_OPTIONS=\${NODE_OPTIONS:-'--inspect'} PROJECT_SRC="$PWD/src" NODE_ENV=\${NODE_ENV:-development} DEBUG=\${DEBUG:-whook} ts-node --esm --logError --files -- bin/whook.js",
718
732
  "whook-dev": "PROJECT_SRC="$PWD/src" NODE_ENV=\${NODE_ENV:-development} ts-node --esm --logError --files -- bin/whook.js",
719
733
  "whook-repl": "PROJECT_SRC="$PWD/src" NODE_ENV=\${NODE_ENV:-development} ts-node --esm --logError --files -- bin/repl.js",
@@ -737,8 +751,7 @@ Mr Bean
737
751
  });
738
752
 
739
753
  it('should fail with access problems', async () => {
740
- readFile.mockResolvedValueOnce(Buffer.from(JSON.stringify(packageJSON)));
741
- readdir.mockResolvedValueOnce(['development', 'production']);
754
+ readdir.mockResolvedValueOnce(['local', 'production']);
742
755
  copy.mockRejectedValueOnce(new YError('E_ACCESS'));
743
756
  axios.mockResolvedValueOnce({
744
757
  data: 'node_modules',
@@ -9,7 +9,8 @@ import type { LogService } from 'common-services';
9
9
  import type { ProjectService } from './project.js';
10
10
  import type { AuthorService } from './author.js';
11
11
 
12
- const GIT_IGNORE_URL = 'https://www.gitignore.io/api/osx,node,linux';
12
+ const GIT_IGNORE_URL =
13
+ 'https://www.toptal.com/developers/gitignore/api/osx,node,linux';
13
14
  const README_REGEXP =
14
15
  /^(?:[^]*)\[\/\/\]: # \(::contents:start\)\r?\n\r?\n([^]*)\r?\n\r?\n\[\/\/\]: # \(::contents:end\)(?:[^]*)$/gm;
15
16
  const {
@@ -100,6 +101,7 @@ export default autoService(async function initCreateWhook({
100
101
  path.join(SOURCE_DIR, 'package-lock.json'),
101
102
  path.join(SOURCE_DIR, 'LICENSE'),
102
103
  path.join(SOURCE_DIR, 'README.md'),
104
+ path.join(SOURCE_DIR, 'src/watch.ts'),
103
105
  ].includes(src)
104
106
  ) {
105
107
  log(
@@ -133,14 +135,35 @@ ${author.name}
133
135
  environment === 'common'
134
136
  ? Promise.resolve()
135
137
  : writeFile(
136
- path.join(project.directory, `.env.${environment}`),
137
- 'JWT_SECRET=oudelali\n',
138
+ path.join(project.directory, `.env.app.${environment}`),
139
+ `# Loaded when APP_ENV=${environment}
140
+
141
+ # For JWT signing
142
+ JWT_SECRET=oudelali
143
+ `,
138
144
  ),
139
145
  ),
146
+ writeFile(
147
+ path.join(project.directory, '.env.node.development'),
148
+ `# Loaded when NODE_ENV=development
149
+
150
+ # Allow to kill the process with still open sockets
151
+ DESTROY_SOCKETS=1'
152
+
153
+ # Common env var to get dev outputs
154
+ DEV_MODE=1
155
+ `,
156
+ ),
140
157
  writeFile(
141
158
  path.join(project.directory, 'package.json'),
142
159
  JSON.stringify(finalPackageJSON, null, 2),
143
160
  ),
161
+ readFile(path.join(SOURCE_DIR, 'src/watch.ts')).then((data) => {
162
+ return writeFile(
163
+ path.join(project.directory, 'src/watch.ts'),
164
+ data.toString().replace('../../', './'),
165
+ );
166
+ }),
144
167
  writeFile(
145
168
  path.join(project.directory, 'tsconfig.json'),
146
169
  JSON.stringify(
@@ -179,7 +202,15 @@ ${author.name}
179
202
  },
180
203
  })
181
204
  .then((response) =>
182
- writeFile(path.join(project.directory, '.gitignore'), response.data),
205
+ writeFile(
206
+ path.join(project.directory, '.gitignore'),
207
+ `${response.data.toString()}
208
+
209
+ # Whook's files
210
+ builds/
211
+ .env*
212
+ `,
213
+ ),
183
214
  )
184
215
  .catch((err) => {
185
216
  log(