@modern-js/prod-server 2.0.0-beta.2 → 2.0.0-beta.4

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.
Files changed (130) hide show
  1. package/CHANGELOG.md +132 -0
  2. package/dist/js/modern/constants.js +32 -25
  3. package/dist/js/modern/index.js +11 -6
  4. package/dist/js/modern/libs/context/context.js +52 -84
  5. package/dist/js/modern/libs/context/index.js +5 -2
  6. package/dist/js/modern/libs/hook-api/index.js +42 -35
  7. package/dist/js/modern/libs/hook-api/route.js +6 -7
  8. package/dist/js/modern/libs/hook-api/template.js +20 -34
  9. package/dist/js/modern/libs/loadConfig.js +45 -24
  10. package/dist/js/modern/libs/metrics.js +3 -4
  11. package/dist/js/modern/libs/proxy.js +68 -37
  12. package/dist/js/modern/libs/render/cache/__tests__/cache.fun.test.js +112 -67
  13. package/dist/js/modern/libs/render/cache/__tests__/cache.test.js +246 -216
  14. package/dist/js/modern/libs/render/cache/__tests__/cacheable.js +43 -49
  15. package/dist/js/modern/libs/render/cache/__tests__/error-configuration.js +36 -34
  16. package/dist/js/modern/libs/render/cache/__tests__/matched-cache.js +83 -113
  17. package/dist/js/modern/libs/render/cache/index.js +88 -54
  18. package/dist/js/modern/libs/render/cache/page-caches/index.js +31 -8
  19. package/dist/js/modern/libs/render/cache/page-caches/lru.js +6 -6
  20. package/dist/js/modern/libs/render/cache/spr.js +133 -117
  21. package/dist/js/modern/libs/render/cache/type.js +0 -1
  22. package/dist/js/modern/libs/render/cache/util.js +71 -39
  23. package/dist/js/modern/libs/render/index.js +76 -56
  24. package/dist/js/modern/libs/render/measure.js +38 -27
  25. package/dist/js/modern/libs/render/reader.js +65 -62
  26. package/dist/js/modern/libs/render/ssr.js +50 -32
  27. package/dist/js/modern/libs/render/static.js +50 -33
  28. package/dist/js/modern/libs/render/type.js +9 -6
  29. package/dist/js/modern/libs/route/index.js +8 -15
  30. package/dist/js/modern/libs/route/matcher.js +20 -34
  31. package/dist/js/modern/libs/route/route.js +9 -18
  32. package/dist/js/modern/libs/serve-file.js +33 -20
  33. package/dist/js/modern/server/index.js +144 -145
  34. package/dist/js/modern/server/modern-server-split.js +46 -12
  35. package/dist/js/modern/server/modern-server.js +377 -419
  36. package/dist/js/modern/type.js +0 -1
  37. package/dist/js/modern/utils.js +62 -43
  38. package/dist/js/modern/worker-server.js +34 -14
  39. package/dist/js/node/constants.js +45 -30
  40. package/dist/js/node/index.js +31 -57
  41. package/dist/js/node/libs/context/context.js +79 -94
  42. package/dist/js/node/libs/context/index.js +23 -13
  43. package/dist/js/node/libs/hook-api/index.js +69 -48
  44. package/dist/js/node/libs/hook-api/route.js +22 -11
  45. package/dist/js/node/libs/hook-api/template.js +36 -39
  46. package/dist/js/node/libs/loadConfig.js +69 -35
  47. package/dist/js/node/libs/metrics.js +21 -9
  48. package/dist/js/node/libs/proxy.js +86 -44
  49. package/dist/js/node/libs/render/cache/__tests__/cache.fun.test.js +132 -70
  50. package/dist/js/node/libs/render/cache/__tests__/cache.test.js +268 -218
  51. package/dist/js/node/libs/render/cache/__tests__/cacheable.js +61 -55
  52. package/dist/js/node/libs/render/cache/__tests__/error-configuration.js +54 -40
  53. package/dist/js/node/libs/render/cache/__tests__/matched-cache.js +101 -119
  54. package/dist/js/node/libs/render/cache/index.js +110 -64
  55. package/dist/js/node/libs/render/cache/page-caches/index.js +50 -14
  56. package/dist/js/node/libs/render/cache/page-caches/lru.js +29 -12
  57. package/dist/js/node/libs/render/cache/spr.js +156 -129
  58. package/dist/js/node/libs/render/cache/type.js +0 -5
  59. package/dist/js/node/libs/render/cache/util.js +88 -45
  60. package/dist/js/node/libs/render/index.js +102 -67
  61. package/dist/js/node/libs/render/measure.js +55 -31
  62. package/dist/js/node/libs/render/reader.js +87 -70
  63. package/dist/js/node/libs/render/ssr.js +76 -47
  64. package/dist/js/node/libs/render/static.js +75 -40
  65. package/dist/js/node/libs/render/type.js +27 -12
  66. package/dist/js/node/libs/route/index.js +26 -26
  67. package/dist/js/node/libs/route/matcher.js +36 -41
  68. package/dist/js/node/libs/route/route.js +25 -22
  69. package/dist/js/node/libs/serve-file.js +61 -32
  70. package/dist/js/node/server/index.js +160 -160
  71. package/dist/js/node/server/modern-server-split.js +68 -22
  72. package/dist/js/node/server/modern-server.js +395 -443
  73. package/dist/js/node/type.js +0 -3
  74. package/dist/js/node/utils.js +74 -52
  75. package/dist/js/node/worker-server.js +53 -21
  76. package/dist/js/treeshaking/constants.js +26 -25
  77. package/dist/js/treeshaking/index.js +10 -10
  78. package/dist/js/treeshaking/libs/context/context.js +268 -237
  79. package/dist/js/treeshaking/libs/context/index.js +3 -3
  80. package/dist/js/treeshaking/libs/hook-api/index.js +265 -143
  81. package/dist/js/treeshaking/libs/hook-api/route.js +65 -30
  82. package/dist/js/treeshaking/libs/hook-api/template.js +121 -85
  83. package/dist/js/treeshaking/libs/loadConfig.js +80 -37
  84. package/dist/js/treeshaking/libs/metrics.js +4 -10
  85. package/dist/js/treeshaking/libs/proxy.js +240 -76
  86. package/dist/js/treeshaking/libs/render/cache/__tests__/cache.fun.test.js +288 -121
  87. package/dist/js/treeshaking/libs/render/cache/__tests__/cache.test.js +772 -455
  88. package/dist/js/treeshaking/libs/render/cache/__tests__/cacheable.js +65 -51
  89. package/dist/js/treeshaking/libs/render/cache/__tests__/error-configuration.js +45 -35
  90. package/dist/js/treeshaking/libs/render/cache/__tests__/matched-cache.js +144 -118
  91. package/dist/js/treeshaking/libs/render/cache/index.js +337 -175
  92. package/dist/js/treeshaking/libs/render/cache/page-caches/index.js +151 -27
  93. package/dist/js/treeshaking/libs/render/cache/page-caches/lru.js +80 -42
  94. package/dist/js/treeshaking/libs/render/cache/spr.js +470 -340
  95. package/dist/js/treeshaking/libs/render/cache/type.js +1 -1
  96. package/dist/js/treeshaking/libs/render/cache/util.js +271 -92
  97. package/dist/js/treeshaking/libs/render/index.js +228 -95
  98. package/dist/js/treeshaking/libs/render/measure.js +142 -57
  99. package/dist/js/treeshaking/libs/render/reader.js +325 -177
  100. package/dist/js/treeshaking/libs/render/ssr.js +220 -95
  101. package/dist/js/treeshaking/libs/render/static.js +210 -78
  102. package/dist/js/treeshaking/libs/render/type.js +7 -6
  103. package/dist/js/treeshaking/libs/route/index.js +125 -89
  104. package/dist/js/treeshaking/libs/route/matcher.js +132 -107
  105. package/dist/js/treeshaking/libs/route/route.js +40 -26
  106. package/dist/js/treeshaking/libs/serve-file.js +177 -68
  107. package/dist/js/treeshaking/server/index.js +468 -327
  108. package/dist/js/treeshaking/server/modern-server-split.js +352 -144
  109. package/dist/js/treeshaking/server/modern-server.js +1046 -911
  110. package/dist/js/treeshaking/type.js +1 -1
  111. package/dist/js/treeshaking/utils.js +138 -81
  112. package/dist/js/treeshaking/worker-server.js +176 -55
  113. package/dist/types/index.d.ts +2 -0
  114. package/dist/types/libs/context/context.d.ts +4 -1
  115. package/dist/types/libs/loadConfig.d.ts +1 -0
  116. package/dist/types/libs/render/cache/index.d.ts +2 -0
  117. package/dist/types/libs/render/cache/spr.d.ts +2 -0
  118. package/dist/types/libs/route/route.d.ts +0 -1
  119. package/dist/types/server/index.d.ts +3 -0
  120. package/dist/types/utils.d.ts +1 -1
  121. package/dist/types/worker-server.d.ts +1 -2
  122. package/package.json +7 -14
  123. package/dist/js/modern/libs/render/modern/browser-list.js +0 -7
  124. package/dist/js/modern/libs/render/modern/index.js +0 -37
  125. package/dist/js/node/libs/render/modern/browser-list.js +0 -14
  126. package/dist/js/node/libs/render/modern/index.js +0 -46
  127. package/dist/js/treeshaking/libs/render/modern/browser-list.js +0 -7
  128. package/dist/js/treeshaking/libs/render/modern/index.js +0 -39
  129. package/dist/types/libs/render/modern/browser-list.d.ts +0 -1
  130. package/dist/types/libs/render/modern/index.d.ts +0 -3
