Added Jest test to verify UMD API-forwarding for scheduling package (#13532)
* Added Jest test to verify UMD API-forwarding for scheduling package * Added separate dev/prod UMD bundles for scheduler package
Brian Vaughn committed
Sep 1, 2018 at 12:52 UTC
bf8aa609257894c73c2546d9f01b76a72d2bb862
6 files changed
+183
-2
fixtures/tracking/index.html
+2
-2
@@ -63,8 +63,8 @@
63
</li>
64
</ol>
65
<!-- Load the tracking API before react to test that it's lazily evaluated -->
66
- <script src="../../build/node_modules/react-scheduler/umd/react-scheduler.js"></script>
67
- <script src="../../build/node_modules/react-scheduler/umd/react-scheduler-tracking.js"></script>
66
+ <script src="../../build/node_modules/react-scheduler/umd/react-scheduler.development.js"></script>
67
+ <script src="../../build/node_modules/react-scheduler/umd/react-scheduler-tracking.development.js"></script>
68
<script src="../../build/node_modules/react/umd/react.development.js"></script>
69
<script src="../../build/node_modules/react-dom/umd/react-dom.development.js"></script>
70
<script src="./script.js"></script>
packages/react-scheduler/npm/umd/react-scheduler-tracking.development.js
renamed
packages/react-scheduler/npm/umd/react-scheduler-tracking.production.min.js
new
+95
@@ -0,0 +1,95 @@
1
+/**
2
+ * @license React
3
+ *
4
+ * Copyright (c) 2013-present, Facebook, Inc.
5
+ *
6
+ * This source code is licensed under the MIT license found in the
7
+ * LICENSE file in the root directory of this source tree.
8
+ */
9
+
10
+'use strict';
11
+
12
+(function(global, factory) {
13
+ typeof exports === 'object' && typeof module !== 'undefined'
14
+ ? (module.exports = factory(require('react')))
15
+ : typeof define === 'function' && define.amd // eslint-disable-line no-undef
16
+ ? define(['react'], factory) // eslint-disable-line no-undef
17
+ : (global.ReactSchedulerTracking = factory(global));
18
+})(this, function(global) {
19
+ function __getInteractionsRef() {
20
+ return global.React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.SchedulerTracking.__getInteractionsRef.apply(
21
+ this,
22
+ arguments
23
+ );
24
+ }
25
+
26
+ function __getSubscriberRef() {
27
+ return global.React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.SchedulerTracking.__getSubscriberRef.apply(
28
+ this,
29
+ arguments
30
+ );
31
+ }
32
+
33
+ function unstable_clear() {
34
+ return global.React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.SchedulerTracking.unstable_clear.apply(
35
+ this,
36
+ arguments
37
+ );
38
+ }
39
+
40
+ function unstable_getCurrent() {
41
+ return global.React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.SchedulerTracking.unstable_getCurrent.apply(
42
+ this,
43
+ arguments
44
+ );
45
+ }
46
+
47
+ function unstable_getThreadID() {
48
+ return global.React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.SchedulerTracking.unstable_getThreadID.apply(
49
+ this,
50
+ arguments
51
+ );
52
+ }
53
+
54
+ function unstable_subscribe() {
55
+ // eslint-disable-next-line max-len
56
+ return global.React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.SchedulerTracking.unstable_subscribe.apply(
57
+ this,
58
+ arguments
59
+ );
60
+ }
61
+
62
+ function unstable_track() {
63
+ return global.React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.SchedulerTracking.unstable_track.apply(
64
+ this,
65
+ arguments
66
+ );
67
+ }
68
+
69
+ function unstable_unsubscribe() {
70
+ // eslint-disable-next-line max-len
71
+ return global.React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.SchedulerTracking.unstable_unsubscribe.apply(
72
+ this,
73
+ arguments
74
+ );
75
+ }
76
+
77
+ function unstable_wrap() {
78
+ return global.React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.SchedulerTracking.unstable_wrap.apply(
79
+ this,
80
+ arguments
81
+ );
82
+ }
83
+
84
+ return Object.freeze({
85
+ __getInteractionsRef: __getInteractionsRef,
86
+ __getSubscriberRef: __getSubscriberRef,
87
+ unstable_clear: unstable_clear,
88
+ unstable_getCurrent: unstable_getCurrent,
89
+ unstable_getThreadID: unstable_getThreadID,
90
+ unstable_subscribe: unstable_subscribe,
91
+ unstable_track: unstable_track,
92
+ unstable_unsubscribe: unstable_unsubscribe,
93
+ unstable_wrap: unstable_wrap,
94
+ });
95
+});
packages/react-scheduler/npm/umd/react-scheduler.development.js
renamed
packages/react-scheduler/npm/umd/react-scheduler.production.min.js
new
+45
@@ -0,0 +1,45 @@
1
+/**
2
+ * @license React
3
+ *
4
+ * Copyright (c) 2013-present, Facebook, Inc.
5
+ *
6
+ * This source code is licensed under the MIT license found in the
7
+ * LICENSE file in the root directory of this source tree.
8
+ */
9
+
10
+'use strict';
11
+
12
+(function(global, factory) {
13
+ typeof exports === 'object' && typeof module !== 'undefined'
14
+ ? (module.exports = factory(require('react')))
15
+ : typeof define === 'function' && define.amd // eslint-disable-line no-undef
16
+ ? define(['react'], factory) // eslint-disable-line no-undef
17
+ : (global.ReactScheduler = factory(global));
18
+})(this, function(global) {
19
+ function unstable_now() {
20
+ return global.React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.Scheduler.unstable_now.apply(
21
+ this,
22
+ arguments
23
+ );
24
+ }
25
+
26
+ function unstable_scheduleWork() {
27
+ return global.React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.Scheduler.unstable_scheduleWork.apply(
28
+ this,
29
+ arguments
30
+ );
31
+ }
32
+
33
+ function unstable_cancelScheduledWork() {
34
+ return global.React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.Scheduler.unstable_cancelScheduledWork.apply(
35
+ this,
36
+ arguments
37
+ );
38
+ }
39
+
40
+ return Object.freeze({
41
+ unstable_now: unstable_now,
42
+ unstable_scheduleWork: unstable_scheduleWork,
43
+ unstable_cancelScheduledWork: unstable_cancelScheduledWork,
44
+ });
45
+});
packages/react-scheduler/src/__tests__/SchedulingUMDBundle-test.internal.js
new
+41
@@ -0,0 +1,41 @@
1
+/**
2
+ * Copyright (c) 2013-present, Facebook, Inc.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ * @jest-environment node
8
+ */
9
+'use strict';
10
+
11
+describe('Scheduling UMD bundle', () => {
12
+ beforeEach(() => {
13
+ // Fool SECRET_INTERNALS object into including UMD forwarding methods.
14
+ global.__UMD__ = true;
15
+
16
+ jest.resetModules();
17
+ });
18
+
19
+ function compareAPIS(apis) {
20
+ apis = apis.map(api => Object.keys(api).sort());
21
+ for (let i = 1; i < apis.length; i++) {
22
+ expect(apis[0]).toEqual(apis[i]);
23
+ }
24
+ }
25
+
26
+ it('should define the same scheduling API', () => {
27
+ const umdAPIDev = require('../../npm/umd/react-scheduler.development');
28
+ const umdAPIProd = require('../../npm/umd/react-scheduler.production.min');
29
+ const cjsAPI = require('../../index');
30
+ const secretAPI = require('react/src/ReactSharedInternals').default;
31
+ compareAPIS([umdAPIDev, umdAPIProd, cjsAPI, secretAPI.Scheduler]);
32
+ });
33
+
34
+ it('should define the same tracking API', () => {
35
+ const umdAPIDev = require('../../npm/umd/react-scheduler-tracking.development');
36
+ const umdAPIProd = require('../../npm/umd/react-scheduler-tracking.production.min');
37
+ const cjsAPI = require('../../tracking');
38
+ const secretAPI = require('react/src/ReactSharedInternals').default;
39
+ compareAPIS([umdAPIDev, umdAPIProd, cjsAPI, secretAPI.SchedulerTracking]);
40
+ });
41
+});