@lowdefy/server-e2e 0.0.0-experimental-20261007124348 → 0.0.0-experimental-20261009120232

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.
@@ -15,11 +15,14 @@
15
15
  */
16
16
 
17
17
  import { createNodeLogger } from '@lowdefy/logger/node';
18
+ import { scrubCredentials } from '@lowdefy/node-utils';
18
19
 
19
20
  const logger = createNodeLogger({
20
21
  name: 'lowdefy_server_e2e',
21
22
  level: process.env.LOWDEFY_LOG_LEVEL ?? 'info',
22
23
  base: { pid: undefined, hostname: undefined },
24
+ // Secrets stay in these logs, but a value a request marked with _credential does not.
25
+ hooks: { streamWrite: scrubCredentials },
23
26
  });
24
27
 
25
28
  function createLogger(metadata = {}) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lowdefy/server-e2e",
3
- "version": "0.0.0-experimental-20261007124348",
3
+ "version": "0.0.0-experimental-20261009120232",
4
4
  "license": "Apache-2.0",
5
5
  "description": "Lowdefy e2e testing server with cookie-based user injection",
6
6
  "homepage": "https://lowdefy.com",
@@ -43,36 +43,36 @@
43
43
  "@ant-design/cssinjs": "2.1.2",
44
44
  "@ant-design/x": "2.9.0",
45
45
  "@hono/node-server": "2.0.10",
46
- "@lowdefy/actions-core": "0.0.0-experimental-20261007124348",
47
- "@lowdefy/api": "0.0.0-experimental-20261007124348",
48
- "@lowdefy/block-utils": "0.0.0-experimental-20261007124348",
49
- "@lowdefy/blocks-aggrid": "0.0.0-experimental-20261007124348",
50
- "@lowdefy/blocks-antd": "0.0.0-experimental-20261007124348",
51
- "@lowdefy/blocks-antd-x": "0.0.0-experimental-20261007124348",
52
- "@lowdefy/blocks-basic": "0.0.0-experimental-20261007124348",
53
- "@lowdefy/blocks-captcha": "0.0.0-experimental-20261007124348",
54
- "@lowdefy/blocks-echarts": "0.0.0-experimental-20261007124348",
55
- "@lowdefy/blocks-loaders": "0.0.0-experimental-20261007124348",
56
- "@lowdefy/blocks-markdown": "0.0.0-experimental-20261007124348",
57
- "@lowdefy/blocks-table": "0.0.0-experimental-20261007124348",
58
- "@lowdefy/blocks-tiptap": "0.0.0-experimental-20261007124348",
59
- "@lowdefy/client": "0.0.0-experimental-20261007124348",
60
- "@lowdefy/connection-axios-http": "0.0.0-experimental-20261007124348",
61
- "@lowdefy/connection-mongodb": "0.0.0-experimental-20261007124348",
62
- "@lowdefy/errors": "0.0.0-experimental-20261007124348",
63
- "@lowdefy/helpers": "0.0.0-experimental-20261007124348",
64
- "@lowdefy/layout": "0.0.0-experimental-20261007124348",
65
- "@lowdefy/logger": "0.0.0-experimental-20261007124348",
66
- "@lowdefy/node-utils": "0.0.0-experimental-20261007124348",
67
- "@lowdefy/operators-js": "0.0.0-experimental-20261007124348",
68
- "@lowdefy/operators-nunjucks": "0.0.0-experimental-20261007124348",
69
- "@lowdefy/operators-uuid": "0.0.0-experimental-20261007124348",
70
- "@lowdefy/websockets-core": "0.0.0-experimental-20261007124348",
46
+ "@lowdefy/actions-core": "0.0.0-experimental-20261009120232",
47
+ "@lowdefy/api": "0.0.0-experimental-20261009120232",
48
+ "@lowdefy/block-utils": "0.0.0-experimental-20261009120232",
49
+ "@lowdefy/blocks-aggrid": "0.0.0-experimental-20261009120232",
50
+ "@lowdefy/blocks-antd": "0.0.0-experimental-20261009120232",
51
+ "@lowdefy/blocks-antd-x": "0.0.0-experimental-20261009120232",
52
+ "@lowdefy/blocks-basic": "0.0.0-experimental-20261009120232",
53
+ "@lowdefy/blocks-captcha": "0.0.0-experimental-20261009120232",
54
+ "@lowdefy/blocks-echarts": "0.0.0-experimental-20261009120232",
55
+ "@lowdefy/blocks-loaders": "0.0.0-experimental-20261009120232",
56
+ "@lowdefy/blocks-markdown": "0.0.0-experimental-20261009120232",
57
+ "@lowdefy/blocks-table": "0.0.0-experimental-20261009120232",
58
+ "@lowdefy/blocks-tiptap": "0.0.0-experimental-20261009120232",
59
+ "@lowdefy/client": "0.0.0-experimental-20261009120232",
60
+ "@lowdefy/connection-axios-http": "0.0.0-experimental-20261009120232",
61
+ "@lowdefy/connection-mongodb": "0.0.0-experimental-20261009120232",
62
+ "@lowdefy/errors": "0.0.0-experimental-20261009120232",
63
+ "@lowdefy/helpers": "0.0.0-experimental-20261009120232",
64
+ "@lowdefy/layout": "0.0.0-experimental-20261009120232",
65
+ "@lowdefy/logger": "0.0.0-experimental-20261009120232",
66
+ "@lowdefy/node-utils": "0.0.0-experimental-20261009120232",
67
+ "@lowdefy/operators-js": "0.0.0-experimental-20261009120232",
68
+ "@lowdefy/operators-nunjucks": "0.0.0-experimental-20261009120232",
69
+ "@lowdefy/operators-uuid": "0.0.0-experimental-20261009120232",
70
+ "@lowdefy/websockets-core": "0.0.0-experimental-20261009120232",
71
71
  "@tailwindcss/postcss": "4.3.3",
