@naturalcycles/backend-lib 4.17.11 → 4.18.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/cfg/tsconfig.json CHANGED
@@ -10,6 +10,7 @@
10
10
  "lib": ["esnext"], // add "dom" if needed
11
11
  "module": "commonjs",
12
12
  "moduleResolution": "node",
13
+ "moduleDetection": "force",
13
14
 
14
15
  // Emit
15
16
  "sourceMap": false,
@@ -26,7 +26,7 @@ class FirebaseSharedService {
26
26
  return this.admin().auth();
27
27
  }
28
28
  }
29
+ exports.FirebaseSharedService = FirebaseSharedService;
29
30
  tslib_1.__decorate([
30
31
  (0, js_lib_1._Memo)()
31
32
  ], FirebaseSharedService.prototype, "admin", null);
32
- exports.FirebaseSharedService = FirebaseSharedService;
@@ -3,14 +3,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.deployGae = void 0;
4
4
  const dev_lib_1 = require("@naturalcycles/dev-lib");
5
5
  const js_lib_1 = require("@naturalcycles/js-lib");
6
- const exec_1 = require("@naturalcycles/nodejs-lib/dist/exec");
6
+ const nodejs_lib_1 = require("@naturalcycles/nodejs-lib");
7
7
  const deployHealthCheck_1 = require("./deployHealthCheck");
8
8
  const deployPrepare_1 = require("./deployPrepare");
9
9
  async function deployGae(opt = {}) {
10
10
  const { logOnFailure, logOnSuccess } = opt;
11
11
  // 1. build-prod
12
12
  // await execCommand(`yarn`, [`build-prod`])
13
- await (0, dev_lib_1.buildProdCommand)();
13
+ (0, dev_lib_1.buildProdCommand)();
14
14
  // 2. deploy-prepare
15
15
  // await execCommand(`yarn`, ['deploy-prepare'])
16
16
  const deployInfo = await (0, deployPrepare_1.deployPrepare)();
@@ -22,13 +22,16 @@ async function deployGae(opt = {}) {
22
22
  gaeService,
23
23
  gaeVersion,
24
24
  });
25
- // gcloud app deploy ./tmp/deploy/app.yaml --project $deployInfo_gaeProject --version $deployInfo_gaeVersion --quiet --no-promote
26
- await (0, exec_1.execCommand)(`gcloud app deploy ${appYamlPath} --project ${gaeProject} --version ${gaeVersion} --quiet --no-promote`).catch(async (err) => {
25
+ try {
26
+ // gcloud app deploy ./tmp/deploy/app.yaml --project $deployInfo_gaeProject --version $deployInfo_gaeVersion --quiet --no-promote
27
+ (0, nodejs_lib_1.execVoidCommandSync)(`gcloud app deploy ${appYamlPath} --project ${gaeProject} --version ${gaeVersion} --quiet --no-promote`, [], { shell: true });
28
+ }
29
+ catch (err) {
27
30
  if (logOnFailure) {
28
- await logs(gaeProject, gaeService, gaeVersion);
31
+ logs(gaeProject, gaeService, gaeVersion);
29
32
  }
30
33
  throw err;
31
- });
34
+ }
32
35
  // Health check (versionUrl)
33
36
  // yarn deploy-health-check --url $deployInfo_versionUrl --repeat 3 --timeoutSec 180 --intervalSec 2
34
37
  await (0, deployHealthCheck_1.deployHealthCheck)(versionUrl, opt);
@@ -36,17 +39,20 @@ async function deployGae(opt = {}) {
36
39
  if (gaeVersion !== '1') {
37
40
  // Rollout (promote versionUrl to serviceUrl)
38
41
  // gcloud app services set-traffic $deployInfo_gaeService --project $deployInfo_gaeProject --splits $deployInfo_gaeVersion=1 --quiet
39
- await (0, exec_1.execCommand)(`gcloud app services set-traffic ${gaeService} --project ${gaeProject} --splits ${gaeVersion}=1 --quiet`);
42
+ (0, nodejs_lib_1.execVoidCommandSync)(`gcloud app services set-traffic ${gaeService} --project ${gaeProject} --splits ${gaeVersion}=1 --quiet`, [], { shell: true });
40
43
  // Health check (serviceUrl)
41
44
  // yarn deploy-health-check --url $deployInfo_serviceUrl --repeat 3 --timeoutSec 60 --intervalSec 2
42
45
  await (0, deployHealthCheck_1.deployHealthCheck)(serviceUrl, opt);
43
46
  }
44
47
  // Logs
45
48
  if (logOnSuccess) {
46
- await logs(gaeProject, gaeService, gaeVersion);
49
+ logs(gaeProject, gaeService, gaeVersion);
47
50
  }
48
51
  }
49
52
  exports.deployGae = deployGae;
