1 | import "regenerator-runtime/runtime.js";
|
2 |
|
3 | 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); } }
|
4 |
|
5 | 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); }); }; }
|
6 |
|
7 | import "core-js/modules/es.object.assign.js";
|
8 | import "core-js/modules/es.array.concat.js";
|
9 | import "core-js/modules/es.array.includes.js";
|
10 | import "core-js/modules/es.string.includes.js";
|
11 | import "core-js/modules/es.object.to-string.js";
|
12 | import "core-js/modules/es.promise.js";
|
13 | import global from 'global';
|
14 | import semver from '@storybook/semver';
|
15 | import memoize from 'memoizerific';
|
16 | import { version as currentVersion } from '../version';
|
17 | var VERSIONCHECK = global.VERSIONCHECK;
|
18 | var getVersionCheckData = memoize(1)(function () {
|
19 | try {
|
20 | return Object.assign({}, JSON.parse(VERSIONCHECK).data || {});
|
21 | } catch (e) {
|
22 | return {};
|
23 | }
|
24 | });
|
25 | export var init = function init(_ref) {
|
26 | var store = _ref.store,
|
27 | mode = _ref.mode,
|
28 | fullAPI = _ref.fullAPI;
|
29 |
|
30 | var _store$getState = store.getState(),
|
31 | dismissedVersionNotification = _store$getState.dismissedVersionNotification;
|
32 |
|
33 | var state = {
|
34 | versions: Object.assign({
|
35 | current: {
|
36 | version: currentVersion
|
37 | }
|
38 | }, getVersionCheckData()),
|
39 | dismissedVersionNotification: dismissedVersionNotification
|
40 | };
|
41 | var api = {
|
42 | getCurrentVersion: function getCurrentVersion() {
|
43 | var _store$getState2 = store.getState(),
|
44 | current = _store$getState2.versions.current;
|
45 |
|
46 | return current;
|
47 | },
|
48 | getLatestVersion: function getLatestVersion() {
|
49 | var _store$getState3 = store.getState(),
|
50 | _store$getState3$vers = _store$getState3.versions,
|
51 | latest = _store$getState3$vers.latest,
|
52 | next = _store$getState3$vers.next,
|
53 | current = _store$getState3$vers.current;
|
54 |
|
55 | if (current && semver.prerelease(current.version) && next) {
|
56 | return latest && semver.gt(latest.version, next.version) ? latest : next;
|
57 | }
|
58 |
|
59 | return latest;
|
60 | },
|
61 | versionUpdateAvailable: function versionUpdateAvailable() {
|
62 | var latest = api.getLatestVersion();
|
63 | var current = api.getCurrentVersion();
|
64 |
|
65 | if (latest) {
|
66 | if (!latest.version) {
|
67 | return true;
|
68 | }
|
69 |
|
70 | if (!current.version) {
|
71 | return true;
|
72 | }
|
73 |
|
74 | var onPrerelease = !!semver.prerelease(current.version);
|
75 | var actualCurrent = onPrerelease ? "".concat(semver.major(current.version), ".").concat(semver.minor(current.version), ".").concat(semver.patch(current.version)) : current.version;
|
76 | var diff = semver.diff(actualCurrent, latest.version);
|
77 | return semver.gt(latest.version, actualCurrent) && diff !== 'patch' && !diff.includes('pre');
|
78 | }
|
79 |
|
80 | return false;
|
81 | }
|
82 | };
|
83 |
|
84 | var initModule = function () {
|
85 | var _ref2 = _asyncToGenerator( regeneratorRuntime.mark(function _callee() {
|
86 | var _store$getState4, _store$getState4$vers, versions, _getVersionCheckData, latest, next, latestVersion, diff;
|
87 |
|
88 | return regeneratorRuntime.wrap(function _callee$(_context) {
|
89 | while (1) {
|
90 | switch (_context.prev = _context.next) {
|
91 | case 0:
|
92 | _store$getState4 = store.getState(), _store$getState4$vers = _store$getState4.versions, versions = _store$getState4$vers === void 0 ? {} : _store$getState4$vers;
|
93 | _getVersionCheckData = getVersionCheckData(), latest = _getVersionCheckData.latest, next = _getVersionCheckData.next;
|
94 | _context.next = 4;
|
95 | return store.setState({
|
96 | versions: Object.assign({}, versions, {
|
97 | latest: latest,
|
98 | next: next
|
99 | })
|
100 | });
|
101 |
|
102 | case 4:
|
103 | if (api.versionUpdateAvailable()) {
|
104 | latestVersion = api.getLatestVersion().version;
|
105 | diff = semver.diff(versions.current.version, versions.latest.version);
|
106 |
|
107 | if (latestVersion !== dismissedVersionNotification && diff !== 'patch' && !semver.prerelease(latestVersion) && mode !== 'production') {
|
108 | fullAPI.addNotification({
|
109 | id: 'update',
|
110 | link: '/settings/about',
|
111 | content: {
|
112 | headline: "Storybook ".concat(latestVersion, " is available!"),
|
113 | subHeadline: "Your current version is: ".concat(versions.current.version)
|
114 | },
|
115 | icon: {
|
116 | name: 'book'
|
117 | },
|
118 | onClear: function onClear() {
|
119 | store.setState({
|
120 | dismissedVersionNotification: latestVersion
|
121 | }, {
|
122 | persistence: 'permanent'
|
123 | });
|
124 | }
|
125 | });
|
126 | }
|
127 | }
|
128 |
|
129 | case 5:
|
130 | case "end":
|
131 | return _context.stop();
|
132 | }
|
133 | }
|
134 | }, _callee);
|
135 | }));
|
136 |
|
137 | return function initModule() {
|
138 | return _ref2.apply(this, arguments);
|
139 | };
|
140 | }();
|
141 |
|
142 | return {
|
143 | init: initModule,
|
144 | state: state,
|
145 | api: api
|
146 | };
|
147 | }; |
\ | No newline at end of file |