1 | "use strict";
|
2 |
|
3 | require("core-js/modules/es.object.to-string.js");
|
4 |
|
5 | require("core-js/modules/es.promise.js");
|
6 |
|
7 | Object.defineProperty(exports, "__esModule", {
|
8 | value: true
|
9 | });
|
10 | exports.init = void 0;
|
11 |
|
12 | require("regenerator-runtime/runtime.js");
|
13 |
|
14 | require("core-js/modules/es.object.assign.js");
|
15 |
|
16 | require("core-js/modules/es.array.concat.js");
|
17 |
|
18 | require("core-js/modules/es.array.includes.js");
|
19 |
|
20 | require("core-js/modules/es.string.includes.js");
|
21 |
|
22 | var _global = _interopRequireDefault(require("global"));
|
23 |
|
24 | var _semver = _interopRequireDefault(require("@storybook/semver"));
|
25 |
|
26 | var _memoizerific = _interopRequireDefault(require("memoizerific"));
|
27 |
|
28 | var _version = require("../version");
|
29 |
|
30 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
31 |
|
32 | function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
33 |
|
34 | function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
35 |
|
36 | var VERSIONCHECK = _global.default.VERSIONCHECK;
|
37 | var getVersionCheckData = (0, _memoizerific.default)(1)(function () {
|
38 | try {
|
39 | return Object.assign({}, JSON.parse(VERSIONCHECK).data || {});
|
40 | } catch (e) {
|
41 | return {};
|
42 | }
|
43 | });
|
44 |
|
45 | var init = function init(_ref) {
|
46 | var store = _ref.store,
|
47 | mode = _ref.mode,
|
48 | fullAPI = _ref.fullAPI;
|
49 |
|
50 | var _store$getState = store.getState(),
|
51 | dismissedVersionNotification = _store$getState.dismissedVersionNotification;
|
52 |
|
53 | var state = {
|
54 | versions: Object.assign({
|
55 | current: {
|
56 | version: _version.version
|
57 | }
|
58 | }, getVersionCheckData()),
|
59 | dismissedVersionNotification: dismissedVersionNotification
|
60 | };
|
61 | var api = {
|
62 | getCurrentVersion: function getCurrentVersion() {
|
63 | var _store$getState2 = store.getState(),
|
64 | current = _store$getState2.versions.current;
|
65 |
|
66 | return current;
|
67 | },
|
68 | getLatestVersion: function getLatestVersion() {
|
69 | var _store$getState3 = store.getState(),
|
70 | _store$getState3$vers = _store$getState3.versions,
|
71 | latest = _store$getState3$vers.latest,
|
72 | next = _store$getState3$vers.next,
|
73 | current = _store$getState3$vers.current;
|
74 |
|
75 | if (current && _semver.default.prerelease(current.version) && next) {
|
76 | return latest && _semver.default.gt(latest.version, next.version) ? latest : next;
|
77 | }
|
78 |
|
79 | return latest;
|
80 | },
|
81 | versionUpdateAvailable: function versionUpdateAvailable() {
|
82 | var latest = api.getLatestVersion();
|
83 | var current = api.getCurrentVersion();
|
84 |
|
85 | if (latest) {
|
86 | if (!latest.version) {
|
87 | return true;
|
88 | }
|
89 |
|
90 | if (!current.version) {
|
91 | return true;
|
92 | }
|
93 |
|
94 | var onPrerelease = !!_semver.default.prerelease(current.version);
|
95 | var actualCurrent = onPrerelease ? "".concat(_semver.default.major(current.version), ".").concat(_semver.default.minor(current.version), ".").concat(_semver.default.patch(current.version)) : current.version;
|
96 |
|
97 | var diff = _semver.default.diff(actualCurrent, latest.version);
|
98 |
|
99 | return _semver.default.gt(latest.version, actualCurrent) && diff !== 'patch' && !diff.includes('pre');
|
100 | }
|
101 |
|
102 | return false;
|
103 | }
|
104 | };
|
105 |
|
106 | var initModule = function () {
|
107 | var _ref2 = _asyncToGenerator( regeneratorRuntime.mark(function _callee() {
|
108 | var _store$getState4, _store$getState4$vers, versions, _getVersionCheckData, latest, next, latestVersion, diff;
|
109 |
|
110 | return regeneratorRuntime.wrap(function _callee$(_context) {
|
111 | while (1) {
|
112 | switch (_context.prev = _context.next) {
|
113 | case 0:
|
114 | _store$getState4 = store.getState(), _store$getState4$vers = _store$getState4.versions, versions = _store$getState4$vers === void 0 ? {} : _store$getState4$vers;
|
115 | _getVersionCheckData = getVersionCheckData(), latest = _getVersionCheckData.latest, next = _getVersionCheckData.next;
|
116 | _context.next = 4;
|
117 | return store.setState({
|
118 | versions: Object.assign({}, versions, {
|
119 | latest: latest,
|
120 | next: next
|
121 | })
|
122 | });
|
123 |
|
124 | case 4:
|
125 | if (api.versionUpdateAvailable()) {
|
126 | latestVersion = api.getLatestVersion().version;
|
127 | diff = _semver.default.diff(versions.current.version, versions.latest.version);
|
128 |
|
129 | if (latestVersion !== dismissedVersionNotification && diff !== 'patch' && !_semver.default.prerelease(latestVersion) && mode !== 'production') {
|
130 | fullAPI.addNotification({
|
131 | id: 'update',
|
132 | link: '/settings/about',
|
133 | content: {
|
134 | headline: "Storybook ".concat(latestVersion, " is available!"),
|
135 | subHeadline: "Your current version is: ".concat(versions.current.version)
|
136 | },
|
137 | icon: {
|
138 | name: 'book'
|
139 | },
|
140 | onClear: function onClear() {
|
141 | store.setState({
|
142 | dismissedVersionNotification: latestVersion
|
143 | }, {
|
144 | persistence: 'permanent'
|
145 | });
|
146 | }
|
147 | });
|
148 | }
|
149 | }
|
150 |
|
151 | case 5:
|
152 | case "end":
|
153 | return _context.stop();
|
154 | }
|
155 | }
|
156 | }, _callee);
|
157 | }));
|
158 |
|
159 | return function initModule() {
|
160 | return _ref2.apply(this, arguments);
|
161 | };
|
162 | }();
|
163 |
|
164 | return {
|
165 | init: initModule,
|
166 | state: state,
|
167 | api: api
|
168 | };
|
169 | };
|
170 |
|
171 | exports.init = init; |
\ | No newline at end of file |