@lowdefy/server-e2e 0.0.0-experimental-20260608135213 → 0.0.0-experimental-20260610101734
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/{pages/_app.js → client/App.jsx} +39 -28
- package/client/Page.jsx +93 -0
- package/client/main.jsx +39 -0
- package/lib/build/app.js +8 -1
- package/lib/build/appMeta.js +8 -1
- package/lib/build/auth.js +8 -1
- package/lib/build/config.js +8 -1
- package/lib/build/i18n.js +26 -0
- package/lib/build/logger.js +8 -1
- package/lib/build/theme.js +8 -1
- package/lib/client/auth/{Auth.js → Auth.jsx} +5 -1
- package/lib/server/auth/{getServerSession.js → session.js} +5 -3
- package/package.json +38 -32
- package/package.original.json +41 -35
- package/postcss.config.cjs +1 -0
- package/src/app.js +71 -0
- package/src/html/getAssets.js +45 -0
- package/src/html/renderPage.js +76 -0
- package/src/html/template.js +94 -0
- package/src/index.js +35 -0
- package/src/lib/getPathSegments.js +25 -0
- package/src/lib/safeScriptJson.js +38 -0
- package/src/middleware/apiContext.js +82 -0
- package/src/middleware/errorHandler.js +45 -0
- package/src/routes/apiPage.js +35 -0
- package/{pages/api/client-error.js → src/routes/clientError.js} +14 -18
- package/{pages/api/endpoints/[...endpointId].js → src/routes/endpoints.js} +8 -7
- package/{pages/api/request/[...path].js → src/routes/request.js} +10 -10
- package/{pages/api/auth/session.js → src/routes/sessionMock.js} +4 -5
- package/{pages/api → src/routes}/usage.js +13 -8
- package/vite.config.js +45 -0
- package/lib/client/Page.js +0 -57
- package/lib/server/apiWrapper.js +0 -80
- package/lib/server/serverSidePropsWrapper.js +0 -64
- package/next.config.js +0 -20
- package/pages/404.js +0 -49
- package/pages/[[...pageId]].js +0 -85
- package/pages/_document.js +0 -106
|
@@ -14,24 +14,20 @@
|
|
|
14
14
|
limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
|
-
// CSS layer order — MUST be the first CSS import. Next.js treats this as critical
|
|
18
|
-
// CSS that loads before hydration, locking the cascade priority (antd > base/preflight)
|
|
19
|
-
// before antd's StyleProvider injects @layer antd {} at runtime.
|
|
20
|
-
import '../build/layer-order.css';
|
|
21
|
-
|
|
22
17
|
import React, { useCallback, useRef } from 'react';
|
|
23
|
-
import dynamic from 'next/dynamic';
|
|
24
18
|
|
|
25
19
|
import { ErrorBoundary } from '@lowdefy/block-utils';
|
|
26
|
-
import { useDarkMode } from '@lowdefy/client';
|
|
20
|
+
import { useDarkMode, useLocale } from '@lowdefy/client';
|
|
27
21
|
import { StyleProvider } from '@ant-design/cssinjs';
|
|
28
|
-
import { App as AntdApp,
|
|
22
|
+
import { App as AntdApp, theme as antdTheme } from 'antd';
|
|
23
|
+
import { XProvider } from '@ant-design/x';
|
|
29
24
|
|
|
30
|
-
import
|
|
25
|
+
import antdLocaleLoaders from '../build/i18n/antdLocales.js';
|
|
26
|
+
import antdXLocaleLoaders from '../build/i18n/antdXLocales.js';
|
|
27
|
+
import dayjsLocaleMap from '../build/i18n/dayjsLocales.js';
|
|
28
|
+
import Auth from '../lib/client/auth/Auth.jsx';
|
|
31
29
|
import createLogUsage from '../lib/client/createLogUsage.js';
|
|
32
|
-
|
|
33
|
-
// Must be in _app due to next specifications.
|
|
34
|
-
import '../build/globals.css';
|
|
30
|
+
import Page from './Page.jsx';
|
|
35
31
|
|
|
36
32
|
function ThemeTokenResolver({ lowdefyRef, children }) {
|
|
37
33
|
const { token } = antdTheme.useToken();
|
|
@@ -42,7 +38,9 @@ function ThemeTokenResolver({ lowdefyRef, children }) {
|
|
|
42
38
|
return children;
|
|
43
39
|
}
|
|
44
40
|
|
|
45
|
-
function App({
|
|
41
|
+
function App({ config }) {
|
|
42
|
+
const { rootConfig, session } = config;
|
|
43
|
+
|
|
46
44
|
const usageDataRef = useRef({});
|
|
47
45
|
const lowdefyRef = useRef({ eventCallback: createLogUsage({ usageDataRef }) });
|
|
48
46
|
if (rootConfig?.theme) {
|
|
@@ -54,6 +52,17 @@ function App({ Component, pageProps: { session, rootConfig, pageConfig } }) {
|
|
|
54
52
|
configDarkMode: lowdefyRef.current.theme?.darkMode,
|
|
55
53
|
});
|
|
56
54
|
|
|
55
|
+
const { active: activeLocale, antdLocale, antdXLocale } = useLocale({
|
|
56
|
+
i18n: rootConfig?.i18n,
|
|
57
|
+
antdLocaleLoaders,
|
|
58
|
+
antdXLocaleLoaders,
|
|
59
|
+
dayjsLocaleMap,
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
if (rootConfig?.i18n?.defaultLocale) {
|
|
63
|
+
lowdefyRef.current.i18n = { ...rootConfig.i18n, active: activeLocale };
|
|
64
|
+
}
|
|
65
|
+
|
|
57
66
|
const {
|
|
58
67
|
lightToken: _lightToken,
|
|
59
68
|
darkToken: _darkToken,
|
|
@@ -70,9 +79,22 @@ function App({ Component, pageProps: { session, rootConfig, pageConfig } }) {
|
|
|
70
79
|
}
|
|
71
80
|
}, []);
|
|
72
81
|
|
|
82
|
+
// XProvider extends antd's ConfigProvider; merging antd + antd-X locale packs
|
|
83
|
+
// gives X components (Bubble, Sender, Conversations, ...) their built-in strings
|
|
84
|
+
// alongside antd's. antd X ships only en_US + zh_CN; other locales fall back
|
|
85
|
+
// to en_US for X-native strings.
|
|
86
|
+
const mergedLocale =
|
|
87
|
+
antdLocale || antdXLocale ? { ...(antdLocale ?? {}), ...(antdXLocale ?? {}) } : undefined;
|
|
88
|
+
|
|
73
89
|
return (
|
|
74
90
|
<StyleProvider layer>
|
|
75
|
-
<
|
|
91
|
+
<XProvider
|
|
92
|
+
locale={mergedLocale}
|
|
93
|
+
form={
|
|
94
|
+
antdLocale?.Form?.defaultValidateMessages
|
|
95
|
+
? { validateMessages: antdLocale.Form.defaultValidateMessages }
|
|
96
|
+
: undefined
|
|
97
|
+
}
|
|
76
98
|
theme={{
|
|
77
99
|
...antdConfig,
|
|
78
100
|
token,
|
|
@@ -88,26 +110,15 @@ function App({ Component, pageProps: { session, rootConfig, pageConfig } }) {
|
|
|
88
110
|
<Auth session={session}>
|
|
89
111
|
{(auth) => {
|
|
90
112
|
usageDataRef.current.user = auth.session?.hashed_id;
|
|
91
|
-
return
|
|
92
|
-
<Component
|
|
93
|
-
auth={auth}
|
|
94
|
-
lowdefy={lowdefyRef.current}
|
|
95
|
-
rootConfig={rootConfig}
|
|
96
|
-
pageConfig={pageConfig}
|
|
97
|
-
/>
|
|
98
|
-
);
|
|
113
|
+
return <Page auth={auth} config={config} lowdefy={lowdefyRef.current} />;
|
|
99
114
|
}}
|
|
100
115
|
</Auth>
|
|
101
116
|
</ErrorBoundary>
|
|
102
117
|
</ThemeTokenResolver>
|
|
103
118
|
</AntdApp>
|
|
104
|
-
</
|
|
119
|
+
</XProvider>
|
|
105
120
|
</StyleProvider>
|
|
106
121
|
);
|
|
107
122
|
}
|
|
108
123
|
|
|
109
|
-
|
|
110
|
-
ssr: false,
|
|
111
|
-
});
|
|
112
|
-
|
|
113
|
-
export default DynamicApp;
|
|
124
|
+
export default App;
|
package/client/Page.jsx
ADDED
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/*
|
|
2
|
+
Copyright 2020-2026 Lowdefy, Inc
|
|
3
|
+
|
|
4
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
you may not use this file except in compliance with the License.
|
|
6
|
+
You may obtain a copy of the License at
|
|
7
|
+
|
|
8
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
|
|
10
|
+
Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
See the License for the specific language governing permissions and
|
|
14
|
+
limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
import React, { useEffect, useRef, useState } from 'react';
|
|
18
|
+
|
|
19
|
+
import Client from '@lowdefy/client';
|
|
20
|
+
import createRouter from '@lowdefy/client/adapters/createRouter.js';
|
|
21
|
+
import createLinkComponent from '@lowdefy/client/adapters/Link.js';
|
|
22
|
+
import Head from '@lowdefy/client/adapters/Head.js';
|
|
23
|
+
|
|
24
|
+
import actions from '../build/plugins/actions.js';
|
|
25
|
+
import blockMetas from '../build/plugins/blockMetas.json';
|
|
26
|
+
import blocks from '../build/plugins/blocks.js';
|
|
27
|
+
import icons from '../build/plugins/icons.js';
|
|
28
|
+
import operators from '../build/plugins/operators/client.js';
|
|
29
|
+
import jsMap from '../build/plugins/operators/clientJsMap.js';
|
|
30
|
+
|
|
31
|
+
// Replaces lib/client/Page.js. The first page renders from the config
|
|
32
|
+
// embedded in the HTML; SPA navigations fetch /api/page/* and swap pageConfig.
|
|
33
|
+
function Page({ auth, config, lowdefy }) {
|
|
34
|
+
const [pageConfig, setPageConfig] = useState(config.pageConfig);
|
|
35
|
+
|
|
36
|
+
const routerRef = useRef(null);
|
|
37
|
+
if (!routerRef.current) {
|
|
38
|
+
const router = createRouter({ basePath: config.basePath ?? '', window });
|
|
39
|
+
routerRef.current = {
|
|
40
|
+
router,
|
|
41
|
+
Link: createLinkComponent({ router }),
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
const { router, Link } = routerRef.current;
|
|
45
|
+
|
|
46
|
+
useEffect(() => {
|
|
47
|
+
const unsubscribe = router.subscribe(async ({ pageId }) => {
|
|
48
|
+
const targetPageId = pageId ?? config.rootConfig.home.pageId;
|
|
49
|
+
try {
|
|
50
|
+
const res = await fetch(`${router.basePath}/api/page/${targetPageId}`);
|
|
51
|
+
if (!res.ok) {
|
|
52
|
+
if (targetPageId !== '404') {
|
|
53
|
+
router.replace({ pathname: '/404' });
|
|
54
|
+
}
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
const { pageConfig: nextPageConfig } = await res.json();
|
|
58
|
+
setPageConfig(nextPageConfig);
|
|
59
|
+
} catch (error) {
|
|
60
|
+
// Network failure on SPA navigation — fall back to a full page load.
|
|
61
|
+
window.location.assign(
|
|
62
|
+
`${router.basePath}/${targetPageId === config.rootConfig.home.pageId ? '' : targetPageId}`
|
|
63
|
+
);
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
return unsubscribe;
|
|
67
|
+
}, []);
|
|
68
|
+
|
|
69
|
+
return (
|
|
70
|
+
<Client
|
|
71
|
+
auth={auth}
|
|
72
|
+
Components={{ Head, Link }}
|
|
73
|
+
config={{
|
|
74
|
+
pageConfig,
|
|
75
|
+
rootConfig: config.rootConfig,
|
|
76
|
+
}}
|
|
77
|
+
jsMap={jsMap}
|
|
78
|
+
lowdefy={lowdefy}
|
|
79
|
+
router={router}
|
|
80
|
+
stage="e2e"
|
|
81
|
+
types={{
|
|
82
|
+
actions,
|
|
83
|
+
blockMetas,
|
|
84
|
+
blocks,
|
|
85
|
+
icons,
|
|
86
|
+
operators,
|
|
87
|
+
}}
|
|
88
|
+
window={window}
|
|
89
|
+
/>
|
|
90
|
+
);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
export default Page;
|
package/client/main.jsx
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/*
|
|
2
|
+
Copyright 2020-2026 Lowdefy, Inc
|
|
3
|
+
|
|
4
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
you may not use this file except in compliance with the License.
|
|
6
|
+
You may obtain a copy of the License at
|
|
7
|
+
|
|
8
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
|
|
10
|
+
Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
See the License for the specific language governing permissions and
|
|
14
|
+
limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
// CSS layer order — MUST be the first CSS import. This locks the cascade
|
|
18
|
+
// priority (antd > base/preflight) before antd's StyleProvider injects
|
|
19
|
+
// @layer antd {} at runtime.
|
|
20
|
+
import '../build/layer-order.css';
|
|
21
|
+
|
|
22
|
+
import React from 'react';
|
|
23
|
+
import { createRoot } from 'react-dom/client';
|
|
24
|
+
|
|
25
|
+
import App from './App.jsx';
|
|
26
|
+
|
|
27
|
+
import '../build/globals.css';
|
|
28
|
+
|
|
29
|
+
const config = JSON.parse(document.getElementById('__LOWDEFY_CONFIG__').textContent);
|
|
30
|
+
const container = document.getElementById('root');
|
|
31
|
+
|
|
32
|
+
// Keep one React root across Vite HMR updates — re-running createRoot on a
|
|
33
|
+
// container that already has a root is an error.
|
|
34
|
+
const root = import.meta.hot?.data.root ?? createRoot(container);
|
|
35
|
+
if (import.meta.hot) {
|
|
36
|
+
import.meta.hot.data.root = root;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
root.render(<App config={config} />);
|
package/lib/build/app.js
CHANGED
|
@@ -13,7 +13,14 @@
|
|
|
13
13
|
See the License for the specific language governing permissions and
|
|
14
14
|
limitations under the License.
|
|
15
15
|
*/
|
|
16
|
+
|
|
17
|
+
// Build artifacts are read from disk because the Hono server runs as
|
|
18
|
+
// unbundled Node.js ESM — JSON imports would need import attributes, and
|
|
19
|
+
// client code imports the build JSON directly through Vite instead.
|
|
20
|
+
import fs from 'node:fs';
|
|
21
|
+
import path from 'node:path';
|
|
16
22
|
import { serializer } from '@lowdefy/helpers';
|
|
17
|
-
|
|
23
|
+
|
|
24
|
+
const raw = JSON.parse(fs.readFileSync(path.join(process.cwd(), 'build/app.json'), 'utf8'));
|
|
18
25
|
|
|
19
26
|
export default serializer.deserialize(raw);
|
package/lib/build/appMeta.js
CHANGED
|
@@ -13,7 +13,14 @@
|
|
|
13
13
|
See the License for the specific language governing permissions and
|
|
14
14
|
limitations under the License.
|
|
15
15
|
*/
|
|
16
|
+
|
|
17
|
+
// Build artifacts are read from disk because the Hono server runs as
|
|
18
|
+
// unbundled Node.js ESM — JSON imports would need import attributes, and
|
|
19
|
+
// client code imports the build JSON directly through Vite instead.
|
|
20
|
+
import fs from 'node:fs';
|
|
21
|
+
import path from 'node:path';
|
|
16
22
|
import { serializer } from '@lowdefy/helpers';
|
|
17
|
-
|
|
23
|
+
|
|
24
|
+
const raw = JSON.parse(fs.readFileSync(path.join(process.cwd(), 'build/appMeta.json'), 'utf8'));
|
|
18
25
|
|
|
19
26
|
export default serializer.deserialize(raw);
|
package/lib/build/auth.js
CHANGED
|
@@ -13,7 +13,14 @@
|
|
|
13
13
|
See the License for the specific language governing permissions and
|
|
14
14
|
limitations under the License.
|
|
15
15
|
*/
|
|
16
|
+
|
|
17
|
+
// Build artifacts are read from disk because the Hono server runs as
|
|
18
|
+
// unbundled Node.js ESM — JSON imports would need import attributes, and
|
|
19
|
+
// client code imports the build JSON directly through Vite instead.
|
|
20
|
+
import fs from 'node:fs';
|
|
21
|
+
import path from 'node:path';
|
|
16
22
|
import { serializer } from '@lowdefy/helpers';
|
|
17
|
-
|
|
23
|
+
|
|
24
|
+
const raw = JSON.parse(fs.readFileSync(path.join(process.cwd(), 'build/auth.json'), 'utf8'));
|
|
18
25
|
|
|
19
26
|
export default serializer.deserialize(raw);
|
package/lib/build/config.js
CHANGED
|
@@ -13,7 +13,14 @@
|
|
|
13
13
|
See the License for the specific language governing permissions and
|
|
14
14
|
limitations under the License.
|
|
15
15
|
*/
|
|
16
|
+
|
|
17
|
+
// Build artifacts are read from disk because the Hono server runs as
|
|
18
|
+
// unbundled Node.js ESM — JSON imports would need import attributes, and
|
|
19
|
+
// client code imports the build JSON directly through Vite instead.
|
|
20
|
+
import fs from 'node:fs';
|
|
21
|
+
import path from 'node:path';
|
|
16
22
|
import { serializer } from '@lowdefy/helpers';
|
|
17
|
-
|
|
23
|
+
|
|
24
|
+
const raw = JSON.parse(fs.readFileSync(path.join(process.cwd(), 'build/config.json'), 'utf8'));
|
|
18
25
|
|
|
19
26
|
export default serializer.deserialize(raw);
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/*
|
|
2
|
+
Copyright 2020-2026 Lowdefy, Inc
|
|
3
|
+
|
|
4
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
you may not use this file except in compliance with the License.
|
|
6
|
+
You may obtain a copy of the License at
|
|
7
|
+
|
|
8
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
|
|
10
|
+
Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
See the License for the specific language governing permissions and
|
|
14
|
+
limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
// Build artifacts are read from disk because the Hono server runs as
|
|
18
|
+
// unbundled Node.js ESM — JSON imports would need import attributes, and
|
|
19
|
+
// client code imports the build JSON directly through Vite instead.
|
|
20
|
+
import fs from 'node:fs';
|
|
21
|
+
import path from 'node:path';
|
|
22
|
+
import { serializer } from '@lowdefy/helpers';
|
|
23
|
+
|
|
24
|
+
const raw = JSON.parse(fs.readFileSync(path.join(process.cwd(), 'build/i18n.json'), 'utf8'));
|
|
25
|
+
|
|
26
|
+
export default serializer.deserialize(raw);
|
package/lib/build/logger.js
CHANGED
|
@@ -13,7 +13,14 @@
|
|
|
13
13
|
See the License for the specific language governing permissions and
|
|
14
14
|
limitations under the License.
|
|
15
15
|
*/
|
|
16
|
+
|
|
17
|
+
// Build artifacts are read from disk because the Hono server runs as
|
|
18
|
+
// unbundled Node.js ESM — JSON imports would need import attributes, and
|
|
19
|
+
// client code imports the build JSON directly through Vite instead.
|
|
20
|
+
import fs from 'node:fs';
|
|
21
|
+
import path from 'node:path';
|
|
16
22
|
import { serializer } from '@lowdefy/helpers';
|
|
17
|
-
|
|
23
|
+
|
|
24
|
+
const raw = JSON.parse(fs.readFileSync(path.join(process.cwd(), 'build/logger.json'), 'utf8'));
|
|
18
25
|
|
|
19
26
|
export default serializer.deserialize(raw);
|
package/lib/build/theme.js
CHANGED
|
@@ -13,7 +13,14 @@
|
|
|
13
13
|
See the License for the specific language governing permissions and
|
|
14
14
|
limitations under the License.
|
|
15
15
|
*/
|
|
16
|
+
|
|
17
|
+
// Build artifacts are read from disk because the Hono server runs as
|
|
18
|
+
// unbundled Node.js ESM — JSON imports would need import attributes, and
|
|
19
|
+
// client code imports the build JSON directly through Vite instead.
|
|
20
|
+
import fs from 'node:fs';
|
|
21
|
+
import path from 'node:path';
|
|
16
22
|
import { serializer } from '@lowdefy/helpers';
|
|
17
|
-
|
|
23
|
+
|
|
24
|
+
const raw = JSON.parse(fs.readFileSync(path.join(process.cwd(), 'build/theme.json'), 'utf8'));
|
|
18
25
|
|
|
19
26
|
export default serializer.deserialize(raw);
|
|
@@ -14,7 +14,11 @@
|
|
|
14
14
|
limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
|
-
import
|
|
17
|
+
import { serializer } from '@lowdefy/helpers';
|
|
18
|
+
|
|
19
|
+
import rawAuthConfig from '../../../build/auth.json';
|
|
20
|
+
|
|
21
|
+
const authConfig = serializer.deserialize(rawAuthConfig);
|
|
18
22
|
|
|
19
23
|
function e2eNotSupported() {
|
|
20
24
|
throw new Error('Sign-in and sign-out are not supported in e2e testing.');
|
|
@@ -14,8 +14,10 @@
|
|
|
14
14
|
limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
// E2E test-user injection: the session is read from the lowdefy_e2e_user
|
|
18
|
+
// cookie (base64-encoded JSON user object) instead of a real auth engine.
|
|
19
|
+
function getSession(c) {
|
|
20
|
+
const cookieHeader = c.req.header('cookie') ?? '';
|
|
19
21
|
const match = cookieHeader.match(/lowdefy_e2e_user=([^;]+)/);
|
|
20
22
|
if (!match) {
|
|
21
23
|
return undefined;
|
|
@@ -30,4 +32,4 @@ function getServerSession({ req }) {
|
|
|
30
32
|
}
|
|
31
33
|
}
|
|
32
34
|
|
|
33
|
-
export default
|
|
35
|
+
export default getSession;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lowdefy/server-e2e",
|
|
3
|
-
"version": "0.0.0-experimental-
|
|
3
|
+
"version": "0.0.0-experimental-20260610101734",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"description": "Lowdefy e2e testing server with cookie-based user injection",
|
|
6
6
|
"homepage": "https://lowdefy.com",
|
|
@@ -30,49 +30,57 @@
|
|
|
30
30
|
"files": [
|
|
31
31
|
"lib/*",
|
|
32
32
|
"lowdefy/*",
|
|
33
|
-
"pages/*",
|
|
34
33
|
"public_default/*",
|
|
35
|
-
"next.config.js",
|
|
36
34
|
"package.original.json",
|
|
37
35
|
".eslintrc.yaml",
|
|
38
|
-
".npmrc"
|
|
36
|
+
".npmrc",
|
|
37
|
+
"src/*",
|
|
38
|
+
"client/*",
|
|
39
|
+
"vite.config.js",
|
|
40
|
+
"postcss.config.cjs"
|
|
39
41
|
],
|
|
40
42
|
"dependencies": {
|
|
41
43
|
"@ant-design/cssinjs": "2.1.2",
|
|
42
|
-
"@
|
|
43
|
-
"@
|
|
44
|
-
"@lowdefy/
|
|
45
|
-
"@lowdefy/
|
|
46
|
-
"@lowdefy/
|
|
47
|
-
"@lowdefy/blocks-
|
|
48
|
-
"@lowdefy/blocks-
|
|
49
|
-
"@lowdefy/blocks-
|
|
50
|
-
"@lowdefy/blocks-
|
|
51
|
-
"@lowdefy/
|
|
52
|
-
"@lowdefy/
|
|
53
|
-
"@lowdefy/
|
|
54
|
-
"@lowdefy/
|
|
55
|
-
"@lowdefy/
|
|
56
|
-
"@lowdefy/
|
|
57
|
-
"@lowdefy/
|
|
58
|
-
"@lowdefy/
|
|
59
|
-
"@lowdefy/
|
|
60
|
-
"@lowdefy/
|
|
61
|
-
"@lowdefy/
|
|
44
|
+
"@ant-design/x": "2.7.0",
|
|
45
|
+
"@hono/node-server": "2.0.4",
|
|
46
|
+
"@lowdefy/actions-core": "0.0.0-experimental-20260610101734",
|
|
47
|
+
"@lowdefy/api": "0.0.0-experimental-20260610101734",
|
|
48
|
+
"@lowdefy/block-utils": "0.0.0-experimental-20260610101734",
|
|
49
|
+
"@lowdefy/blocks-aggrid": "0.0.0-experimental-20260610101734",
|
|
50
|
+
"@lowdefy/blocks-antd": "0.0.0-experimental-20260610101734",
|
|
51
|
+
"@lowdefy/blocks-antd-x": "0.0.0-experimental-20260610101734",
|
|
52
|
+
"@lowdefy/blocks-basic": "0.0.0-experimental-20260610101734",
|
|
53
|
+
"@lowdefy/blocks-echarts": "0.0.0-experimental-20260610101734",
|
|
54
|
+
"@lowdefy/blocks-loaders": "0.0.0-experimental-20260610101734",
|
|
55
|
+
"@lowdefy/blocks-markdown": "0.0.0-experimental-20260610101734",
|
|
56
|
+
"@lowdefy/blocks-tiptap": "0.0.0-experimental-20260610101734",
|
|
57
|
+
"@lowdefy/client": "0.0.0-experimental-20260610101734",
|
|
58
|
+
"@lowdefy/connection-axios-http": "0.0.0-experimental-20260610101734",
|
|
59
|
+
"@lowdefy/connection-mongodb": "0.0.0-experimental-20260610101734",
|
|
60
|
+
"@lowdefy/errors": "0.0.0-experimental-20260610101734",
|
|
61
|
+
"@lowdefy/helpers": "0.0.0-experimental-20260610101734",
|
|
62
|
+
"@lowdefy/layout": "0.0.0-experimental-20260610101734",
|
|
63
|
+
"@lowdefy/logger": "0.0.0-experimental-20260610101734",
|
|
64
|
+
"@lowdefy/node-utils": "0.0.0-experimental-20260610101734",
|
|
65
|
+
"@lowdefy/operators-js": "0.0.0-experimental-20260610101734",
|
|
66
|
+
"@lowdefy/operators-nunjucks": "0.0.0-experimental-20260610101734",
|
|
67
|
+
"@lowdefy/operators-uuid": "0.0.0-experimental-20260610101734",
|
|
62
68
|
"@tailwindcss/postcss": "4.2.1",
|
|
69
|
+
"@vitejs/plugin-react": "^6.0.2",
|
|
63
70
|
"antd": "6.3.1",
|
|
64
71
|
"dayjs": "1.11.19",
|
|
65
|
-
"
|
|
72
|
+
"hono": "4.12.25",
|
|
66
73
|
"pino": "8.16.2",
|
|
67
74
|
"react": "18.2.0",
|
|
68
75
|
"react-dom": "18.2.0",
|
|
69
76
|
"react-icons": "5.6.0",
|
|
70
77
|
"tailwindcss": "4.2.1",
|
|
71
|
-
"uuid": "13.0.0"
|
|
78
|
+
"uuid": "13.0.0",
|
|
79
|
+
"vite": "8.0.16"
|
|
72
80
|
},
|
|
73
81
|
"devDependencies": {
|
|
74
82
|
"@jest/globals": "28.1.3",
|
|
75
|
-
"@lowdefy/build": "0.0.0-experimental-
|
|
83
|
+
"@lowdefy/build": "0.0.0-experimental-20260610101734",
|
|
76
84
|
"@next/eslint-plugin-next": "16.1.6",
|
|
77
85
|
"@tailwindcss/postcss": "4.2.1",
|
|
78
86
|
"jest": "28.1.3",
|
|
@@ -87,14 +95,12 @@
|
|
|
87
95
|
"publishConfig": {
|
|
88
96
|
"access": "public"
|
|
89
97
|
},
|
|
98
|
+
"type": "module",
|
|
90
99
|
"scripts": {
|
|
91
100
|
"build": "cp package.json package.original.json || copy package.json package.original.json",
|
|
101
|
+
"build:client": "vite build",
|
|
92
102
|
"build:lowdefy": "node lowdefy/build.mjs",
|
|
93
|
-
"
|
|
94
|
-
"dev": "next dev",
|
|
95
|
-
"start": "next start",
|
|
96
|
-
"lint": "next lint",
|
|
97
|
-
"next": "next",
|
|
103
|
+
"start": "node src/index.js",
|
|
98
104
|
"test": "node --experimental-vm-modules node_modules/jest/bin/jest.js"
|
|
99
105
|
}
|
|
100
106
|
}
|
package/package.original.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lowdefy/server-e2e",
|
|
3
|
-
"version": "0.0.0-experimental-
|
|
3
|
+
"version": "0.0.0-experimental-20260610101734",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"description": "Lowdefy e2e testing server with cookie-based user injection",
|
|
6
6
|
"homepage": "https://lowdefy.com",
|
|
@@ -30,60 +30,65 @@
|
|
|
30
30
|
"files": [
|
|
31
31
|
"lib/*",
|
|
32
32
|
"lowdefy/*",
|
|
33
|
-
"pages/*",
|
|
34
33
|
"public_default/*",
|
|
35
|
-
"next.config.js",
|
|
36
34
|
"package.original.json",
|
|
37
35
|
".eslintrc.yaml",
|
|
38
|
-
".npmrc"
|
|
36
|
+
".npmrc",
|
|
37
|
+
"src/*",
|
|
38
|
+
"client/*",
|
|
39
|
+
"vite.config.js",
|
|
40
|
+
"postcss.config.cjs"
|
|
39
41
|
],
|
|
40
42
|
"scripts": {
|
|
41
43
|
"build": "cp package.json package.original.json || copy package.json package.original.json",
|
|
44
|
+
"build:client": "vite build",
|
|
42
45
|
"build:lowdefy": "node lowdefy/build.mjs",
|
|
43
|
-
"
|
|
44
|
-
"
|
|
45
|
-
"
|
|
46
|
-
"lint": "next lint",
|
|
47
|
-
"next": "next",
|
|
48
|
-
"test": "node --experimental-vm-modules node_modules/jest/bin/jest.js",
|
|
49
|
-
"prepublishOnly": "pnpm build"
|
|
46
|
+
"prepublishOnly": "pnpm build",
|
|
47
|
+
"start": "node src/index.js",
|
|
48
|
+
"test": "node --experimental-vm-modules node_modules/jest/bin/jest.js"
|
|
50
49
|
},
|
|
51
50
|
"dependencies": {
|
|
52
51
|
"@ant-design/cssinjs": "2.1.2",
|
|
53
|
-
"@
|
|
54
|
-
"@
|
|
55
|
-
"@lowdefy/
|
|
56
|
-
"@lowdefy/
|
|
57
|
-
"@lowdefy/
|
|
58
|
-
"@lowdefy/blocks-
|
|
59
|
-
"@lowdefy/blocks-
|
|
60
|
-
"@lowdefy/blocks-
|
|
61
|
-
"@lowdefy/blocks-
|
|
62
|
-
"@lowdefy/
|
|
63
|
-
"@lowdefy/
|
|
64
|
-
"@lowdefy/
|
|
65
|
-
"@lowdefy/
|
|
66
|
-
"@lowdefy/
|
|
67
|
-
"@lowdefy/
|
|
68
|
-
"@lowdefy/
|
|
69
|
-
"@lowdefy/
|
|
70
|
-
"@lowdefy/
|
|
71
|
-
"@lowdefy/
|
|
72
|
-
"@lowdefy/
|
|
52
|
+
"@ant-design/x": "2.7.0",
|
|
53
|
+
"@hono/node-server": "2.0.4",
|
|
54
|
+
"@lowdefy/actions-core": "0.0.0-experimental-20260610101734",
|
|
55
|
+
"@lowdefy/api": "0.0.0-experimental-20260610101734",
|
|
56
|
+
"@lowdefy/block-utils": "0.0.0-experimental-20260610101734",
|
|
57
|
+
"@lowdefy/blocks-aggrid": "0.0.0-experimental-20260610101734",
|
|
58
|
+
"@lowdefy/blocks-antd": "0.0.0-experimental-20260610101734",
|
|
59
|
+
"@lowdefy/blocks-antd-x": "0.0.0-experimental-20260610101734",
|
|
60
|
+
"@lowdefy/blocks-basic": "0.0.0-experimental-20260610101734",
|
|
61
|
+
"@lowdefy/blocks-echarts": "0.0.0-experimental-20260610101734",
|
|
62
|
+
"@lowdefy/blocks-loaders": "0.0.0-experimental-20260610101734",
|
|
63
|
+
"@lowdefy/blocks-markdown": "0.0.0-experimental-20260610101734",
|
|
64
|
+
"@lowdefy/blocks-tiptap": "0.0.0-experimental-20260610101734",
|
|
65
|
+
"@lowdefy/client": "0.0.0-experimental-20260610101734",
|
|
66
|
+
"@lowdefy/connection-axios-http": "0.0.0-experimental-20260610101734",
|
|
67
|
+
"@lowdefy/connection-mongodb": "0.0.0-experimental-20260610101734",
|
|
68
|
+
"@lowdefy/errors": "0.0.0-experimental-20260610101734",
|
|
69
|
+
"@lowdefy/helpers": "0.0.0-experimental-20260610101734",
|
|
70
|
+
"@lowdefy/layout": "0.0.0-experimental-20260610101734",
|
|
71
|
+
"@lowdefy/logger": "0.0.0-experimental-20260610101734",
|
|
72
|
+
"@lowdefy/node-utils": "0.0.0-experimental-20260610101734",
|
|
73
|
+
"@lowdefy/operators-js": "0.0.0-experimental-20260610101734",
|
|
74
|
+
"@lowdefy/operators-nunjucks": "0.0.0-experimental-20260610101734",
|
|
75
|
+
"@lowdefy/operators-uuid": "0.0.0-experimental-20260610101734",
|
|
73
76
|
"@tailwindcss/postcss": "4.2.1",
|
|
77
|
+
"@vitejs/plugin-react": "^6.0.2",
|
|
74
78
|
"antd": "6.3.1",
|
|
75
79
|
"dayjs": "1.11.19",
|
|
76
|
-
"
|
|
80
|
+
"hono": "4.12.25",
|
|
77
81
|
"pino": "8.16.2",
|
|
78
82
|
"react": "18.2.0",
|
|
79
83
|
"react-dom": "18.2.0",
|
|
80
84
|
"react-icons": "5.6.0",
|
|
81
85
|
"tailwindcss": "4.2.1",
|
|
82
|
-
"uuid": "13.0.0"
|
|
86
|
+
"uuid": "13.0.0",
|
|
87
|
+
"vite": "8.0.16"
|
|
83
88
|
},
|
|
84
89
|
"devDependencies": {
|
|
85
90
|
"@jest/globals": "28.1.3",
|
|
86
|
-
"@lowdefy/build": "0.0.0-experimental-
|
|
91
|
+
"@lowdefy/build": "0.0.0-experimental-20260610101734",
|
|
87
92
|
"@next/eslint-plugin-next": "16.1.6",
|
|
88
93
|
"@tailwindcss/postcss": "4.2.1",
|
|
89
94
|
"jest": "28.1.3",
|
|
@@ -102,5 +107,6 @@
|
|
|
102
107
|
},
|
|
103
108
|
"publishConfig": {
|
|
104
109
|
"access": "public"
|
|
105
|
-
}
|
|
110
|
+
},
|
|
111
|
+
"type": "module"
|
|
106
112
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
module.exports = { plugins: { '@tailwindcss/postcss': {} } };
|