@modern-js/prod-server 2.14.0 → 2.16.0

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 (122) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/dist/cjs/constants.js +15 -31
  3. package/dist/cjs/index.js +35 -37
  4. package/dist/cjs/libs/context/context.js +53 -66
  5. package/dist/cjs/libs/context/index.js +15 -28
  6. package/dist/cjs/libs/hook-api/index.js +59 -54
  7. package/dist/cjs/libs/hook-api/route.js +28 -30
  8. package/dist/cjs/libs/hook-api/template.js +30 -34
  9. package/dist/cjs/libs/loadConfig.js +74 -65
  10. package/dist/cjs/libs/logger.js +46 -37
  11. package/dist/cjs/libs/metrics.js +7 -25
  12. package/dist/cjs/libs/proxy.js +29 -46
  13. package/dist/cjs/libs/render/cache/__tests__/cache.fun.test.js +48 -64
  14. package/dist/cjs/libs/render/cache/__tests__/cache.test.js +53 -37
  15. package/dist/cjs/libs/render/cache/__tests__/cacheable.js +38 -34
  16. package/dist/cjs/libs/render/cache/__tests__/error-configuration.js +22 -30
  17. package/dist/cjs/libs/render/cache/__tests__/matched-cache.js +86 -46
  18. package/dist/cjs/libs/render/cache/index.js +17 -37
  19. package/dist/cjs/libs/render/cache/page-caches/index.js +12 -28
  20. package/dist/cjs/libs/render/cache/page-caches/lru.js +32 -40
  21. package/dist/cjs/libs/render/cache/spr.js +104 -111
  22. package/dist/cjs/libs/render/cache/type.js +4 -15
  23. package/dist/cjs/libs/render/cache/util.js +29 -53
  24. package/dist/cjs/libs/render/index.js +75 -73
  25. package/dist/cjs/libs/render/measure.js +19 -34
  26. package/dist/cjs/libs/render/reader.js +52 -61
  27. package/dist/cjs/libs/render/ssr.js +34 -66
  28. package/dist/cjs/libs/render/static.js +22 -45
  29. package/dist/cjs/libs/render/type.js +10 -28
  30. package/dist/cjs/libs/render/utils.js +17 -38
  31. package/dist/cjs/libs/route/index.js +32 -31
  32. package/dist/cjs/libs/route/matcher.js +38 -38
  33. package/dist/cjs/libs/route/route.js +29 -26
  34. package/dist/cjs/libs/serveFile.js +23 -41
  35. package/dist/cjs/server/index.js +101 -107
  36. package/dist/cjs/server/modernServer.js +191 -171
  37. package/dist/cjs/server/modernServerSplit.js +12 -30
  38. package/dist/cjs/type.js +4 -15
  39. package/dist/cjs/utils.js +50 -50
  40. package/dist/cjs/workerServer.js +26 -36
  41. package/dist/esm/constants.js +24 -25
  42. package/dist/esm/index.js +11 -10
  43. package/dist/esm/libs/context/context.js +271 -264
  44. package/dist/esm/libs/context/index.js +3 -3
  45. package/dist/esm/libs/hook-api/index.js +237 -223
  46. package/dist/esm/libs/hook-api/route.js +62 -60
  47. package/dist/esm/libs/hook-api/template.js +117 -115
  48. package/dist/esm/libs/loadConfig.js +68 -69
  49. package/dist/esm/libs/logger.js +188 -174
  50. package/dist/esm/libs/metrics.js +6 -3
  51. package/dist/esm/libs/proxy.js +236 -221
  52. package/dist/esm/libs/render/cache/__tests__/cache.fun.test.js +286 -267
  53. package/dist/esm/libs/render/cache/__tests__/cache.test.js +765 -745
  54. package/dist/esm/libs/render/cache/__tests__/cacheable.js +62 -63
  55. package/dist/esm/libs/render/cache/__tests__/error-configuration.js +42 -43
  56. package/dist/esm/libs/render/cache/__tests__/matched-cache.js +134 -135
  57. package/dist/esm/libs/render/cache/index.js +337 -326
  58. package/dist/esm/libs/render/cache/page-caches/index.js +147 -141
  59. package/dist/esm/libs/render/cache/page-caches/lru.js +78 -76
  60. package/dist/esm/libs/render/cache/spr.js +465 -456
  61. package/dist/esm/libs/render/cache/type.js +1 -1
  62. package/dist/esm/libs/render/cache/util.js +266 -246
  63. package/dist/esm/libs/render/index.js +226 -218
  64. package/dist/esm/libs/render/measure.js +136 -128
  65. package/dist/esm/libs/render/reader.js +315 -304
  66. package/dist/esm/libs/render/ssr.js +214 -209
  67. package/dist/esm/libs/render/static.js +208 -198
  68. package/dist/esm/libs/render/type.js +6 -7
  69. package/dist/esm/libs/render/utils.js +8 -9
  70. package/dist/esm/libs/route/index.js +134 -123
  71. package/dist/esm/libs/route/matcher.js +140 -130
  72. package/dist/esm/libs/route/route.js +36 -37
  73. package/dist/esm/libs/serveFile.js +177 -168
  74. package/dist/esm/server/index.js +578 -549
  75. package/dist/esm/server/modernServer.js +1137 -1074
  76. package/dist/esm/server/modernServerSplit.js +344 -328
  77. package/dist/esm/type.js +1 -1
  78. package/dist/esm/utils.js +133 -124
  79. package/dist/esm/workerServer.js +226 -220
  80. package/dist/esm-node/constants.js +7 -14
  81. package/dist/esm-node/index.js +4 -9
  82. package/dist/esm-node/libs/context/context.js +32 -25
  83. package/dist/esm-node/libs/context/index.js +2 -5
  84. package/dist/esm-node/libs/hook-api/index.js +40 -21
  85. package/dist/esm-node/libs/hook-api/route.js +21 -8
  86. package/dist/esm-node/libs/hook-api/template.js +19 -14
  87. package/dist/esm-node/libs/loadConfig.js +11 -28
  88. package/dist/esm-node/libs/logger.js +37 -17
  89. package/dist/esm-node/libs/metrics.js +1 -3
  90. package/dist/esm-node/libs/proxy.js +14 -22
  91. package/dist/esm-node/libs/render/cache/__tests__/cache.fun.test.js +25 -36
  92. package/dist/esm-node/libs/render/cache/__tests__/cache.test.js +23 -11
  93. package/dist/esm-node/libs/render/cache/__tests__/cacheable.js +32 -13
  94. package/dist/esm-node/libs/render/cache/__tests__/error-configuration.js +16 -9
  95. package/dist/esm-node/libs/render/cache/__tests__/matched-cache.js +80 -25
  96. package/dist/esm-node/libs/render/cache/index.js +3 -10
  97. package/dist/esm-node/libs/render/cache/page-caches/index.js +4 -5
  98. package/dist/esm-node/libs/render/cache/page-caches/lru.js +20 -8
  99. package/dist/esm-node/libs/render/cache/spr.js +79 -80
  100. package/dist/esm-node/libs/render/cache/type.js +1 -0
  101. package/dist/esm-node/libs/render/cache/util.js +13 -23
  102. package/dist/esm-node/libs/render/index.js +10 -28
  103. package/dist/esm-node/libs/render/measure.js +7 -13
  104. package/dist/esm-node/libs/render/reader.js +31 -26
  105. package/dist/esm-node/libs/render/ssr.js +5 -21
  106. package/dist/esm-node/libs/render/static.js +1 -4
  107. package/dist/esm-node/libs/render/type.js +3 -6
  108. package/dist/esm-node/libs/render/utils.js +6 -18
  109. package/dist/esm-node/libs/route/index.js +20 -9
  110. package/dist/esm-node/libs/route/matcher.js +28 -17
  111. package/dist/esm-node/libs/route/route.js +23 -5
  112. package/dist/esm-node/libs/serveFile.js +2 -6
  113. package/dist/esm-node/server/index.js +72 -75
  114. package/dist/esm-node/server/modernServer.js +102 -130
  115. package/dist/esm-node/server/modernServerSplit.js +1 -4
  116. package/dist/esm-node/type.js +1 -0
  117. package/dist/esm-node/utils.js +41 -32
  118. package/dist/esm-node/workerServer.js +9 -10
  119. package/dist/types/libs/context/context.d.ts +1 -1
  120. package/dist/types/server/modernServer.d.ts +1 -1
  121. package/dist/types/utils.d.ts +1 -1
  122. package/package.json +12 -8
