UNPKG

6.14 kBJavaScriptView Raw
1"use strict";
2
3require("core-js/modules/es.object.to-string.js");
4
5require("core-js/modules/es.promise.js");
6
7Object.defineProperty(exports, "__esModule", {
8 value: true
9});
10exports.init = void 0;
11
12require("regenerator-runtime/runtime.js");
13
14require("core-js/modules/es.object.assign.js");
15
16require("core-js/modules/es.array.concat.js");
17
18require("core-js/modules/es.array.includes.js");
19
20require("core-js/modules/es.string.includes.js");
21
22var _global = _interopRequireDefault(require("global"));
23
24var _semver = _interopRequireDefault(require("@storybook/semver"));
25
26var _memoizerific = _interopRequireDefault(require("memoizerific"));
27
28var _version = require("../version");
29
30function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
31
32function 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
34function _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
36var VERSIONCHECK = _global.default.VERSIONCHECK;
37var getVersionCheckData = (0, _memoizerific.default)(1)(function () {
38 try {
39 return Object.assign({}, JSON.parse(VERSIONCHECK).data || {});
40 } catch (e) {
41 return {};
42 }
43});
44
45var 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 }; // Grab versions from the server/local storage right away
105
106 var initModule = /*#__PURE__*/function () {
107 var _ref2 = _asyncToGenerator( /*#__PURE__*/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
171exports.init = init;
\No newline at end of file