@next-core/brick-container 3.1.24 → 3.1.26

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@next-core/brick-container",
3
- "version": "3.1.24",
3
+ "version": "3.1.26",
4
4
  "description": "Brick Container Server",
5
5
  "homepage": "https://github.com/easyops-cn/next-core/tree/v3/packages/brick-container",
6
6
  "license": "GPL-3.0",
@@ -43,7 +43,7 @@
43
43
  "@next-core/build-next-bricks": "^1.5.1",
44
44
  "@next-core/http": "^1.0.5",
45
45
  "@next-core/i18n": "^1.0.14",
46
- "@next-core/runtime": "^1.8.0",
46
+ "@next-core/runtime": "^1.9.0",
47
47
  "@next-core/theme": "^1.1.1",
48
48
  "copy-webpack-plugin": "^11.0.0",
49
49
  "core-js": "^3.30.0",
@@ -56,5 +56,5 @@
56
56
  "@next-core/runtime": "*",
57
57
  "@next-core/utils": "*"
58
58
  },
59
- "gitHead": "261dbd466e4cce356d188c7fc41a874bd1c7b2ca"
59
+ "gitHead": "24fba3e8643f05201137b95ba42c42bb6fa41117"
60
60
  }
package/serve/env.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import meow from "meow";
2
2
  import chalk from "chalk";
3
+ import { getSizeCheckApp } from "./utils/sizeCheck.js";
3
4
 