@@ -1,291 +1,310 @@
1
- function _arrayLikeToArray(arr, len) {
2
- if (len == null || len > arr.length) len = arr.length;
3
- for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
4
- return arr2;
1
+ function _array_like_to_array(arr, len) {
2
+ if (len == null || len > arr.length)
3
+ len = arr.length;
4
+ for (var i = 0, arr2 = new Array(len); i < len; i++)
5
+ arr2[i] = arr[i];
6
+ return arr2;
5
7
  }
6
- function _arrayWithHoles(arr) {
7
- if (Array.isArray(arr)) return arr;
8
+ function _array_with_holes(arr) {
9
+ if (Array.isArray(arr))
10
+ return arr;
8
11
  }
9
12
  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
10
- try {
11
- var info = gen[key](arg);
12
- var value = info.value;
13
- } catch (error) {
14
- reject(error);
15
- return;
16
- }
17
- if (info.done) {
18
- resolve(value);
19
- } else {
20
- Promise.resolve(value).then(_next, _throw);
21
- }
13
+ try {
14
+ var info = gen[key](arg);
15
+ var value = info.value;
16
+ } catch (error) {
17
+ reject(error);
18
+ return;
19
+ }
20
+ if (info.done) {
21
+ resolve(value);
22
+ } else {
23
+ Promise.resolve(value).then(_next, _throw);
24
+ }
22
25
  }
23
- function _asyncToGenerator(fn) {
24
- return function() {
25
- var self = this, args = arguments;
26
- return new Promise(function(resolve, reject) {
27
- var gen = fn.apply(self, args);
28
- function _next(value) {
29
- asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
30
- }
31
- function _throw(err) {
32
- asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
33
- }
34
- _next(undefined);
35
- });
36
- };
26
+ function _async_to_generator(fn) {
27
+ return function() {
28
+ var self = this, args = arguments;
29
+ return new Promise(function(resolve, reject) {
30
+ var gen = fn.apply(self, args);
31
+ function _next(value) {
32
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
33
+ }
34
+ function _throw(err) {
35
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
36
+ }
37
+ _next(void 0);
38
+ });
39
+ };
37
40
  }
38
- function _iterableToArrayLimit(arr, i) {
39
- var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
40
- if (_i == null) return;
41
- var _arr = [];
42
- var _n = true;
43
- var _d = false;
44
- var _s, _e;
41
+ function _iterable_to_array_limit(arr, i) {
42
+ var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
43
+ if (_i == null)
44
+ return;
45
+ var _arr = [];
46
+ var _n = true;
47
+ var _d = false;
48
+ var _s, _e;
49
+ try {
50
+ for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {
51
+ _arr.push(_s.value);
52
+ if (i && _arr.length === i)
53
+ break;
54
+ }
55
+ } catch (err) {
56
+ _d = true;
57
+ _e = err;
58
+ } finally {
45
59
  try {
46
- for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
47
- _arr.push(_s.value);
48
- if (i && _arr.length === i) break;
49
- }
50
- } catch (err) {
51
- _d = true;
52
- _e = err;
53
- } finally{
54
- try {
55
- if (!_n && _i["return"] != null) _i["return"]();
56
- } finally{
57
- if (_d) throw _e;
58
- }
60
+ if (!_n && _i["return"] != null)
61
+ _i["return"]();
62
+ } finally {
63
+ if (_d)
64
+ throw _e;
59
65
  }
60
- return _arr;
66
+ }
67
+ return _arr;
61
68
  }
62
- function _nonIterableRest() {
63
- throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
69
+ function _non_iterable_rest() {
70
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
64
71
  }
65
- function _slicedToArray(arr, i) {
66
- return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
72
+ function _sliced_to_array(arr, i) {
73
+ return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();
67
74
  }
68
- function _unsupportedIterableToArray(o, minLen) {
69
- if (!o) return;
70
- if (typeof o === "string") return _arrayLikeToArray(o, minLen);
71
- var n = Object.prototype.toString.call(o).slice(8, -1);
72
- if (n === "Object" && o.constructor) n = o.constructor.name;
73
- if (n === "Map" || n === "Set") return Array.from(n);
74
- if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
75
+ function _unsupported_iterable_to_array(o, minLen) {
76
+ if (!o)
77
+ return;
78
+ if (typeof o === "string")
79
+ return _array_like_to_array(o, minLen);
80
+ var n = Object.prototype.toString.call(o).slice(8, -1);
81
+ if (n === "Object" && o.constructor)
82
+ n = o.constructor.name;
83
+ if (n === "Map" || n === "Set")
84
+ return Array.from(n);
85
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))
86
+ return _array_like_to_array(o, minLen);
75
87
  }
76
88
  var __generator = this && this.__generator || function(thisArg, body) {
77
- var f, y, t, g, _ = {
78
- label: 0,
79
- sent: function() {
80
- if (t[0] & 1) throw t[1];
81
- return t[1];
82
- },
83
- trys: [],
84
- ops: []
89
+ var f, y, t, g, _ = {
90
+ label: 0,
91
+ sent: function() {
92
+ if (t[0] & 1)
93
+ throw t[1];
94
+ return t[1];
95
+ },
96
+ trys: [],
97
+ ops: []
98
+ };
99
+ return g = {
100
+ next: verb(0),
101
+ "throw": verb(1),
102
+ "return": verb(2)
103
+ }, typeof Symbol === "function" && (g[Symbol.iterator] = function() {
104
+ return this;
105
+ }), g;
106
+ function verb(n) {
107
+ return function(v) {
108
+ return step([
109
+ n,
110
+ v
111
+ ]);
85
112
  };
86
- return g = {
87
- next: verb(0),
88
- "throw": verb(1),
89
- "return": verb(2)
90
- }, typeof Symbol === "function" && (g[Symbol.iterator] = function() {
91
- return this;
92
- }), g;
93
- function verb(n) {
94
- return function(v) {
95
- return step([
96
- n,
97
- v
98
- ]);
99
- };
100
- }
101
- function step(op) {
102
- if (f) throw new TypeError("Generator is already executing.");
103
- while(_)try {
104
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
105
- if (y = 0, t) op = [
106
- op[0] & 2,
107
- t.value
108
- ];
109
- switch(op[0]){
110
- case 0:
111
- case 1:
112
- t = op;
113
- break;
114
- case 4:
115
- _.label++;
116
- return {
117
- value: op[1],
118
- done: false
119
- };
120
- case 5:
121
- _.label++;
122
- y = op[1];
123
- op = [
124
- 0
125
- ];
126
- continue;
127
- case 7:
128
- op = _.ops.pop();
129
- _.trys.pop();
130
- continue;
131
- default:
132
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
133
- _ = 0;
134
- continue;
135
- }
136
- if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
137
- _.label = op[1];
138
- break;
139
- }
140
- if (op[0] === 6 && _.label < t[1]) {
141
- _.label = t[1];
142
- t = op;
143
- break;
144
- }
145
- if (t && _.label < t[2]) {
146
- _.label = t[2];
147
- _.ops.push(op);
148
- break;
149
- }
150
- if (t[2]) _.ops.pop();
151
- _.trys.pop();
152
- continue;
153
- }
154
- op = body.call(thisArg, _);
155
- } catch (e) {
113
+ }
114
+ function step(op) {
115
+ if (f)
116
+ throw new TypeError("Generator is already executing.");
117
+ while (_)
118
+ try {
119
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done)
120
+ return t;
121
+ if (y = 0, t)
122
+ op = [
123
+ op[0] & 2,
124
+ t.value
125
+ ];
126
+ switch (op[0]) {
127
+ case 0:
128
+ case 1:
129
+ t = op;
130
+ break;
131
+ case 4:
132
+ _.label++;
133
+ return {
134
+ value: op[1],
135
+ done: false
136
+ };
137
+ case 5:
138
+ _.label++;
139
+ y = op[1];
156
140
  op = [
157
- 6,
158
- e
141
+ 0
159
142
  ];
160
- y = 0;
161
- } finally{
162
- f = t = 0;
143
+ continue;
144
+ case 7:
145
+ op = _.ops.pop();
146
+ _.trys.pop();
147
+ continue;
148
+ default:
149
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
150
+ _ = 0;
151
+ continue;
152
+ }
153
+ if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
154
+ _.label = op[1];
155
+ break;
156
+ }
157
+ if (op[0] === 6 && _.label < t[1]) {
158
+ _.label = t[1];
159
+ t = op;
160
+ break;
161
+ }
162
+ if (t && _.label < t[2]) {
163
+ _.label = t[2];
164
+ _.ops.push(op);
165
+ break;
166
+ }
167
+ if (t[2])
168
+ _.ops.pop();
169
+ _.trys.pop();
170
+ continue;
163
171
  }
164
- if (op[0] & 5) throw op[1];
165
- return {
166
- value: op[0] ? op[1] : void 0,
167
- done: true
168
- };
169
- }
172
+ op = body.call(thisArg, _);
173
+ } catch (e) {
174
+ op = [
175
+ 6,
176
+ e
177
+ ];
178
+ y = 0;
179
+ } finally {
180
+ f = t = 0;
181
+ }
182
+ if (op[0] & 5)
183
+ throw op[1];
184
+ return {
185
+ value: op[0] ? op[1] : void 0,
186
+ done: true
187
+ };
188
+ }
170
189
  };