@@ -1,121 +1,91 @@
1
- export const matchedCacheableAry = [[{
2
- requestOpt: {
3
- url: '/level-one',
4
- headers: {},
5
- query: {
6
- name: 'byted'
7
- }
8
- },
9
- cacheConfig: {
10
- level: 1,
11
- includes: {
12
- query: ['name']
1
+ const matchedCacheableAry = [
2
+ [
3
+ {
4
+ requestOpt: {
5
+ url: "/level-one",
6
+ headers: {},
7
+ query: { name: "byted" }
8
+ },
9
+ cacheConfig: {
10
+ level: 1,
11
+ includes: { query: ["name"] },
12
+ matches: { query: { name: { weixin: "^byted" } } }
13
+ },
14
+ content: "level1"
13
15
  },
14
- matches: {
15
- query: {
16
- name: {
17
- weixin: '^byted'
18
- }
19
- }
20
- }
21
- },
22
- content: 'level1'
23
- }, {
24
- url: '/level-one',
25
- headers: {},
26
- query: {
27
- name: 'byted_likely'
28
- }
29
- }, {
30
- url: '/level-one',
31
- headers: {},
32
- query: {
33
- name: 'not_byted'
34
- }
35
- }], [{
36
- requestOpt: {
37
- url: '/level-two',
38
- query: {},
39
- headers: {
40
- age: '17'
41
- }
42
- },
43
- cacheConfig: {
44
- level: 2,
45
- includes: {
46
- header: ['age']
16
+ {
17
+ url: "/level-one",
18
+ headers: {},
19
+ query: { name: "byted_likely" }
47
20
  },
48
- matches: {
49
- header: {
50
- age: {
51
- one: '^1'
52
- }
53
- }
21
+ {
22
+ url: "/level-one",
23
+ headers: {},
24
+ query: { name: "not_byted" }
54
25
  }
55
- },
56
- content: 'level2'
57
- }, {
58
- url: '/level-two',
59
- query: {},
60
- headers: {
61
- age: '11'
62
- }
63
- }, {
64
- url: '/level-two',
65
- query: {},
66
- headers: {
67
- age: '22'
68
- }
69
- }], [{
70
- requestOpt: {
71
- url: '/level-three',
72
- headers: {
73
- age: '17'
26
+ ],
27
+ [
28
+ {
29
+ requestOpt: {
30
+ url: "/level-two",
31
+ query: {},
32
+ headers: { age: "17" }
33
+ },
34
+ cacheConfig: {
35
+ level: 2,
36
+ includes: { header: ["age"] },
37
+ matches: { header: { age: { one: "^1" } } }
38
+ },
39
+ content: "level2"
74
40
  },
75
- query: {
76
- name: 'byted'
77
- }
78
- },
79
- cacheConfig: {
80
- level: 3,
81
- includes: {
82
- query: ['name'],
83
- header: ['age']
41
+ {
42
+ url: "/level-two",
43
+ query: {},
44
+ headers: { age: "11" }
84
45
  },
85
- matches: {
86
- query: {
87
- name: {
88
- weixin: '^byted'
89
- }
46
+ {
47
+ url: "/level-two",
48
+ query: {},
49
+ headers: { age: "22" }
50
+ }
51
+ ],
52
+ [
53
+ {
54
+ requestOpt: {
55
+ url: "/level-three",
56
+ headers: { age: "17" },
57
+ query: { name: "byted" }
90
58
  },
91
- header: {
92
- age: {
93
- one: '^1'
59
+ cacheConfig: {
60
+ level: 3,
61
+ includes: {
62
+ query: ["name"],
63
+ header: ["age"]
64
+ },
65
+ matches: {
66
+ query: { name: { weixin: "^byted" } },
67
+ header: { age: { one: "^1" } }
94
68
  }
95
- }
69
+ },
70
+ content: "level3"
71
+ },
72
+ {
73
+ url: "/level-three",
74
+ query: { name: "byted_likely" },
75
+ headers: { age: "19" }
76
+ },
77
+ {
78
+ url: "/level-three",
79
+ query: { name: "byted_likely" },
80
+ headers: {}
81
+ },
82
+ {
83
+ url: "/level-three",
84
+ query: { name: "not_byted" },
85
+ headers: { age: "19" }
96
86
  }
97
- },
98
- content: 'level3'
99
- }, {
100
- url: '/level-three',
101
- query: {
102
- name: 'byted_likely'
103
- },
104
- headers: {
105
- age: '19'
106
- }
107
- }, {
108
- url: '/level-three',
109
- query: {
110
- name: 'byted_likely'
111
- },
112
- headers: {}
113
- }, {
114
- url: '/level-three',
115
- query: {
116
- name: 'not_byted'
117
- },
118
- headers: {
119
- age: '19'
120
- }
121
- }]];
87
+ ]
88
+ ];
89
+ export {
90
+ matchedCacheableAry
91
+ };
@@ -1,81 +1,115 @@
1
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
3
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
4
- import { Transform } from 'stream';
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
3
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
4
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
5
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
6
+ var __spreadValues = (a, b) => {
7
+ for (var prop in b || (b = {}))
8
+ if (__hasOwnProp.call(b, prop))
9
+ __defNormalProp(a, prop, b[prop]);
10
+ if (__getOwnPropSymbols)
11
+ for (var prop of __getOwnPropSymbols(b)) {
12
+ if (__propIsEnum.call(b, prop))
13
+ __defNormalProp(a, prop, b[prop]);
14
+ }
15
+ return a;
16
+ };
17
+ var __async = (__this, __arguments, generator) => {
18
+ return new Promise((resolve, reject) => {
19
+ var fulfilled = (value) => {
20
+ try {
21
+ step(generator.next(value));
22
+ } catch (e) {
23
+ reject(e);
24
+ }
25
+ };
26
+ var rejected = (value) => {
27
+ try {
28
+ step(generator.throw(value));
29
+ } catch (e) {
30
+ reject(e);
31
+ }
32
+ };
33
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
34
+ step((generator = generator.apply(__this, __arguments)).next());
35
+ });
36
+ };
37
+ import { Transform } from "stream";
5
38
  import { ERROR_DIGEST } from "../../../constants";
6
39
  import { createCache } from "./spr";
7
40
  import { namespaceHash, withCoalescedInvoke } from "./util";
8
- export default ((renderFn, ctx) => {
41
+ var cache_default = (renderFn, ctx) => {
9
42
  const sprCache = createCache();
10
- const doRender = async context => {
11
- const cacheContext = _objectSpread({
43
+ const doRender = (context) => __async(void 0, null, function* () {
44
+ const cacheContext = __spreadValues({
12
45
  entry: context.entryName
13
46
  }, context.request);
14
- const cacheFile = await sprCache.get(cacheContext);
15
- async function afterRender(source, onAfterRender) {
16
- // e.g. source is undefined when redirects occur during render
17
- if (!source) {
18
- return '';
19
- }
20
- if (typeof source === 'string') {
21
- await onAfterRender(source);
22
- return source;
23
- } else {
24
- let htmlForStream = '';
25
- const cacheStream = new Transform({
26
- write(chunk, _, callback) {
27
- htmlForStream += chunk.toString();
28
- this.push(chunk);
29
- callback();
30
- }
31
- });
32
- cacheStream.on('close', () => onAfterRender(htmlForStream));
33
- return source(cacheStream);
34
- }
47
+ const cacheFile = yield sprCache.get(cacheContext);
48
+ function afterRender(source, onAfterRender) {
49
+ return __async(this, null, function* () {
50
+ if (!source) {
51
+ return "";
52
+ }
53
+ if (typeof source === "string") {
54
+ yield onAfterRender(source);
55
+ return source;
56
+ } else {
57
+ let htmlForStream = "";
58
+ const cacheStream = new Transform({
59
+ write(chunk, _, callback) {
60
+ htmlForStream += chunk.toString();
61
+ this.push(chunk);
62
+ callback();
63
+ }
64
+ });
65
+ cacheStream.on("close", () => onAfterRender(htmlForStream));
66
+ return source(cacheStream);
67
+ }
68
+ });
35
69
  }
36
- async function saveHtmlIntoCache(html) {
37
- const {
38
- cacheConfig
39
- } = context;
40
- if (html && cacheConfig) {
41
- await sprCache.set(cacheContext, html, cacheConfig);
42
- }
70
+ function saveHtmlIntoCache(html) {
71
+ return __async(this, null, function* () {
72
+ const { cacheConfig } = context;
73
+ if (html && cacheConfig) {
74
+ yield sprCache.set(cacheContext, html, cacheConfig);
75
+ }
76
+ });
43
77
  }
44
-
45
- // no cache, render sync
46
78
  if (!cacheFile) {
47
- const renderResult = await renderFn(context);
79
+ const renderResult = yield renderFn(context);
48
80
  return afterRender(renderResult, saveHtmlIntoCache);
49
81
  }
50
- const cacheHash = cacheFile === null || cacheFile === void 0 ? void 0 : cacheFile.hash;
51
-
52
- // completely expired
82
+ const cacheHash = cacheFile == null ? void 0 : cacheFile.hash;
53
83
  if (cacheFile.isGarbage) {
54
- const renderResult = await renderFn(context);
84
+ const renderResult = yield renderFn(context);
55
85
  return afterRender(renderResult, saveHtmlIntoCache);
56
86
  } else if (cacheFile.isStale) {
57
- // if file is stale, request async
58
- const render = withCoalescedInvoke(() => renderFn(context)).bind(null, namespaceHash('render', cacheFile.hash), []);
59
- render().then(async res => {
87
+ const render = withCoalescedInvoke(() => renderFn(context)).bind(
88
+ null,
89
+ namespaceHash("render", cacheFile.hash),
90
+ []
91
+ );
92
+ render().then((res) => __async(void 0, null, function* () {
60
93
  if (res.value && res.isOrigin) {
61
- const {
62
- cacheConfig
63
- } = context;
94
+ const { cacheConfig } = context;
64
95
  if (cacheConfig) {
65
- afterRender(res.value, async html => {
96
+ afterRender(res.value, (html) => __async(void 0, null, function* () {
66
97
  sprCache.set(cacheContext, html, cacheConfig);
67
- });
98
+ }));
68
99
  } else {
69
100
  sprCache.del(cacheContext, cacheHash);
70
101
  }
71
102
  }
72
- }).catch(e => {
103
+ })).catch((e) => {
73
104
  sprCache.del(cacheContext, cacheHash);
74
105
  ctx.error(ERROR_DIGEST.ERENDER, e);
75
106
  });
76
107
  }
77
- ctx.res.setHeader('x-modern-spr', '1');
108
+ ctx.res.setHeader("x-modern-spr", "1");
78
109
  return cacheFile.content;
79
- };
110
+ });
80
111
  return doRender;
81
- });
112
+ };
113
+ export {
114
+ cache_default as default
115
+ };
@@ -1,9 +1,32 @@
1
+ var __async = (__this, __arguments, generator) => {
2
+ return new Promise((resolve, reject) => {
3
+ var fulfilled = (value) => {
4
+ try {
5
+ step(generator.next(value));
6
+ } catch (e) {
7
+ reject(e);
8
+ }
9
+ };
10
+ var rejected = (value) => {
11
+ try {
12
+ step(generator.throw(value));
13
+ } catch (e) {
14
+ reject(e);
15
+ }
16
+ };
17
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
18
+ step((generator = generator.apply(__this, __arguments)).next());
19
+ });
20
+ };
1
21
  import { LRUCaches } from "./lru";
2
- export async function createPageCaches(max) {
3
- const constructorOptions = {
4
- max
5
- };
6
- const cacheInstance = new LRUCaches(constructorOptions);
7
- await cacheInstance.init();
8
- return cacheInstance;
9
- }
22
+ function createPageCaches(max) {
23
+ return __async(this, null, function* () {
24
+ const constructorOptions = { max };
25
+ const cacheInstance = new LRUCaches(constructorOptions);
26
+ yield cacheInstance.init();
27
+ return cacheInstance;
28
+ });
29
+ }
30
+ export {
31
+ createPageCaches
32
+ };
@@ -1,9 +1,6 @@
1
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2
- import LRU from 'lru-cache';
3
- export class LRUCaches {
1
+ import LRU from "lru-cache";
2
+ class LRUCaches {
4
3
  constructor(options) {
5
- _defineProperty(this, "caches", void 0);
6
- _defineProperty(this, "max", void 0);
7
4
  this.max = options.max;
8
5
  this.caches = new LRU(this.max);
9
6
  }
@@ -26,4 +23,7 @@ export class LRUCaches {
26
23
  del(key) {
27
24
  this.caches.del(key);
28
25
  }
29
- }
26
+ }
27
+ export {
28
+ LRUCaches
29
+ };