72
72
  "@vitejs/plugin-react": "6.0.2",
73
73
  "antd": "6.6.5",
74
74
  "dayjs": "1.11.20",
75
- "hono": "4.13.5",
75
+ "hono": "4.13.7",
76
76
  "lightningcss": "1.32.0",
77
77
  "react": "18.2.0",
78
78
  "react-dom": "18.2.0",
@@ -83,7 +83,7 @@
83
83
  },
84
84
  "devDependencies": {
85
85
  "@jest/globals": "28.1.3",
86
- "@lowdefy/build": "0.0.0-experimental-20261007124348",
86
+ "@lowdefy/build": "0.0.0-experimental-20261009120232",
87
87
  "@tailwindcss/postcss": "4.3.3",
88
88
  "jest": "28.1.3",
89
89
  "tailwindcss": "4.3.3",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lowdefy/server-e2e",
3
- "version": "0.0.0-experimental-20261007124348",
3
+ "version": "0.0.0-experimental-20261009120232",
4
4
  "license": "Apache-2.0",
5
5
  "description": "Lowdefy e2e testing server with cookie-based user injection",
6
6
  "homepage": "https://lowdefy.com",
@@ -51,36 +51,36 @@
51
51
  "@ant-design/cssinjs": "2.1.2",
52
52
  "@ant-design/x": "2.9.0",
53
53
  "@hono/node-server": "2.0.10",
54
- "@lowdefy/actions-core": "0.0.0-experimental-20261007124348",
55
- "@lowdefy/api": "0.0.0-experimental-20261007124348",
56
- "@lowdefy/block-utils": "0.0.0-experimental-20261007124348",
57
- "@lowdefy/blocks-aggrid": "0.0.0-experimental-20261007124348",
58
- "@lowdefy/blocks-antd": "0.0.0-experimental-20261007124348",
59
- "@lowdefy/blocks-antd-x": "0.0.0-experimental-20261007124348",
60
- "@lowdefy/blocks-basic": "0.0.0-experimental-20261007124348",
61
- "@lowdefy/blocks-captcha": "0.0.0-experimental-20261007124348",
62
- "@lowdefy/blocks-echarts": "0.0.0-experimental-20261007124348",
63
- "@lowdefy/blocks-loaders": "0.0.0-experimental-20261007124348",
64
- "@lowdefy/blocks-markdown": "0.0.0-experimental-20261007124348",
65
- "@lowdefy/blocks-table": "0.0.0-experimental-20261007124348",
66
- "@lowdefy/blocks-tiptap": "0.0.0-experimental-20261007124348",
67
- "@lowdefy/client": "0.0.0-experimental-20261007124348",
68
- "@lowdefy/connection-axios-http": "0.0.0-experimental-20261007124348",
69
- "@lowdefy/connection-mongodb": "0.0.0-experimental-20261007124348",
70
- "@lowdefy/errors": "0.0.0-experimental-20261007124348",
71
- "@lowdefy/helpers": "0.0.0-experimental-20261007124348",
72
- "@lowdefy/layout": "0.0.0-experimental-20261007124348",
73
- "@lowdefy/logger": "0.0.0-experimental-20261007124348",
74
- "@lowdefy/node-utils": "0.0.0-experimental-20261007124348",
75
- "@lowdefy/operators-js": "0.0.0-experimental-20261007124348",
76
- "@lowdefy/operators-nunjucks": "0.0.0-experimental-20261007124348",
77
- "@lowdefy/operators-uuid": "0.0.0-experimental-20261007124348",
78
- "@lowdefy/websockets-core": "0.0.0-experimental-20261007124348",
54
+ "@lowdefy/actions-core": "0.0.0-experimental-20261009120232",
55
+ "@lowdefy/api": "0.0.0-experimental-20261009120232",
56
+ "@lowdefy/block-utils": "0.0.0-experimental-20261009120232",
57
+ "@lowdefy/blocks-aggrid": "0.0.0-experimental-20261009120232",
58
+ "@lowdefy/blocks-antd": "0.0.0-experimental-20261009120232",
59
+ "@lowdefy/blocks-antd-x": "0.0.0-experimental-20261009120232",
60
+ "@lowdefy/blocks-basic": "0.0.0-experimental-20261009120232",
61
+ "@lowdefy/blocks-captcha": "0.0.0-experimental-20261009120232",
62
+ "@lowdefy/blocks-echarts": "0.0.0-experimental-20261009120232",
63
+ "@lowdefy/blocks-loaders": "0.0.0-experimental-20261009120232",
64
+ "@lowdefy/blocks-markdown": "0.0.0-experimental-20261009120232",
65
+ "@lowdefy/blocks-table": "0.0.0-experimental-20261009120232",
66
+ "@lowdefy/blocks-tiptap": "0.0.0-experimental-20261009120232",
67
+ "@lowdefy/client": "0.0.0-experimental-20261009120232",
68
+ "@lowdefy/connection-axios-http": "0.0.0-experimental-20261009120232",
69
+ "@lowdefy/connection-mongodb": "0.0.0-experimental-20261009120232",
70
+ "@lowdefy/errors": "0.0.0-experimental-20261009120232",
71
+ "@lowdefy/helpers": "0.0.0-experimental-20261009120232",
72
+ "@lowdefy/layout": "0.0.0-experimental-20261009120232",
73
+ "@lowdefy/logger": "0.0.0-experimental-20261009120232",
74
+ "@lowdefy/node-utils": "0.0.0-experimental-20261009120232",
75
+ "@lowdefy/operators-js": "0.0.0-experimental-20261009120232",
76
+ "@lowdefy/operators-nunjucks": "0.0.0-experimental-20261009120232",
77
+ "@lowdefy/operators-uuid": "0.0.0-experimental-20261009120232",
78
+ "@lowdefy/websockets-core": "0.0.0-experimental-20261009120232",
79
79
  "@tailwindcss/postcss": "4.3.3",
80
80
  "@vitejs/plugin-react": "6.0.2",
81
81
  "antd": "6.6.5",
82
82
  "dayjs": "1.11.20",
83
- "hono": "4.13.5",
83
+ "hono": "4.13.7",
84
84
  "lightningcss": "1.32.0",
85
85
  "react": "18.2.0",
86
86
  "react-dom": "18.2.0",
@@ -91,7 +91,7 @@
91
91
  },