171
190
  import url from "url";
172
191
  import { createCache, destroyCache } from "../spr";
173
192
  import { cacheAddition, connectFactor, fname, maybeSync, namespaceHash, valueFactory, withCoalescedInvoke } from "../util";
174
193
  describe("test spr util functions", function() {
175
- it("should return value correctly", function() {
176
- expect(connectFactor("bar", "foo")).toBe("bar-foo");
177
- expect(fname(1)).toBe("f1");
178
- expect(namespaceHash("modern", "!@#$%^&")).toBe("modern/!@#$%^&");
179
- });
180
- it("should create or destroy instance correctly", function() {
181
- var ins1 = createCache();
182
- var ins2 = createCache();
183
- expect(ins1 === ins2).toBe(true);
184
- destroyCache();
185
- var ins3 = createCache();
186
- expect(ins1 === ins3).toBe(false);
187
- expect(ins2 === ins3).toBe(false);
188
- });
189
- it("should return function correctly", function() {
190
- var urlParams = function() {
191
- return new url.URLSearchParams();
192
- }();
193
- urlParams.set("name", "modern");
194
- var getParam = valueFactory(urlParams);
195
- expect(getParam("name")).toBe("modern");
196
- var headers = {
197
- age: "12345"
198
- };
199
- var getHeader = valueFactory(headers);
200
- expect(getHeader("age")).toBe("12345");
194
+ it("should return value correctly", function() {
195
+ expect(connectFactor("bar", "foo")).toBe("bar-foo");
196
+ expect(fname(1)).toBe("f1");
197
+ expect(namespaceHash("modern", "!@#$%^&")).toBe("modern/!@#$%^&");
198
+ });
199
+ it("should create or destroy instance correctly", function() {
200
+ var ins1 = createCache();
201
+ var ins2 = createCache();
202
+ expect(ins1 === ins2).toBe(true);
203
+ destroyCache();
204
+ var ins3 = createCache();
205
+ expect(ins1 === ins3).toBe(false);
206
+ expect(ins2 === ins3).toBe(false);
207
+ });
208
+ it("should return function correctly", function() {
209
+ var urlParams = function() {
210
+ return new url.URLSearchParams();
211
+ }();
212
+ urlParams.set("name", "modern");
213
+ var getParam = valueFactory(urlParams);
214
+ expect(getParam("name")).toBe("modern");
215
+ var headers = {
216
+ age: "12345"
217
+ };
218
+ var getHeader = valueFactory(headers);
219
+ expect(getHeader("age")).toBe("12345");
220
+ });
221
+ it("should add target html content", function() {
222
+ var contentNoHead = "<div>123</div>";
223
+ var html = cacheAddition(contentNoHead, Math.random().toString());
224
+ expect(html).toBe(contentNoHead);
225
+ var contentWithHead = "<head></head><div>123</div>";
226
+ var hash = Math.random().toString();
227
+ var htmlWithHead = cacheAddition(contentWithHead, hash);
228
+ expect(htmlWithHead).toBe('<head><meta name="x-moden-spr" content="'.concat(hash, '"></head><div>123</div>'));
229
+ });
230
+ it("should only invoke func one time", /* @__PURE__ */ _async_to_generator(function() {
231
+ var index, fn, key, _ref, res1, res2;
232
+ return __generator(this, function(_state) {
233
+ switch (_state.label) {
234
+ case 0:
235
+ index = 0;
236
+ fn = withCoalescedInvoke(/* @__PURE__ */ _async_to_generator(function() {
237
+ return __generator(this, function(_state2) {
238
+ return [
239
+ 2,
240
+ new Promise(function(resolve) {
241
+ setTimeout(function() {
242
+ index += 1;
243
+ resolve(index);
244
+ }, 500);
245
+ })
246
+ ];
247
+ });
248
+ }));
249
+ key = "test";
250
+ return [
251
+ 4,
252
+ Promise.all([
253
+ fn(key, []),
254
+ fn(key, [])
255
+ ])
256
+ ];
257
+ case 1:
258
+ _ref = _sliced_to_array.apply(void 0, [
259
+ _state.sent(),
260
+ 2
261
+ ]), res1 = _ref[0], res2 = _ref[1];
262
+ expect(res1.isOrigin && res2.isOrigin).toBe(false);
263
+ expect(res1.isOrigin || res2.isOrigin).toBe(true);
264
+ expect(res1.value).toBe(1);
265
+ expect(res2.value).toBe(1);
266
+ return [
267
+ 2
268
+ ];
269
+ }
201
270
  });
202
- it("should add target html content", function() {
203
- var contentNoHead = "<div>123</div>";
204
- var html = cacheAddition(contentNoHead, Math.random().toString());
205
- expect(html).toBe(contentNoHead);
206
- var contentWithHead = "<head></head><div>123</div>";
207
- var hash = Math.random().toString();
208
- var htmlWithHead = cacheAddition(contentWithHead, hash);
209
- expect(htmlWithHead).toBe('<head><meta name="x-moden-spr" content="'.concat(hash, '"></head><div>123</div>'));
271
+ }));
272
+ it("should invoke sync or async", /* @__PURE__ */ _async_to_generator(function() {
273
+ var foo, async, sync;
274
+ return __generator(this, function(_state) {
275
+ switch (_state.label) {
276
+ case 0:
277
+ foo = "";
278
+ return [
279
+ 4,
280
+ maybeSync(function() {
281
+ return new Promise(function(resolve) {
282
+ setTimeout(function() {
283
+ resolve(foo);
284
+ }, 100);
285
+ });
286
+ })(false)
287
+ ];
288
+ case 1:
289
+ async = _state.sent();
290
+ expect(async).toBeUndefined();
291
+ return [
292
+ 4,
293
+ maybeSync(function() {
294
+ return new Promise(function(resolve) {
295
+ setTimeout(function() {
296
+ resolve(foo);
297
+ }, 100);
298
+ });
299
+ })(true)
300
+ ];
301
+ case 2:
302
+ sync = _state.sent();
303
+ expect(sync).toBe(foo);
304
+ return [
305
+ 2
306
+ ];
307
+ }
210
308
  });
211
- it("should only invoke func one time", /*#__PURE__*/ _asyncToGenerator(function() {
212
- var index, fn, key, _ref, res1, res2;
213
- return __generator(this, function(_state) {
214
- switch(_state.label){
215
- case 0:
216
- index = 0;
217
- fn = withCoalescedInvoke(/*#__PURE__*/ _asyncToGenerator(function() {
218
- return __generator(this, function(_state) {
219
- return [
220
- 2,
221
- new Promise(function(resolve) {
222
- setTimeout(function() {
223
- index += 1;
224
- resolve(index);
225
- }, 500);
226
- })
227
- ];
228
- });
229
- }));
230
- key = "test";
231
- return [
232
- 4,
233
- Promise.all([
234
- fn(key, []),
235
- fn(key, [])
236
- ])
237
- ];
238
- case 1:
239
- _ref = _slicedToArray.apply(void 0, [
240
- _state.sent(),
241
- 2
242
- ]), res1 = _ref[0], res2 = _ref[1];
243
- expect(res1.isOrigin && res2.isOrigin).toBe(false);
244
- expect(res1.isOrigin || res2.isOrigin).toBe(true);
245
- expect(res1.value).toBe(1);
246
- expect(res2.value).toBe(1);
247
- return [
248
- 2
249
- ];
250
- }
251
- });
252
- }));
253
- it("should invoke sync or async", /*#__PURE__*/ _asyncToGenerator(function() {
254
- var foo, async, sync;
255
- return __generator(this, function(_state) {
256
- switch(_state.label){
257
- case 0:
258
- foo = "";
259
- return [
260
- 4,
261
- maybeSync(function() {
262
- return new Promise(function(resolve) {
263
- setTimeout(function() {
264
- resolve(foo);
265
- }, 100);
266
- });
267
- })(false)
268
- ];
269
- case 1:
270
- async = _state.sent();
271
- expect(async).toBeUndefined();
272
- return [
273
- 4,
274
- maybeSync(function() {
275
- return new Promise(function(resolve) {
276
- setTimeout(function() {
277
- resolve(foo);
278
- }, 100);
279
- });
280
- })(true)
281
- ];
282
- case 2:
283
- sync = _state.sent();
284
- expect(sync).toBe(foo);
285
- return [
286
- 2
287
- ];
288
- }
289
- });
290
- }));
309
+ }));
291
310
  });