4
5
  const cli = meow(
5
6
  `
@@ -13,6 +14,7 @@ const cli = meow(
13
14
  --local-micro-apps Specify local micro apps to be used in remote mode
14
15
  --local-container Use local brick-container instead of remote in remote mode
15
16
  --port Set local server listening port, defaults to "8081"
17
+ --size-check Enable size-check mode
16
18
  --verbose Print verbose logs
17
19
  --help Show help message
18
20
  --version Show brick container version
@@ -40,6 +42,9 @@ const cli = meow(
40
42
  type: "string",
41
43
  default: "8081",
42
44
  },
45
+ sizeCheck: {
46
+ type: "boolean",
47
+ },
43
48
  verbose: {
44
49
  type: "boolean",
45
50
  },
@@ -79,9 +84,14 @@ export function getEnv(rootDir, runtimeFlags) {
79
84
  localMicroApps: flags.localMicroApps ? flags.localMicroApps.split(",") : [],
80
85
  port: Number(flags.port),
81
86
  server: getServerPath(flags.server),
87
+ sizeCheck: flags.sizeCheck,
82
88
  verbose: flags.verbose,
83
89
  };
84
90
 
91
+ if (env.sizeCheck) {
92
+ env.localMicroApps.push(getSizeCheckApp().id);
93
+ }
94
+
85
95
  if (env.verbose) {
86
96
  console.log("Configure:", env);
87
97
  }
package/serve/index.js CHANGED
@@ -18,11 +18,18 @@ import {
18
18
  const __dirname = path.dirname(fileURLToPath(import.meta.url));
19
19
 
20
20
  const env = getEnv(process.cwd());
21
- const { baseHref, useLocalContainer, port } = env;
21
+ const { baseHref, useLocalContainer, port, sizeCheck } = env;
22
22
  const distDir = path.join(__dirname, "../dist");
23
23
 
24
24
  const app = express();
25
25
 
26
+ if (sizeCheck) {
27
+ app.use((req, res, next) => {
28
+ res.set("Cache-Control", "no-store");
29
+ next();
30
+ });
31
+ }
32
+
26
33
  app.use(compression());
27
34
 
28
35
  const middlewares = [...getPreMiddlewares(env), ...getMiddlewares(env)];
@@ -1,5 +1,6 @@
1
1
  import { getBrickPackages } from "@next-core/serve-helpers";
2
2
  import { getSingleStoryboard } from "../utils/getStoryboards.js";
3
+ import { getSizeCheckStoryboards } from "../utils/sizeCheck.js";
3
4
 
4
5
  export default function standaloneBootstrapJson({ rootDir }, appId) {
5
6
  /**
@@ -13,10 +14,17 @@ export default function standaloneBootstrapJson({ rootDir }, appId) {
13
14
  getBrickPackages(rootDir, true),
14
15
  ]);
15
16
 
16
- if (storyboard) {
17
+ if (appId === "-size-check-") {
18
+ res.json({
19
+ storyboards: getSizeCheckStoryboards(brickPackages),
20
+ brickPackages,
21
+ settings: getE2eSettings(),
22
+ });
23
+ } else if (storyboard) {
17
24
  res.json({
18
25
  storyboards: [storyboard],
19
26
  brickPackages,
27
+ settings: appId === "e2e" ? getE2eSettings() : undefined,
20
28
  });
21
29
  } else {
22
30
  res.status(404);
@@ -27,3 +35,12 @@ export default function standaloneBootstrapJson({ rootDir }, appId) {
27
35
  }
28
36
  };
29
37
  }
38
+
39
+ function getE2eSettings() {
40
+ return {
41
+ presetBricks: {
42
+ notification: false,
43
+ dialog: false,
44
+ },
45
+ };
46
+ }
@@ -3,6 +3,7 @@ import { readFile } from "node:fs/promises";
3
3
  import path from "node:path";
4
4
  import yaml from "js-yaml";
5
5
  import _ from "lodash";
6
+ import { getSizeCheckApp } from "./sizeCheck.js";
6
7
 
7
8
  export function getStoryboards({ rootDir, localMicroApps }) {
8
9
  const storyboards = Promise.all(
@@ -16,6 +17,10 @@ export function getStoryboards({ rootDir, localMicroApps }) {
16
17
  }
17
18
 
18
19
  export async function getSingleStoryboard(rootDir, appId) {
20
+ const sizeCheckApp = getSizeCheckApp();
21
+ if (appId === sizeCheckApp.id) {
22
+ return { app: sizeCheckApp };
23
+ }
19
24
  const filePath = path.join(
20
25
  rootDir,
21
26
  "mock-micro-apps",
@@ -0,0 +1,105 @@
1
+ export function getSizeCheckApp() {
2
+ return {
3
+ name: "Size Check",
4
+ id: "-size-check-",
5
+ homepage: "/-size-check-",
6
+ noAuthGuard: true,
7
+ standaloneMode: true,
8
+ };
9
+ }
10
+
11
+ export function getSizeCheckStoryboards(brickPackages) {
12
+ return [
13
+ {
14
+ app: getSizeCheckApp(),
15
+ routes: [
16
+ // By each brick
17
+ {
18
+ path: `\${APP.homepage}/-`,
19
+ exact: true,
20
+ bricks: [
21
+ {
22
+ brick: "ul",
23
+ children: brickPackages.flatMap((pkg) =>
24
+ pkg.bricks.concat(pkg.elements ?? []).map((brick) => ({
25
+ brick: "li",
26
+ properties: {
27
+ textContent: `${pkg.id.split("/")[1]}:${brick}`,
28
+ },
29
+ }))
30
+ ),
31
+ },
32
+ {
33
+ brick: "p",
34
+ properties: {
35
+ textContent: "This is size-check index!",
36
+ },
37
+ },
38
+ ],
39
+ },
40
+ ...brickPackages.flatMap((pkg) =>
41
+ pkg.bricks.concat(pkg.elements ?? []).map((brick) => ({
42
+ path: `\${APP.homepage}/${brick}`,
43
+ exact: true,
44
+ preLoadBricks: [brick],
45
+ bricks: [
46
+ {
47
+ brick: "p",
48
+ properties: { textContent: "This is size-check!" },
49
+ },
50
+ ],
51
+ }))
52
+ ),
53
+
54
+ // By each package
55
+ {
56
+ path: `\${APP.homepage}/packages/-`,
57
+ exact: true,
58
+ bricks: [
59
+ {
60
+ brick: "ul",
61
+ children: brickPackages.map((pkg) => ({
62
+ brick: "li",
63
+ properties: {
64
+ textContent: pkg.id.split("/")[1],
65
+ },
66
+ })),
67
+ },
68
+ {
69
+ brick: "p",
70
+ properties: {
71
+ textContent: "This is size-check index!",
72
+ },
73
+ },
74
+ ],
75
+ },
76
+ ...brickPackages.map((pkg) => ({
77
+ path: `\${APP.homepage}/packages/${pkg.id.split("/")[1]}`,
78
+ exact: true,
79
+ preLoadBricks: pkg.bricks.concat(pkg.elements ?? []),
80
+ bricks: [
81
+ {
82
+ brick: "p",
83
+ properties: { textContent: "This is size-check!" },
84
+ },
85
+ ],
86
+ })),
87
+
88
+ // All together
89
+ {
90
+ path: `\${APP.homepage}/all`,
91
+ exact: true,
92
+ preLoadBricks: brickPackages.flatMap((pkg) =>
93
+ pkg.bricks.concat(pkg.elements ?? [])
94
+ ),
95
+ bricks: [
96
+ {
97
+ brick: "p",
98
+ properties: { textContent: "This is size-check!" },
99
+ },
100
+ ],
101
+ },
102
+ ],
103
+ },
104
+ ];
105
+ }