UNPKG

31.4 kBJavaScriptView Raw
1'use strict';
2
3var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
4
5var _Requestable2 = require('./Requestable');
6
7var _Requestable3 = _interopRequireDefault(_Requestable2);
8
9function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
11function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
12
13function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
14
15function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
16
17function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /**
18 * @file
19 * @copyright 2013 Michael Aufreiter (Development Seed) and 2016 Yahoo Inc.
20 * @license Licensed under {@link https://spdx.org/licenses/BSD-3-Clause-Clear.html BSD-3-Clause-Clear}.
21 * Github.js is freely distributable.
22 */
23
24/**
25 * Project encapsulates the functionality to create, query, and modify cards and columns.
26 */
27var Project = function (_Requestable) {
28 _inherits(Project, _Requestable);
29
30 /**
31 * Create a Project.
32 * @param {string} id - the id of the project
33 * @param {Requestable.auth} [auth] - information required to authenticate to Github
34 * @param {string} [apiBase=https://api.github.com] - the base Github API URL
35 */
36 function Project(id, auth, apiBase) {
37 _classCallCheck(this, Project);
38
39 var _this = _possibleConstructorReturn(this, (Project.__proto__ || Object.getPrototypeOf(Project)).call(this, auth, apiBase, 'inertia-preview'));
40
41 _this.__id = id;
42 return _this;
43 }
44
45 /**
46 * Get information about a project
47 * @see https://developer.github.com/v3/projects/#get-a-project
48 * @param {Requestable.callback} cb - will receive the project information
49 * @return {Promise} - the promise for the http request
50 */
51
52
53 _createClass(Project, [{
54 key: 'getProject',
55 value: function getProject(cb) {
56 return this._request('GET', '/projects/' + this.__id, null, cb);
57 }
58
59 /**
60 * Edit a project
61 * @see https://developer.github.com/v3/projects/#update-a-project
62 * @param {Object} options - the description of the project
63 * @param {Requestable.callback} cb - will receive the modified project
64 * @return {Promise} - the promise for the http request
65 */
66
67 }, {
68 key: 'updateProject',
69 value: function updateProject(options, cb) {
70 return this._request('PATCH', '/projects/' + this.__id, options, cb);
71 }
72
73 /**
74 * Delete a project
75 * @see https://developer.github.com/v3/projects/#delete-a-project
76 * @param {Requestable.callback} cb - will receive true if the operation is successful
77 * @return {Promise} - the promise for the http request
78 */
79
80 }, {
81 key: 'deleteProject',
82 value: function deleteProject(cb) {
83 return this._request('DELETE', '/projects/' + this.__id, null, cb);
84 }
85
86 /**
87 * Get information about all columns of a project
88 * @see https://developer.github.com/v3/projects/columns/#list-project-columns
89 * @param {Requestable.callback} [cb] - will receive the list of columns
90 * @return {Promise} - the promise for the http request
91 */
92
93 }, {
94 key: 'listProjectColumns',
95 value: function listProjectColumns(cb) {
96 return this._requestAllPages('/projects/' + this.__id + '/columns', null, cb);
97 }
98
99 /**
100 * Get information about a column
101 * @see https://developer.github.com/v3/projects/columns/#get-a-project-column
102 * @param {string} colId - the id of the column
103 * @param {Requestable.callback} cb - will receive the column information
104 * @return {Promise} - the promise for the http request
105 */
106
107 }, {
108 key: 'getProjectColumn',
109 value: function getProjectColumn(colId, cb) {
110 return this._request('GET', '/projects/columns/' + colId, null, cb);
111 }
112
113 /**
114 * Create a new column
115 * @see https://developer.github.com/v3/projects/columns/#create-a-project-column
116 * @param {Object} options - the description of the column
117 * @param {Requestable.callback} cb - will receive the newly created column
118 * @return {Promise} - the promise for the http request
119 */
120
121 }, {
122 key: 'createProjectColumn',
123 value: function createProjectColumn(options, cb) {
124 return this._request('POST', '/projects/' + this.__id + '/columns', options, cb);
125 }
126
127 /**
128 * Edit a column
129 * @see https://developer.github.com/v3/projects/columns/#update-a-project-column
130 * @param {string} colId - the column id
131 * @param {Object} options - the description of the column
132 * @param {Requestable.callback} cb - will receive the modified column
133 * @return {Promise} - the promise for the http request
134 */
135
136 }, {
137 key: 'updateProjectColumn',
138 value: function updateProjectColumn(colId, options, cb) {
139 return this._request('PATCH', '/projects/columns/' + colId, options, cb);
140 }
141
142 /**
143 * Delete a column
144 * @see https://developer.github.com/v3/projects/columns/#delete-a-project-column
145 * @param {string} colId - the column to be deleted
146 * @param {Requestable.callback} cb - will receive true if the operation is successful
147 * @return {Promise} - the promise for the http request
148 */
149
150 }, {
151 key: 'deleteProjectColumn',
152 value: function deleteProjectColumn(colId, cb) {
153 return this._request('DELETE', '/projects/columns/' + colId, null, cb);
154 }
155
156 /**
157 * Move a column
158 * @see https://developer.github.com/v3/projects/columns/#move-a-project-column
159 * @param {string} colId - the column to be moved
160 * @param {string} position - can be one of first, last, or after:<column-id>,
161 * where <column-id> is the id value of a column in the same project.
162 * @param {Requestable.callback} cb - will receive true if the operation is successful
163 * @return {Promise} - the promise for the http request
164 */
165
166 }, {
167 key: 'moveProjectColumn',
168 value: function moveProjectColumn(colId, position, cb) {
169 return this._request('POST', '/projects/columns/' + colId + '/moves', { position: position }, cb);
170 }
171
172 /**
173 * Get information about all cards of a project
174 * @see https://developer.github.com/v3/projects/cards/#list-project-cards
175 * @param {Requestable.callback} [cb] - will receive the list of cards
176 * @return {Promise} - the promise for the http request
177 */
178
179 }, {
180 key: 'listProjectCards',
181 value: function listProjectCards(cb) {
182 var _this2 = this;
183
184 return this.listProjectColumns().then(function (_ref) {
185 var data = _ref.data;
186
187 return Promise.all(data.map(function (column) {
188 return _this2._requestAllPages('/projects/columns/' + column.id + '/cards', null);
189 }));
190 }).then(function (cardsInColumns) {
191 var cards = cardsInColumns.reduce(function (prev, _ref2) {
192 var data = _ref2.data;
193
194 prev.push.apply(prev, _toConsumableArray(data));
195 return prev;
196 }, []);
197 if (cb) {
198 cb(null, cards);
199 }
200 return cards;
201 }).catch(function (err) {
202 if (cb) {
203 cb(err);
204 return;
205 }
206 throw err;
207 });
208 }
209
210 /**
211 * Get information about all cards of a column
212 * @see https://developer.github.com/v3/projects/cards/#list-project-cards
213 * @param {string} colId - the id of the column
214 * @param {Requestable.callback} [cb] - will receive the list of cards
215 * @return {Promise} - the promise for the http request
216 */
217
218 }, {
219 key: 'listColumnCards',
220 value: function listColumnCards(colId, cb) {
221 return this._requestAllPages('/projects/columns/' + colId + '/cards', null, cb);
222 }
223
224 /**
225 * Get information about a card
226 * @see https://developer.github.com/v3/projects/cards/#get-a-project-card
227 * @param {string} cardId - the id of the card
228 * @param {Requestable.callback} cb - will receive the card information
229 * @return {Promise} - the promise for the http request
230 */
231
232 }, {
233 key: 'getProjectCard',
234 value: function getProjectCard(cardId, cb) {
235 return this._request('GET', '/projects/columns/cards/' + cardId, null, cb);
236 }
237
238 /**
239 * Create a new card
240 * @see https://developer.github.com/v3/projects/cards/#create-a-project-card
241 * @param {string} colId - the column id
242 * @param {Object} options - the description of the card
243 * @param {Requestable.callback} cb - will receive the newly created card
244 * @return {Promise} - the promise for the http request
245 */
246
247 }, {
248 key: 'createProjectCard',
249 value: function createProjectCard(colId, options, cb) {
250 return this._request('POST', '/projects/columns/' + colId + '/cards', options, cb);
251 }
252
253 /**
254 * Edit a card
255 * @see https://developer.github.com/v3/projects/cards/#update-a-project-card
256 * @param {string} cardId - the card id
257 * @param {Object} options - the description of the card
258 * @param {Requestable.callback} cb - will receive the modified card
259 * @return {Promise} - the promise for the http request
260 */
261
262 }, {
263 key: 'updateProjectCard',
264 value: function updateProjectCard(cardId, options, cb) {
265 return this._request('PATCH', '/projects/columns/cards/' + cardId, options, cb);
266 }
267
268 /**
269 * Delete a card
270 * @see https://developer.github.com/v3/projects/cards/#delete-a-project-card
271 * @param {string} cardId - the card to be deleted
272 * @param {Requestable.callback} cb - will receive true if the operation is successful
273 * @return {Promise} - the promise for the http request
274 */
275
276 }, {
277 key: 'deleteProjectCard',
278 value: function deleteProjectCard(cardId, cb) {
279 return this._request('DELETE', '/projects/columns/cards/' + cardId, null, cb);
280 }
281
282 /**
283 * Move a card
284 * @see https://developer.github.com/v3/projects/cards/#move-a-project-card
285 * @param {string} cardId - the card to be moved
286 * @param {string} position - can be one of top, bottom, or after:<card-id>,
287 * where <card-id> is the id value of a card in the same project.
288 * @param {string} colId - the id value of a column in the same project.
289 * @param {Requestable.callback} cb - will receive true if the operation is successful
290 * @return {Promise} - the promise for the http request
291 */
292
293 }, {
294 key: 'moveProjectCard',
295 value: function moveProjectCard(cardId, position, colId, cb) {
296 return this._request('POST', '/projects/columns/cards/' + cardId + '/moves', { position: position, column_id: colId }, // eslint-disable-line camelcase
297 cb);
298 }
299 }]);
300
301 return Project;
302}(_Requestable3.default);
303
304module.exports = Project;
305//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlByb2plY3QuanMiXSwibmFtZXMiOlsiUHJvamVjdCIsImlkIiwiYXV0aCIsImFwaUJhc2UiLCJfX2lkIiwiY2IiLCJfcmVxdWVzdCIsIm9wdGlvbnMiLCJfcmVxdWVzdEFsbFBhZ2VzIiwiY29sSWQiLCJwb3NpdGlvbiIsImxpc3RQcm9qZWN0Q29sdW1ucyIsInRoZW4iLCJkYXRhIiwiUHJvbWlzZSIsImFsbCIsIm1hcCIsImNvbHVtbiIsImNhcmRzSW5Db2x1bW5zIiwiY2FyZHMiLCJyZWR1Y2UiLCJwcmV2IiwicHVzaCIsImNhdGNoIiwiZXJyIiwiY2FyZElkIiwiY29sdW1uX2lkIiwiUmVxdWVzdGFibGUiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiOzs7O0FBT0E7Ozs7Ozs7Ozs7OzsrZUFQQTs7Ozs7OztBQVNBOzs7SUFHTUEsTzs7O0FBQ0g7Ozs7OztBQU1BLG9CQUFZQyxFQUFaLEVBQWdCQyxJQUFoQixFQUFzQkMsT0FBdEIsRUFBK0I7QUFBQTs7QUFBQSxvSEFDdEJELElBRHNCLEVBQ2hCQyxPQURnQixFQUNQLGlCQURPOztBQUU1QixZQUFLQyxJQUFMLEdBQVlILEVBQVo7QUFGNEI7QUFHOUI7O0FBRUQ7Ozs7Ozs7Ozs7aUNBTVdJLEUsRUFBSTtBQUNaLGdCQUFPLEtBQUtDLFFBQUwsQ0FBYyxLQUFkLGlCQUFrQyxLQUFLRixJQUF2QyxFQUErQyxJQUEvQyxFQUFxREMsRUFBckQsQ0FBUDtBQUNGOztBQUVEOzs7Ozs7Ozs7O29DQU9jRSxPLEVBQVNGLEUsRUFBSTtBQUN4QixnQkFBTyxLQUFLQyxRQUFMLENBQWMsT0FBZCxpQkFBb0MsS0FBS0YsSUFBekMsRUFBaURHLE9BQWpELEVBQTBERixFQUExRCxDQUFQO0FBQ0Y7O0FBRUQ7Ozs7Ozs7OztvQ0FNY0EsRSxFQUFJO0FBQ2YsZ0JBQU8sS0FBS0MsUUFBTCxDQUFjLFFBQWQsaUJBQXFDLEtBQUtGLElBQTFDLEVBQWtELElBQWxELEVBQXdEQyxFQUF4RCxDQUFQO0FBQ0Y7O0FB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LEVBQVNGLEUsRUFBSTtBQUNwQyxnQkFBTyxLQUFLQyxRQUFMLENBQWMsT0FBZCwrQkFBa0RtQixNQUFsRCxFQUE0RGxCLE9BQTVELEVBQXFFRixFQUFyRSxDQUFQO0FBQ0Y7O0FBRUQ7Ozs7Ozs7Ozs7d0NBT2tCb0IsTSxFQUFRcEIsRSxFQUFJO0FBQzNCLGdCQUFPLEtBQUtDLFFBQUwsQ0FBYyxRQUFkLCtCQUFtRG1CLE1BQW5ELEVBQTZELElBQTdELEVBQW1FcEIsRUFBbkUsQ0FBUDtBQUNGOztBQUVEOzs7Ozs7Ozs7Ozs7O3NDQVVnQm9CLE0sRUFBUWYsUSxFQUFVRCxLLEVBQU9KLEUsRUFBSTtBQUMxQyxnQkFBTyxLQUFLQyxRQUFMLENBQ0osTUFESSwrQkFFdUJtQixNQUZ2QixhQUdKLEVBQUNmLFVBQVVBLFFBQVgsRUFBcUJnQixXQUFXakIsS0FBaEMsRUFISSxFQUdvQztBQUN4Q0osV0FKSSxDQUFQO0FBTUY7Ozs7RUE1TmtCc0IscUI7O0FBK050QkMsT0FBT0MsT0FBUCxHQUFpQjdCLE9BQWpCIiwiZmlsZSI6IlByb2plY3QuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKiBAY29weXJpZ2h0ICAyMDEzIE1pY2hhZWwgQXVmcmVpdGVyIChEZXZlbG9wbWVudCBTZWVkKSBhbmQgMjAxNiBZYWhvbyBJbmMuXG4gKiBAbGljZW5zZSAgICBMaWNlbnNlZCB1bmRlciB7QGxpbmsgaHR0cHM6Ly9zcGR4Lm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2UtQ2xlYXIuaHRtbCBCU0QtMy1DbGF1c2UtQ2xlYXJ9LlxuICogICAgICAgICAgICAgR2l0aHViLmpzIGlzIGZyZWVseSBkaXN0cmlidXRhYmxlLlxuICovXG5cbmltcG9ydCBSZXF1ZXN0YWJsZSBmcm9tICcuL1JlcXVlc3RhYmxlJztcblxuLyoqXG4gKiBQcm9qZWN0IGVuY2Fwc3VsYXRlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjcmVhdGUsIHF1ZXJ5LCBhbmQgbW9kaWZ5IGNhcmRzIGFuZCBjb2x1bW5zLlxuICovXG5jbGFzcyBQcm9qZWN0IGV4dGVuZHMgUmVxdWVzdGFibGUge1xuICAgLyoqXG4gICAgKiBDcmVhdGUgYSBQcm9qZWN0LlxuICAgICogQHBhcmFtIHtzdHJpbmd9IGlkIC0gdGhlIGlkIG9mIHRoZSBwcm9qZWN0XG4gICAgKiBAcGFyYW0ge1JlcXVlc3RhYmxlLmF1dGh9IFthdXRoXSAtIGluZm9ybWF0aW9uIHJlcXVpcmVkIHRvIGF1dGhlbnRpY2F0ZSB0byBHaXRodWJcbiAgICAqIEBwYXJhbSB7c3RyaW5nfSBbYXBpQmFzZT1odHRwczovL2FwaS5naXRodWIuY29tXSAtIHRoZSBiYXNlIEdpdGh1YiBBUEkgVVJMXG4gICAgKi9cbiAgIGNvbnN0cnVjdG9yKGlkLCBhdXRoLCBhcGlCYXNlKSB7XG4gICAgICBzdXBlcihhdXRoLCBhcGlCYXNlLCAnaW5lcnRpYS1wcmV2aWV3Jyk7XG4gICAgICB0aGlzLl9faWQgPSBpZDtcbiAgIH1cblxuICAgLyoqXG4gICAgKiBHZXQgaW5mb3JtYXRpb24gYWJvdXQgYSBwcm9qZWN0XG4gICAgKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLmdpdGh1Yi5jb20vdjMvcHJvamVjdHMvI2dldC1hLXByb2plY3RcbiAgICAqIEBwYXJhbSB7UmVxdWVzdGFibGUuY2FsbGJhY2t9IGNiIC0gd2lsbCByZWNlaXZlIHRoZSBwcm9qZWN0IGluZm9ybWF0aW9uXG4gICAgKiBAcmV0dXJuIHtQcm9taXNlfSAtIHRoZSBwcm9taXNlIGZvciB0aGUgaHR0cCByZXF1ZXN0XG4gICAgKi9cbiAgIGdldFByb2plY3QoY2IpIHtcbiAgICAgIHJldHVybiB0aGlzLl9yZXF1ZXN0KCdHRVQnLCBgL3Byb2plY3RzLyR7dGhpcy5fX2lkfWAsIG51bGwsIGNiKTtcbiAgIH1cblxuICAgLyoqXG4gICAgKiBFZGl0IGEgcHJvamVjdFxuICAgICogQHNlZSBodHRwczovL2RldmVsb3Blci5naXRodWIuY29tL3YzL3Byb2plY3RzLyN1cGRhdGUtYS1wcm9qZWN0XG4gICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyAtIHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgcHJvamVjdFxuICAgICogQHBhcmFtIHtSZXF1ZXN0YWJsZS5jYWxsYmFja30gY2IgLSB3aWxsIHJlY2VpdmUgdGhlIG1vZGlmaWVkIHByb2plY3RcbiAgICAqIEByZXR1cm4ge1Byb21pc2V9IC0gdGhlIHByb21pc2UgZm9yIHRoZSBodHRwIHJlcXVlc3RcbiAgICAqL1xuICAgdXBkYXRlUHJvamVjdChvcHRpb25zLCBjYikge1xuICAgICAgcmV0dXJuIHRoaXMuX3JlcXVlc3QoJ1BBVENIJywgYC9wcm9qZWN0cy8ke3RoaXMuX19pZH1gLCBvcHRpb25zLCBjYik7XG4gICB9XG5cbiAgIC8qKlxuICAgICogRGVsZXRlIGEgcHJvamVjdFxuICAgICogQHNlZSBodHRwczovL2RldmVsb3Blci5naXRodWIuY29tL3YzL3Byb2plY3RzLyNkZWxldGUtYS1wcm9qZWN0XG4gICAgKiBAcGFyYW0ge1JlcXVlc3RhYmxlLmNhbGxiYWNrfSBjYiAtIHdpbGwgcmVjZWl2ZSB0cnVlIGlmIHRoZSBvcGVyYXRpb24gaXMgc3VjY2Vzc2Z1bFxuICAgICogQHJldHVybiB7UHJvbWlzZX0gLSB0aGUgcHJvbWlzZSBmb3IgdGhlIGh0dHAgcmVxdWVzdFxuICAgICovXG4gICBkZWxldGVQcm9qZWN0KGNiKSB7XG4gICAgICByZXR1cm4gdGhpcy5fcmVxdWVzdCgnREVMRVRFJywgYC9wcm9qZWN0cy8ke3RoaXMuX19pZH1gLCBudWxsLCBjYik7XG4gICB9XG5cbiAgIC8qKlxuICAgICogR2V0IGluZm9ybWF0aW9uIGFib3V0IGFsbCBjb2x1bW5zIG9mIGEgcHJvamVjdFxuICAgICogQHNlZSBodHRwczovL2RldmVsb3Blci5naXRodWIuY29tL3YzL3Byb2plY3RzL2NvbHVtbnMvI2xpc3QtcHJvamVjdC1jb2x1bW5zXG4gICAgKiBAcGFyYW0ge1JlcXVlc3RhYmxlLmNhbGxiYWNrfSBbY2JdIC0gd2lsbCByZWNlaXZlIHRoZSBsaXN0IG9mIGNvbHVtbnNcbiAgICAqIEByZXR1cm4ge1Byb21pc2V9IC0gdGhlIHByb21pc2UgZm9yIHRoZSBodHRwIHJlcXVlc3RcbiAgICAqL1xuICAgbGlzdFByb2plY3RDb2x1bW5zKGNiKSB7XG4gICAgICByZXR1cm4gdGhpcy5fcmVxdWVzdEFsbFBhZ2VzKGAvcHJvamVjdHMvJHt0aGlzLl9faWR9L2NvbHVtbnNgLCBudWxsLCBjYik7XG4gICB9XG5cbiAgIC8qKlxuICAgICogR2V0IGluZm9ybWF0aW9uIGFib3V0IGEgY29sdW1uXG4gICAgKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLmdpdGh1Yi5jb20vdjMvcHJvamVjdHMvY29sdW1ucy8jZ2V0LWEtcHJvamVjdC1jb2x1bW5cbiAgICAqIEBwYXJhbSB7c3RyaW5nfSBjb2xJZCAtIHRoZSBpZCBvZiB0aGUgY29sdW1uXG4gICAgKiBAcGFyYW0ge1JlcXVlc3RhYmxlLmNhbGxiYWNrfSBjYiAtIHdpbGwgcmVjZWl2ZSB0aGUgY29sdW1uIGluZm9ybWF0aW9uXG4gICAgKiBAcmV0dXJuIHtQcm9taXNlfSAtIHRoZSBwcm9taXNlIGZvciB0aGUgaHR0cCByZXF1ZXN0XG4gICAgKi9cbiAgIGdldFByb2plY3RDb2x1bW4oY29sSWQsIGNiKSB7XG4gICAgICByZXR1cm4gdGhpcy5fcmVxdWVzdCgnR0VUJywgYC9wcm9qZWN0cy9jb2x1bW5zLyR7Y29sSWR9YCwgbnVsbCwgY2IpO1xuICAgfVxuXG4gICAvKipcbiAgICAqIENyZWF0ZSBhIG5ldyBjb2x1bW5cbiAgICAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIuZ2l0aHViLmNvbS92My9wcm9qZWN0cy9jb2x1bW5zLyNjcmVhdGUtYS1wcm9qZWN0LWNvbHVtblxuICAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSB0aGUgZGVzY3JpcHRpb24gb2YgdGhlIGNvbHVtblxuICAgICogQHBhcmFtIHtSZXF1ZXN0YWJsZS5jYWxsYmFja30gY2IgLSB3aWxsIHJlY2VpdmUgdGhlIG5ld2x5IGNyZWF0ZWQgY29sdW1uXG4gICAgKiBAcmV0dXJuIHtQcm9taXNlfSAtIHRoZSBwcm9taXNlIGZvciB0aGUgaHR0cCByZXF1ZXN0XG4gICAgKi9cbiAgIGNyZWF0ZVByb2plY3RDb2x1bW4ob3B0aW9ucywgY2IpIHtcbiAgICAgIHJldHVybiB0aGlzLl9yZXF1ZXN0KCdQT1NUJywgYC9wcm9qZWN0cy8ke3RoaXMuX19pZH0vY29sdW1uc2AsIG9wdGlvbnMsIGNiKTtcbiAgIH1cblxuICAgLyoqXG4gICAgKiBFZGl0IGEgY29sdW1uXG4gICAgKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLmdpdGh1Yi5jb20vdjMvcHJvamVjdHMvY29sdW1ucy8jdXBkYXRlLWEtcHJvamVjdC1jb2x1bW5cbiAgICAqIEBwYXJhbSB7c3RyaW5nfSBjb2xJZCAtIHRoZSBjb2x1bW4gaWRcbiAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIC0gdGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBjb2x1bW5cbiAgICAqIEBwYXJhbSB7UmVxdWVzdGFibGUuY2FsbGJhY2t9IGNiIC0gd2lsbCByZWNlaXZlIHRoZSBtb2RpZmllZCBjb2x1bW5cbiAgICAqIEByZXR1cm4ge1Byb21pc2V9IC0gdGhlIHByb21pc2UgZm9yIHRoZSBodHRwIHJlcXVlc3RcbiAgICAqL1xuICAgdXBkYXRlUHJvamVjdENvbHVtbihjb2xJZCwgb3B0aW9ucywgY2IpIHtcbiAgICAgIHJldHVybiB0aGlzLl9yZXF1ZXN0KCdQQVRDSCcsIGAvcHJvamVjdHMvY29sdW1ucy8ke2NvbElkfWAsIG9wdGlvbnMsIGNiKTtcbiAgIH1cblxuICAgLyoqXG4gICAgKiBEZWxldGUgYSBjb2x1bW5cbiAgICAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIuZ2l0aHViLmNvbS92My9wcm9qZWN0cy9jb2x1bW5zLyNkZWxldGUtYS1wcm9qZWN0LWNvbHVtblxuICAgICogQHBhcmFtIHtzdHJpbmd9IGNvbElkIC0gdGhlIGNvbHVtbiB0byBiZSBkZWxldGVkXG4gICAgKiBAcGFyYW0ge1JlcXVlc3RhYmxlLmNhbGxiYWNrfSBjYiAtIHdpbGwgcmVjZWl2ZSB0cnVlIGlmIHRoZSBvcGVyYXRpb24gaXMgc3VjY2Vzc2Z1bFxuICAgICogQHJldHVybiB7UHJvbWlzZX0gLSB0aGUgcHJvbWlzZSBmb3IgdGhlIGh0dHAgcmVxdWVzdFxuICAgICovXG4gICBkZWxldGVQcm9qZWN0Q29sdW1uKGNvbElkLCBjYikge1xuICAgICAgcmV0dXJuIHRoaXMuX3JlcXVlc3QoJ0RFTEVURScsIGAvcHJvamVjdHMvY29sdW1ucy8ke2NvbElkfWAsIG51bGwsIGNiKTtcbiAgIH1cblxuICAgLyoqXG4gICAgKiBNb3ZlIGEgY29sdW1uXG4gICAgKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLmdpdGh1Yi5jb20vdjMvcHJvamVjdHMvY29sdW1ucy8jbW92ZS1hLXByb2plY3QtY29sdW1uXG4gICAgKiBAcGFyYW0ge3N0cmluZ30gY29sSWQgLSB0aGUgY29sdW1uIHRvIGJlIG1vdmVkXG4gICAgKiBAcGFyYW0ge3N0cmluZ30gcG9zaXRpb24gLSBjYW4gYmUgb25lIG9mIGZpcnN0LCBsYXN0LCBvciBhZnRlcjo8Y29sdW1uLWlkPixcbiAgICAqIHdoZXJlIDxjb2x1bW4taWQ+IGlzIHRoZSBpZCB2YWx1ZSBvZiBhIGNvbHVtbiBpbiB0aGUgc2FtZSBwcm9qZWN0LlxuICAgICogQHBhcmFtIHtSZXF1ZXN0YWJsZS5jYWxsYmFja30gY2IgLSB3aWxsIHJlY2VpdmUgdHJ1ZSBpZiB0aGUgb3BlcmF0aW9uIGlzIHN1Y2Nlc3NmdWxcbiAgICAqIEByZXR1cm4ge1Byb21pc2V9IC0gdGhlIHByb21pc2UgZm9yIHRoZSBodHRwIHJlcXVlc3RcbiAgICAqL1xuICAgbW92ZVByb2plY3RDb2x1bW4oY29sSWQsIHBvc2l0aW9uLCBjYikge1xuICAgICAgcmV0dXJuIHRoaXMuX3JlcXVlc3QoXG4gICAgICAgICAnUE9TVCcsXG4gICAgICAgICBgL3Byb2plY3RzL2NvbHVtbnMvJHtjb2xJZH0vbW92ZXNgLFxuICAgICAgICAge3Bvc2l0aW9uOiBwb3NpdGlvbn0sXG4gICAgICAgICBjYlxuICAgICAgKTtcbiAgIH1cblxuICAvKipcbiAgICogR2V0IGluZm9ybWF0aW9uIGFib3V0IGFsbCBjYXJkcyBvZiBhIHByb2plY3RcbiAgICogQHNlZSBodHRwczovL2RldmVsb3Blci5naXRodWIuY29tL3YzL3Byb2plY3RzL2NhcmRzLyNsaXN0LXByb2plY3QtY2FyZHNcbiAgICogQHBhcmFtIHtSZXF1ZXN0YWJsZS5jYWxsYmFja30gW2NiXSAtIHdpbGwgcmVjZWl2ZSB0aGUgbGlzdCBvZiBjYXJkc1xuICAgKiBAcmV0dXJuIHtQcm9taXNlfSAtIHRoZSBwcm9taXNlIGZvciB0aGUgaHR0cCByZXF1ZXN0XG4gICAqL1xuICAgbGlzdFByb2plY3RDYXJkcyhjYikge1xuICAgICAgcmV0dXJuIHRoaXMubGlzdFByb2plY3RDb2x1bW5zKClcbiAgICAgICAgLnRoZW4oKHtkYXRhfSkgPT4ge1xuICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoZGF0YS5tYXAoKGNvbHVtbikgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fcmVxdWVzdEFsbFBhZ2VzKGAvcHJvamVjdHMvY29sdW1ucy8ke2NvbHVtbi5pZH0vY2FyZHNgLCBudWxsKTtcbiAgICAgICAgICAgfSkpO1xuICAgICAgICB9KS50aGVuKChjYXJkc0luQ29sdW1ucykgPT4ge1xuICAgICAgICAgICBjb25zdCBjYXJkcyA9IGNhcmRzSW5Db2x1bW5zLnJlZHVjZSgocHJldiwge2RhdGF9KSA9PiB7XG4gICAgICAgICAgICAgIHByZXYucHVzaCguLi5kYXRhKTtcbiAgICAgICAgICAgICAgcmV0dXJuIHByZXY7XG4gICAgICAgICAgIH0sIFtdKTtcbiAgICAgICAgICAgaWYgKGNiKSB7XG4gICAgICAgICAgICAgIGNiKG51bGwsIGNhcmRzKTtcbiAgICAgICAgICAgfVxuICAgICAgICAgICByZXR1cm4gY2FyZHM7XG4gICAgICAgIH0pLmNhdGNoKChlcnIpID0+IHtcbiAgICAgICAgICAgaWYgKGNiKSB7XG4gICAgICAgICAgICAgIGNiKGVycik7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgfVxuICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH0pO1xuICAgfVxuXG4gICAvKipcbiAgICogR2V0IGluZm9ybWF0aW9uIGFib3V0IGFsbCBjYXJkcyBvZiBhIGNvbHVtblxuICAgKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLmdpdGh1Yi5jb20vdjMvcHJvamVjdHMvY2FyZHMvI2xpc3QtcHJvamVjdC1jYXJkc1xuICAgKiBAcGFyYW0ge3N0cmluZ30gY29sSWQgLSB0aGUgaWQgb2YgdGhlIGNvbHVtblxuICAgKiBAcGFyYW0ge1JlcXVlc3RhYmxlLmNhbGxiYWNrfSBbY2JdIC0gd2lsbCByZWNlaXZlIHRoZSBsaXN0IG9mIGNhcmRzXG4gICAqIEByZXR1cm4ge1Byb21pc2V9IC0gdGhlIHByb21pc2UgZm9yIHRoZSBodHRwIHJlcXVlc3RcbiAgICovXG4gICBsaXN0Q29sdW1uQ2FyZHMoY29sSWQsIGNiKSB7XG4gICAgICByZXR1cm4gdGhpcy5fcmVxdWVzdEFsbFBhZ2VzKGAvcHJvamVjdHMvY29sdW1ucy8ke2NvbElkfS9jYXJkc2AsIG51bGwsIGNiKTtcbiAgIH1cblxuICAgLyoqXG4gICAqIEdldCBpbmZvcm1hdGlvbiBhYm91dCBhIGNhcmRcbiAgICogQHNlZSBodHRwczovL2RldmVsb3Blci5naXRodWIuY29tL3YzL3Byb2plY3RzL2NhcmRzLyNnZXQtYS1wcm9qZWN0LWNhcmRcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNhcmRJZCAtIHRoZSBpZCBvZiB0aGUgY2FyZFxuICAgKiBAcGFyYW0ge1JlcXVlc3RhYmxlLmNhbGxiYWNrfSBjYiAtIHdpbGwgcmVjZWl2ZSB0aGUgY2FyZCBpbmZvcm1hdGlvblxuICAgKiBAcmV0dXJuIHtQcm9taXNlfSAtIHRoZSBwcm9taXNlIGZvciB0aGUgaHR0cCByZXF1ZXN0XG4gICAqL1xuICAgZ2V0UHJvamVjdENhcmQoY2FyZElkLCBjYikge1xuICAgICAgcmV0dXJuIHRoaXMuX3JlcXVlc3QoJ0dFVCcsIGAvcHJvamVjdHMvY29sdW1ucy9jYXJkcy8ke2NhcmRJZH1gLCBudWxsLCBjYik7XG4gICB9XG5cbiAgIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgY2FyZFxuICAgKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLmdpdGh1Yi5jb20vdjMvcHJvamVjdHMvY2FyZHMvI2NyZWF0ZS1hLXByb2plY3QtY2FyZFxuICAgKiBAcGFyYW0ge3N0cmluZ30gY29sSWQgLSB0aGUgY29sdW1uIGlkXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIC0gdGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBjYXJkXG4gICAqIEBwYXJhbSB7UmVxdWVzdGFibGUuY2FsbGJhY2t9IGNiIC0gd2lsbCByZWNlaXZlIHRoZSBuZXdseSBjcmVhdGVkIGNhcmRcbiAgICogQHJldHVybiB7UHJvbWlzZX0gLSB0aGUgcHJvbWlzZSBmb3IgdGhlIGh0dHAgcmVxdWVzdFxuICAgKi9cbiAgIGNyZWF0ZVByb2plY3RDYXJkKGNvbElkLCBvcHRpb25zLCBjYikge1xuICAgICAgcmV0dXJuIHRoaXMuX3JlcXVlc3QoJ1BPU1QnLCBgL3Byb2plY3RzL2NvbHVtbnMvJHtjb2xJZH0vY2FyZHNgLCBvcHRpb25zLCBjYik7XG4gICB9XG5cbiAgIC8qKlxuICAgKiBFZGl0IGEgY2FyZFxuICAgKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLmdpdGh1Yi5jb20vdjMvcHJvamVjdHMvY2FyZHMvI3VwZGF0ZS1hLXByb2plY3QtY2FyZFxuICAgKiBAcGFyYW0ge3N0cmluZ30gY2FyZElkIC0gdGhlIGNhcmQgaWRcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSB0aGUgZGVzY3JpcHRpb24gb2YgdGhlIGNhcmRcbiAgICogQHBhcmFtIHtSZXF1ZXN0YWJsZS5jYWxsYmFja30gY2IgLSB3aWxsIHJlY2VpdmUgdGhlIG1vZGlmaWVkIGNhcmRcbiAgICogQHJldHVybiB7UHJvbWlzZX0gLSB0aGUgcHJvbWlzZSBmb3IgdGhlIGh0dHAgcmVxdWVzdFxuICAgKi9cbiAgIHVwZGF0ZVByb2plY3RDYXJkKGNhcmRJZCwgb3B0aW9ucywgY2IpIHtcbiAgICAgIHJldHVybiB0aGlzLl9yZXF1ZXN0KCdQQVRDSCcsIGAvcHJvamVjdHMvY29sdW1ucy9jYXJkcy8ke2NhcmRJZH1gLCBvcHRpb25zLCBjYik7XG4gICB9XG5cbiAgIC8qKlxuICAgKiBEZWxldGUgYSBjYXJkXG4gICAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIuZ2l0aHViLmNvbS92My9wcm9qZWN0cy9jYXJkcy8jZGVsZXRlLWEtcHJvamVjdC1jYXJkXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjYXJkSWQgLSB0aGUgY2FyZCB0byBiZSBkZWxldGVkXG4gICAqIEBwYXJhbSB7UmVxdWVzdGFibGUuY2FsbGJhY2t9IGNiIC0gd2lsbCByZWNlaXZlIHRydWUgaWYgdGhlIG9wZXJhdGlvbiBpcyBzdWNjZXNzZnVsXG4gICAqIEByZXR1cm4ge1Byb21pc2V9IC0gdGhlIHByb21pc2UgZm9yIHRoZSBodHRwIHJlcXVlc3RcbiAgICovXG4gICBkZWxldGVQcm9qZWN0Q2FyZChjYXJkSWQsIGNiKSB7XG4gICAgICByZXR1cm4gdGhpcy5fcmVxdWVzdCgnREVMRVRFJywgYC9wcm9qZWN0cy9jb2x1bW5zL2NhcmRzLyR7Y2FyZElkfWAsIG51bGwsIGNiKTtcbiAgIH1cblxuICAgLyoqXG4gICAqIE1vdmUgYSBjYXJkXG4gICAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIuZ2l0aHViLmNvbS92My9wcm9qZWN0cy9jYXJkcy8jbW92ZS1hLXByb2plY3QtY2FyZFxuICAgKiBAcGFyYW0ge3N0cmluZ30gY2FyZElkIC0gdGhlIGNhcmQgdG8gYmUgbW92ZWRcbiAgICogQHBhcmFtIHtzdHJpbmd9IHBvc2l0aW9uIC0gY2FuIGJlIG9uZSBvZiB0b3AsIGJvdHRvbSwgb3IgYWZ0ZXI6PGNhcmQtaWQ+LFxuICAgKiB3aGVyZSA8Y2FyZC1pZD4gaXMgdGhlIGlkIHZhbHVlIG9mIGEgY2FyZCBpbiB0aGUgc2FtZSBwcm9qZWN0LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gY29sSWQgLSB0aGUgaWQgdmFsdWUgb2YgYSBjb2x1bW4gaW4gdGhlIHNhbWUgcHJvamVjdC5cbiAgICogQHBhcmFtIHtSZXF1ZXN0YWJsZS5jYWxsYmFja30gY2IgLSB3aWxsIHJlY2VpdmUgdHJ1ZSBpZiB0aGUgb3BlcmF0aW9uIGlzIHN1Y2Nlc3NmdWxcbiAgICogQHJldHVybiB7UHJvbWlzZX0gLSB0aGUgcHJvbWlzZSBmb3IgdGhlIGh0dHAgcmVxdWVzdFxuICAgKi9cbiAgIG1vdmVQcm9qZWN0Q2FyZChjYXJkSWQsIHBvc2l0aW9uLCBjb2xJZCwgY2IpIHtcbiAgICAgIHJldHVybiB0aGlzLl9yZXF1ZXN0KFxuICAgICAgICAgJ1BPU1QnLFxuICAgICAgICAgYC9wcm9qZWN0cy9jb2x1bW5zL2NhcmRzLyR7Y2FyZElkfS9tb3Zlc2AsXG4gICAgICAgICB7cG9zaXRpb246IHBvc2l0aW9uLCBjb2x1bW5faWQ6IGNvbElkfSwgLy8gZXNsaW50LWRpc2FibGUtbGluZSBjYW1lbGNhc2VcbiAgICAgICAgIGNiXG4gICAgICApO1xuICAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFByb2plY3Q7XG4iXX0=
306//# sourceMappingURL=Project.js.map