@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,124 +1,291 @@
1
- import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
- import _regeneratorRuntime from "@babel/runtime/helpers/esm/regeneratorRuntime";
3
- import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
4
- import url from 'url';
5
- import { createCache, destroyCache } from "../spr";
6
- import { cacheAddition, connectFactor, fname, maybeSync, namespaceHash, valueFactory, withCoalescedInvoke } from "../util";
7
- describe('test spr util functions', function () {
8
- it('should return value correctly', function () {
9
- expect(connectFactor('bar', 'foo')).toBe('bar-foo');
10
- expect(fname(1)).toBe('f1');
11
- expect(namespaceHash('modern', '!@#$%^&')).toBe('modern/!@#$%^&');
12
- });
13
- it('should create or destroy instance correctly', function () {
14
- var ins1 = createCache();
15
- var ins2 = createCache();
16
- expect(ins1 === ins2).toBe(true);
17
- destroyCache();
18
- var ins3 = createCache();
19
- expect(ins1 === ins3).toBe(false);
20
- expect(ins2 === ins3).toBe(false);
21
- });
22
- it('should return function correctly', function () {
23
- var urlParams = function () {
24
- return new url.URLSearchParams();
25
- }();
26
- urlParams.set('name', 'modern');
27
- var getParam = valueFactory(urlParams);
28
- expect(getParam('name')).toBe('modern');
29
- var headers = {
30
- age: '12345'
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;
5
+ }
6
+ function _arrayWithHoles(arr) {
7
+ if (Array.isArray(arr)) return arr;
8
+ }
9
+ 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
+ }
22
+ }
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
+ });
31
36
  };
32
- var getHeader = valueFactory(headers);
33
- expect(getHeader('age')).toBe('12345');
34
- });
35
- it('should add target html content', function () {
36
- var contentNoHead = '<div>123</div>';
37
- var html = cacheAddition(contentNoHead, Math.random().toString());
38
- expect(html).toBe(contentNoHead);
39
- var contentWithHead = '<head></head><div>123</div>';
40
- var hash = Math.random().toString();
41
- var htmlWithHead = cacheAddition(contentWithHead, hash);
42
- expect(htmlWithHead).toBe("<head><meta name=\"x-moden-spr\" content=\"".concat(hash, "\"></head><div>123</div>"));
43
- });
44
- it('should only invoke func one time', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
45
- var index, fn, key, _yield$Promise$all, _yield$Promise$all2, res1, res2;
46
- return _regeneratorRuntime().wrap(function _callee2$(_context2) {
47
- while (1) {
48
- switch (_context2.prev = _context2.next) {
49
- case 0:
50
- index = 0;
51
- fn = withCoalescedInvoke( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
52
- return _regeneratorRuntime().wrap(function _callee$(_context) {
53
- while (1) {
54
- switch (_context.prev = _context.next) {
55
- case 0:
56
- return _context.abrupt("return", new Promise(function (resolve) {
57
- setTimeout(function () {
58
- index += 1;
59
- resolve(index);
60
- }, 500);
61
- }));
62
- case 1:
63
- case "end":
64
- return _context.stop();
65
- }
66
- }
67
- }, _callee);
68
- })));
69
- key = 'test';
70
- _context2.next = 5;
71
- return Promise.all([fn(key, []), fn(key, [])]);
72
- case 5:
73
- _yield$Promise$all = _context2.sent;
74
- _yield$Promise$all2 = _slicedToArray(_yield$Promise$all, 2);
75
- res1 = _yield$Promise$all2[0];
76
- res2 = _yield$Promise$all2[1];
77
- expect(res1.isOrigin && res2.isOrigin).toBe(false);
78
- expect(res1.isOrigin || res2.isOrigin).toBe(true);
79
- expect(res1.value).toBe(1);
80
- expect(res2.value).toBe(1);
81
- case 13:
82
- case "end":
83
- return _context2.stop();
37
+ }
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;
45
+ 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;
84
58
  }
85
- }
86
- }, _callee2);
87
- })));
88
- it('should invoke sync or async', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {
89
- var foo, async, sync;
90
- return _regeneratorRuntime().wrap(function _callee3$(_context3) {
91
- while (1) {
92
- switch (_context3.prev = _context3.next) {
93
- case 0:
94
- foo = '';
95
- _context3.next = 3;
96
- return maybeSync(function () {
97
- return new Promise(function (resolve) {
98
- setTimeout(function () {
99
- resolve(foo);
100
- }, 100);
101
- });
102
- })(false);
103
- case 3:
104
- async = _context3.sent;
105
- expect(async).toBeUndefined();
106
- _context3.next = 7;
107
- return maybeSync(function () {
108
- return new Promise(function (resolve) {
109
- setTimeout(function () {
110
- resolve(foo);
111
- }, 100);
112
- });
113
- })(true);
114
- case 7:
115
- sync = _context3.sent;
116
- expect(sync).toBe(foo);
117
- case 9:
118
- case "end":
119
- return _context3.stop();
59
+ }
60
+ return _arr;
61
+ }
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.");
64
+ }
65
+ function _slicedToArray(arr, i) {
66
+ return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
67
+ }
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
+ }
76
+ 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: []
85
+ };
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) {
156
+ op = [
157
+ 6,
158
+ e
159
+ ];
160
+ y = 0;
161
+ } finally{
162
+ f = t = 0;
120
163
  }
121
- }
122
- }, _callee3);
123
- })));
124
- });
164
+ if (op[0] & 5) throw op[1];
165
+ return {
166
+ value: op[0] ? op[1] : void 0,
167
+ done: true
168
+ };
169
+ }
170
+ };
171
+ import url from "url";
172
+ import { createCache, destroyCache } from "../spr";
173
+ import { cacheAddition, connectFactor, fname, maybeSync, namespaceHash, valueFactory, withCoalescedInvoke } from "../util";
174
+ 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");
201
+ });
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>'));
210
+ });
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
+ }));
291
+ });