92
92
  "devDependencies": {
93
93
  "@jest/globals": "28.1.3",
94
- "@lowdefy/build": "0.0.0-experimental-20261007124348",
94
+ "@lowdefy/build": "0.0.0-experimental-20261009120232",
95
95
  "@tailwindcss/postcss": "4.3.3",
96
96
  "jest": "28.1.3",
97
97
  "tailwindcss": "4.3.3",
package/src/app.js CHANGED
@@ -17,6 +17,7 @@
17
17
  import { Hono } from 'hono';
18
18
  import { compress } from 'hono/compress';
19
19
  import { serveStatic } from '@hono/node-server/serve-static';
20
+ import { runInCredentialScope } from '@lowdefy/node-utils';
20
21
 
21
22
  import apiContext from './middleware/apiContext.js';
22
23
  import apiPageHandler from './routes/apiPage.js';
@@ -40,6 +41,10 @@ function createApp() {
40
41
  const app = basePath ? new Hono().basePath(basePath) : new Hono();
41
42
  const logger = createLogger({ server: 'lowdefy' });
42
43
 
44
+ // Each request runs in its own credential scope: what it marks with _credential is scrubbed
45
+ // from every log line written while it is handled.
46
+ app.use('*', (c, next) => runInCredentialScope(next));
47
+
43
48
  app.use('*', async (c, next) => {
44
49
  if (c.req.path.includes('/api/websocket')) {
45
50
  return next();