50
- async function logs(gaeProject, gaeService, gaeVersion) {
51
- await (0, exec_1.execCommand)(`gcloud app logs read --project ${gaeProject} --service ${gaeService} --version ${gaeVersion}`).catch(_ignored => { });
53
+ function logs(gaeProject, gaeService, gaeVersion) {
54
+ try {
55
+ (0, nodejs_lib_1.execVoidCommandSync)(`gcloud app logs read --project ${gaeProject} --service ${gaeService} --version ${gaeVersion}`, [], { shell: true });
56
+ }
57
+ catch { }
52
58
  }
@@ -2,9 +2,9 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.deployHealthCheck = exports.deployHealthCheckYargsOptions = void 0;
4
4
  const node_util_1 = require("node:util");
5
+ const nodejs_lib_1 = require("@naturalcycles/nodejs-lib");
5
6
  const js_lib_1 = require("@naturalcycles/js-lib");
6
7
  const colors_1 = require("@naturalcycles/nodejs-lib/dist/colors");
7
- const exec_1 = require("@naturalcycles/nodejs-lib/dist/exec");
8
8
  const request_log_util_1 = require("../server/request.log.util");
9
9
  exports.deployHealthCheckYargsOptions = {
10
10
  thresholdHealthy: {
@@ -72,12 +72,18 @@ async function deployHealthCheck(url, opt = {}) {
72
72
  if (failed) {
73
73
  console.log((0, colors_1.red)(`Health check failed!`));
74
74
  if (logOnFailure) {
75
- await (0, exec_1.execCommand)(`gcloud app logs read --project ${gaeProject} --service ${gaeService} --version ${gaeVersion}`).catch(_ignored => { });
75
+ try {
76
+ (0, nodejs_lib_1.execVoidCommandSync)(`gcloud app logs read --project ${gaeProject} --service ${gaeService} --version ${gaeVersion}`, [], { shell: true });
77
+ }
78
+ catch { }
76
79
  }
77
80
  process.exit(1);
78
81
  }
79
82
  if (logOnSuccess) {
80
- await (0, exec_1.execCommand)(`gcloud app logs read --project ${gaeProject} --service ${gaeService} --version ${gaeVersion}`).catch(_ignored => { });
83
+ try {
84
+ (0, nodejs_lib_1.execVoidCommandSync)(`gcloud app logs read --project ${gaeProject} --service ${gaeService} --version ${gaeVersion}`, [], { shell: true });
85
+ }
86
+ catch { }
81
87
  }
82
88
  async function makeAttempt() {
83
89
  attempt++;
@@ -128,7 +128,7 @@ class SentrySharedService {
128
128
  };
129
129
  }
130
130
  }
131
+ exports.SentrySharedService = SentrySharedService;
131
132
  tslib_1.__decorate([
132
133
  (0, js_lib_1._Memo)()
133
134
  ], SentrySharedService.prototype, "sentry", null);
134
- exports.SentrySharedService = SentrySharedService;
@@ -78,10 +78,10 @@ class BackendServer {
78
78
  }
79
79
  }
80
80
  }
81
+ exports.BackendServer = BackendServer;
81
82
  tslib_1.__decorate([
82
83
  (0, js_lib_1._Memo)()
83
84
  ], BackendServer.prototype, "stop", null);
84
- exports.BackendServer = BackendServer;
85
85
  /**
86
86
  * Convenience function.
87
87
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@naturalcycles/backend-lib",
3
- "version": "4.17.11",
3
+ "version": "4.18.0",
4
4
  "scripts": {
5
5
  "prepare": "husky install",
6
6
  "serve": "APP_ENV=dev nodemon",
@@ -46,7 +46,7 @@
46
46
  "@types/yargs": "^16.0.0",
47
47
  "fastify": "^4.0.0",
48
48
  "jest": "^29.0.1",
49
- "nodemon": "^2.0.14",
49
+ "nodemon": "^3.0.1",
50
50
  "vue-class-component": "^7.2.6",
51
51
  "vuepress": "^1.7.1",
52
52
  "vuepress-plugin-typescript": "^0.3.1"
@@ -1,6 +1,6 @@
1
1
  import { buildProdCommand } from '@naturalcycles/dev-lib'
2
2
  import { _objectAssign } from '@naturalcycles/js-lib'
3
- import { execCommand } from '@naturalcycles/nodejs-lib/dist/exec'
3
+ import { execVoidCommandSync } from '@naturalcycles/nodejs-lib'
4
4
  import { deployHealthCheck, DeployHealthCheckOptions } from './deployHealthCheck'
5
5
  import { deployPrepare, DeployPrepareOptions } from './deployPrepare'
6
6
 
@@ -12,7 +12,7 @@ export async function deployGae(opt: DeployGaeOptions = {}): Promise<void> {
12
12
  // 1. build-prod
13
13
 
14
14
  // await execCommand(`yarn`, [`build-prod`])
15
- await buildProdCommand()
15
+ buildProdCommand()
16
16
 
17
17
  // 2. deploy-prepare
18
18
 
@@ -29,16 +29,20 @@ export async function deployGae(opt: DeployGaeOptions = {}): Promise<void> {
29
29
  gaeVersion,
30
30
  })
31
31
 
32
- // gcloud app deploy ./tmp/deploy/app.yaml --project $deployInfo_gaeProject --version $deployInfo_gaeVersion --quiet --no-promote
33
- await execCommand(
34
- `gcloud app deploy ${appYamlPath} --project ${gaeProject} --version ${gaeVersion} --quiet --no-promote`,
35
- ).catch(async err => {
32
+ try {
33
+ // gcloud app deploy ./tmp/deploy/app.yaml --project $deployInfo_gaeProject --version $deployInfo_gaeVersion --quiet --no-promote
34
+ execVoidCommandSync(
35
+ `gcloud app deploy ${appYamlPath} --project ${gaeProject} --version ${gaeVersion} --quiet --no-promote`,
36
+ [],
37
+ { shell: true },
38
+ )
39
+ } catch (err) {
36
40
  if (logOnFailure) {
37
- await logs(gaeProject, gaeService, gaeVersion)
41
+ logs(gaeProject, gaeService, gaeVersion)
38
42
  }
39
43
 
40
44
  throw err
41
- })
45
+ }
42
46
 
43
47
  // Health check (versionUrl)
44
48
  // yarn deploy-health-check --url $deployInfo_versionUrl --repeat 3 --timeoutSec 180 --intervalSec 2
@@ -48,8 +52,10 @@ export async function deployGae(opt: DeployGaeOptions = {}): Promise<void> {
48
52
  if (gaeVersion !== '1') {
49
53
  // Rollout (promote versionUrl to serviceUrl)
50
54
  // gcloud app services set-traffic $deployInfo_gaeService --project $deployInfo_gaeProject --splits $deployInfo_gaeVersion=1 --quiet
51
- await execCommand(
55
+ execVoidCommandSync(
52
56
  `gcloud app services set-traffic ${gaeService} --project ${gaeProject} --splits ${gaeVersion}=1 --quiet`,
57
+ [],
58
+ { shell: true },
53
59
  )
54
60
 
55
61
  // Health check (serviceUrl)
@@ -59,12 +65,16 @@ export async function deployGae(opt: DeployGaeOptions = {}): Promise<void> {
59
65
 
60
66
  // Logs
61
67
  if (logOnSuccess) {
62
- await logs(gaeProject, gaeService, gaeVersion)
68
+ logs(gaeProject, gaeService, gaeVersion)
63
69
  }
64
70
  }
65
71
 
66
- async function logs(gaeProject: string, gaeService: string, gaeVersion: string): Promise<void> {
67
- await execCommand(
68
- `gcloud app logs read --project ${gaeProject} --service ${gaeService} --version ${gaeVersion}`,
69
- ).catch(_ignored => {})
72
+ function logs(gaeProject: string, gaeService: string, gaeVersion: string): void {
73
+ try {
74
+ execVoidCommandSync(
75
+ `gcloud app logs read --project ${gaeProject} --service ${gaeService} --version ${gaeVersion}`,
76
+ [],
77
+ { shell: true },
78
+ )
79
+ } catch {}
70
80
  }
@@ -1,7 +1,7 @@
1
1
  import { inspect, InspectOptions } from 'node:util'
2
+ import { execVoidCommandSync } from '@naturalcycles/nodejs-lib'
2
3
  import { pDelay, _filterFalsyValues, _ms, _since, getFetcher } from '@naturalcycles/js-lib'
3
4
  import { dimGrey, red } from '@naturalcycles/nodejs-lib/dist/colors'
4
- import { execCommand } from '@naturalcycles/nodejs-lib/dist/exec'
5
5
  import { coloredHttpCode } from '../server/request.log.util'
6
6
 
7
7
  export interface DeployHealthCheckOptions {
@@ -104,18 +104,26 @@ export async function deployHealthCheck(
104
104
  console.log(red(`Health check failed!`))
105
105
 
106
106
  if (logOnFailure) {
107
- await execCommand(
108
- `gcloud app logs read --project ${gaeProject} --service ${gaeService} --version ${gaeVersion}`,
109
- ).catch(_ignored => {})
107
+ try {
108
+ execVoidCommandSync(
109
+ `gcloud app logs read --project ${gaeProject} --service ${gaeService} --version ${gaeVersion}`,
110
+ [],
111
+ { shell: true },
112
+ )
113
+ } catch {}
110
114
  }
111
115
 
112
116
  process.exit(1)
113
117
  }
114
118
 
115
119
  if (logOnSuccess) {
116
- await execCommand(
117
- `gcloud app logs read --project ${gaeProject} --service ${gaeService} --version ${gaeVersion}`,
118
- ).catch(_ignored => {})
120
+ try {
121
+ execVoidCommandSync(
122
+ `gcloud app logs read --project ${gaeProject} --service ${gaeService} --version ${gaeVersion}`,
123
+ [],
124
+ { shell: true },
125
+ )
126
+ } catch {}
119
127
  }
120
128
 
121
129
  async function makeAttempt(): Promise<void> {