@mondomob/gae-node-nestjs 11.0.2 → 12.0.0-alpha-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/.claude/settings.local.json +7 -0
- package/CHANGELOG.md +0 -13
- package/mondomob-gae-node-nestjs-12.0.0-alpha-1.tgz +0 -0
- package/package.json +12 -12
- package/server-start.js +72 -1
- package/mondomob-gae-node-nestjs-11.0.2-alpha.tgz +0 -0
- package/mondomob-gae-node-nestjs-11.0.2-alpha1.tgz +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,16 +1,3 @@
|
|
|
1
|
-
## 11.0.2 (2025-08-06)
|
|
2
|
-
|
|
3
|
-
Updating @node-saml/passport-saml from v4 to v5
|
|
4
|
-
- not a breaking change.
|
|
5
|
-
|
|
6
|
-
Updating various libs with minor version bumps only.
|
|
7
|
-
|
|
8
|
-
Removal of `dsui`
|
|
9
|
-
- dsui is an outdated Datastore UI for local development only
|
|
10
|
-
- removed code that attempts to start and stop dsui
|
|
11
|
-
- developers who still want to use this should handle the start/stop in their own projects
|
|
12
|
-
|
|
13
|
-
|
|
14
1
|
## 11.0.1 (2025-02-02)
|
|
15
2
|
|
|
16
3
|
Updating minor versions for nestjs, express, express-session.
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mondomob/gae-node-nestjs",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "12.0.0-alpha-1",
|
|
4
4
|
"description": "Google App Engine datastore repositories and graphql setup with nestjs",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"typings": "dist/index.d.ts",
|
|
@@ -23,10 +23,10 @@
|
|
|
23
23
|
"license": "MIT",
|
|
24
24
|
"homepage": "https://github.com/mondo-mob/gae-node-nestjs",
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"@apollo/server": "4.
|
|
27
|
-
"@google-cloud/datastore": "9.1
|
|
26
|
+
"@apollo/server": "4.13.0",
|
|
27
|
+
"@google-cloud/datastore": "9.2.1",
|
|
28
28
|
"@google-cloud/logging-bunyan": "5.1.0",
|
|
29
|
-
"@google-cloud/storage": "7.
|
|
29
|
+
"@google-cloud/storage": "7.19.0",
|
|
30
30
|
"@google-cloud/tasks": "4.1.0",
|
|
31
31
|
"@google-cloud/trace-agent": "7.1.2",
|
|
32
32
|
"@node-saml/passport-saml": "5.1.0",
|
|
@@ -62,18 +62,18 @@
|
|
|
62
62
|
"webpack": "5.94.0"
|
|
63
63
|
},
|
|
64
64
|
"peerDependencies": {
|
|
65
|
-
"@nestjs/common": "^10.4.
|
|
66
|
-
"@nestjs/core": "^10.4.
|
|
65
|
+
"@nestjs/common": "^10.4.18",
|
|
66
|
+
"@nestjs/core": "^10.4.18",
|
|
67
67
|
"@nestjs/graphql": "^12.2.2",
|
|
68
|
-
"@nestjs/platform-express": "^10.4.
|
|
69
|
-
"express": ">= 4.
|
|
68
|
+
"@nestjs/platform-express": "^10.4.18",
|
|
69
|
+
"express": ">= 4.22.0",
|
|
70
70
|
"rxjs": "7.8.1"
|
|
71
71
|
},
|
|
72
72
|
"devDependencies": {
|
|
73
|
-
"@nestjs/common": "10.4.
|
|
74
|
-
"@nestjs/core": "10.4.
|
|
73
|
+
"@nestjs/common": "10.4.22",
|
|
74
|
+
"@nestjs/core": "10.4.22",
|
|
75
75
|
"@nestjs/graphql": "12.2.2",
|
|
76
|
-
"@nestjs/platform-express": "10.4.
|
|
76
|
+
"@nestjs/platform-express": "10.4.22",
|
|
77
77
|
"@types/bcryptjs": "2.4.6",
|
|
78
78
|
"@types/bunyan": "1.8.11",
|
|
79
79
|
"@types/cls-hooked": "4.3.8",
|
|
@@ -90,7 +90,7 @@
|
|
|
90
90
|
"@types/passport-local": "1.0.38",
|
|
91
91
|
"@types/uuid": "8.3.4",
|
|
92
92
|
"chokidar": "3.6.0",
|
|
93
|
-
"express": "4.
|
|
93
|
+
"express": "4.22.1",
|
|
94
94
|
"jest": "29.7.0",
|
|
95
95
|
"prettier": "2.8.8",
|
|
96
96
|
"rxjs": "7.8.1",
|
package/server-start.js
CHANGED
|
@@ -21,6 +21,7 @@ const componentColors = {
|
|
|
21
21
|
server: colors.blue,
|
|
22
22
|
webpack: colors.magenta,
|
|
23
23
|
datastore: colors.cyan,
|
|
24
|
+
dsui: colors.green,
|
|
24
25
|
};
|
|
25
26
|
|
|
26
27
|
class BunyanStream {
|
|
@@ -45,15 +46,17 @@ const { buildEvents, stopWebpack } = setupWebpack(logger);
|
|
|
45
46
|
const { stopServer, startServer } = setupServer(logger, loggingStream, buildEvents);
|
|
46
47
|
|
|
47
48
|
const { stopDatastore, startDatastore } = setupDatastore(logger, buildEvents);
|
|
49
|
+
const { startDsui, stopDsui } = setupDsui(logger);
|
|
48
50
|
|
|
49
51
|
buildEvents.once('reload', startServer);
|
|
50
52
|
startDatastore();
|
|
53
|
+
startDsui();
|
|
51
54
|
|
|
52
55
|
// Handle process stop
|
|
53
56
|
process.on('SIGINT', async function () {
|
|
54
57
|
logger.info('Caught interrupt signal');
|
|
55
58
|
|
|
56
|
-
await Promise.all([stopWebpack(), stopDatastore(), stopServer()]);
|
|
59
|
+
await Promise.all([stopWebpack(), stopDatastore(), stopDsui(), stopServer()]);
|
|
57
60
|
|
|
58
61
|
logger.info('Shutting down');
|
|
59
62
|
process.exit();
|
|
@@ -229,6 +232,74 @@ function setupServer(logger, loggingStream, buildEvents) {
|
|
|
229
232
|
};
|
|
230
233
|
}
|
|
231
234
|
|
|
235
|
+
function setupDsui(logger) {
|
|
236
|
+
const dsuiLogger = logger.child({ component: 'dsui' });
|
|
237
|
+
let dsui;
|
|
238
|
+
const startDsui = () => {
|
|
239
|
+
// poll the status URL until the datastore emulator is ready
|
|
240
|
+
dsuiLogger.info('Waiting for Datastore emulator to start');
|
|
241
|
+
const timeout = setInterval(() => {
|
|
242
|
+
let body = '';
|
|
243
|
+
http.get(
|
|
244
|
+
{
|
|
245
|
+
hostname: '127.0.0.1',
|
|
246
|
+
port: DATASTORE_PORT,
|
|
247
|
+
path: '/',
|
|
248
|
+
agent: false,
|
|
249
|
+
},
|
|
250
|
+
res => {
|
|
251
|
+
res.on('data', data => {
|
|
252
|
+
body += data;
|
|
253
|
+
});
|
|
254
|
+
res.on('end', () => {
|
|
255
|
+
if (res.statusCode == 200) {
|
|
256
|
+
dsuiLogger.info('Datastore emulator is ready, starting DSUI');
|
|
257
|
+
clearInterval(timeout);
|
|
258
|
+
const gcloud = spawn('gcloud', ['beta', 'emulators', 'datastore', 'env-init', '--format=json']);
|
|
259
|
+
gcloud.stdout.on('data', data => {
|
|
260
|
+
const datastoreConfig = JSON.parse(data);
|
|
261
|
+
_.forEach(datastoreConfig, (value, key) => {
|
|
262
|
+
process.env[key] = value;
|
|
263
|
+
});
|
|
264
|
+
});
|
|
265
|
+
|
|
266
|
+
gcloud.once('close', () => {
|
|
267
|
+
dsui = spawn('npm', ['run', 'dsui']);
|
|
268
|
+
dsui.stdout.on('data', dsuiData => {
|
|
269
|
+
const string = dsuiData.toString('utf8');
|
|
270
|
+
dsuiLogger.info(string);
|
|
271
|
+
});
|
|
272
|
+
|
|
273
|
+
dsui.stderr.on('data', dsuiData => {
|
|
274
|
+
const string = dsuiData.toString('utf8');
|
|
275
|
+
dsuiLogger.error(string);
|
|
276
|
+
});
|
|
277
|
+
});
|
|
278
|
+
}
|
|
279
|
+
});
|
|
280
|
+
},
|
|
281
|
+
);
|
|
282
|
+
}, 2000);
|
|
283
|
+
};
|
|
284
|
+
|
|
285
|
+
const stopDsui = () => {
|
|
286
|
+
return new Promise(resolve => {
|
|
287
|
+
if (dsui) {
|
|
288
|
+
dsuiLogger.info('Killing DSUI');
|
|
289
|
+
dsui.kill('SIGINT');
|
|
290
|
+
dsui.once('close', () => {
|
|
291
|
+
logger.info('DSUI successfully shutdown');
|
|
292
|
+
resolve();
|
|
293
|
+
});
|
|
294
|
+
} else {
|
|
295
|
+
resolve();
|
|
296
|
+
}
|
|
297
|
+
});
|
|
298
|
+
};
|
|
299
|
+
|
|
300
|
+
return { startDsui, stopDsui };
|
|
301
|
+
}
|
|
302
|
+
|
|
232
303
|
function setupDatastore(logger, buildEvents) {
|
|
233
304
|
const datastoreLogger = logger.child({
|
|
234
305
|
component: 'datastore',
|
|
Binary file
|
|
Binary file
|