diff --git a/.babelrc b/.babelrc index afc50bc..89520b3 100644 --- a/.babelrc +++ b/.babelrc @@ -11,17 +11,23 @@ "./src/**/*.stories.js", "./src/**/*.stories.ts" ], - "presets": ["@babel/preset-env", "@babel/preset-react"], + "presets": [ + "@babel/preset-env", + "@babel/preset-react", + "@babel/preset-typescript" + ], "plugins": [ - "@babel/plugin-proposal-class-properties", - "babel-plugin-transform-scss" + "@babel/plugin-proposal-class-properties" ] }, "test": { - "presets": ["@babel/preset-env", "@babel/preset-react"], + "presets": [ + "@babel/preset-env", + "@babel/preset-react", + "@babel/preset-typescript" + ], "plugins": [ - "@babel/plugin-proposal-class-properties", - "babel-plugin-transform-scss" + "@babel/plugin-proposal-class-properties" ] } } diff --git a/.gitignore b/.gitignore index 4dca693..56700e9 100644 --- a/.gitignore +++ b/.gitignore @@ -55,4 +55,7 @@ typings/ .yarn-integrity # dotenv environment variables file -.env \ No newline at end of file +.env + +# Artifacts +.DS_Store \ No newline at end of file diff --git a/.storybook/.babelrc b/.storybook/.babelrc index f337a71..510117b 100644 --- a/.storybook/.babelrc +++ b/.storybook/.babelrc @@ -1,7 +1,13 @@ { - "presets": ["@babel/preset-env", "@babel/preset-react"], + "presets": [ + "@babel/preset-env", + "@babel/preset-react", + "@babel/preset-typescript" + ], "plugins": [ "@babel/plugin-proposal-class-properties", - "babel-plugin-transform-scss" + ["babel-plugin-react-css-modules", { + "generateScopedName": "[name]-[local]-[hash:base64:4]" + }] ] } diff --git a/.storybook/main.js b/.storybook/main.js index 3509fdb..075301a 100644 --- a/.storybook/main.js +++ b/.storybook/main.js @@ -1,13 +1,13 @@ module.exports = { - "stories": [ + stories: [ "../src/**/*.stories.mdx", "../src/**/*.stories.@(js|jsx|ts|tsx)" ], - "addons": [ + addons: [ "@storybook/addon-links", "@storybook/addon-essentials" ], - "babel": async (options) => ({ + babel: async (options) => ({ ...options, }), } diff --git a/.tool-versions b/.tool-versions index 1afc908..a49c50e 100644 --- a/.tool-versions +++ b/.tool-versions @@ -1 +1 @@ -nodejs 10.18.1 \ No newline at end of file +nodejs 12.22.1 \ No newline at end of file diff --git a/README.md b/README.md index b701dd5..39b3728 100644 --- a/README.md +++ b/README.md @@ -50,8 +50,10 @@ src/components/ ---- index.stories.js ---- styles.scss ``` - -## 🧪 Testing +### 🚧 Building +To build the lib folders and types run: +`yarn build` +### 🧪 Testing Run tests: `yarn test` diff --git a/libs/actions/errors.d.ts b/libs/actions/errors.d.ts new file mode 100644 index 0000000..c781a0e --- /dev/null +++ b/libs/actions/errors.d.ts @@ -0,0 +1,12 @@ +export function clearErrors(): { + type: any; +}; +export function addError(error: any, message: any, context: any): { + type: any; + payload: { + error: any; + message: any; + context: any; + }; +}; +export const Constants: any; diff --git a/libs/actions/errors.js b/libs/actions/errors.js deleted file mode 100644 index 1d5c007..0000000 --- a/libs/actions/errors.js +++ /dev/null @@ -1,37 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.clearErrors = clearErrors; -exports.addError = addError; -exports.Constants = void 0; - -var _wrapper = _interopRequireDefault(require("../constants/wrapper")); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } - -// Local actions -var actions = ['CLEAR_ERRORS', 'ADD_ERROR']; // Actions that make an api request - -var requests = []; -var Constants = (0, _wrapper["default"])(actions, requests); -exports.Constants = Constants; - -function clearErrors() { - return { - type: Constants.CLEAR_ERRORS - }; -} // Error should be the original error, usually from a network response. - - -function addError(error, message, context) { - return { - type: Constants.ADD_ERROR, - payload: { - error: error, - message: message, - context: context - } - }; -} \ No newline at end of file diff --git a/libs/actions/jwt.d.ts b/libs/actions/jwt.d.ts new file mode 100644 index 0000000..dccb65d --- /dev/null +++ b/libs/actions/jwt.d.ts @@ -0,0 +1,6 @@ +export function refreshJwt(userId: any): { + type: any; + method: string; + url: string; +}; +export const Constants: any; diff --git a/libs/actions/jwt.js b/libs/actions/jwt.js deleted file mode 100644 index b5977a7..0000000 --- a/libs/actions/jwt.js +++ /dev/null @@ -1,28 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.refreshJwt = refreshJwt; -exports.Constants = void 0; - -var _wrapper = _interopRequireDefault(require("../constants/wrapper")); - -var _network = _interopRequireDefault(require("../constants/network")); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } - -// Local actions -var actions = []; // Actions that make an api request - -var requests = ['REFRESH_JWT']; -var Constants = (0, _wrapper["default"])(actions, requests); -exports.Constants = Constants; - -function refreshJwt(userId) { - return { - type: Constants.REFRESH_JWT, - method: _network["default"].GET, - url: "api/jwts/".concat(userId) - }; -} \ No newline at end of file diff --git a/libs/actions/modal.d.ts b/libs/actions/modal.d.ts new file mode 100644 index 0000000..2733bb2 --- /dev/null +++ b/libs/actions/modal.d.ts @@ -0,0 +1,8 @@ +export const Constants: any; +export function openModal(modalName: any): { + type: any; + modalName: any; +}; +export function closeModal(): { + type: any; +}; diff --git a/libs/actions/modal.js b/libs/actions/modal.js deleted file mode 100644 index 3256fce..0000000 --- a/libs/actions/modal.js +++ /dev/null @@ -1,32 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.closeModal = exports.openModal = exports.Constants = void 0; - -var _wrapper = _interopRequireDefault(require("../constants/wrapper")); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } - -// Local actions -var actions = ['OPEN_MODAL', 'CLOSE_MODAL']; -var Constants = (0, _wrapper["default"])(actions, []); -exports.Constants = Constants; - -var openModal = function openModal(modalName) { - return { - type: Constants.OPEN_MODAL, - modalName: modalName - }; -}; - -exports.openModal = openModal; - -var closeModal = function closeModal() { - return { - type: Constants.CLOSE_MODAL - }; -}; - -exports.closeModal = closeModal; \ No newline at end of file diff --git a/libs/actions/post_message.d.ts b/libs/actions/post_message.d.ts new file mode 100644 index 0000000..6fff256 --- /dev/null +++ b/libs/actions/post_message.d.ts @@ -0,0 +1,7 @@ +export const Constants: any; +export function postMessage(message: any, broadcast?: boolean): { + type: any; + postMessage: boolean; + broadcast: boolean; + message: any; +}; diff --git a/libs/actions/post_message.js b/libs/actions/post_message.js deleted file mode 100644 index 53314f9..0000000 --- a/libs/actions/post_message.js +++ /dev/null @@ -1,26 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.postMessage = exports.Constants = void 0; - -var _wrapper = _interopRequireDefault(require("../constants/wrapper")); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } - -var actions = ['POST_MESSAGE']; -var Constants = (0, _wrapper["default"])(actions, []); -exports.Constants = Constants; - -var postMessage = function postMessage(message) { - var broadcast = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - return { - type: Constants.POST_MESSAGE, - postMessage: true, - broadcast: broadcast, - message: message - }; -}; - -exports.postMessage = postMessage; \ No newline at end of file diff --git a/libs/api/api.d.ts b/libs/api/api.d.ts new file mode 100644 index 0000000..7b2fd63 --- /dev/null +++ b/libs/api/api.d.ts @@ -0,0 +1,17 @@ +export default class Api { + static get(url: any, apiUrl: any, jwt: any, csrf: any, params: any, headers: any, timeout?: number): any; + static post(url: any, apiUrl: any, jwt: any, csrf: any, params: any, body: any, headers: any, timeout?: number): any; + static put(url: any, apiUrl: any, jwt: any, csrf: any, params: any, body: any, headers: any, timeout?: number): any; + static del(url: any, apiUrl: any, jwt: any, csrf: any, params: any, headers: any, timeout?: number): any; + static execRequest(method: any, url: any, apiUrl: any, jwt: any, csrf: any, params: any, body: any, headers: any, timeout?: number): any; + /** + * Returns a complete, absolute URL by conditionally appending `path` to + * `apiUrl`. If `path` already contains "http", it is returned as-is. + */ + static makeUrl(part: any, apiUrl: any): any; + static doRequest(url: any, requestMethod: any, requestType: any): any; + static wrapRequest(url: any, requestMethod: any, requestType: any): any; + static disposeRequest(url: any): void; + static promisify(request: any): Promise; + static queryStringFrom(params: any): string; +} diff --git a/libs/api/api.js b/libs/api/api.js deleted file mode 100644 index d5232d2..0000000 --- a/libs/api/api.js +++ /dev/null @@ -1,257 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; - -var _lodash = _interopRequireDefault(require("lodash")); - -var _superagent = _interopRequireDefault(require("superagent")); - -var _network = _interopRequireDefault(require("../constants/network")); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a 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); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } - -var pendingRequests = {}; - -var Api = /*#__PURE__*/function () { - function Api() { - _classCallCheck(this, Api); - } - - _createClass(Api, null, [{ - key: "get", - value: function get(url, apiUrl, jwt, csrf, params, headers) { - var timeout = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : _network["default"].TIMEOUT; - return Api.execRequest(_network["default"].GET, url, apiUrl, jwt, csrf, params, null, headers, timeout); - } - }, { - key: "post", - value: function post(url, apiUrl, jwt, csrf, params, body, headers) { - var timeout = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : _network["default"].TIMEOUT; - return Api.execRequest(_network["default"].POST, url, apiUrl, jwt, csrf, params, body, headers, timeout); - } - }, { - key: "put", - value: function put(url, apiUrl, jwt, csrf, params, body, headers) { - var timeout = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : _network["default"].TIMEOUT; - return Api.execRequest(_network["default"].PUT, url, apiUrl, jwt, csrf, params, body, headers, timeout); - } - }, { - key: "del", - value: function del(url, apiUrl, jwt, csrf, params, headers) { - var timeout = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : _network["default"].TIMEOUT; - return Api.execRequest(_network["default"].DEL, url, apiUrl, jwt, csrf, params, null, headers, timeout); - } - }, { - key: "execRequest", - value: function execRequest(method, url, apiUrl, jwt, csrf, params, body, headers) { - var timeout = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : _network["default"].TIMEOUT; - return Api.doRequest(Api.makeUrl("".concat(url).concat(Api.queryStringFrom(params)), apiUrl), function (fullUrl) { - var request; - - switch (method) { - case _network["default"].GET: - request = _superagent["default"].get(fullUrl); - break; - - case _network["default"].POST: - request = _superagent["default"].post(fullUrl).send(body); - break; - - case _network["default"].PUT: - request = _superagent["default"].put(fullUrl).send(body); - break; - - case _network["default"].DEL: - if (_lodash["default"].isEmpty(body)) { - request = _superagent["default"].del(fullUrl); - } else { - request = _superagent["default"].del(fullUrl).send(body); - } - - break; - - default: - break; - } - - request.set('Accept', 'application/json'); - request.timeout(timeout); - - if (!_lodash["default"].isNil(jwt)) { - request.set('Authorization', "Bearer ".concat(jwt)); - } - - if (!_lodash["default"].isNil(csrf)) { - request.set('X-CSRF-Token', csrf); - } - - if (!_lodash["default"].isNil(headers)) { - _lodash["default"].each(headers, function (headerValue, headerKey) { - request.set(headerKey, headerValue); - }); - } - - return request; - }, method); - } - /** - * Returns a complete, absolute URL by conditionally appending `path` to - * `apiUrl`. If `path` already contains "http", it is returned as-is. - */ - - }, { - key: "makeUrl", - value: function makeUrl(part, apiUrl) { - if (_lodash["default"].startsWith(part, 'http')) { - return part; - } - - var slash = _lodash["default"].last(apiUrl.split('')) === '/' ? '' : '/'; - var newPart = part; - - if (part[0] === '/') { - newPart = part.slice(1); - } - - return apiUrl + slash + newPart; - } - }, { - key: "doRequest", - value: function doRequest(url, requestMethod, requestType) { - // Prevent duplicate requests - var wrapper = Api.wrapRequest(url, requestMethod, requestType); - - if (wrapper.promise) { - // Existing request was found. Return promise from request - return wrapper.promise; - } // No request was found. Generate a promise, add it to the wrapper and return the promise. - - - wrapper.promise = Api.promisify(wrapper.request, url); // Dispose of the request when the call is complete - - wrapper.promise.then(function () { - Api.disposeRequest(url); - }, function () { - Api.disposeRequest(url); - }); - return wrapper.promise; - } - }, { - key: "wrapRequest", - value: function wrapRequest(url, requestMethod, requestType) { - if (requestType === _network["default"].GET) { - if (!pendingRequests[url]) { - pendingRequests[url] = { - request: requestMethod(url) - }; - } - - return pendingRequests[url]; - } - - return { - request: requestMethod(url) - }; - } - }, { - key: "disposeRequest", - value: function disposeRequest(url) { - delete pendingRequests[url]; - } - }, { - key: "promisify", - value: function promisify(request) { - return new Promise(function (resolve, reject) { - request.end(function (error, res) { - if (error) { - reject(error); - } else { - resolve(res); - } - }); - }); - } - }, { - key: "queryStringFrom", - value: function queryStringFrom(params) { - var query = _lodash["default"].chain(params).map(function (val, key) { - if (val) { - if (_lodash["default"].isArray(val)) { - return _lodash["default"].map(val, function (subVal) { - return "".concat(key, "[]=").concat(subVal); - }).join('&'); - } - - return "".concat(key, "=").concat(val); - } - - return ''; - }).compact().value(); - - if (query.length > 0) { - return "?".concat(query.join('&')); - } - - return ''; - } - }]); - - return Api; -}(); // function *doCacheRequest(url, key, requestMethod, requestType){ -// var promise; -// var fullUrl = Api.makeUrl(url); -// if (_cache[fullUrl]) { -// setTimeout(() => { -// dispatchResponse(key)(null, _cache[fullUrl]); -// }, 1); -// promise = new Promise((resolve, reject) => { -// resolve(_cache[fullUrl]); -// }); -// yield promise; -// }; -// var wrapper = Api._wrapRequest(url, requestMethod, requestType); -// if(wrapper.promise){ -// yield wrapper.promise; -// } else { -// promise = Api.promisify(wrapper.request); -// wrapper.promise = promise; -// promise.then((result) => { -// Api.disposeRequest(url); -// dispatchResponse(key)(null, result); -// _cache[fullUrl] = result; -// _cache[fullUrl].isCached = true; -// return result; -// }, (err) => { -// dispatchResponse(key)(err, err.response); -// }); -// yield promise; -// } -// } -// async cacheGet(url, jwt, csrf, params, key, store, refresh){ -// url = `${url}${Api.queryStringFrom(params)}`; -// var request = doCacheRequest(url, jwt, csrf, key, (fullUrl, jwt, csrt) => { -// return get(fullUrl); -// }, GET); -// if (key) { -// // We have a key. Invoke the generate to get data and dispatch. -// var response = request.next(); -// while (refresh && !response.done){ -// response = request.next(); -// } -// } else { -// // Return the generator and let the calling code invoke it. -// return request; -// } -// } - - -exports["default"] = Api; \ No newline at end of file diff --git a/libs/api/superagent-mock-config.d.ts b/libs/api/superagent-mock-config.d.ts new file mode 100644 index 0000000..12bb671 --- /dev/null +++ b/libs/api/superagent-mock-config.d.ts @@ -0,0 +1,4031 @@ +declare const _exports: { + [n: number]: { + /** + * regular expression of URL + */ + pattern: string; + /** + * returns the data + * + * @param match array Result of the resolution of the regular expression + * @param params object sent by 'send' function + * @param headers object set by 'set' function + * @param context object the context of running the fixtures function + */ + fixtures(match: any, params: any, headers: any, context: any): string | { + status: number; + contentType: string; + statusText: string; + responseText: string; + } | { + status: number; + statusText: string; + contentType?: undefined; + responseText?: undefined; + } | null; + /** + * returns the result of the GET request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + get(match: any, data: any): { + body: any; + }; + /** + * returns the result of the POST request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + post(match: any, data: any): { + code: number; + body: any; + }; + put(match: any, data: any): { + code: number; + body: any; + }; + delete(match: any, data: any): { + code: number; + body: any; + }; + }; + length: number; + toString(): string; + toLocaleString(): string; + pop(): { + /** + * regular expression of URL + */ + pattern: string; + /** + * returns the data + * + * @param match array Result of the resolution of the regular expression + * @param params object sent by 'send' function + * @param headers object set by 'set' function + * @param context object the context of running the fixtures function + */ + fixtures(match: any, params: any, headers: any, context: any): string | { + status: number; + contentType: string; + statusText: string; + responseText: string; + } | { + status: number; + statusText: string; + contentType?: undefined; + responseText?: undefined; + } | null; + /** + * returns the result of the GET request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + get(match: any, data: any): { + body: any; + }; + /** + * returns the result of the POST request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + post(match: any, data: any): { + code: number; + body: any; + }; + put(match: any, data: any): { + code: number; + body: any; + }; + delete(match: any, data: any): { + code: number; + body: any; + }; + } | undefined; + push(...items: { + /** + * regular expression of URL + */ + pattern: string; + /** + * returns the data + * + * @param match array Result of the resolution of the regular expression + * @param params object sent by 'send' function + * @param headers object set by 'set' function + * @param context object the context of running the fixtures function + */ + fixtures(match: any, params: any, headers: any, context: any): string | { + status: number; + contentType: string; + statusText: string; + responseText: string; + } | { + status: number; + statusText: string; + contentType?: undefined; + responseText?: undefined; + } | null; + /** + * returns the result of the GET request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + get(match: any, data: any): { + body: any; + }; + /** + * returns the result of the POST request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + post(match: any, data: any): { + code: number; + body: any; + }; + put(match: any, data: any): { + code: number; + body: any; + }; + delete(match: any, data: any): { + code: number; + body: any; + }; + }[]): number; + concat(...items: ConcatArray<{ + /** + * regular expression of URL + */ + pattern: string; + /** + * returns the data + * + * @param match array Result of the resolution of the regular expression + * @param params object sent by 'send' function + * @param headers object set by 'set' function + * @param context object the context of running the fixtures function + */ + fixtures(match: any, params: any, headers: any, context: any): string | { + status: number; + contentType: string; + statusText: string; + responseText: string; + } | { + status: number; + statusText: string; + contentType?: undefined; + responseText?: undefined; + } | null; + /** + * returns the result of the GET request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + get(match: any, data: any): { + body: any; + }; + /** + * returns the result of the POST request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + post(match: any, data: any): { + code: number; + body: any; + }; + put(match: any, data: any): { + code: number; + body: any; + }; + delete(match: any, data: any): { + code: number; + body: any; + }; + }>[]): { + /** + * regular expression of URL + */ + pattern: string; + /** + * returns the data + * + * @param match array Result of the resolution of the regular expression + * @param params object sent by 'send' function + * @param headers object set by 'set' function + * @param context object the context of running the fixtures function + */ + fixtures(match: any, params: any, headers: any, context: any): string | { + status: number; + contentType: string; + statusText: string; + responseText: string; + } | { + status: number; + statusText: string; + contentType?: undefined; + responseText?: undefined; + } | null; + /** + * returns the result of the GET request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + get(match: any, data: any): { + body: any; + }; + /** + * returns the result of the POST request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + post(match: any, data: any): { + code: number; + body: any; + }; + put(match: any, data: any): { + code: number; + body: any; + }; + delete(match: any, data: any): { + code: number; + body: any; + }; + }[]; + concat(...items: ({ + /** + * regular expression of URL + */ + pattern: string; + /** + * returns the data + * + * @param match array Result of the resolution of the regular expression + * @param params object sent by 'send' function + * @param headers object set by 'set' function + * @param context object the context of running the fixtures function + */ + fixtures(match: any, params: any, headers: any, context: any): string | { + status: number; + contentType: string; + statusText: string; + responseText: string; + } | { + status: number; + statusText: string; + contentType?: undefined; + responseText?: undefined; + } | null; + /** + * returns the result of the GET request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + get(match: any, data: any): { + body: any; + }; + /** + * returns the result of the POST request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + post(match: any, data: any): { + code: number; + body: any; + }; + put(match: any, data: any): { + code: number; + body: any; + }; + delete(match: any, data: any): { + code: number; + body: any; + }; + } | ConcatArray<{ + /** + * regular expression of URL + */ + pattern: string; + /** + * returns the data + * + * @param match array Result of the resolution of the regular expression + * @param params object sent by 'send' function + * @param headers object set by 'set' function + * @param context object the context of running the fixtures function + */ + fixtures(match: any, params: any, headers: any, context: any): string | { + status: number; + contentType: string; + statusText: string; + responseText: string; + } | { + status: number; + statusText: string; + contentType?: undefined; + responseText?: undefined; + } | null; + /** + * returns the result of the GET request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + get(match: any, data: any): { + body: any; + }; + /** + * returns the result of the POST request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + post(match: any, data: any): { + code: number; + body: any; + }; + put(match: any, data: any): { + code: number; + body: any; + }; + delete(match: any, data: any): { + code: number; + body: any; + }; + }>)[]): { + /** + * regular expression of URL + */ + pattern: string; + /** + * returns the data + * + * @param match array Result of the resolution of the regular expression + * @param params object sent by 'send' function + * @param headers object set by 'set' function + * @param context object the context of running the fixtures function + */ + fixtures(match: any, params: any, headers: any, context: any): string | { + status: number; + contentType: string; + statusText: string; + responseText: string; + } | { + status: number; + statusText: string; + contentType?: undefined; + responseText?: undefined; + } | null; + /** + * returns the result of the GET request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + get(match: any, data: any): { + body: any; + }; + /** + * returns the result of the POST request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + post(match: any, data: any): { + code: number; + body: any; + }; + put(match: any, data: any): { + code: number; + body: any; + }; + delete(match: any, data: any): { + code: number; + body: any; + }; + }[]; + join(separator?: string | undefined): string; + reverse(): { + /** + * regular expression of URL + */ + pattern: string; + /** + * returns the data + * + * @param match array Result of the resolution of the regular expression + * @param params object sent by 'send' function + * @param headers object set by 'set' function + * @param context object the context of running the fixtures function + */ + fixtures(match: any, params: any, headers: any, context: any): string | { + status: number; + contentType: string; + statusText: string; + responseText: string; + } | { + status: number; + statusText: string; + contentType?: undefined; + responseText?: undefined; + } | null; + /** + * returns the result of the GET request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + get(match: any, data: any): { + body: any; + }; + /** + * returns the result of the POST request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + post(match: any, data: any): { + code: number; + body: any; + }; + put(match: any, data: any): { + code: number; + body: any; + }; + delete(match: any, data: any): { + code: number; + body: any; + }; + }[]; + shift(): { + /** + * regular expression of URL + */ + pattern: string; + /** + * returns the data + * + * @param match array Result of the resolution of the regular expression + * @param params object sent by 'send' function + * @param headers object set by 'set' function + * @param context object the context of running the fixtures function + */ + fixtures(match: any, params: any, headers: any, context: any): string | { + status: number; + contentType: string; + statusText: string; + responseText: string; + } | { + status: number; + statusText: string; + contentType?: undefined; + responseText?: undefined; + } | null; + /** + * returns the result of the GET request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + get(match: any, data: any): { + body: any; + }; + /** + * returns the result of the POST request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + post(match: any, data: any): { + code: number; + body: any; + }; + put(match: any, data: any): { + code: number; + body: any; + }; + delete(match: any, data: any): { + code: number; + body: any; + }; + } | undefined; + slice(start?: number | undefined, end?: number | undefined): { + /** + * regular expression of URL + */ + pattern: string; + /** + * returns the data + * + * @param match array Result of the resolution of the regular expression + * @param params object sent by 'send' function + * @param headers object set by 'set' function + * @param context object the context of running the fixtures function + */ + fixtures(match: any, params: any, headers: any, context: any): string | { + status: number; + contentType: string; + statusText: string; + responseText: string; + } | { + status: number; + statusText: string; + contentType?: undefined; + responseText?: undefined; + } | null; + /** + * returns the result of the GET request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + get(match: any, data: any): { + body: any; + }; + /** + * returns the result of the POST request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + post(match: any, data: any): { + code: number; + body: any; + }; + put(match: any, data: any): { + code: number; + body: any; + }; + delete(match: any, data: any): { + code: number; + body: any; + }; + }[]; + sort(compareFn?: ((a: { + /** + * regular expression of URL + */ + pattern: string; + /** + * returns the data + * + * @param match array Result of the resolution of the regular expression + * @param params object sent by 'send' function + * @param headers object set by 'set' function + * @param context object the context of running the fixtures function + */ + fixtures(match: any, params: any, headers: any, context: any): string | { + status: number; + contentType: string; + statusText: string; + responseText: string; + } | { + status: number; + statusText: string; + contentType?: undefined; + responseText?: undefined; + } | null; + /** + * returns the result of the GET request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + get(match: any, data: any): { + body: any; + }; + /** + * returns the result of the POST request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + post(match: any, data: any): { + code: number; + body: any; + }; + put(match: any, data: any): { + code: number; + body: any; + }; + delete(match: any, data: any): { + code: number; + body: any; + }; + }, b: { + /** + * regular expression of URL + */ + pattern: string; + /** + * returns the data + * + * @param match array Result of the resolution of the regular expression + * @param params object sent by 'send' function + * @param headers object set by 'set' function + * @param context object the context of running the fixtures function + */ + fixtures(match: any, params: any, headers: any, context: any): string | { + status: number; + contentType: string; + statusText: string; + responseText: string; + } | { + status: number; + statusText: string; + contentType?: undefined; + responseText?: undefined; + } | null; + /** + * returns the result of the GET request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + get(match: any, data: any): { + body: any; + }; + /** + * returns the result of the POST request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + post(match: any, data: any): { + code: number; + body: any; + }; + put(match: any, data: any): { + code: number; + body: any; + }; + delete(match: any, data: any): { + code: number; + body: any; + }; + }) => number) | undefined): { + /** + * regular expression of URL + */ + pattern: string; + /** + * returns the data + * + * @param match array Result of the resolution of the regular expression + * @param params object sent by 'send' function + * @param headers object set by 'set' function + * @param context object the context of running the fixtures function + */ + fixtures(match: any, params: any, headers: any, context: any): string | { + status: number; + contentType: string; + statusText: string; + responseText: string; + } | { + status: number; + statusText: string; + contentType?: undefined; + responseText?: undefined; + } | null; + /** + * returns the result of the GET request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + get(match: any, data: any): { + body: any; + }; + /** + * returns the result of the POST request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + post(match: any, data: any): { + code: number; + body: any; + }; + put(match: any, data: any): { + code: number; + body: any; + }; + delete(match: any, data: any): { + code: number; + body: any; + }; + }[]; + splice(start: number, deleteCount?: number | undefined): { + /** + * regular expression of URL + */ + pattern: string; + /** + * returns the data + * + * @param match array Result of the resolution of the regular expression + * @param params object sent by 'send' function + * @param headers object set by 'set' function + * @param context object the context of running the fixtures function + */ + fixtures(match: any, params: any, headers: any, context: any): string | { + status: number; + contentType: string; + statusText: string; + responseText: string; + } | { + status: number; + statusText: string; + contentType?: undefined; + responseText?: undefined; + } | null; + /** + * returns the result of the GET request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + get(match: any, data: any): { + body: any; + }; + /** + * returns the result of the POST request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + post(match: any, data: any): { + code: number; + body: any; + }; + put(match: any, data: any): { + code: number; + body: any; + }; + delete(match: any, data: any): { + code: number; + body: any; + }; + }[]; + splice(start: number, deleteCount: number, ...items: { + /** + * regular expression of URL + */ + pattern: string; + /** + * returns the data + * + * @param match array Result of the resolution of the regular expression + * @param params object sent by 'send' function + * @param headers object set by 'set' function + * @param context object the context of running the fixtures function + */ + fixtures(match: any, params: any, headers: any, context: any): string | { + status: number; + contentType: string; + statusText: string; + responseText: string; + } | { + status: number; + statusText: string; + contentType?: undefined; + responseText?: undefined; + } | null; + /** + * returns the result of the GET request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + get(match: any, data: any): { + body: any; + }; + /** + * returns the result of the POST request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + post(match: any, data: any): { + code: number; + body: any; + }; + put(match: any, data: any): { + code: number; + body: any; + }; + delete(match: any, data: any): { + code: number; + body: any; + }; + }[]): { + /** + * regular expression of URL + */ + pattern: string; + /** + * returns the data + * + * @param match array Result of the resolution of the regular expression + * @param params object sent by 'send' function + * @param headers object set by 'set' function + * @param context object the context of running the fixtures function + */ + fixtures(match: any, params: any, headers: any, context: any): string | { + status: number; + contentType: string; + statusText: string; + responseText: string; + } | { + status: number; + statusText: string; + contentType?: undefined; + responseText?: undefined; + } | null; + /** + * returns the result of the GET request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + get(match: any, data: any): { + body: any; + }; + /** + * returns the result of the POST request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + post(match: any, data: any): { + code: number; + body: any; + }; + put(match: any, data: any): { + code: number; + body: any; + }; + delete(match: any, data: any): { + code: number; + body: any; + }; + }[]; + unshift(...items: { + /** + * regular expression of URL + */ + pattern: string; + /** + * returns the data + * + * @param match array Result of the resolution of the regular expression + * @param params object sent by 'send' function + * @param headers object set by 'set' function + * @param context object the context of running the fixtures function + */ + fixtures(match: any, params: any, headers: any, context: any): string | { + status: number; + contentType: string; + statusText: string; + responseText: string; + } | { + status: number; + statusText: string; + contentType?: undefined; + responseText?: undefined; + } | null; + /** + * returns the result of the GET request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + get(match: any, data: any): { + body: any; + }; + /** + * returns the result of the POST request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + post(match: any, data: any): { + code: number; + body: any; + }; + put(match: any, data: any): { + code: number; + body: any; + }; + delete(match: any, data: any): { + code: number; + body: any; + }; + }[]): number; + indexOf(searchElement: { + /** + * regular expression of URL + */ + pattern: string; + /** + * returns the data + * + * @param match array Result of the resolution of the regular expression + * @param params object sent by 'send' function + * @param headers object set by 'set' function + * @param context object the context of running the fixtures function + */ + fixtures(match: any, params: any, headers: any, context: any): string | { + status: number; + contentType: string; + statusText: string; + responseText: string; + } | { + status: number; + statusText: string; + contentType?: undefined; + responseText?: undefined; + } | null; + /** + * returns the result of the GET request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + get(match: any, data: any): { + body: any; + }; + /** + * returns the result of the POST request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + post(match: any, data: any): { + code: number; + body: any; + }; + put(match: any, data: any): { + code: number; + body: any; + }; + delete(match: any, data: any): { + code: number; + body: any; + }; + }, fromIndex?: number | undefined): number; + lastIndexOf(searchElement: { + /** + * regular expression of URL + */ + pattern: string; + /** + * returns the data + * + * @param match array Result of the resolution of the regular expression + * @param params object sent by 'send' function + * @param headers object set by 'set' function + * @param context object the context of running the fixtures function + */ + fixtures(match: any, params: any, headers: any, context: any): string | { + status: number; + contentType: string; + statusText: string; + responseText: string; + } | { + status: number; + statusText: string; + contentType?: undefined; + responseText?: undefined; + } | null; + /** + * returns the result of the GET request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + get(match: any, data: any): { + body: any; + }; + /** + * returns the result of the POST request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + post(match: any, data: any): { + code: number; + body: any; + }; + put(match: any, data: any): { + code: number; + body: any; + }; + delete(match: any, data: any): { + code: number; + body: any; + }; + }, fromIndex?: number | undefined): number; + every(predicate: (value: { + /** + * regular expression of URL + */ + pattern: string; + /** + * returns the data + * + * @param match array Result of the resolution of the regular expression + * @param params object sent by 'send' function + * @param headers object set by 'set' function + * @param context object the context of running the fixtures function + */ + fixtures(match: any, params: any, headers: any, context: any): string | { + status: number; + contentType: string; + statusText: string; + responseText: string; + } | { + status: number; + statusText: string; + contentType?: undefined; + responseText?: undefined; + } | null; + /** + * returns the result of the GET request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + get(match: any, data: any): { + body: any; + }; + /** + * returns the result of the POST request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + post(match: any, data: any): { + code: number; + body: any; + }; + put(match: any, data: any): { + code: number; + body: any; + }; + delete(match: any, data: any): { + code: number; + body: any; + }; + }, index: number, array: { + /** + * regular expression of URL + */ + pattern: string; + /** + * returns the data + * + * @param match array Result of the resolution of the regular expression + * @param params object sent by 'send' function + * @param headers object set by 'set' function + * @param context object the context of running the fixtures function + */ + fixtures(match: any, params: any, headers: any, context: any): string | { + status: number; + contentType: string; + statusText: string; + responseText: string; + } | { + status: number; + statusText: string; + contentType?: undefined; + responseText?: undefined; + } | null; + /** + * returns the result of the GET request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + get(match: any, data: any): { + body: any; + }; + /** + * returns the result of the POST request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + post(match: any, data: any): { + code: number; + body: any; + }; + put(match: any, data: any): { + code: number; + body: any; + }; + delete(match: any, data: any): { + code: number; + body: any; + }; + }[]) => value is S, thisArg?: any): this is S[]; + every(predicate: (value: { + /** + * regular expression of URL + */ + pattern: string; + /** + * returns the data + * + * @param match array Result of the resolution of the regular expression + * @param params object sent by 'send' function + * @param headers object set by 'set' function + * @param context object the context of running the fixtures function + */ + fixtures(match: any, params: any, headers: any, context: any): string | { + status: number; + contentType: string; + statusText: string; + responseText: string; + } | { + status: number; + statusText: string; + contentType?: undefined; + responseText?: undefined; + } | null; + /** + * returns the result of the GET request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + get(match: any, data: any): { + body: any; + }; + /** + * returns the result of the POST request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + post(match: any, data: any): { + code: number; + body: any; + }; + put(match: any, data: any): { + code: number; + body: any; + }; + delete(match: any, data: any): { + code: number; + body: any; + }; + }, index: number, array: { + /** + * regular expression of URL + */ + pattern: string; + /** + * returns the data + * + * @param match array Result of the resolution of the regular expression + * @param params object sent by 'send' function + * @param headers object set by 'set' function + * @param context object the context of running the fixtures function + */ + fixtures(match: any, params: any, headers: any, context: any): string | { + status: number; + contentType: string; + statusText: string; + responseText: string; + } | { + status: number; + statusText: string; + contentType?: undefined; + responseText?: undefined; + } | null; + /** + * returns the result of the GET request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + get(match: any, data: any): { + body: any; + }; + /** + * returns the result of the POST request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + post(match: any, data: any): { + code: number; + body: any; + }; + put(match: any, data: any): { + code: number; + body: any; + }; + delete(match: any, data: any): { + code: number; + body: any; + }; + }[]) => unknown, thisArg?: any): boolean; + some(predicate: (value: { + /** + * regular expression of URL + */ + pattern: string; + /** + * returns the data + * + * @param match array Result of the resolution of the regular expression + * @param params object sent by 'send' function + * @param headers object set by 'set' function + * @param context object the context of running the fixtures function + */ + fixtures(match: any, params: any, headers: any, context: any): string | { + status: number; + contentType: string; + statusText: string; + responseText: string; + } | { + status: number; + statusText: string; + contentType?: undefined; + responseText?: undefined; + } | null; + /** + * returns the result of the GET request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + get(match: any, data: any): { + body: any; + }; + /** + * returns the result of the POST request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + post(match: any, data: any): { + code: number; + body: any; + }; + put(match: any, data: any): { + code: number; + body: any; + }; + delete(match: any, data: any): { + code: number; + body: any; + }; + }, index: number, array: { + /** + * regular expression of URL + */ + pattern: string; + /** + * returns the data + * + * @param match array Result of the resolution of the regular expression + * @param params object sent by 'send' function + * @param headers object set by 'set' function + * @param context object the context of running the fixtures function + */ + fixtures(match: any, params: any, headers: any, context: any): string | { + status: number; + contentType: string; + statusText: string; + responseText: string; + } | { + status: number; + statusText: string; + contentType?: undefined; + responseText?: undefined; + } | null; + /** + * returns the result of the GET request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + get(match: any, data: any): { + body: any; + }; + /** + * returns the result of the POST request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + post(match: any, data: any): { + code: number; + body: any; + }; + put(match: any, data: any): { + code: number; + body: any; + }; + delete(match: any, data: any): { + code: number; + body: any; + }; + }[]) => unknown, thisArg?: any): boolean; + forEach(callbackfn: (value: { + /** + * regular expression of URL + */ + pattern: string; + /** + * returns the data + * + * @param match array Result of the resolution of the regular expression + * @param params object sent by 'send' function + * @param headers object set by 'set' function + * @param context object the context of running the fixtures function + */ + fixtures(match: any, params: any, headers: any, context: any): string | { + status: number; + contentType: string; + statusText: string; + responseText: string; + } | { + status: number; + statusText: string; + contentType?: undefined; + responseText?: undefined; + } | null; + /** + * returns the result of the GET request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + get(match: any, data: any): { + body: any; + }; + /** + * returns the result of the POST request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + post(match: any, data: any): { + code: number; + body: any; + }; + put(match: any, data: any): { + code: number; + body: any; + }; + delete(match: any, data: any): { + code: number; + body: any; + }; + }, index: number, array: { + /** + * regular expression of URL + */ + pattern: string; + /** + * returns the data + * + * @param match array Result of the resolution of the regular expression + * @param params object sent by 'send' function + * @param headers object set by 'set' function + * @param context object the context of running the fixtures function + */ + fixtures(match: any, params: any, headers: any, context: any): string | { + status: number; + contentType: string; + statusText: string; + responseText: string; + } | { + status: number; + statusText: string; + contentType?: undefined; + responseText?: undefined; + } | null; + /** + * returns the result of the GET request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + get(match: any, data: any): { + body: any; + }; + /** + * returns the result of the POST request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + post(match: any, data: any): { + code: number; + body: any; + }; + put(match: any, data: any): { + code: number; + body: any; + }; + delete(match: any, data: any): { + code: number; + body: any; + }; + }[]) => void, thisArg?: any): void; + map(callbackfn: (value: { + /** + * regular expression of URL + */ + pattern: string; + /** + * returns the data + * + * @param match array Result of the resolution of the regular expression + * @param params object sent by 'send' function + * @param headers object set by 'set' function + * @param context object the context of running the fixtures function + */ + fixtures(match: any, params: any, headers: any, context: any): string | { + status: number; + contentType: string; + statusText: string; + responseText: string; + } | { + status: number; + statusText: string; + contentType?: undefined; + responseText?: undefined; + } | null; + /** + * returns the result of the GET request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + get(match: any, data: any): { + body: any; + }; + /** + * returns the result of the POST request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + post(match: any, data: any): { + code: number; + body: any; + }; + put(match: any, data: any): { + code: number; + body: any; + }; + delete(match: any, data: any): { + code: number; + body: any; + }; + }, index: number, array: { + /** + * regular expression of URL + */ + pattern: string; + /** + * returns the data + * + * @param match array Result of the resolution of the regular expression + * @param params object sent by 'send' function + * @param headers object set by 'set' function + * @param context object the context of running the fixtures function + */ + fixtures(match: any, params: any, headers: any, context: any): string | { + status: number; + contentType: string; + statusText: string; + responseText: string; + } | { + status: number; + statusText: string; + contentType?: undefined; + responseText?: undefined; + } | null; + /** + * returns the result of the GET request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + get(match: any, data: any): { + body: any; + }; + /** + * returns the result of the POST request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + post(match: any, data: any): { + code: number; + body: any; + }; + put(match: any, data: any): { + code: number; + body: any; + }; + delete(match: any, data: any): { + code: number; + body: any; + }; + }[]) => U, thisArg?: any): U[]; + filter(predicate: (value: { + /** + * regular expression of URL + */ + pattern: string; + /** + * returns the data + * + * @param match array Result of the resolution of the regular expression + * @param params object sent by 'send' function + * @param headers object set by 'set' function + * @param context object the context of running the fixtures function + */ + fixtures(match: any, params: any, headers: any, context: any): string | { + status: number; + contentType: string; + statusText: string; + responseText: string; + } | { + status: number; + statusText: string; + contentType?: undefined; + responseText?: undefined; + } | null; + /** + * returns the result of the GET request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + get(match: any, data: any): { + body: any; + }; + /** + * returns the result of the POST request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + post(match: any, data: any): { + code: number; + body: any; + }; + put(match: any, data: any): { + code: number; + body: any; + }; + delete(match: any, data: any): { + code: number; + body: any; + }; + }, index: number, array: { + /** + * regular expression of URL + */ + pattern: string; + /** + * returns the data + * + * @param match array Result of the resolution of the regular expression + * @param params object sent by 'send' function + * @param headers object set by 'set' function + * @param context object the context of running the fixtures function + */ + fixtures(match: any, params: any, headers: any, context: any): string | { + status: number; + contentType: string; + statusText: string; + responseText: string; + } | { + status: number; + statusText: string; + contentType?: undefined; + responseText?: undefined; + } | null; + /** + * returns the result of the GET request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + get(match: any, data: any): { + body: any; + }; + /** + * returns the result of the POST request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + post(match: any, data: any): { + code: number; + body: any; + }; + put(match: any, data: any): { + code: number; + body: any; + }; + delete(match: any, data: any): { + code: number; + body: any; + }; + }[]) => value is S_1, thisArg?: any): S_1[]; + filter(predicate: (value: { + /** + * regular expression of URL + */ + pattern: string; + /** + * returns the data + * + * @param match array Result of the resolution of the regular expression + * @param params object sent by 'send' function + * @param headers object set by 'set' function + * @param context object the context of running the fixtures function + */ + fixtures(match: any, params: any, headers: any, context: any): string | { + status: number; + contentType: string; + statusText: string; + responseText: string; + } | { + status: number; + statusText: string; + contentType?: undefined; + responseText?: undefined; + } | null; + /** + * returns the result of the GET request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + get(match: any, data: any): { + body: any; + }; + /** + * returns the result of the POST request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + post(match: any, data: any): { + code: number; + body: any; + }; + put(match: any, data: any): { + code: number; + body: any; + }; + delete(match: any, data: any): { + code: number; + body: any; + }; + }, index: number, array: { + /** + * regular expression of URL + */ + pattern: string; + /** + * returns the data + * + * @param match array Result of the resolution of the regular expression + * @param params object sent by 'send' function + * @param headers object set by 'set' function + * @param context object the context of running the fixtures function + */ + fixtures(match: any, params: any, headers: any, context: any): string | { + status: number; + contentType: string; + statusText: string; + responseText: string; + } | { + status: number; + statusText: string; + contentType?: undefined; + responseText?: undefined; + } | null; + /** + * returns the result of the GET request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + get(match: any, data: any): { + body: any; + }; + /** + * returns the result of the POST request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + post(match: any, data: any): { + code: number; + body: any; + }; + put(match: any, data: any): { + code: number; + body: any; + }; + delete(match: any, data: any): { + code: number; + body: any; + }; + }[]) => unknown, thisArg?: any): { + /** + * regular expression of URL + */ + pattern: string; + /** + * returns the data + * + * @param match array Result of the resolution of the regular expression + * @param params object sent by 'send' function + * @param headers object set by 'set' function + * @param context object the context of running the fixtures function + */ + fixtures(match: any, params: any, headers: any, context: any): string | { + status: number; + contentType: string; + statusText: string; + responseText: string; + } | { + status: number; + statusText: string; + contentType?: undefined; + responseText?: undefined; + } | null; + /** + * returns the result of the GET request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + get(match: any, data: any): { + body: any; + }; + /** + * returns the result of the POST request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + post(match: any, data: any): { + code: number; + body: any; + }; + put(match: any, data: any): { + code: number; + body: any; + }; + delete(match: any, data: any): { + code: number; + body: any; + }; + }[]; + reduce(callbackfn: (previousValue: { + /** + * regular expression of URL + */ + pattern: string; + /** + * returns the data + * + * @param match array Result of the resolution of the regular expression + * @param params object sent by 'send' function + * @param headers object set by 'set' function + * @param context object the context of running the fixtures function + */ + fixtures(match: any, params: any, headers: any, context: any): string | { + status: number; + contentType: string; + statusText: string; + responseText: string; + } | { + status: number; + statusText: string; + contentType?: undefined; + responseText?: undefined; + } | null; + /** + * returns the result of the GET request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + get(match: any, data: any): { + body: any; + }; + /** + * returns the result of the POST request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + post(match: any, data: any): { + code: number; + body: any; + }; + put(match: any, data: any): { + code: number; + body: any; + }; + delete(match: any, data: any): { + code: number; + body: any; + }; + }, currentValue: { + /** + * regular expression of URL + */ + pattern: string; + /** + * returns the data + * + * @param match array Result of the resolution of the regular expression + * @param params object sent by 'send' function + * @param headers object set by 'set' function + * @param context object the context of running the fixtures function + */ + fixtures(match: any, params: any, headers: any, context: any): string | { + status: number; + contentType: string; + statusText: string; + responseText: string; + } | { + status: number; + statusText: string; + contentType?: undefined; + responseText?: undefined; + } | null; + /** + * returns the result of the GET request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + get(match: any, data: any): { + body: any; + }; + /** + * returns the result of the POST request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + post(match: any, data: any): { + code: number; + body: any; + }; + put(match: any, data: any): { + code: number; + body: any; + }; + delete(match: any, data: any): { + code: number; + body: any; + }; + }, currentIndex: number, array: { + /** + * regular expression of URL + */ + pattern: string; + /** + * returns the data + * + * @param match array Result of the resolution of the regular expression + * @param params object sent by 'send' function + * @param headers object set by 'set' function + * @param context object the context of running the fixtures function + */ + fixtures(match: any, params: any, headers: any, context: any): string | { + status: number; + contentType: string; + statusText: string; + responseText: string; + } | { + status: number; + statusText: string; + contentType?: undefined; + responseText?: undefined; + } | null; + /** + * returns the result of the GET request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + get(match: any, data: any): { + body: any; + }; + /** + * returns the result of the POST request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + post(match: any, data: any): { + code: number; + body: any; + }; + put(match: any, data: any): { + code: number; + body: any; + }; + delete(match: any, data: any): { + code: number; + body: any; + }; + }[]) => { + /** + * regular expression of URL + */ + pattern: string; + /** + * returns the data + * + * @param match array Result of the resolution of the regular expression + * @param params object sent by 'send' function + * @param headers object set by 'set' function + * @param context object the context of running the fixtures function + */ + fixtures(match: any, params: any, headers: any, context: any): string | { + status: number; + contentType: string; + statusText: string; + responseText: string; + } | { + status: number; + statusText: string; + contentType?: undefined; + responseText?: undefined; + } | null; + /** + * returns the result of the GET request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + get(match: any, data: any): { + body: any; + }; + /** + * returns the result of the POST request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + post(match: any, data: any): { + code: number; + body: any; + }; + put(match: any, data: any): { + code: number; + body: any; + }; + delete(match: any, data: any): { + code: number; + body: any; + }; + }): { + /** + * regular expression of URL + */ + pattern: string; + /** + * returns the data + * + * @param match array Result of the resolution of the regular expression + * @param params object sent by 'send' function + * @param headers object set by 'set' function + * @param context object the context of running the fixtures function + */ + fixtures(match: any, params: any, headers: any, context: any): string | { + status: number; + contentType: string; + statusText: string; + responseText: string; + } | { + status: number; + statusText: string; + contentType?: undefined; + responseText?: undefined; + } | null; + /** + * returns the result of the GET request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + get(match: any, data: any): { + body: any; + }; + /** + * returns the result of the POST request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + post(match: any, data: any): { + code: number; + body: any; + }; + put(match: any, data: any): { + code: number; + body: any; + }; + delete(match: any, data: any): { + code: number; + body: any; + }; + }; + reduce(callbackfn: (previousValue: { + /** + * regular expression of URL + */ + pattern: string; + /** + * returns the data + * + * @param match array Result of the resolution of the regular expression + * @param params object sent by 'send' function + * @param headers object set by 'set' function + * @param context object the context of running the fixtures function + */ + fixtures(match: any, params: any, headers: any, context: any): string | { + status: number; + contentType: string; + statusText: string; + responseText: string; + } | { + status: number; + statusText: string; + contentType?: undefined; + responseText?: undefined; + } | null; + /** + * returns the result of the GET request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + get(match: any, data: any): { + body: any; + }; + /** + * returns the result of the POST request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + post(match: any, data: any): { + code: number; + body: any; + }; + put(match: any, data: any): { + code: number; + body: any; + }; + delete(match: any, data: any): { + code: number; + body: any; + }; + }, currentValue: { + /** + * regular expression of URL + */ + pattern: string; + /** + * returns the data + * + * @param match array Result of the resolution of the regular expression + * @param params object sent by 'send' function + * @param headers object set by 'set' function + * @param context object the context of running the fixtures function + */ + fixtures(match: any, params: any, headers: any, context: any): string | { + status: number; + contentType: string; + statusText: string; + responseText: string; + } | { + status: number; + statusText: string; + contentType?: undefined; + responseText?: undefined; + } | null; + /** + * returns the result of the GET request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + get(match: any, data: any): { + body: any; + }; + /** + * returns the result of the POST request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + post(match: any, data: any): { + code: number; + body: any; + }; + put(match: any, data: any): { + code: number; + body: any; + }; + delete(match: any, data: any): { + code: number; + body: any; + }; + }, currentIndex: number, array: { + /** + * regular expression of URL + */ + pattern: string; + /** + * returns the data + * + * @param match array Result of the resolution of the regular expression + * @param params object sent by 'send' function + * @param headers object set by 'set' function + * @param context object the context of running the fixtures function + */ + fixtures(match: any, params: any, headers: any, context: any): string | { + status: number; + contentType: string; + statusText: string; + responseText: string; + } | { + status: number; + statusText: string; + contentType?: undefined; + responseText?: undefined; + } | null; + /** + * returns the result of the GET request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + get(match: any, data: any): { + body: any; + }; + /** + * returns the result of the POST request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + post(match: any, data: any): { + code: number; + body: any; + }; + put(match: any, data: any): { + code: number; + body: any; + }; + delete(match: any, data: any): { + code: number; + body: any; + }; + }[]) => { + /** + * regular expression of URL + */ + pattern: string; + /** + * returns the data + * + * @param match array Result of the resolution of the regular expression + * @param params object sent by 'send' function + * @param headers object set by 'set' function + * @param context object the context of running the fixtures function + */ + fixtures(match: any, params: any, headers: any, context: any): string | { + status: number; + contentType: string; + statusText: string; + responseText: string; + } | { + status: number; + statusText: string; + contentType?: undefined; + responseText?: undefined; + } | null; + /** + * returns the result of the GET request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + get(match: any, data: any): { + body: any; + }; + /** + * returns the result of the POST request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + post(match: any, data: any): { + code: number; + body: any; + }; + put(match: any, data: any): { + code: number; + body: any; + }; + delete(match: any, data: any): { + code: number; + body: any; + }; + }, initialValue: { + /** + * regular expression of URL + */ + pattern: string; + /** + * returns the data + * + * @param match array Result of the resolution of the regular expression + * @param params object sent by 'send' function + * @param headers object set by 'set' function + * @param context object the context of running the fixtures function + */ + fixtures(match: any, params: any, headers: any, context: any): string | { + status: number; + contentType: string; + statusText: string; + responseText: string; + } | { + status: number; + statusText: string; + contentType?: undefined; + responseText?: undefined; + } | null; + /** + * returns the result of the GET request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + get(match: any, data: any): { + body: any; + }; + /** + * returns the result of the POST request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + post(match: any, data: any): { + code: number; + body: any; + }; + put(match: any, data: any): { + code: number; + body: any; + }; + delete(match: any, data: any): { + code: number; + body: any; + }; + }): { + /** + * regular expression of URL + */ + pattern: string; + /** + * returns the data + * + * @param match array Result of the resolution of the regular expression + * @param params object sent by 'send' function + * @param headers object set by 'set' function + * @param context object the context of running the fixtures function + */ + fixtures(match: any, params: any, headers: any, context: any): string | { + status: number; + contentType: string; + statusText: string; + responseText: string; + } | { + status: number; + statusText: string; + contentType?: undefined; + responseText?: undefined; + } | null; + /** + * returns the result of the GET request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + get(match: any, data: any): { + body: any; + }; + /** + * returns the result of the POST request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + post(match: any, data: any): { + code: number; + body: any; + }; + put(match: any, data: any): { + code: number; + body: any; + }; + delete(match: any, data: any): { + code: number; + body: any; + }; + }; + reduce(callbackfn: (previousValue: U_1, currentValue: { + /** + * regular expression of URL + */ + pattern: string; + /** + * returns the data + * + * @param match array Result of the resolution of the regular expression + * @param params object sent by 'send' function + * @param headers object set by 'set' function + * @param context object the context of running the fixtures function + */ + fixtures(match: any, params: any, headers: any, context: any): string | { + status: number; + contentType: string; + statusText: string; + responseText: string; + } | { + status: number; + statusText: string; + contentType?: undefined; + responseText?: undefined; + } | null; + /** + * returns the result of the GET request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + get(match: any, data: any): { + body: any; + }; + /** + * returns the result of the POST request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + post(match: any, data: any): { + code: number; + body: any; + }; + put(match: any, data: any): { + code: number; + body: any; + }; + delete(match: any, data: any): { + code: number; + body: any; + }; + }, currentIndex: number, array: { + /** + * regular expression of URL + */ + pattern: string; + /** + * returns the data + * + * @param match array Result of the resolution of the regular expression + * @param params object sent by 'send' function + * @param headers object set by 'set' function + * @param context object the context of running the fixtures function + */ + fixtures(match: any, params: any, headers: any, context: any): string | { + status: number; + contentType: string; + statusText: string; + responseText: string; + } | { + status: number; + statusText: string; + contentType?: undefined; + responseText?: undefined; + } | null; + /** + * returns the result of the GET request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + get(match: any, data: any): { + body: any; + }; + /** + * returns the result of the POST request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + post(match: any, data: any): { + code: number; + body: any; + }; + put(match: any, data: any): { + code: number; + body: any; + }; + delete(match: any, data: any): { + code: number; + body: any; + }; + }[]) => U_1, initialValue: U_1): U_1; + reduceRight(callbackfn: (previousValue: { + /** + * regular expression of URL + */ + pattern: string; + /** + * returns the data + * + * @param match array Result of the resolution of the regular expression + * @param params object sent by 'send' function + * @param headers object set by 'set' function + * @param context object the context of running the fixtures function + */ + fixtures(match: any, params: any, headers: any, context: any): string | { + status: number; + contentType: string; + statusText: string; + responseText: string; + } | { + status: number; + statusText: string; + contentType?: undefined; + responseText?: undefined; + } | null; + /** + * returns the result of the GET request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + get(match: any, data: any): { + body: any; + }; + /** + * returns the result of the POST request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + post(match: any, data: any): { + code: number; + body: any; + }; + put(match: any, data: any): { + code: number; + body: any; + }; + delete(match: any, data: any): { + code: number; + body: any; + }; + }, currentValue: { + /** + * regular expression of URL + */ + pattern: string; + /** + * returns the data + * + * @param match array Result of the resolution of the regular expression + * @param params object sent by 'send' function + * @param headers object set by 'set' function + * @param context object the context of running the fixtures function + */ + fixtures(match: any, params: any, headers: any, context: any): string | { + status: number; + contentType: string; + statusText: string; + responseText: string; + } | { + status: number; + statusText: string; + contentType?: undefined; + responseText?: undefined; + } | null; + /** + * returns the result of the GET request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + get(match: any, data: any): { + body: any; + }; + /** + * returns the result of the POST request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + post(match: any, data: any): { + code: number; + body: any; + }; + put(match: any, data: any): { + code: number; + body: any; + }; + delete(match: any, data: any): { + code: number; + body: any; + }; + }, currentIndex: number, array: { + /** + * regular expression of URL + */ + pattern: string; + /** + * returns the data + * + * @param match array Result of the resolution of the regular expression + * @param params object sent by 'send' function + * @param headers object set by 'set' function + * @param context object the context of running the fixtures function + */ + fixtures(match: any, params: any, headers: any, context: any): string | { + status: number; + contentType: string; + statusText: string; + responseText: string; + } | { + status: number; + statusText: string; + contentType?: undefined; + responseText?: undefined; + } | null; + /** + * returns the result of the GET request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + get(match: any, data: any): { + body: any; + }; + /** + * returns the result of the POST request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + post(match: any, data: any): { + code: number; + body: any; + }; + put(match: any, data: any): { + code: number; + body: any; + }; + delete(match: any, data: any): { + code: number; + body: any; + }; + }[]) => { + /** + * regular expression of URL + */ + pattern: string; + /** + * returns the data + * + * @param match array Result of the resolution of the regular expression + * @param params object sent by 'send' function + * @param headers object set by 'set' function + * @param context object the context of running the fixtures function + */ + fixtures(match: any, params: any, headers: any, context: any): string | { + status: number; + contentType: string; + statusText: string; + responseText: string; + } | { + status: number; + statusText: string; + contentType?: undefined; + responseText?: undefined; + } | null; + /** + * returns the result of the GET request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + get(match: any, data: any): { + body: any; + }; + /** + * returns the result of the POST request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + post(match: any, data: any): { + code: number; + body: any; + }; + put(match: any, data: any): { + code: number; + body: any; + }; + delete(match: any, data: any): { + code: number; + body: any; + }; + }): { + /** + * regular expression of URL + */ + pattern: string; + /** + * returns the data + * + * @param match array Result of the resolution of the regular expression + * @param params object sent by 'send' function + * @param headers object set by 'set' function + * @param context object the context of running the fixtures function + */ + fixtures(match: any, params: any, headers: any, context: any): string | { + status: number; + contentType: string; + statusText: string; + responseText: string; + } | { + status: number; + statusText: string; + contentType?: undefined; + responseText?: undefined; + } | null; + /** + * returns the result of the GET request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + get(match: any, data: any): { + body: any; + }; + /** + * returns the result of the POST request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + post(match: any, data: any): { + code: number; + body: any; + }; + put(match: any, data: any): { + code: number; + body: any; + }; + delete(match: any, data: any): { + code: number; + body: any; + }; + }; + reduceRight(callbackfn: (previousValue: { + /** + * regular expression of URL + */ + pattern: string; + /** + * returns the data + * + * @param match array Result of the resolution of the regular expression + * @param params object sent by 'send' function + * @param headers object set by 'set' function + * @param context object the context of running the fixtures function + */ + fixtures(match: any, params: any, headers: any, context: any): string | { + status: number; + contentType: string; + statusText: string; + responseText: string; + } | { + status: number; + statusText: string; + contentType?: undefined; + responseText?: undefined; + } | null; + /** + * returns the result of the GET request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + get(match: any, data: any): { + body: any; + }; + /** + * returns the result of the POST request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + post(match: any, data: any): { + code: number; + body: any; + }; + put(match: any, data: any): { + code: number; + body: any; + }; + delete(match: any, data: any): { + code: number; + body: any; + }; + }, currentValue: { + /** + * regular expression of URL + */ + pattern: string; + /** + * returns the data + * + * @param match array Result of the resolution of the regular expression + * @param params object sent by 'send' function + * @param headers object set by 'set' function + * @param context object the context of running the fixtures function + */ + fixtures(match: any, params: any, headers: any, context: any): string | { + status: number; + contentType: string; + statusText: string; + responseText: string; + } | { + status: number; + statusText: string; + contentType?: undefined; + responseText?: undefined; + } | null; + /** + * returns the result of the GET request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + get(match: any, data: any): { + body: any; + }; + /** + * returns the result of the POST request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + post(match: any, data: any): { + code: number; + body: any; + }; + put(match: any, data: any): { + code: number; + body: any; + }; + delete(match: any, data: any): { + code: number; + body: any; + }; + }, currentIndex: number, array: { + /** + * regular expression of URL + */ + pattern: string; + /** + * returns the data + * + * @param match array Result of the resolution of the regular expression + * @param params object sent by 'send' function + * @param headers object set by 'set' function + * @param context object the context of running the fixtures function + */ + fixtures(match: any, params: any, headers: any, context: any): string | { + status: number; + contentType: string; + statusText: string; + responseText: string; + } | { + status: number; + statusText: string; + contentType?: undefined; + responseText?: undefined; + } | null; + /** + * returns the result of the GET request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + get(match: any, data: any): { + body: any; + }; + /** + * returns the result of the POST request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + post(match: any, data: any): { + code: number; + body: any; + }; + put(match: any, data: any): { + code: number; + body: any; + }; + delete(match: any, data: any): { + code: number; + body: any; + }; + }[]) => { + /** + * regular expression of URL + */ + pattern: string; + /** + * returns the data + * + * @param match array Result of the resolution of the regular expression + * @param params object sent by 'send' function + * @param headers object set by 'set' function + * @param context object the context of running the fixtures function + */ + fixtures(match: any, params: any, headers: any, context: any): string | { + status: number; + contentType: string; + statusText: string; + responseText: string; + } | { + status: number; + statusText: string; + contentType?: undefined; + responseText?: undefined; + } | null; + /** + * returns the result of the GET request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + get(match: any, data: any): { + body: any; + }; + /** + * returns the result of the POST request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + post(match: any, data: any): { + code: number; + body: any; + }; + put(match: any, data: any): { + code: number; + body: any; + }; + delete(match: any, data: any): { + code: number; + body: any; + }; + }, initialValue: { + /** + * regular expression of URL + */ + pattern: string; + /** + * returns the data + * + * @param match array Result of the resolution of the regular expression + * @param params object sent by 'send' function + * @param headers object set by 'set' function + * @param context object the context of running the fixtures function + */ + fixtures(match: any, params: any, headers: any, context: any): string | { + status: number; + contentType: string; + statusText: string; + responseText: string; + } | { + status: number; + statusText: string; + contentType?: undefined; + responseText?: undefined; + } | null; + /** + * returns the result of the GET request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + get(match: any, data: any): { + body: any; + }; + /** + * returns the result of the POST request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + post(match: any, data: any): { + code: number; + body: any; + }; + put(match: any, data: any): { + code: number; + body: any; + }; + delete(match: any, data: any): { + code: number; + body: any; + }; + }): { + /** + * regular expression of URL + */ + pattern: string; + /** + * returns the data + * + * @param match array Result of the resolution of the regular expression + * @param params object sent by 'send' function + * @param headers object set by 'set' function + * @param context object the context of running the fixtures function + */ + fixtures(match: any, params: any, headers: any, context: any): string | { + status: number; + contentType: string; + statusText: string; + responseText: string; + } | { + status: number; + statusText: string; + contentType?: undefined; + responseText?: undefined; + } | null; + /** + * returns the result of the GET request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + get(match: any, data: any): { + body: any; + }; + /** + * returns the result of the POST request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + post(match: any, data: any): { + code: number; + body: any; + }; + put(match: any, data: any): { + code: number; + body: any; + }; + delete(match: any, data: any): { + code: number; + body: any; + }; + }; + reduceRight(callbackfn: (previousValue: U_2, currentValue: { + /** + * regular expression of URL + */ + pattern: string; + /** + * returns the data + * + * @param match array Result of the resolution of the regular expression + * @param params object sent by 'send' function + * @param headers object set by 'set' function + * @param context object the context of running the fixtures function + */ + fixtures(match: any, params: any, headers: any, context: any): string | { + status: number; + contentType: string; + statusText: string; + responseText: string; + } | { + status: number; + statusText: string; + contentType?: undefined; + responseText?: undefined; + } | null; + /** + * returns the result of the GET request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + get(match: any, data: any): { + body: any; + }; + /** + * returns the result of the POST request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + post(match: any, data: any): { + code: number; + body: any; + }; + put(match: any, data: any): { + code: number; + body: any; + }; + delete(match: any, data: any): { + code: number; + body: any; + }; + }, currentIndex: number, array: { + /** + * regular expression of URL + */ + pattern: string; + /** + * returns the data + * + * @param match array Result of the resolution of the regular expression + * @param params object sent by 'send' function + * @param headers object set by 'set' function + * @param context object the context of running the fixtures function + */ + fixtures(match: any, params: any, headers: any, context: any): string | { + status: number; + contentType: string; + statusText: string; + responseText: string; + } | { + status: number; + statusText: string; + contentType?: undefined; + responseText?: undefined; + } | null; + /** + * returns the result of the GET request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + get(match: any, data: any): { + body: any; + }; + /** + * returns the result of the POST request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + post(match: any, data: any): { + code: number; + body: any; + }; + put(match: any, data: any): { + code: number; + body: any; + }; + delete(match: any, data: any): { + code: number; + body: any; + }; + }[]) => U_2, initialValue: U_2): U_2; + find(predicate: (this: void, value: { + /** + * regular expression of URL + */ + pattern: string; + /** + * returns the data + * + * @param match array Result of the resolution of the regular expression + * @param params object sent by 'send' function + * @param headers object set by 'set' function + * @param context object the context of running the fixtures function + */ + fixtures(match: any, params: any, headers: any, context: any): string | { + status: number; + contentType: string; + statusText: string; + responseText: string; + } | { + status: number; + statusText: string; + contentType?: undefined; + responseText?: undefined; + } | null; + /** + * returns the result of the GET request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + get(match: any, data: any): { + body: any; + }; + /** + * returns the result of the POST request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + post(match: any, data: any): { + code: number; + body: any; + }; + put(match: any, data: any): { + code: number; + body: any; + }; + delete(match: any, data: any): { + code: number; + body: any; + }; + }, index: number, obj: { + /** + * regular expression of URL + */ + pattern: string; + /** + * returns the data + * + * @param match array Result of the resolution of the regular expression + * @param params object sent by 'send' function + * @param headers object set by 'set' function + * @param context object the context of running the fixtures function + */ + fixtures(match: any, params: any, headers: any, context: any): string | { + status: number; + contentType: string; + statusText: string; + responseText: string; + } | { + status: number; + statusText: string; + contentType?: undefined; + responseText?: undefined; + } | null; + /** + * returns the result of the GET request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + get(match: any, data: any): { + body: any; + }; + /** + * returns the result of the POST request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + post(match: any, data: any): { + code: number; + body: any; + }; + put(match: any, data: any): { + code: number; + body: any; + }; + delete(match: any, data: any): { + code: number; + body: any; + }; + }[]) => value is S_2, thisArg?: any): S_2 | undefined; + find(predicate: (value: { + /** + * regular expression of URL + */ + pattern: string; + /** + * returns the data + * + * @param match array Result of the resolution of the regular expression + * @param params object sent by 'send' function + * @param headers object set by 'set' function + * @param context object the context of running the fixtures function + */ + fixtures(match: any, params: any, headers: any, context: any): string | { + status: number; + contentType: string; + statusText: string; + responseText: string; + } | { + status: number; + statusText: string; + contentType?: undefined; + responseText?: undefined; + } | null; + /** + * returns the result of the GET request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + get(match: any, data: any): { + body: any; + }; + /** + * returns the result of the POST request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + post(match: any, data: any): { + code: number; + body: any; + }; + put(match: any, data: any): { + code: number; + body: any; + }; + delete(match: any, data: any): { + code: number; + body: any; + }; + }, index: number, obj: { + /** + * regular expression of URL + */ + pattern: string; + /** + * returns the data + * + * @param match array Result of the resolution of the regular expression + * @param params object sent by 'send' function + * @param headers object set by 'set' function + * @param context object the context of running the fixtures function + */ + fixtures(match: any, params: any, headers: any, context: any): string | { + status: number; + contentType: string; + statusText: string; + responseText: string; + } | { + status: number; + statusText: string; + contentType?: undefined; + responseText?: undefined; + } | null; + /** + * returns the result of the GET request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + get(match: any, data: any): { + body: any; + }; + /** + * returns the result of the POST request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + post(match: any, data: any): { + code: number; + body: any; + }; + put(match: any, data: any): { + code: number; + body: any; + }; + delete(match: any, data: any): { + code: number; + body: any; + }; + }[]) => unknown, thisArg?: any): { + /** + * regular expression of URL + */ + pattern: string; + /** + * returns the data + * + * @param match array Result of the resolution of the regular expression + * @param params object sent by 'send' function + * @param headers object set by 'set' function + * @param context object the context of running the fixtures function + */ + fixtures(match: any, params: any, headers: any, context: any): string | { + status: number; + contentType: string; + statusText: string; + responseText: string; + } | { + status: number; + statusText: string; + contentType?: undefined; + responseText?: undefined; + } | null; + /** + * returns the result of the GET request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + get(match: any, data: any): { + body: any; + }; + /** + * returns the result of the POST request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + post(match: any, data: any): { + code: number; + body: any; + }; + put(match: any, data: any): { + code: number; + body: any; + }; + delete(match: any, data: any): { + code: number; + body: any; + }; + } | undefined; + findIndex(predicate: (value: { + /** + * regular expression of URL + */ + pattern: string; + /** + * returns the data + * + * @param match array Result of the resolution of the regular expression + * @param params object sent by 'send' function + * @param headers object set by 'set' function + * @param context object the context of running the fixtures function + */ + fixtures(match: any, params: any, headers: any, context: any): string | { + status: number; + contentType: string; + statusText: string; + responseText: string; + } | { + status: number; + statusText: string; + contentType?: undefined; + responseText?: undefined; + } | null; + /** + * returns the result of the GET request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + get(match: any, data: any): { + body: any; + }; + /** + * returns the result of the POST request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + post(match: any, data: any): { + code: number; + body: any; + }; + put(match: any, data: any): { + code: number; + body: any; + }; + delete(match: any, data: any): { + code: number; + body: any; + }; + }, index: number, obj: { + /** + * regular expression of URL + */ + pattern: string; + /** + * returns the data + * + * @param match array Result of the resolution of the regular expression + * @param params object sent by 'send' function + * @param headers object set by 'set' function + * @param context object the context of running the fixtures function + */ + fixtures(match: any, params: any, headers: any, context: any): string | { + status: number; + contentType: string; + statusText: string; + responseText: string; + } | { + status: number; + statusText: string; + contentType?: undefined; + responseText?: undefined; + } | null; + /** + * returns the result of the GET request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + get(match: any, data: any): { + body: any; + }; + /** + * returns the result of the POST request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + post(match: any, data: any): { + code: number; + body: any; + }; + put(match: any, data: any): { + code: number; + body: any; + }; + delete(match: any, data: any): { + code: number; + body: any; + }; + }[]) => unknown, thisArg?: any): number; + fill(value: { + /** + * regular expression of URL + */ + pattern: string; + /** + * returns the data + * + * @param match array Result of the resolution of the regular expression + * @param params object sent by 'send' function + * @param headers object set by 'set' function + * @param context object the context of running the fixtures function + */ + fixtures(match: any, params: any, headers: any, context: any): string | { + status: number; + contentType: string; + statusText: string; + responseText: string; + } | { + status: number; + statusText: string; + contentType?: undefined; + responseText?: undefined; + } | null; + /** + * returns the result of the GET request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + get(match: any, data: any): { + body: any; + }; + /** + * returns the result of the POST request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + post(match: any, data: any): { + code: number; + body: any; + }; + put(match: any, data: any): { + code: number; + body: any; + }; + delete(match: any, data: any): { + code: number; + body: any; + }; + }, start?: number | undefined, end?: number | undefined): { + /** + * regular expression of URL + */ + pattern: string; + /** + * returns the data + * + * @param match array Result of the resolution of the regular expression + * @param params object sent by 'send' function + * @param headers object set by 'set' function + * @param context object the context of running the fixtures function + */ + fixtures(match: any, params: any, headers: any, context: any): string | { + status: number; + contentType: string; + statusText: string; + responseText: string; + } | { + status: number; + statusText: string; + contentType?: undefined; + responseText?: undefined; + } | null; + /** + * returns the result of the GET request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + get(match: any, data: any): { + body: any; + }; + /** + * returns the result of the POST request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + post(match: any, data: any): { + code: number; + body: any; + }; + put(match: any, data: any): { + code: number; + body: any; + }; + delete(match: any, data: any): { + code: number; + body: any; + }; + }[]; + copyWithin(target: number, start: number, end?: number | undefined): { + /** + * regular expression of URL + */ + pattern: string; + /** + * returns the data + * + * @param match array Result of the resolution of the regular expression + * @param params object sent by 'send' function + * @param headers object set by 'set' function + * @param context object the context of running the fixtures function + */ + fixtures(match: any, params: any, headers: any, context: any): string | { + status: number; + contentType: string; + statusText: string; + responseText: string; + } | { + status: number; + statusText: string; + contentType?: undefined; + responseText?: undefined; + } | null; + /** + * returns the result of the GET request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + get(match: any, data: any): { + body: any; + }; + /** + * returns the result of the POST request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + post(match: any, data: any): { + code: number; + body: any; + }; + put(match: any, data: any): { + code: number; + body: any; + }; + delete(match: any, data: any): { + code: number; + body: any; + }; + }[]; + entries(): IterableIterator<[number, { + /** + * regular expression of URL + */ + pattern: string; + /** + * returns the data + * + * @param match array Result of the resolution of the regular expression + * @param params object sent by 'send' function + * @param headers object set by 'set' function + * @param context object the context of running the fixtures function + */ + fixtures(match: any, params: any, headers: any, context: any): string | { + status: number; + contentType: string; + statusText: string; + responseText: string; + } | { + status: number; + statusText: string; + contentType?: undefined; + responseText?: undefined; + } | null; + /** + * returns the result of the GET request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + get(match: any, data: any): { + body: any; + }; + /** + * returns the result of the POST request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + post(match: any, data: any): { + code: number; + body: any; + }; + put(match: any, data: any): { + code: number; + body: any; + }; + delete(match: any, data: any): { + code: number; + body: any; + }; + }]>; + keys(): IterableIterator; + values(): IterableIterator<{ + /** + * regular expression of URL + */ + pattern: string; + /** + * returns the data + * + * @param match array Result of the resolution of the regular expression + * @param params object sent by 'send' function + * @param headers object set by 'set' function + * @param context object the context of running the fixtures function + */ + fixtures(match: any, params: any, headers: any, context: any): string | { + status: number; + contentType: string; + statusText: string; + responseText: string; + } | { + status: number; + statusText: string; + contentType?: undefined; + responseText?: undefined; + } | null; + /** + * returns the result of the GET request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + get(match: any, data: any): { + body: any; + }; + /** + * returns the result of the POST request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + post(match: any, data: any): { + code: number; + body: any; + }; + put(match: any, data: any): { + code: number; + body: any; + }; + delete(match: any, data: any): { + code: number; + body: any; + }; + }>; + includes(searchElement: { + /** + * regular expression of URL + */ + pattern: string; + /** + * returns the data + * + * @param match array Result of the resolution of the regular expression + * @param params object sent by 'send' function + * @param headers object set by 'set' function + * @param context object the context of running the fixtures function + */ + fixtures(match: any, params: any, headers: any, context: any): string | { + status: number; + contentType: string; + statusText: string; + responseText: string; + } | { + status: number; + statusText: string; + contentType?: undefined; + responseText?: undefined; + } | null; + /** + * returns the result of the GET request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + get(match: any, data: any): { + body: any; + }; + /** + * returns the result of the POST request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + post(match: any, data: any): { + code: number; + body: any; + }; + put(match: any, data: any): { + code: number; + body: any; + }; + delete(match: any, data: any): { + code: number; + body: any; + }; + }, fromIndex?: number | undefined): boolean; + [Symbol.iterator](): IterableIterator<{ + /** + * regular expression of URL + */ + pattern: string; + /** + * returns the data + * + * @param match array Result of the resolution of the regular expression + * @param params object sent by 'send' function + * @param headers object set by 'set' function + * @param context object the context of running the fixtures function + */ + fixtures(match: any, params: any, headers: any, context: any): string | { + status: number; + contentType: string; + statusText: string; + responseText: string; + } | { + status: number; + statusText: string; + contentType?: undefined; + responseText?: undefined; + } | null; + /** + * returns the result of the GET request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + get(match: any, data: any): { + body: any; + }; + /** + * returns the result of the POST request + * + * @param match array Result of the resolution of the regular expression + * @param data mixed Data returns by `fixtures` attribute + */ + post(match: any, data: any): { + code: number; + body: any; + }; + put(match: any, data: any): { + code: number; + body: any; + }; + delete(match: any, data: any): { + code: number; + body: any; + }; + }>; + [Symbol.unscopables](): { + copyWithin: boolean; + entries: boolean; + fill: boolean; + find: boolean; + findIndex: boolean; + keys: boolean; + values: boolean; + }; +}; +export = _exports; diff --git a/libs/api/superagent-mock-config.js b/libs/api/superagent-mock-config.js deleted file mode 100644 index a865901..0000000 --- a/libs/api/superagent-mock-config.js +++ /dev/null @@ -1,175 +0,0 @@ -"use strict"; - -// ./superagent-mock-config.js file -module.exports = [{ - /** - * regular expression of URL - */ - pattern: 'http://www.example.com(.*)', - - /** - * returns the data - * - * @param match array Result of the resolution of the regular expression - * @param params object sent by 'send' function - * @param headers object set by 'set' function - * @param context object the context of running the fixtures function - */ - fixtures: function fixtures(match, params, headers, context) { - /** - * Returning error codes example: - * request.get('https://domain.example/404').end(function(err, res){ - * console.log(err); // 404 - * console.log(res.notFound); // true - * }) - */ - if (match[1] === '/404') { - throw new Error(404); - } - /** - * Checking on parameters example: - * request.get('https://domain.example/hero').send({superhero: "superman"}).end(function(err, res){ - * console.log(res.body); // "Your hero: superman" - * }) - */ - - - if (match[1] === '/hero') { - if (params.superhero) { - return "Your hero:".concat(params.superhero); - } - - return 'You didnt choose a hero'; - } - /** - * Checking on headers example: - * request.get('https://domain.example/authorized_endpoint').set({Authorization: "9382hfih1834h"}).end(function(err, res){ - * console.log(res.body); // "Authenticated!" - * }) - */ - - - if (match[1] === '/api/test/12') { - if (headers.Authorization && headers['X-CSRF-Token']) { - return { - status: 200, - contentType: 'application/json', - statusText: 'OK', - responseText: JSON.stringify([{ - id: 1, - name: 'Starter App' - }]) - }; - } - - return { - status: 401, - statusText: 'Unauthorized' - }; - } - /** - * Cancelling the mocking for a specific matched route example: - * request.get('https://domain.example/server_test').end(function(err, res){ - * console.log(res.body); // (whatever the actual server would have returned) - * }) - */ - - - if (match[1] === '/api/test/full') { - return { - status: 200, - contentType: 'application/json', - statusText: 'OK', - responseText: JSON.stringify([{ - id: 1, - name: 'Starter App' - }]) - }; - } - /** - * Delaying the response with a specific number of milliseconds: - * request.get('https://domain.example/delay_test').end(function(err, res){ - * console.log(res.body); // This log will be written after the delay time has passed - * }) - */ - - - if (match[1] === '/delay_test') { - context.delay = 3000; // This will delay the response by 3 seconds - - return 'zzZ'; - } - /** - * Mocking progress events: - * request.get('https://domain.example/progress_test') - * .on('progress', function (e) { console.log(e.percent + '%'); }) - * .end(function(err, res){ - * console.log(res.body); // This log will be written after all progress events emitted - * }) - */ - - - if (match[1] === '/progress_test') { - context.progress = { - parts: 3, - // The number of progress events to emit one after the other with - // linear progress - // (Meaning, loaded will be [total/parts]) - delay: 1000, - // [optional] The delay of emitting each of the progress events - // by ms - // (default is 0 unless context.delay specified, then it's - // [delay/parts]) - total: 100, - // [optional] The total as it will appear in the progress - // event (default is 100) - lengthComputable: true, - // [optional] The same as it will appear in the progress - // event (default is true) - direction: 'upload' // [optional] superagent adds 'download'/'upload' direction - // to the event (default is 'upload') - - }; - return 'Hundred percent!'; - } - - return null; - }, - - /** - * returns the result of the GET request - * - * @param match array Result of the resolution of the regular expression - * @param data mixed Data returns by `fixtures` attribute - */ - get: function get(match, data) { - return { - body: data - }; - }, - - /** - * returns the result of the POST request - * - * @param match array Result of the resolution of the regular expression - * @param data mixed Data returns by `fixtures` attribute - */ - post: function post(match, data) { - return { - code: 201, - body: data - }; - }, - put: function put(match, data) { - return { - code: 202, - body: data - }; - }, - "delete": function _delete(match, data) { - return { - code: 204, - body: data - }; - } -}]; \ No newline at end of file diff --git a/libs/communications/communicator.d.ts b/libs/communications/communicator.d.ts new file mode 100644 index 0000000..7f06f03 --- /dev/null +++ b/libs/communications/communicator.d.ts @@ -0,0 +1,14 @@ +export function postMessage(payload: any, domain?: string): void; +export function broadcastRawMessage(payload: any, domain?: string): void; +export function broadcastMessage(payload: any, domain?: string): void; +export default class Communicator { + static parseMessageFromEvent(e: any): any; + constructor(domain?: string); + domain: string; + enableListener(handler: any): void; + messageEvent: string | undefined; + handleCommFunc: ((e: any) => any) | undefined; + removeListener(): void; + comm(payload: any): void; + broadcast(payload: any): void; +} diff --git a/libs/communications/communicator.js b/libs/communications/communicator.js deleted file mode 100644 index 3580ff4..0000000 --- a/libs/communications/communicator.js +++ /dev/null @@ -1,108 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.postMessage = postMessage; -exports.broadcastRawMessage = broadcastRawMessage; -exports.broadcastMessage = broadcastMessage; -exports["default"] = void 0; - -var _lodash = _interopRequireDefault(require("lodash")); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a 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); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } - -// Just post to the parent -function postMessage(payload) { - var domain = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '*'; - parent.postMessage(JSON.stringify(payload), domain); -} // Post a payload without changing it up the entire chain of parent windows. - - -function broadcastRawMessage(payload) { - var domain = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '*'; - var parents = new Set(); - var p = parent; - - while (!parents.has(p)) { - p.postMessage(payload, domain); - parents.add(p); - p = p.parent; - } -} // Post up the entire chain of parent windows. - - -function broadcastMessage(payload) { - var domain = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '*'; - broadcastRawMessage(JSON.stringify(payload), domain); -} - -var Communicator = /*#__PURE__*/function () { - function Communicator() { - var domain = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '*'; - - _classCallCheck(this, Communicator); - - this.domain = domain; - } - - _createClass(Communicator, [{ - key: "enableListener", - value: function enableListener(handler) { - // Create IE + others compatible event handler - var eventMethod = window.addEventListener ? 'addEventListener' : 'attachEvent'; - var eventer = window[eventMethod]; - this.messageEvent = eventMethod === 'attachEvent' ? 'onmessage' : 'message'; // Listen to message from child window - - this.handleCommFunc = function (e) { - return handler.handleComm(e); - }; - - eventer(this.messageEvent, this.handleCommFunc, false); - } - }, { - key: "removeListener", - value: function removeListener() { - // Create IE + others compatible event handler - var eventMethod = window.removeEventListener ? 'removeEventListener' : 'detachEvent'; - var eventer = window[eventMethod]; - eventer(this.messageEvent, this.handleCommFunc, false); - } - }, { - key: "comm", - value: function comm(payload) { - postMessage(payload, this.domain); - } - }, { - key: "broadcast", - value: function broadcast(payload) { - broadcastMessage(payload, this.domain); - } - }], [{ - key: "parseMessageFromEvent", - value: function parseMessageFromEvent(e) { - var message = e.data; - - if (_lodash["default"].isString(e.data)) { - try { - message = JSON.parse(e.data); - } catch (ex) { - // We can't parse the data as JSON just send it through as a string - message = e.data; - } - } - - return message; - } - }]); - - return Communicator; -}(); - -exports["default"] = Communicator; \ No newline at end of file diff --git a/libs/components/Banner/index.d.ts b/libs/components/Banner/index.d.ts new file mode 100644 index 0000000..a348d99 --- /dev/null +++ b/libs/components/Banner/index.d.ts @@ -0,0 +1,16 @@ +export function Banner(props: any): JSX.Element; +export namespace Banner { + namespace propTypes { + const heading: PropTypes.Requireable; + const message: PropTypes.Validator; + const type: PropTypes.Requireable; + const icon: PropTypes.Requireable; + const overrideClass: PropTypes.Requireable; + } +} +export const BannerTypes: Readonly<{ + ERROR: string; + RELIEF: string; + WARNING: string; +}>; +import PropTypes from "prop-types"; diff --git a/libs/components/Banner/index.js b/libs/components/Banner/index.js deleted file mode 100644 index 421e7de..0000000 --- a/libs/components/Banner/index.js +++ /dev/null @@ -1,64 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.Banner = Banner; -exports.BannerTypes = void 0; - -var _react = _interopRequireDefault(require("react")); - -var _propTypes = _interopRequireDefault(require("prop-types")); - -var _classnames = _interopRequireDefault(require("classnames")); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } - -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } - -(function _() { - var styles = ".Banner {\n background: gray;\n display: -webkit-box;\n display: -ms-flexbox;\n display: -webkit-flex;\n display: flex;\n -webkit-align-items: center;\n align-items: center;\n min-height: 4rem;\n padding: 0.8rem 1.2rem;\n border-radius: 0.3rem;\n margin: 20px 0; }\n .Banner > i {\n font-size: 2.4rem;\n color: #fff;\n margin-right: 1.2rem; }\n .Banner h3 {\n color: #fff;\n font-size: 1.4rem;\n font-family: 'Lato', sans-serif;\n font-weight: 700;\n margin: 0;\n margin-right: .5rem; }\n .Banner__content {\n color: #fff;\n font-family: 'Lato', sans-serif;\n font-weight: normal;\n font-size: 1.4rem; }\n .Banner__content span {\n margin-right: 0.8rem; }\n .Banner--error {\n background: #f00; }\n .Banner--warning {\n background: #ff8300; }\n .Banner--relief {\n background: #1ea7fd; }\n"; - var fileName = "reph_styles"; - var element = document.querySelector("style[data-sass-component='reph_styles']"); - - if (!element) { - var styleBlock = document.createElement("style"); - styleBlock.innerHTML = styles; - styleBlock.setAttribute("data-sass-component", fileName); - document.head.appendChild(styleBlock); - } else { - element.innerHTML = styles; - } -})(); - -var BannerTypes = Object.freeze({ - ERROR: 'error', - RELIEF: 'relief', - WARNING: 'warning' -}); -exports.BannerTypes = BannerTypes; - -function Banner(props) { - var heading = props.heading, - message = props.message, - type = props.type, - icon = props.icon, - overrideClass = props.overrideClass; - var baseClass = Boolean(overrideClass) ? overrideClass : 'Banner'; - return /*#__PURE__*/_react["default"].createElement("div", { - className: (0, _classnames["default"])("".concat(baseClass), _defineProperty({}, "".concat(baseClass, "--").concat(type), Boolean(type))) - }, !!icon && /*#__PURE__*/_react["default"].createElement("i", { - className: "material-icons" - }, icon), !!heading && /*#__PURE__*/_react["default"].createElement("h3", null, heading), /*#__PURE__*/_react["default"].createElement("div", { - className: "".concat(baseClass, "__content"), - "data-testid": "msg" - }, message)); -} - -Banner.propTypes = { - heading: _propTypes["default"].string, - message: _propTypes["default"].string.isRequired, - type: _propTypes["default"].string, - icon: _propTypes["default"].string, - overrideClass: _propTypes["default"].string -}; \ No newline at end of file diff --git a/libs/components/Button/index.d.ts b/libs/components/Button/index.d.ts new file mode 100644 index 0000000..f595d26 --- /dev/null +++ b/libs/components/Button/index.d.ts @@ -0,0 +1,25 @@ +import React from 'react'; +import './styles.css'; +export interface Props { + ariaOptions?: Object; + buttonType?: ButtonType; + children: React.ReactNode; + classes?: string; + color?: string; + disabled?: boolean; + noBold?: boolean; + submit?: boolean; + rest?: Object; + onClick?: (event: React.MouseEvent) => void; +} +export declare enum ButtonType { + primary = "primary", + secondary = "secondary", + large = "large", + primaryLarge = "primary-large", + small = "small", + sort = "sort", + gray = "gray", + icon = "icon" +} +export declare const Button: React.ForwardRefExoticComponent>; diff --git a/libs/components/Card/index.d.ts b/libs/components/Card/index.d.ts new file mode 100644 index 0000000..f7d8c47 --- /dev/null +++ b/libs/components/Card/index.d.ts @@ -0,0 +1,11 @@ +import React from 'react'; +import './styles.css'; +export interface Props { + classOverride?: string; + classes?: string; + title: string; + subtitle?: string; + blank?: boolean; + children?: React.ReactNode; +} +export default function Card(props: Props): JSX.Element; diff --git a/libs/components/GqlStatus/index.d.ts b/libs/components/GqlStatus/index.d.ts new file mode 100644 index 0000000..686d59f --- /dev/null +++ b/libs/components/GqlStatus/index.d.ts @@ -0,0 +1,12 @@ +declare function GqlStatus(props: any): JSX.Element | null; +declare namespace GqlStatus { + namespace propTypes { + const loading: PropTypes.Requireable; + const error: PropTypes.Requireable; + }>>; + const loadMessage: PropTypes.Requireable; + } +} +export default GqlStatus; +import PropTypes from "prop-types"; diff --git a/libs/components/GqlStatus/index.js b/libs/components/GqlStatus/index.js deleted file mode 100644 index 9649191..0000000 --- a/libs/components/GqlStatus/index.js +++ /dev/null @@ -1,40 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = GqlStatus; - -var _react = _interopRequireDefault(require("react")); - -var _propTypes = _interopRequireDefault(require("prop-types")); - -var _atomicjolt_loader = _interopRequireDefault(require("../common/atomicjolt_loader")); - -var _inline_error = _interopRequireDefault(require("../common/errors/inline_error")); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } - -function GqlStatus(props) { - if (props.loading) { - return /*#__PURE__*/_react["default"].createElement(_atomicjolt_loader["default"], { - message: props.loadMessage - }); - } - - if (props.error) { - return /*#__PURE__*/_react["default"].createElement(_inline_error["default"], { - error: props.error.message - }); - } - - return null; -} - -GqlStatus.propTypes = { - loading: _propTypes["default"].bool, - error: _propTypes["default"].shape({ - message: _propTypes["default"].string - }), - loadMessage: _propTypes["default"].string -}; \ No newline at end of file diff --git a/libs/components/Menu/index.d.ts b/libs/components/Menu/index.d.ts new file mode 100644 index 0000000..54c1b48 --- /dev/null +++ b/libs/components/Menu/index.d.ts @@ -0,0 +1,8 @@ +declare function Menu(props: any): any; +declare namespace Menu { + namespace propTypes { + const renderChildren: PropTypes.Validator<(...args: any[]) => any>; + } +} +export default Menu; +import PropTypes from "prop-types"; diff --git a/libs/components/SortableHeader/index.d.ts b/libs/components/SortableHeader/index.d.ts new file mode 100644 index 0000000..76c0264 --- /dev/null +++ b/libs/components/SortableHeader/index.d.ts @@ -0,0 +1,22 @@ +import React from 'react'; +import { SortDirection } from '../Table'; +import './styles.css'; +export interface Props { + children: React.ReactNode; + rowSpan: number; + onSort: Function; + sortPath: string; + ariaName: string; + currentPath: string; + currentDirection: SortDirection; + tooltip: React.ReactNode; + searchable: boolean; + searchTitle: string; + onSearch: Function; + searchTerm: string; + searchResultCount: number; + announceAssertive: Function; + initializing: boolean; +} +declare const _default: (props: any) => JSX.Element; +export default _default; diff --git a/libs/components/SortableHeader/utils.d.ts b/libs/components/SortableHeader/utils.d.ts new file mode 100644 index 0000000..5d73e0d --- /dev/null +++ b/libs/components/SortableHeader/utils.d.ts @@ -0,0 +1 @@ +export declare const getID: () => string; diff --git a/libs/components/StoryWrapper/index.d.ts b/libs/components/StoryWrapper/index.d.ts new file mode 100644 index 0000000..4141151 --- /dev/null +++ b/libs/components/StoryWrapper/index.d.ts @@ -0,0 +1 @@ +export default function StoryWrapper(props: any): JSX.Element; diff --git a/libs/components/StoryWrapper/index.js b/libs/components/StoryWrapper/index.js deleted file mode 100644 index ad0433d..0000000 --- a/libs/components/StoryWrapper/index.js +++ /dev/null @@ -1,24 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = StoryWrapper; - -var _react = _interopRequireDefault(require("react")); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } - -function StoryWrapper(props) { - var children = props.children; - return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("link", { - rel: "preconnect", - href: "https://fonts.gstatic.com" - }), /*#__PURE__*/_react["default"].createElement("link", { - href: "https://fonts.googleapis.com/css2?family=Lato:wght@400;700&display=swap", - rel: "stylesheet" - }), /*#__PURE__*/_react["default"].createElement("link", { - href: "https://fonts.googleapis.com/icon?family=Material+Icons", - rel: "stylesheet" - })), /*#__PURE__*/_react["default"].createElement("div", null, children)); -} \ No newline at end of file diff --git a/libs/components/SurveyItemLoading/index.d.ts b/libs/components/SurveyItemLoading/index.d.ts new file mode 100644 index 0000000..83dfc1a --- /dev/null +++ b/libs/components/SurveyItemLoading/index.d.ts @@ -0,0 +1,2 @@ +export default SurveyItemLoading; +declare function SurveyItemLoading(): JSX.Element; diff --git a/libs/components/Table/index.d.ts b/libs/components/Table/index.d.ts new file mode 100644 index 0000000..5079645 --- /dev/null +++ b/libs/components/Table/index.d.ts @@ -0,0 +1,21 @@ +/// +import './styles.css'; +export declare enum SortDirection { + asc = "ASC", + desc = "DESC" +} +export declare type ColumnType = { + dataName: T; + displayName: string; + hidden?: boolean; +}; +export interface Props { + columns: ColumnType[]; + defaultSortColumn: T; + searchTerm: string; + searchColumn: T; + headClasses?: string; + onSearch: (arg: string) => void; + renderTableContent: (...arg: any[]) => any; +} +export declare const composeTable: () => ({ columns, searchTerm, searchColumn, headClasses, defaultSortColumn, onSearch, renderTableContent, }: Props) => JSX.Element; diff --git a/libs/components/TableHead/index.d.ts b/libs/components/TableHead/index.d.ts new file mode 100644 index 0000000..c2c0b1d --- /dev/null +++ b/libs/components/TableHead/index.d.ts @@ -0,0 +1,14 @@ +/// +import { SortDirection, ColumnType } from '../Table'; +interface Props { + columns: ColumnType[]; + searchColumn: T; + sortColumn: T; + sortDirection: SortDirection; + searchTerm: string; + classes?: string; + onSearch: (searchTerm: string) => void; + onSort: (newSortDirection: SortDirection, newSortColumn: T) => void; +} +export declare const composeTableHead: () => ({ columns, searchColumn, sortColumn, sortDirection, searchTerm, classes, onSearch, onSort, }: Props) => JSX.Element; +export {}; diff --git a/libs/components/TableRow/index.d.ts b/libs/components/TableRow/index.d.ts new file mode 100644 index 0000000..bd38ad3 --- /dev/null +++ b/libs/components/TableRow/index.d.ts @@ -0,0 +1,10 @@ +import React from 'react'; +import { ColumnType } from '../Table'; +import './styles.scss'; +interface Props { + data: any; + renderData: (data: any, column: ColumnType) => React.ReactNode; + columns: ColumnType[]; +} +export declare function TableRow({ data, columns, renderData, }: Props): JSX.Element; +export {}; diff --git a/libs/components/TableTextBody/index.d.ts b/libs/components/TableTextBody/index.d.ts new file mode 100644 index 0000000..d5e5029 --- /dev/null +++ b/libs/components/TableTextBody/index.d.ts @@ -0,0 +1,14 @@ +export default TableTextBody; +declare function TableTextBody({ className, columns, children }: { + className: any; + columns: any; + children: any; +}): JSX.Element; +declare namespace TableTextBody { + namespace propTypes { + const className: PropTypes.Requireable; + const columns: PropTypes.Requireable; + const children: PropTypes.Requireable; + } +} +import PropTypes from "prop-types"; diff --git a/libs/components/common/atomicjolt_loader.d.ts b/libs/components/common/atomicjolt_loader.d.ts new file mode 100644 index 0000000..d935422 --- /dev/null +++ b/libs/components/common/atomicjolt_loader.d.ts @@ -0,0 +1,19 @@ +export class Loader extends React.PureComponent { + static propTypes: { + message: PropTypes.Requireable; + logoColor: PropTypes.Requireable; + backgroundColor1: PropTypes.Requireable; + backgroundColor2: PropTypes.Requireable; + aj_loader: PropTypes.Requireable; + backgroundColor1: PropTypes.Requireable; + backgroundColor2: PropTypes.Requireable; + }>>; + }; + constructor(props: any); + constructor(props: any, context: any); +} +declare var _default: (props: any) => JSX.Element; +export default _default; +import React from "react"; +import PropTypes from "prop-types"; diff --git a/libs/components/common/atomicjolt_loader.js b/libs/components/common/atomicjolt_loader.js deleted file mode 100644 index 8e9237b..0000000 --- a/libs/components/common/atomicjolt_loader.js +++ /dev/null @@ -1,118 +0,0 @@ -"use strict"; - -function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = exports.Loader = void 0; - -var _react = _interopRequireDefault(require("react")); - -var _propTypes = _interopRequireDefault(require("prop-types")); - -var _styles = _interopRequireDefault(require("../../libs/styles")); - -var _settings = require("../settings"); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a 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); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } - -function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } - -function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } - -function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } - -function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } - -function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } - -function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } - -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } - -function renderStyles() { - var logoColor = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '#444'; - var backgroundColor1 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '#FFEA00'; - var backgroundColor2 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '#FFFF56'; - (0, _styles["default"])(".aj-loader{\n position: relative;\n padding: 48px 0;\n }"); - (0, _styles["default"])(".atomicjolt-loading-animation {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-direction: column;\n margin: 0 auto;\n width: 72px;\n height: 72px;\n border-radius: 50%;\n background-image: linear-gradient(to top right, ".concat(backgroundColor1, ", ").concat(backgroundColor2, ");\n box-shadow: -2px 3px 6px rgba(0,0,0,0.25);\n }")); - (0, _styles["default"])(".atomicjolt-loading-animation svg {\n width: 38px;\n position: relative;\n left: -2px;\n top: -1px;\n }"); - (0, _styles["default"])(".atomicjolt-loading-animation svg polygon, .atomicjolt-loading-animation svg polyline {\n fill: none;\n stroke: ".concat(logoColor, ";\n stroke-linecap: round;\n stroke-linejoin: round;\n stroke-width: 8px;\n }")); - (0, _styles["default"])(".atomicjolt-loading-animation svg .cls-1 {\n stroke-dasharray: 0 250;\n animation: line1 1.5s infinite cubic-bezier(0.455, 0.03, 0.515, 0.955);\n }"); - (0, _styles["default"])(".atomicjolt-loading-animation svg .cls-2 {\n stroke-dasharray: 0 270;\n animation: line2 1.5s infinite cubic-bezier(0.455, 0.03, 0.515, 0.955);\n }"); - (0, _styles["default"])("@keyframes line1 {\n 0% {\n stroke-dasharray: 0 250;\n }\n 40% {\n stroke-dasharray: 250 250;\n }\n 60% {\n stroke-dasharray: 250 250;\n }\n 100% {\n stroke-dasharray: 0 250;\n }\n }"); - (0, _styles["default"])("@keyframes line2 {\n 0% {\n stroke-dasharray: 0 270;\n }\n 40% {\n stroke-dasharray: 270 270;\n }\n 60% {\n stroke-dasharray: 270 270;\n }\n 100% {\n stroke-dasharray: 0 270;\n }\n }"); - (0, _styles["default"])(".loader-text{\n font-size: 24px;\n font-family: 'Lato', Arial, Helvetica, sans-serif;\n font-weight: 500;\n color: #222;\n text-align: center;\n padding-top: 48px;\n margin: 0;\n }"); -} - -var Loader = /*#__PURE__*/function (_React$PureComponent) { - _inherits(Loader, _React$PureComponent); - - var _super = _createSuper(Loader); - - function Loader() { - _classCallCheck(this, Loader); - - return _super.apply(this, arguments); - } - - _createClass(Loader, [{ - key: "render", - value: function render() { - var ajLoader = 'aj_loader' in this.props.settings ? this.props.settings.aj_loader : null; - var logoColor = ajLoader || this.props.logoColor || '#444'; - var backgroundColor1 = ajLoader && ajLoader.backgroundColor1 || this.props.backgroundColor1 || '#FFEA00'; - var backgroundColor2 = ajLoader && ajLoader.backgroundColor2 || this.props.backgroundColor2 || '#FFFF56'; - renderStyles(logoColor, backgroundColor1, backgroundColor2); - return /*#__PURE__*/_react["default"].createElement("div", { - className: "aj-loader" - }, /*#__PURE__*/_react["default"].createElement("div", { - className: "atomicjolt-loading-animation" - }, /*#__PURE__*/_react["default"].createElement("svg", { - xmlns: "http://www.w3.org/2000/svg", - viewBox: "0 0 91.87 114.09", - role: "img", - "aria-label": "loading" - }, /*#__PURE__*/_react["default"].createElement("g", { - "data-name": "Layer 2" - }, /*#__PURE__*/_react["default"].createElement("polygon", { - className: "cls-1", - points: "40.45 111.32 89.11 99.26 71.35 19.9 21.1 89.71 40.45 111.32" - }), /*#__PURE__*/_react["default"].createElement("polyline", { - className: "cls-2", - points: "50.67 2.77 2.77 69.96 25.47 94.65 66.36 84.13 50.67 2.77 71.35 19.9" - })))), /*#__PURE__*/_react["default"].createElement("p", { - className: "loader-text" - }, this.props.message)); - } - }]); - - return Loader; -}(_react["default"].PureComponent); - -exports.Loader = Loader; - -_defineProperty(Loader, "propTypes", { - message: _propTypes["default"].string, - logoColor: _propTypes["default"].string, - backgroundColor1: _propTypes["default"].string, - backgroundColor2: _propTypes["default"].string, - aj_loader: _propTypes["default"].shape({ - logoColor: _propTypes["default"].string, - backgroundColor1: _propTypes["default"].string, - backgroundColor2: _propTypes["default"].string - }) -}); - -var _default = (0, _settings.withSettings)(Loader); - -exports["default"] = _default; \ No newline at end of file diff --git a/libs/components/common/errors/inline_error.d.ts b/libs/components/common/errors/inline_error.d.ts new file mode 100644 index 0000000..b769794 --- /dev/null +++ b/libs/components/common/errors/inline_error.d.ts @@ -0,0 +1,9 @@ +export default class InlineError extends React.PureComponent { + static propTypes: { + error: PropTypes.Requireable; + }; + constructor(props: any); + constructor(props: any, context: any); +} +import React from "react"; +import PropTypes from "prop-types"; diff --git a/libs/components/common/errors/inline_error.js b/libs/components/common/errors/inline_error.js deleted file mode 100644 index 621aefa..0000000 --- a/libs/components/common/errors/inline_error.js +++ /dev/null @@ -1,80 +0,0 @@ -"use strict"; - -function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; - -var _react = _interopRequireDefault(require("react")); - -var _propTypes = _interopRequireDefault(require("prop-types")); - -var _styles = _interopRequireDefault(require("../../../libs/styles")); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a 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); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } - -function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } - -function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } - -function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } - -function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } - -function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } - -function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } - -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } - -function renderStyles() { - (0, _styles["default"])(".error-banner {\n display: -webkit-box;\n display: -ms-flexbox;\n display: -webkit-flex;\n display: flex;\n -webkit-align-items: center;\n align-items: center;\n min-height: 4rem;\n background: #f00;\n padding: 0.8rem 1.2rem;\n border-radius: 0.3rem;\n margin: 20px 0;\n }"); - (0, _styles["default"])(".error-banner > i {\n font-size: 2.4rem;\n color: #fff;\n margin-right: 1.2rem;\n }"); - (0, _styles["default"])(".error-banner h3 {\n color: #fff;\n font-size: 1.4rem;\n font-family: 'montserratbold';\n font-weight: normal;\n margin: 0;\n margin-right: 3.2rem;\n }"); - (0, _styles["default"])(".error-banner__content {\n color: #fff;\n font-family: 'montserratregular';\n font-weight: normal;\n font-size: 1.4rem;\n }"); - (0, _styles["default"])(".error-banner__content span {\n margin-right: 0.8rem;\n }"); -} - -var InlineError = /*#__PURE__*/function (_React$PureComponent) { - _inherits(InlineError, _React$PureComponent); - - var _super = _createSuper(InlineError); - - function InlineError() { - _classCallCheck(this, InlineError); - - return _super.apply(this, arguments); - } - - _createClass(InlineError, [{ - key: "render", - value: function render() { - renderStyles(); - return /*#__PURE__*/_react["default"].createElement("div", { - className: "error-banner" - }, /*#__PURE__*/_react["default"].createElement("i", { - className: "material-icons" - }, "error"), /*#__PURE__*/_react["default"].createElement("h3", null, "Error"), /*#__PURE__*/_react["default"].createElement("div", { - className: "error-banner__content" - }, this.props.error)); - } - }]); - - return InlineError; -}(_react["default"].PureComponent); - -exports["default"] = InlineError; - -_defineProperty(InlineError, "propTypes", { - error: _propTypes["default"].string -}); \ No newline at end of file diff --git a/libs/components/common/gql_status.d.ts b/libs/components/common/gql_status.d.ts new file mode 100644 index 0000000..686d59f --- /dev/null +++ b/libs/components/common/gql_status.d.ts @@ -0,0 +1,12 @@ +declare function GqlStatus(props: any): JSX.Element | null; +declare namespace GqlStatus { + namespace propTypes { + const loading: PropTypes.Requireable; + const error: PropTypes.Requireable; + }>>; + const loadMessage: PropTypes.Requireable; + } +} +export default GqlStatus; +import PropTypes from "prop-types"; diff --git a/libs/components/common/gql_status.js b/libs/components/common/gql_status.js deleted file mode 100644 index ad07b49..0000000 --- a/libs/components/common/gql_status.js +++ /dev/null @@ -1,40 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = GqlStatus; - -var _react = _interopRequireDefault(require("react")); - -var _propTypes = _interopRequireDefault(require("prop-types")); - -var _atomicjolt_loader = _interopRequireDefault(require("./atomicjolt_loader")); - -var _inline_error = _interopRequireDefault(require("./errors/inline_error")); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } - -function GqlStatus(props) { - if (props.loading) { - return /*#__PURE__*/_react["default"].createElement(_atomicjolt_loader["default"], { - message: props.loadMessage - }); - } - - if (props.error) { - return /*#__PURE__*/_react["default"].createElement(_inline_error["default"], { - error: props.error.message - }); - } - - return null; -} - -GqlStatus.propTypes = { - loading: _propTypes["default"].bool, - error: _propTypes["default"].shape({ - message: _propTypes["default"].string - }), - loadMessage: _propTypes["default"].string -}; \ No newline at end of file diff --git a/libs/components/common/hooks.d.ts b/libs/components/common/hooks.d.ts new file mode 100644 index 0000000..087af96 --- /dev/null +++ b/libs/components/common/hooks.d.ts @@ -0,0 +1,8 @@ +/// +export declare function useThrottledEffect(effect: () => void | (() => any), timeout: number, deps: any[]): void; +declare type DefaultReturn = [T, (newState: T) => void, () => void]; +export declare function useDefaultState(data: T): DefaultReturn; +export declare function useListenOutsideClick(callback: any): { + ref: import("react").RefObject; +}; +export {}; diff --git a/libs/components/common/out-link.d.ts b/libs/components/common/out-link.d.ts new file mode 100644 index 0000000..3fb6d9c --- /dev/null +++ b/libs/components/common/out-link.d.ts @@ -0,0 +1 @@ +export function OutLink(): JSX.Element; diff --git a/libs/components/common/resize_wrapper.d.ts b/libs/components/common/resize_wrapper.d.ts new file mode 100644 index 0000000..8564f4c --- /dev/null +++ b/libs/components/common/resize_wrapper.d.ts @@ -0,0 +1,9 @@ +declare function ResizeWrapper(props: any): JSX.Element; +declare namespace ResizeWrapper { + namespace propTypes { + const children: propTypes.Requireable; + const getSize: propTypes.Requireable<(...args: any[]) => any>; + } +} +export default ResizeWrapper; +import propTypes_1 from "prop-types"; diff --git a/libs/components/common/resize_wrapper.js b/libs/components/common/resize_wrapper.js deleted file mode 100644 index 3b163d6..0000000 --- a/libs/components/common/resize_wrapper.js +++ /dev/null @@ -1,36 +0,0 @@ -"use strict"; - -function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = ResizeWrapper; - -var _react = _interopRequireWildcard(require("react")); - -var _propTypes = _interopRequireDefault(require("prop-types")); - -var _resize_iframe = _interopRequireDefault(require("../../libs/resize_iframe")); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } - -function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } - -function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } - -function ResizeWrapper(props) { - var children = props.children, - getSize = props.getSize; - (0, _react.useEffect)(function () { - (0, _resize_iframe["default"])(getSize); - }, []); - return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, children, /*#__PURE__*/_react["default"].createElement("div", { - id: "content-measuring-stick" - })); -} - -ResizeWrapper.propTypes = { - children: _propTypes["default"].node, - getSize: _propTypes["default"].func -}; \ No newline at end of file diff --git a/libs/components/common/tooltip.d.ts b/libs/components/common/tooltip.d.ts new file mode 100644 index 0000000..32eafc9 --- /dev/null +++ b/libs/components/common/tooltip.d.ts @@ -0,0 +1,20 @@ +export default Tooltip; +declare class Tooltip extends React.Component { + constructor(props: any); + constructor(props: any, context: any); +} +declare namespace Tooltip { + namespace propTypes { + const icon: PropTypes.Requireable; + const children: PropTypes.Validator; + const placement: PropTypes.Requireable; + } + namespace defaultProps { + const icon_1: string; + export { icon_1 as icon }; + const placement_1: string; + export { placement_1 as placement }; + } +} +import React from "react"; +import PropTypes from "prop-types"; diff --git a/libs/components/common/with-live-messenger.d.ts b/libs/components/common/with-live-messenger.d.ts new file mode 100644 index 0000000..8bded06 --- /dev/null +++ b/libs/components/common/with-live-messenger.d.ts @@ -0,0 +1,2 @@ +declare function _default(Child: any): (props: any) => JSX.Element; +export default _default; diff --git a/libs/components/settings.d.ts b/libs/components/settings.d.ts new file mode 100644 index 0000000..b6eac6c --- /dev/null +++ b/libs/components/settings.d.ts @@ -0,0 +1,3 @@ +export function withSettings(Component: any): (props: any) => JSX.Element; +export const SettingsContext: React.Context; +import React from "react"; diff --git a/libs/components/settings.js b/libs/components/settings.js deleted file mode 100644 index d487811..0000000 --- a/libs/components/settings.js +++ /dev/null @@ -1,37 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.withSettings = withSettings; -exports.SettingsContext = void 0; - -var _react = _interopRequireDefault(require("react")); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } - -function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } - -function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; } - -function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } - -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } - -var updateGlobalSetting = function updateGlobalSetting() {}; - -var SettingsContext = /*#__PURE__*/_react["default"].createContext(_objectSpread(_objectSpread({}, window.DEFAULT_SETTINGS), {}, { - updateGlobalSetting: updateGlobalSetting -})); - -exports.SettingsContext = SettingsContext; - -function withSettings(Component) { - return function SettingsComponent(props) { - return /*#__PURE__*/_react["default"].createElement(SettingsContext.Consumer, null, function (settings) { - return /*#__PURE__*/_react["default"].createElement(Component, _extends({}, props, { - settings: settings - })); - }); - }; -} \ No newline at end of file diff --git a/libs/constants/error.d.ts b/libs/constants/error.d.ts new file mode 100644 index 0000000..fda1345 --- /dev/null +++ b/libs/constants/error.d.ts @@ -0,0 +1,6 @@ +declare namespace _default { + const TIMEOUT: string; + const ERROR: string; + const NOT_AUTHORIZED: string; +} +export default _default; diff --git a/libs/constants/error.js b/libs/constants/error.js deleted file mode 100644 index 5caa724..0000000 --- a/libs/constants/error.js +++ /dev/null @@ -1,12 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; -var _default = { - TIMEOUT: 'NETWORK_TIMEOUT', - ERROR: 'NETWORK_ERROR', - NOT_AUTHORIZED: 'NETWORK_NOT_AUTHORIZED' -}; -exports["default"] = _default; \ No newline at end of file diff --git a/libs/constants/network.d.ts b/libs/constants/network.d.ts new file mode 100644 index 0000000..9a55880 --- /dev/null +++ b/libs/constants/network.d.ts @@ -0,0 +1,8 @@ +declare namespace _default { + const GET: string; + const POST: string; + const PUT: string; + const DEL: string; + const TIMEOUT: number; +} +export default _default; diff --git a/libs/constants/network.js b/libs/constants/network.js deleted file mode 100644 index 04bb62f..0000000 --- a/libs/constants/network.js +++ /dev/null @@ -1,14 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; -var _default = { - GET: 'get', - POST: 'post', - PUT: 'put', - DEL: 'delete', - TIMEOUT: 20000 -}; -exports["default"] = _default; \ No newline at end of file diff --git a/libs/constants/wrapper.d.ts b/libs/constants/wrapper.d.ts new file mode 100644 index 0000000..37f228f --- /dev/null +++ b/libs/constants/wrapper.d.ts @@ -0,0 +1,2 @@ +export default function _default(actionTypes: any, asyncActionTypes: any): any; +export const DONE: "_DONE"; diff --git a/libs/constants/wrapper.js b/libs/constants/wrapper.js deleted file mode 100644 index d228b21..0000000 --- a/libs/constants/wrapper.js +++ /dev/null @@ -1,34 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = _default; -exports.DONE = void 0; - -var _lodash = _interopRequireDefault(require("lodash")); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } - -function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; } - -function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } - -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } - -var DONE = '_DONE'; -exports.DONE = DONE; - -function _default(actionTypes, asyncActionTypes) { - var types = _lodash["default"].reduce(actionTypes, function (result, key) { - return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, key, key)); - }, {}); - - types = _lodash["default"].reduce(asyncActionTypes, function (result, key) { - var _objectSpread3; - - return _objectSpread(_objectSpread({}, result), {}, (_objectSpread3 = {}, _defineProperty(_objectSpread3, key, key), _defineProperty(_objectSpread3, "".concat(key).concat(DONE), "".concat(key).concat(DONE)), _objectSpread3)); - }, types); - types.DONE = DONE; - return types; -} \ No newline at end of file diff --git a/libs/css-stub.d.ts b/libs/css-stub.d.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/libs/css-stub.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/libs/decorators/modal.d.ts b/libs/decorators/modal.d.ts new file mode 100644 index 0000000..4224708 --- /dev/null +++ b/libs/decorators/modal.d.ts @@ -0,0 +1 @@ +export default function modalDecorator(Component: any, name: any): import("react-redux").ConnectedComponent>; diff --git a/libs/decorators/modal.js b/libs/decorators/modal.js deleted file mode 100644 index a56a027..0000000 --- a/libs/decorators/modal.js +++ /dev/null @@ -1,28 +0,0 @@ -"use strict"; - -function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = modalDecorator; - -var _reactRedux = require("react-redux"); - -var ModalActions = _interopRequireWildcard(require("../actions/modal")); - -function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } - -function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } - -// Dont use with decorator syntax but it is a decorator non the less -function modalDecorator(Component, name) { - var select = function select(_ref) { - var modal = _ref.modal; - return { - isOpen: modal.currentOpenModal === name - }; - }; - - return (0, _reactRedux.connect)(select, ModalActions)(Component); -} \ No newline at end of file diff --git a/libs/graphql/atomic_mutation.d.ts b/libs/graphql/atomic_mutation.d.ts new file mode 100644 index 0000000..aa98c1f --- /dev/null +++ b/libs/graphql/atomic_mutation.d.ts @@ -0,0 +1,9 @@ +export default class AtomicMutation extends React.Component { + static propTypes: { + children: PropTypes.Validator<(...args: any[]) => any>; + }; + constructor(props: any); + constructor(props: any, context: any); +} +import React from "react"; +import PropTypes from "prop-types"; diff --git a/libs/graphql/atomic_mutation.js b/libs/graphql/atomic_mutation.js deleted file mode 100644 index 2624764..0000000 --- a/libs/graphql/atomic_mutation.js +++ /dev/null @@ -1,79 +0,0 @@ -"use strict"; - -function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; - -var _react = _interopRequireDefault(require("react")); - -var _reactApollo = require("react-apollo"); - -var _propTypes = _interopRequireDefault(require("prop-types")); - -var _inline_error = _interopRequireDefault(require("../components/common/errors/inline_error")); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a 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); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } - -function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } - -function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } - -function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } - -function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } - -function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } - -function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } - -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } - -var AtomicMutation = /*#__PURE__*/function (_React$Component) { - _inherits(AtomicMutation, _React$Component); - - var _super = _createSuper(AtomicMutation); - - function AtomicMutation() { - _classCallCheck(this, AtomicMutation); - - return _super.apply(this, arguments); - } - - _createClass(AtomicMutation, [{ - key: "render", - value: function render() { - var _this = this; - - return /*#__PURE__*/_react["default"].createElement(_reactApollo.Mutation, this.props, function (method, result) { - var error = result.error; - - if (error) { - return /*#__PURE__*/_react["default"].createElement(_inline_error["default"], { - error: error.message - }); - } - - return _this.props.children(method, result); - }); - } - }]); - - return AtomicMutation; -}(_react["default"].Component); - -exports["default"] = AtomicMutation; - -_defineProperty(AtomicMutation, "propTypes", { - children: _propTypes["default"].func.isRequired -}); \ No newline at end of file diff --git a/libs/graphql/atomic_query.d.ts b/libs/graphql/atomic_query.d.ts new file mode 100644 index 0000000..cf6b9a3 --- /dev/null +++ b/libs/graphql/atomic_query.d.ts @@ -0,0 +1,19 @@ +export default class AtomicQuery extends React.Component { + static propTypes: { + children: PropTypes.Validator<(...args: any[]) => any>; + loadingMessage: PropTypes.Requireable; + hideLoader: PropTypes.Requireable; + onDataReady: PropTypes.Requireable<(...args: any[]) => any>; + onDataLoading: PropTypes.Requireable<(...args: any[]) => any>; + }; + static defaultProps: { + onDataReady: () => void; + onDataLoading: () => void; + }; + constructor(props: any); + constructor(props: any, context: any); + dataReady: boolean; + dataLoading: boolean; +} +import React from "react"; +import PropTypes from "prop-types"; diff --git a/libs/graphql/atomic_query.js b/libs/graphql/atomic_query.js deleted file mode 100644 index 021fce6..0000000 --- a/libs/graphql/atomic_query.js +++ /dev/null @@ -1,141 +0,0 @@ -"use strict"; - -function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; - -var _react = _interopRequireDefault(require("react")); - -var _reactApollo = require("react-apollo"); - -var _propTypes = _interopRequireDefault(require("prop-types")); - -var _atomicjolt_loader = _interopRequireDefault(require("../components/common/atomicjolt_loader")); - -var _inline_error = _interopRequireDefault(require("../components/common/errors/inline_error")); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a 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); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } - -function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } - -function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } - -function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } - -function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } - -function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } - -function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } - -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } - -var AtomicQuery = /*#__PURE__*/function (_React$Component) { - _inherits(AtomicQuery, _React$Component); - - var _super = _createSuper(AtomicQuery); - - function AtomicQuery() { - var _this; - - _classCallCheck(this, AtomicQuery); - - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - - _this = _super.call.apply(_super, [this].concat(args)); - - _defineProperty(_assertThisInitialized(_this), "dataReady", false); - - _defineProperty(_assertThisInitialized(_this), "dataLoading", false); - - return _this; - } - - _createClass(AtomicQuery, [{ - key: "render", - value: function render() { - var _this2 = this; - - return /*#__PURE__*/_react["default"].createElement(_reactApollo.Query, this.props, function (result) { - var loading = result.loading, - error = result.error; - - if (loading) { - if (!_this2.dataLoading) { - _this2.props.onDataLoading(); - - _this2.dataLoading = true; - _this2.dataReady = false; - } - - if (_this2.props.hideLoader) { - return null; - } - - return /*#__PURE__*/_react["default"].createElement(_atomicjolt_loader["default"], { - message: _this2.props.loadingMessage - }); - } - - if (error) { - if (error.networkError && error.networkError.result && error.networkError.result.canvas_authorization_required) { - // This error will be handled by a Canvas reauth. Don't output an error. - return null; - } - - if (error.networkError && error.networkError.bodyText && error.networkError.bodyText.indexOf('JWT::ExpiredSignature') >= 0) { - return /*#__PURE__*/_react["default"].createElement(_inline_error["default"], { - error: "Your authentication token has expired. Please refresh the page to enable authentication." - }); - } - - return /*#__PURE__*/_react["default"].createElement(_inline_error["default"], { - error: error.message - }); - } - - if (!_this2.dataReady) { - _this2.props.onDataReady(result.data); - - _this2.dataReady = true; - _this2.dataLoading = false; - } - - return _this2.props.children(result); - }); - } - }]); - - return AtomicQuery; -}(_react["default"].Component); - -exports["default"] = AtomicQuery; - -_defineProperty(AtomicQuery, "propTypes", { - children: _propTypes["default"].func.isRequired, - loadingMessage: _propTypes["default"].string, - hideLoader: _propTypes["default"].bool, - // the base Query component has an onCompleted function, but it's only - // called after the initial request for data returns, and not if you visit - // the page again - onDataReady: _propTypes["default"].func, - onDataLoading: _propTypes["default"].func -}); - -_defineProperty(AtomicQuery, "defaultProps", { - onDataReady: function onDataReady() {}, - onDataLoading: function onDataLoading() {} -}); \ No newline at end of file diff --git a/libs/index.d.ts b/libs/index.d.ts new file mode 100644 index 0000000..d37dcd5 --- /dev/null +++ b/libs/index.d.ts @@ -0,0 +1,26 @@ +export { default as errorReducer } from "./reducers/errors"; +export { default as jwtReducer } from "./reducers/jwt"; +export { default as modalReducer } from "./reducers/modal"; +export { default as postMessageMiddleware } from "./middleware/post_message"; +export { default as jwtLoader } from "./loaders/jwt"; +export { default as configureStore } from "./store/configure_store"; +export { default as Api } from "./api/api"; +export { default as GqlStatus } from "./components/common/gql_status"; +export { default as IframeResizeWrapper } from "./components/common/resize_wrapper"; +export { default as InlineError } from "./components/common/errors/inline_error"; +export { default as AtomicMutation } from "./graphql/atomic_mutation"; +export { default as AtomicQuery } from "./graphql/atomic_query"; +export { default as modalDecorator } from "./decorators/modal"; +export { default as iframeResizeHandler } from "./libs/resize_iframe"; +export { addError as addErrorAction, clearErrors as clearErrorsAction, Constants as ErrorConstants } from "./actions/errors"; +export { refreshJwt as refreshJwtAction, Constants as JwtConstants } from "./actions/jwt"; +export { openModal as openModalAction, closeModal as closeModalAction, Constants as ModalConstants } from "./actions/modal"; +export { postMessage as postMessageAction, Constants as PostMessageConstants } from "./actions/post_message"; +export { default as settingsReducer, getInitialSettings } from "./reducers/settings"; +export { apiRequest, default as ApiMiddleware } from "./middleware/api"; +export { default as Communicator, postMessage, broadcastRawMessage, broadcastMessage } from "./communications/communicator"; +export { SettingsContext, withSettings } from "./components/settings"; +export { default as AtomicjoltLoader, Loader as AtomicjoltLoaderRaw } from "./components/common/atomicjolt_loader"; +export { Banner, BannerTypes } from "./components/Banner"; +export { Button, ButtonType } from "./components/Button"; +export { isLtiInstructor, isLtiAdmin } from "./libs/lti_roles"; diff --git a/libs/index.js b/libs/index.js deleted file mode 100644 index 3dd20a2..0000000 --- a/libs/index.js +++ /dev/null @@ -1,303 +0,0 @@ -"use strict"; - -function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } - -Object.defineProperty(exports, "__esModule", { - value: true -}); -Object.defineProperty(exports, "addErrorAction", { - enumerable: true, - get: function get() { - return _errors.addError; - } -}); -Object.defineProperty(exports, "clearErrorsAction", { - enumerable: true, - get: function get() { - return _errors.clearErrors; - } -}); -Object.defineProperty(exports, "ErrorConstants", { - enumerable: true, - get: function get() { - return _errors.Constants; - } -}); -Object.defineProperty(exports, "refreshJwtAction", { - enumerable: true, - get: function get() { - return _jwt.refreshJwt; - } -}); -Object.defineProperty(exports, "JwtConstants", { - enumerable: true, - get: function get() { - return _jwt.Constants; - } -}); -Object.defineProperty(exports, "openModalAction", { - enumerable: true, - get: function get() { - return _modal.openModal; - } -}); -Object.defineProperty(exports, "closeModalAction", { - enumerable: true, - get: function get() { - return _modal.closeModal; - } -}); -Object.defineProperty(exports, "ModalConstants", { - enumerable: true, - get: function get() { - return _modal.Constants; - } -}); -Object.defineProperty(exports, "postMessageAction", { - enumerable: true, - get: function get() { - return _post_message.postMessage; - } -}); -Object.defineProperty(exports, "PostMessageConstants", { - enumerable: true, - get: function get() { - return _post_message.Constants; - } -}); -Object.defineProperty(exports, "errorReducer", { - enumerable: true, - get: function get() { - return _errors2["default"]; - } -}); -Object.defineProperty(exports, "jwtReducer", { - enumerable: true, - get: function get() { - return _jwt2["default"]; - } -}); -Object.defineProperty(exports, "modalReducer", { - enumerable: true, - get: function get() { - return _modal2["default"]; - } -}); -Object.defineProperty(exports, "settingsReducer", { - enumerable: true, - get: function get() { - return _settings["default"]; - } -}); -Object.defineProperty(exports, "getInitialSettings", { - enumerable: true, - get: function get() { - return _settings.getInitialSettings; - } -}); -Object.defineProperty(exports, "postMessageMiddleware", { - enumerable: true, - get: function get() { - return _post_message2["default"]; - } -}); -Object.defineProperty(exports, "apiRequest", { - enumerable: true, - get: function get() { - return _api.apiRequest; - } -}); -Object.defineProperty(exports, "ApiMiddleware", { - enumerable: true, - get: function get() { - return _api["default"]; - } -}); -Object.defineProperty(exports, "jwtLoader", { - enumerable: true, - get: function get() { - return _jwt3["default"]; - } -}); -Object.defineProperty(exports, "configureStore", { - enumerable: true, - get: function get() { - return _configure_store["default"]; - } -}); -Object.defineProperty(exports, "Api", { - enumerable: true, - get: function get() { - return _api2["default"]; - } -}); -Object.defineProperty(exports, "Communicator", { - enumerable: true, - get: function get() { - return _communicator["default"]; - } -}); -Object.defineProperty(exports, "postMessage", { - enumerable: true, - get: function get() { - return _communicator.postMessage; - } -}); -Object.defineProperty(exports, "broadcastRawMessage", { - enumerable: true, - get: function get() { - return _communicator.broadcastRawMessage; - } -}); -Object.defineProperty(exports, "broadcastMessage", { - enumerable: true, - get: function get() { - return _communicator.broadcastMessage; - } -}); -Object.defineProperty(exports, "SettingsContext", { - enumerable: true, - get: function get() { - return _settings2.SettingsContext; - } -}); -Object.defineProperty(exports, "withSettings", { - enumerable: true, - get: function get() { - return _settings2.withSettings; - } -}); -Object.defineProperty(exports, "AtomicjoltLoader", { - enumerable: true, - get: function get() { - return _atomicjolt_loader["default"]; - } -}); -Object.defineProperty(exports, "AtomicjoltLoaderRaw", { - enumerable: true, - get: function get() { - return _atomicjolt_loader.Loader; - } -}); -Object.defineProperty(exports, "GqlStatus", { - enumerable: true, - get: function get() { - return _gql_status["default"]; - } -}); -Object.defineProperty(exports, "IframeResizeWrapper", { - enumerable: true, - get: function get() { - return _resize_wrapper["default"]; - } -}); -Object.defineProperty(exports, "InlineError", { - enumerable: true, - get: function get() { - return _inline_error["default"]; - } -}); -Object.defineProperty(exports, "Banner", { - enumerable: true, - get: function get() { - return _Banner.Banner; - } -}); -Object.defineProperty(exports, "BannerTypes", { - enumerable: true, - get: function get() { - return _Banner.BannerTypes; - } -}); -Object.defineProperty(exports, "AtomicMutation", { - enumerable: true, - get: function get() { - return _atomic_mutation["default"]; - } -}); -Object.defineProperty(exports, "AtomicQuery", { - enumerable: true, - get: function get() { - return _atomic_query["default"]; - } -}); -Object.defineProperty(exports, "modalDecorator", { - enumerable: true, - get: function get() { - return _modal3["default"]; - } -}); -Object.defineProperty(exports, "iframeResizeHandler", { - enumerable: true, - get: function get() { - return _resize_iframe["default"]; - } -}); -Object.defineProperty(exports, "isLtiInstructor", { - enumerable: true, - get: function get() { - return _lti_roles.isLtiInstructor; - } -}); -Object.defineProperty(exports, "isLtiAdmin", { - enumerable: true, - get: function get() { - return _lti_roles.isLtiAdmin; - } -}); - -var _errors = require("./actions/errors"); - -var _jwt = require("./actions/jwt"); - -var _modal = require("./actions/modal"); - -var _post_message = require("./actions/post_message"); - -var _errors2 = _interopRequireDefault(require("./reducers/errors")); - -var _jwt2 = _interopRequireDefault(require("./reducers/jwt")); - -var _modal2 = _interopRequireDefault(require("./reducers/modal")); - -var _settings = _interopRequireWildcard(require("./reducers/settings")); - -var _post_message2 = _interopRequireDefault(require("./middleware/post_message")); - -var _api = _interopRequireWildcard(require("./middleware/api")); - -var _jwt3 = _interopRequireDefault(require("./loaders/jwt")); - -var _configure_store = _interopRequireDefault(require("./store/configure_store")); - -var _api2 = _interopRequireDefault(require("./api/api")); - -var _communicator = _interopRequireWildcard(require("./communications/communicator")); - -var _settings2 = require("./components/settings"); - -var _atomicjolt_loader = _interopRequireWildcard(require("./components/common/atomicjolt_loader")); - -var _gql_status = _interopRequireDefault(require("./components/common/gql_status")); - -var _resize_wrapper = _interopRequireDefault(require("./components/common/resize_wrapper")); - -var _inline_error = _interopRequireDefault(require("./components/common/errors/inline_error")); - -var _Banner = require("./components/Banner"); - -var _atomic_mutation = _interopRequireDefault(require("./graphql/atomic_mutation")); - -var _atomic_query = _interopRequireDefault(require("./graphql/atomic_query")); - -var _modal3 = _interopRequireDefault(require("./decorators/modal")); - -var _resize_iframe = _interopRequireDefault(require("./libs/resize_iframe")); - -var _lti_roles = require("./libs/lti_roles"); - -function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } - -function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } \ No newline at end of file diff --git a/libs/libs/lti_roles.d.ts b/libs/libs/lti_roles.d.ts new file mode 100644 index 0000000..e41454d --- /dev/null +++ b/libs/libs/lti_roles.d.ts @@ -0,0 +1,2 @@ +export function isLtiInstructor(roles: any): any; +export function isLtiAdmin(roles: any): any; diff --git a/libs/libs/lti_roles.js b/libs/libs/lti_roles.js deleted file mode 100644 index 8dcb745..0000000 --- a/libs/libs/lti_roles.js +++ /dev/null @@ -1,19 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.isLtiInstructor = isLtiInstructor; -exports.isLtiAdmin = isLtiAdmin; - -var _lodash = _interopRequireDefault(require("lodash")); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } - -function isLtiInstructor(roles) { - return _lodash["default"].includes(roles, 'urn:lti:role:ims/lis/Instructor'); -} - -function isLtiAdmin(roles) { - return _lodash["default"].includes(roles, 'urn:lti:role:ims/lis/Administrator') || _lodash["default"].includes(roles, 'urn:lti:instrole:ims/lis/Administrator') || _lodash["default"].includes(roles, 'urn:lti:sysrole:ims/lis/SysAdmin') || _lodash["default"].includes(roles, 'urn:lti:sysrole:ims/lis/Administrator'); -} \ No newline at end of file diff --git a/libs/libs/resize_iframe.d.ts b/libs/libs/resize_iframe.d.ts new file mode 100644 index 0000000..8f49952 --- /dev/null +++ b/libs/libs/resize_iframe.d.ts @@ -0,0 +1 @@ +export default function initResizeHandler(getSize?: () => number): void; diff --git a/libs/libs/resize_iframe.js b/libs/libs/resize_iframe.js deleted file mode 100644 index 5050830..0000000 --- a/libs/libs/resize_iframe.js +++ /dev/null @@ -1,43 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = initResizeHandler; - -var _communicator = require("../communications/communicator"); - -var currentHeight = 0; - -function sendLtiIframeResize(height) { - var message = { - subject: 'lti.frameResize', - height: height - }; - (0, _communicator.broadcastMessage)(message); -} - -var defaultGetSize = function defaultGetSize() { - var ruler = document.getElementById('content-measuring-stick'); - return ruler.offsetTop; -}; - -function initResizeHandler() { - var getSize = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultGetSize; - - var handleResize = function handleResize() { - var height = getSize(); - if (height === currentHeight) return; - currentHeight = height; - sendLtiIframeResize(currentHeight); - }; - - var mObserver = new MutationObserver(handleResize); - window.addEventListener('resize', handleResize); - mObserver.observe(document.documentElement, { - attributes: true, - childList: true, - subtree: true, - characterData: true - }); -} \ No newline at end of file diff --git a/libs/libs/styles.d.ts b/libs/libs/styles.d.ts new file mode 100644 index 0000000..c679c2b --- /dev/null +++ b/libs/libs/styles.d.ts @@ -0,0 +1,2 @@ +declare function _default(styles: any): void; +export default _default; diff --git a/libs/libs/styles.js b/libs/libs/styles.js deleted file mode 100644 index 66bd47f..0000000 --- a/libs/libs/styles.js +++ /dev/null @@ -1,38 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; - -function getAddStyles() { - var selectorTextRegex = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : /[^{]*/; - var memo = {}; - var id = 'atomic-fuel-styles'; - var styleEl = document.getElementById(id); - return function (styles) { - if (!styleEl) { - styleEl = document.createElement('style'); - styleEl.id = id; - document.head.appendChild(styleEl); - } - /* - * The RegEx below extracts the selectorText from the styles - * string. For example running this regex on the styles string - * ".myClass > h1 .myclassTwo {...}" would yield ".myClass > h1 .myclassTwo" - */ - - - var classes = styles.match(selectorTextRegex)[0].trim(); - - if (memo[classes] === undefined) { - var styleSheet = styleEl.sheet; - styleSheet.insertRule(styles, styleSheet.cssRules.length); - memo[classes] = 1; - } - }; -} - -var _default = getAddStyles(); - -exports["default"] = _default; \ No newline at end of file diff --git a/libs/loaders/jwt.d.ts b/libs/loaders/jwt.d.ts new file mode 100644 index 0000000..d970caf --- /dev/null +++ b/libs/loaders/jwt.d.ts @@ -0,0 +1,19 @@ +export default function _default(dispatch: any, currentUserId: any, refresh?: number): void; +export class Jwt { + constructor(jwt: any, apiUrl: any, oauthConsumerKey?: any, refresh?: number); + jwt: any; + apiUrl: any; + oauthConsumerKey: any; + _decodedJwt: any; + userId: any; + contextId: any; + refresh: number; + enableRefresh(): void; + get params(): { + context_id: any; + oauth_consumer_key: any; + }; + get currentJwt(): any; + get decodedJwt(): any; + get isjwtExpired(): boolean; +} diff --git a/libs/loaders/jwt.js b/libs/loaders/jwt.js deleted file mode 100644 index 237c9c4..0000000 --- a/libs/loaders/jwt.js +++ /dev/null @@ -1,108 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = _default; -exports.Jwt = void 0; - -var _jwt = require("../actions/jwt"); - -var _api = _interopRequireDefault(require("../api/api")); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a 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); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } - -var REFRESH = 1000 * 60 * 60 * 23; // every 23 hours - -function _default(dispatch, currentUserId) { - var refresh = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : REFRESH; - setInterval(function () { - dispatch((0, _jwt.refreshJwt)(currentUserId)); - }, refresh); -} - -var Jwt = /*#__PURE__*/function () { - function Jwt(jwt, apiUrl) { - var oauthConsumerKey = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var refresh = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : REFRESH; - - _classCallCheck(this, Jwt); - - this.jwt = jwt; - this.apiUrl = apiUrl; - this.oauthConsumerKey = oauthConsumerKey; - - if (this.jwt) { - var base64Url = this.jwt.split('.')[1]; - var base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/'); - - try { - this._decodedJwt = JSON.parse(window.atob(base64)); - this.userId = this._decodedJwt.user_id; - this.contextId = this._decodedJwt.context_id; - this.oauthConsumerKey = this._decodedJwt.kid || oauthConsumerKey; - } catch (e) { - if (typeof Rollbar !== 'undefined' && Rollbar.options.enabled) { - Rollbar.error('Failed to decode JWT for refresh', { - error: e, - encodedJwt: base64 - }); - } - } - } - - this.refresh = refresh; - } - - _createClass(Jwt, [{ - key: "enableRefresh", - value: function enableRefresh() { - var _this = this; - - if (this.jwt && this.userId) { - var url = "api/jwts/".concat(this.userId); - setInterval(function () { - _api["default"].get(url, _this.apiUrl, _this.jwt, null, _this.params, null).then(function (response) { - _this.jwt = response.body.jwt; - }); - }, this.refresh); - } - } - }, { - key: "params", - get: function get() { - return { - // Add the context id from the lti launch - context_id: this.contextId, - // Add consumer key to requests to indicate which lti app requests are originating from. - oauth_consumer_key: this.oauthConsumerKey - }; - } - }, { - key: "currentJwt", - get: function get() { - return this.jwt; - } - }, { - key: "decodedJwt", - get: function get() { - return this._decodedJwt; - } - }, { - key: "isjwtExpired", - get: function get() { - // Rails does seconds since the epoch instead of milliseconds so we multiple by 1000 - return this.decodedJwt.exp * 1000 < Date.now(); - } - }]); - - return Jwt; -}(); - -exports.Jwt = Jwt; \ No newline at end of file diff --git a/libs/middleware/api.d.ts b/libs/middleware/api.d.ts new file mode 100644 index 0000000..3bc3b3c --- /dev/null +++ b/libs/middleware/api.d.ts @@ -0,0 +1,3 @@ +export function apiRequest(store: any, action: any): any; +export { API as default }; +declare function API(store: any): (next: any) => (action: any) => void; diff --git a/libs/middleware/api.js b/libs/middleware/api.js deleted file mode 100644 index db6ded4..0000000 --- a/libs/middleware/api.js +++ /dev/null @@ -1,67 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.apiRequest = apiRequest; -exports["default"] = void 0; - -var _api = _interopRequireDefault(require("../api/api")); - -var _wrapper = require("../constants/wrapper"); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } - -function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; } - -function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } - -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } - -function apiRequest(store, action) { - var state = store.getState(); - - var updatedParams = _objectSpread({ - // Add the context id from the lti launch - context_id: state.settings.context_id, - // Add consumer key to requests to indicate which lti app requests are originating from. - oauth_consumer_key: state.settings.oauth_consumer_key - }, action.params); - - var promise = _api["default"].execRequest(action.method, action.url, state.settings.api_url, state.jwt, state.settings.csrf_token, updatedParams, action.body, action.headers, action.timeout); - - if (promise) { - promise.then(function (response) { - store.dispatch({ - type: action.type + _wrapper.DONE, - payload: response.body, - original: action, - response: response - }); // Dispatch the new data - }, function (error) { - store.dispatch({ - type: action.type + _wrapper.DONE, - payload: {}, - original: action, - error: error - }); // Dispatch the new error - }); - } - - return promise; -} - -var API = function API(store) { - return function (next) { - return function (action) { - if (action.method) { - apiRequest(store, action); - } // call the next middleWare - - - next(action); - }; - }; -}; - -exports["default"] = API; \ No newline at end of file diff --git a/libs/middleware/post_message.d.ts b/libs/middleware/post_message.d.ts new file mode 100644 index 0000000..f35611b --- /dev/null +++ b/libs/middleware/post_message.d.ts @@ -0,0 +1,10 @@ +export class HandlerSingleton { + static communicator: any; + static instance: any; + static prepareInstance(dispatch: any, domain?: string): void; + constructor(dispatch: any); + dispatch: any; + handleComm: (e: any) => void; +} +declare function _default(store: any): (next: any) => (action: any) => void; +export default _default; diff --git a/libs/middleware/post_message.js b/libs/middleware/post_message.js deleted file mode 100644 index 84eebbb..0000000 --- a/libs/middleware/post_message.js +++ /dev/null @@ -1,95 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = exports.HandlerSingleton = void 0; - -var _lodash = _interopRequireDefault(require("lodash")); - -var _communicator = _interopRequireDefault(require("../communications/communicator")); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a 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); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } - -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } - -var HandlerSingleton = /*#__PURE__*/function () { - function HandlerSingleton(dispatch) { - var _this = this; - - _classCallCheck(this, HandlerSingleton); - - _defineProperty(this, "handleComm", function (e) { - var message = e.data; - - if (_lodash["default"].isString(e.data)) { - try { - message = JSON.parse(e.data); - } catch (ex) { - // We can't parse the data as JSON just send it through as a string - message = e.data; - } - } - - _this.dispatch({ - communication: true, - type: 'POST_MESSAGE_RECIEVED', - message: message, - data: e.data - }); - }); - - this.dispatch = dispatch; - } - - _createClass(HandlerSingleton, null, [{ - key: "prepareInstance", - value: function prepareInstance(dispatch) { - var domain = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '*'; - - if (!HandlerSingleton.instance) { - HandlerSingleton.communicator = new _communicator["default"](domain); - HandlerSingleton.instance = new HandlerSingleton(dispatch); - HandlerSingleton.communicator.enableListener(HandlerSingleton.instance); - } - } - }]); - - return HandlerSingleton; -}(); - -exports.HandlerSingleton = HandlerSingleton; - -_defineProperty(HandlerSingleton, "communicator", null); - -_defineProperty(HandlerSingleton, "instance", null); - -var _default = function _default(store) { - return function (next) { - return function (action) { - if (action.postMessage) { - // You have to call a post message action first before you will recieve messages - HandlerSingleton.prepareInstance(store.dispatch); - - try { - if (action.broadcast) { - HandlerSingleton.communicator.broadcast(action.message); - } else { - HandlerSingleton.communicator.comm(action.message); - } - } catch (e) {// do nothing - } - } - - next(action); - }; - }; -}; - -exports["default"] = _default; \ No newline at end of file diff --git a/libs/reducers/errors.d.ts b/libs/reducers/errors.d.ts new file mode 100644 index 0000000..263bfd3 --- /dev/null +++ b/libs/reducers/errors.d.ts @@ -0,0 +1,2 @@ +declare function _default(state: any[] | undefined, action: any): any[]; +export default _default; diff --git a/libs/reducers/errors.js b/libs/reducers/errors.js deleted file mode 100644 index ea09fa8..0000000 --- a/libs/reducers/errors.js +++ /dev/null @@ -1,61 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; - -var _errors = require("../actions/errors"); - -function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } - -function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } - -function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } - -function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } - -function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } - -function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } - -var initialState = []; - -var _default = function _default() { - var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState; - var action = arguments.length > 1 ? arguments[1] : undefined; - - switch (action.type) { - case _errors.Constants.CLEAR_ERRORS: - return []; - - case _errors.Constants.ADD_ERROR: - return [].concat(_toConsumableArray(state), [action.payload]); - - default: - if (action.error) { - var message = action.error.message; - - if (action.error.response && action.error.response.text) { - try { - var json = JSON.parse(action.error.response.text); - - if (json) { - message = json.message; - } - } catch (ex) {// We can't parse the data as JSON just let the original error message stand - } - } - - return [].concat(_toConsumableArray(state), [{ - error: action.error, - message: message, - context: action - }]); - } - - return state; - } -}; - -exports["default"] = _default; \ No newline at end of file diff --git a/libs/reducers/jwt.d.ts b/libs/reducers/jwt.d.ts new file mode 100644 index 0000000..1dfd42a --- /dev/null +++ b/libs/reducers/jwt.d.ts @@ -0,0 +1,2 @@ +declare function _default(state: string | undefined, action: any): any; +export default _default; diff --git a/libs/reducers/jwt.js b/libs/reducers/jwt.js deleted file mode 100644 index 7664bea..0000000 --- a/libs/reducers/jwt.js +++ /dev/null @@ -1,33 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; - -var _jwt = require("../actions/jwt"); - -var initialState = ''; - -var _default = function _default() { - var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState; - var action = arguments.length > 1 ? arguments[1] : undefined; - - switch (action.type) { - case _jwt.Constants.REFRESH_JWT_DONE: - if (action.payload.jwt) { - // Ensure we received a valid jwt. If the server isn't available we - // will get undefined. If there is a chance the current jwt is still - // valid we want to leave it in place. Note that this typically happens - // when the user loses network connectivity. - return action.payload.jwt; - } - - return state; - - default: - return state; - } -}; - -exports["default"] = _default; \ No newline at end of file diff --git a/libs/reducers/modal.d.ts b/libs/reducers/modal.d.ts new file mode 100644 index 0000000..ea20077 --- /dev/null +++ b/libs/reducers/modal.d.ts @@ -0,0 +1,6 @@ +declare function _default(state: { + currentOpenModal: string; +} | undefined, action: any): { + currentOpenModal: any; +}; +export default _default; diff --git a/libs/reducers/modal.js b/libs/reducers/modal.js deleted file mode 100644 index 989b132..0000000 --- a/libs/reducers/modal.js +++ /dev/null @@ -1,38 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; - -var _modal = require("../actions/modal"); - -var initialState = { - currentOpenModal: '' -}; - -var _default = function _default() { - var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState; - var action = arguments.length > 1 ? arguments[1] : undefined; - - switch (action.type) { - case _modal.Constants.OPEN_MODAL: - { - return { - currentOpenModal: action.modalName - }; - } - - case _modal.Constants.CLOSE_MODAL: - { - return { - currentOpenModal: '' - }; - } - - default: - return state; - } -}; - -exports["default"] = _default; \ No newline at end of file diff --git a/libs/reducers/settings.d.ts b/libs/reducers/settings.d.ts new file mode 100644 index 0000000..023c42e --- /dev/null +++ b/libs/reducers/settings.d.ts @@ -0,0 +1,3 @@ +export function getInitialSettings(...args: any[]): {}; +declare function _default(state?: {}): {}; +export default _default; diff --git a/libs/reducers/settings.js b/libs/reducers/settings.js deleted file mode 100644 index 7fb0601..0000000 --- a/libs/reducers/settings.js +++ /dev/null @@ -1,40 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.getInitialSettings = getInitialSettings; -exports["default"] = void 0; - -var _lodash = _interopRequireDefault(require("lodash")); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } - -function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; } - -function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } - -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } - -// Just return state. Don't let settings from the server mutate. -var _default = function _default() { - var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - return state; -}; - -exports["default"] = _default; - -function getInitialSettings() { - // Add default settings that can be overridden by values in serverSettings - var settings = {}; - - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - - _lodash["default"].forEach(args, function (arg) { - return settings = _objectSpread(_objectSpread({}, settings), arg); - }); - - return settings; -} \ No newline at end of file diff --git a/libs/specs_support/helper.d.ts b/libs/specs_support/helper.d.ts new file mode 100644 index 0000000..06f6f90 --- /dev/null +++ b/libs/specs_support/helper.d.ts @@ -0,0 +1,27 @@ +export default class Helper { + static mockStore(state: any): { + subscribe: () => void; + dispatch: () => void; + getState: () => any; + }; + static makeStore(initialSettings: any, additionalState: any, additionalReducers: any): any; + static testPayload(): string; + static stubAjax(): void; + static mockRequest(method: any, apiUrl: any, url: any, expectedHeaders: any): nock.Scope; + static mockAllAjax(): void; + static mockClock(): void; + static wrapMiddleware(middleware: any, state?: {}): { + store: { + getState: jest.Mock<{}, []>; + dispatch: jest.Mock; + }; + next: jest.Mock; + invoke: (action: any) => any; + getCalledWithState: () => { + dispatchedActions: never[]; + }; + }; + static indicies(arr: any, a: any, b: any): any; + static isBefore(...args: any[]): boolean; +} +import nock from "nock"; diff --git a/libs/specs_support/helper.js b/libs/specs_support/helper.js deleted file mode 100644 index 56ef52b..0000000 --- a/libs/specs_support/helper.js +++ /dev/null @@ -1,195 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; - -var _lodash = _interopRequireDefault(require("lodash")); - -var _redux = require("redux"); - -var _nock = _interopRequireDefault(require("nock")); - -var _api = _interopRequireDefault(require("../middleware/api")); - -var _settings = _interopRequireDefault(require("../reducers/settings")); - -var _configure_store = _interopRequireDefault(require("../store/configure_store")); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } - -function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; } - -function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } - -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a 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); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } - -var Helper = /*#__PURE__*/function () { - function Helper() { - _classCallCheck(this, Helper); - } - - _createClass(Helper, null, [{ - key: "mockStore", - value: // Create a fake store for testing - function mockStore(state) { - return { - subscribe: function subscribe() {}, - dispatch: function dispatch() {}, - getState: function getState() { - return _objectSpread({}, state); - } - }; - } // Create a real store that can be used for testing - // For any additional state provided you must also provide the corresponding - // reducers. - - }, { - key: "makeStore", - value: function makeStore(initialSettings, additionalState, additionalReducers) { - var initialState = _lodash["default"].merge({ - settings: _lodash["default"].merge({ - csrf: 'csrf_token', - apiUrl: 'http://www.example.com' - }, initialSettings) - }, additionalState); - - var rootReducer = (0, _redux.combineReducers)(_objectSpread({ - settings: _settings["default"] - }, additionalReducers)); - var middleware = [_api["default"]]; - return (0, _configure_store["default"])(initialState, rootReducer, middleware); - } - }, { - key: "testPayload", - value: function testPayload() { - return JSON.stringify([{ - id: 1, - name: 'Starter App' - }]); - } - }, { - key: "stubAjax", - value: function stubAjax() { - beforeEach(function () { - jasmine.Ajax.install(); - jasmine.Ajax.stubRequest(RegExp('.*/api/test')).andReturn({ - status: 200, - contentType: 'application/json', - statusText: 'OK', - responseText: Helper.testPayload() - }); - jasmine.Ajax.stubRequest(RegExp('.*/api/test/.+')).andReturn({ - status: 200, - contentType: 'application/json', - statusText: 'OK', - responseText: Helper.testPayload() - }); - }); - afterEach(function () { - jasmine.Ajax.uninstall(); - }); - } - }, { - key: "mockRequest", - value: function mockRequest(method, apiUrl, url, expectedHeaders) { - return (0, _nock["default"])(apiUrl, expectedHeaders).intercept(url, method).reply(200, Helper.testPayload(), { - 'content-type': 'application/json' - }); - } - }, { - key: "mockAllAjax", - value: function mockAllAjax() { - beforeEach(function () { - (0, _nock["default"])('http://www.example.com').persist().get(RegExp('.*')).reply(200, Helper.testPayload(), { - 'content-type': 'application/json' - }); - (0, _nock["default"])('http://www.example.com').persist().post(RegExp('.*')).reply(200, Helper.testPayload(), { - 'content-type': 'application/json' - }); - (0, _nock["default"])('http://www.example.com').persist().put(RegExp('.*')).reply(200, Helper.testPayload(), { - 'content-type': 'application/json' - }); - (0, _nock["default"])('http://www.example.com').persist()["delete"](RegExp('.*')).reply(200, Helper.testPayload(), { - 'content-type': 'application/json' - }); - }); - afterEach(function () { - _nock["default"].cleanAll(); - }); - } - }, { - key: "mockClock", - value: function mockClock() { - beforeEach(function () { - jasmine.clock().install(); // Mock out the built in timers - }); - afterEach(function () { - jasmine.clock().uninstall(); - }); - } - }, { - key: "wrapMiddleware", - value: function wrapMiddleware(middleware) { - var state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - var calledWithState = { - dispatchedActions: [] - }; - var store = { - getState: jest.fn(function () { - return state; - }), - dispatch: jest.fn(function (action) { - return calledWithState.dispatchedActions.push(action); - }) - }; - var next = jest.fn(); - - var invoke = function invoke(action) { - return middleware(store)(next)(action); - }; - - var getCalledWithState = function getCalledWithState() { - return calledWithState; - }; - - return { - store: store, - next: next, - invoke: invoke, - getCalledWithState: getCalledWithState - }; - } - }, { - key: "indicies", - value: function indicies(arr, a, b) { - return _lodash["default"].map([a, b], function (i) { - return _lodash["default"].indexOf(arr, i); - }); - } - }, { - key: "isBefore", - value: function isBefore() { - var ind = Helper.indicies(arguments.length <= 0 ? undefined : arguments[0], arguments.length <= 1 ? undefined : arguments[1], arguments.length <= 2 ? undefined : arguments[2]); - - if (_lodash["default"].some(ind, function (i) { - return _lodash["default"].isNil(i); - })) { - throw new Error('Not found in arr'); - } - - return ind[0] < ind[1]; - } - }]); - - return Helper; -}(); - -exports["default"] = Helper; \ No newline at end of file diff --git a/libs/specs_support/stub.d.ts b/libs/specs_support/stub.d.ts new file mode 100644 index 0000000..6526e07 --- /dev/null +++ b/libs/specs_support/stub.d.ts @@ -0,0 +1,9 @@ +export default class Stub extends React.PureComponent { + static propTypes: { + children: PropTypes.Validator; + }; + constructor(props: any); + constructor(props: any, context: any); +} +import React from "react"; +import PropTypes from "prop-types"; diff --git a/libs/specs_support/stub.js b/libs/specs_support/stub.js deleted file mode 100644 index 6cdf02a..0000000 --- a/libs/specs_support/stub.js +++ /dev/null @@ -1,63 +0,0 @@ -"use strict"; - -function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; - -var _react = _interopRequireDefault(require("react")); - -var _propTypes = _interopRequireDefault(require("prop-types")); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a 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); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } - -function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } - -function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } - -function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } - -function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } - -function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } - -function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } - -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } - -var Stub = /*#__PURE__*/function (_React$PureComponent) { - _inherits(Stub, _React$PureComponent); - - var _super = _createSuper(Stub); - - function Stub() { - _classCallCheck(this, Stub); - - return _super.apply(this, arguments); - } - - _createClass(Stub, [{ - key: "render", - value: function render() { - return /*#__PURE__*/_react["default"].createElement("div", null, this.props.children); - } - }]); - - return Stub; -}(_react["default"].PureComponent); - -exports["default"] = Stub; - -_defineProperty(Stub, "propTypes", { - children: _propTypes["default"].object.isRequired -}); \ No newline at end of file diff --git a/libs/specs_support/utils.d.ts b/libs/specs_support/utils.d.ts new file mode 100644 index 0000000..072ad74 --- /dev/null +++ b/libs/specs_support/utils.d.ts @@ -0,0 +1,5 @@ +declare namespace _default { + function findTextField(textFields: any, labelText: any): any; + function findTextField(textFields: any, labelText: any): any; +} +export default _default; diff --git a/libs/specs_support/utils.js b/libs/specs_support/utils.js deleted file mode 100644 index ed9f37a..0000000 --- a/libs/specs_support/utils.js +++ /dev/null @@ -1,23 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; - -var _testUtils = _interopRequireDefault(require("react-dom/test-utils")); - -var _lodash = _interopRequireDefault(require("lodash")); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } - -var _default = { - findTextField: function findTextField(textFields, labelText) { - return _lodash["default"].find(textFields, function (field) { - var label = _testUtils["default"].findRenderedDOMComponentWithTag(field, 'label'); - - return label.getDOMNode().textContent.toLowerCase() === labelText; - }); - } -}; -exports["default"] = _default; \ No newline at end of file diff --git a/libs/store/configure_store.d.ts b/libs/store/configure_store.d.ts new file mode 100644 index 0000000..4d01fc5 --- /dev/null +++ b/libs/store/configure_store.d.ts @@ -0,0 +1 @@ +export default function _default(initialState: any, rootReducer: any, middleware: any): any; diff --git a/libs/store/configure_store.js b/libs/store/configure_store.js deleted file mode 100644 index 20207cb..0000000 --- a/libs/store/configure_store.js +++ /dev/null @@ -1,28 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = _default; - -var _redux = require("redux"); - -function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } - -function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } - -function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } - -function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } - -function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } - -function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } - -function _default(initialState, rootReducer, middleware) { - var enhancers = [_redux.applyMiddleware.apply(void 0, _toConsumableArray(middleware))]; - - var store = _redux.compose.apply(void 0, enhancers)(_redux.createStore)(rootReducer, initialState); - - return store; -} \ No newline at end of file diff --git a/package.json b/package.json index 57268cd..c871545 100644 --- a/package.json +++ b/package.json @@ -6,13 +6,23 @@ "test": "cross-env BABEL_ENV=test jest --no-cache --config package.json", "test:debug": "node --inspect node_modules/.bin/jest --runInBand --watch --config package.json", "jest_version": "which jest && jest --version", - "build": "cross-env BABEL_ENV=production babel src --out-dir libs", + "type-check": "tsc --noEmit", + "type-check:watch": "yarn type-check -- --watch", + "build:types": "tsc --emitDeclarationOnly", + "prebuild:js": "node-sass src/components/ -o libs/components/", + "build:js": "cross-env BABEL_ENV=production babel src --out-dir libs --extensions \".js,.jsx,.ts,.tsx\"", + "prebuild": "rm -rf libs/*", + "build": "yarn build:types && yarn build:js", "nuke": "rm -rf node_modules", "clean": "rimraf libs", "lint": "eslint src", "lint_fix": "eslint src --fix", - "prepare": "yarn clean && yarn build", - "storybook": "start-storybook -p 6006", + "prepare": "yarn clean", + "prestorybook": "yarn build:css", + "storybook": "npm-run-all -p watch:css dev-storybook", + "dev-storybook": "start-storybook -p 6006", + "build:css": "node-sass src/components/ -o src/components/ ", + "watch:css": "node-sass src/components/ -o src/components/ -w -r", "build-storybook": "build-storybook" }, "repository": { @@ -24,6 +34,11 @@ "reactjs", "redux" ], + "jest": { + "moduleNameMapper": { + "^.+\\.(css|less)$": "/src/css-stub.js" + } + }, "author": "atomicjolt (http://github.com/atomicjolt)", "license": "MIT", "bugs": { @@ -48,14 +63,22 @@ "@babel/plugin-transform-runtime": "^7.9.0", "@babel/preset-env": "^7.9.5", "@babel/preset-react": "^7.9.4", + "@babel/preset-typescript": "^7.14.5", "@storybook/addon-actions": "^6.2.9", "@storybook/addon-essentials": "^6.2.9", "@storybook/addon-links": "^6.2.9", "@storybook/react": "^6.2.9", "@testing-library/react": "^11.2.7", + "@tippyjs/react": "^4.2.5", + "@types/jest": "^26.0.23", + "@types/node-sass": "^4.11.1", + "@types/react": "^17.0.11", + "@types/react-dom": "^17.0.8", "babel-eslint": "^10.1.0", "babel-jest": "^25.3.0", "babel-loader": "^8.2.2", + "babel-plugin-react-css-modules": "^5.2.6", + "classnames": "^2.3.1", "cross-env": "^7.0.2", "eslint": "^6.8.0", "eslint-config-airbnb": "^18.1.0", @@ -64,22 +87,29 @@ "eslint-plugin-jsx-a11y": "^6.2.3", "eslint-plugin-react": "^7.19.0", "eslint-plugin-react-hooks": "^3.0.0", + "i18next": "^20.3.2", "jest": "^25.3.0", "lodash": "^4.17.15", "mime": "^2.4.4", "nock": "^12.0.3", + "npm-run-all": "^4.1.5", "prop-types": "^15.7.2", "react": "^16.13.1", + "react-aria-live": "^2.0.5", + "react-docgen-typescript": "^2.0.0", "react-dom": "^16.13.1", "react-redux": "^7.2.0", + "react-router-dom": "^5.2.0", "redux": "^4.0.5", "rimraf": "^3.0.2", + "sass": "^1.35.1", "superagent": "^5.2.2", - "babel-plugin-transform-scss": "^1.0.11", - "sass": "^1.35.1" + "tslint": "^6.1.3", + "typescript": "^4.3.4" }, "dependencies": { "add": "^2.0.6", + "node-sass": "^6.0.0", "yarn": "^1.22.10" } } diff --git a/src/components/Banner/index.jsx b/src/components/Banner/index.jsx index 072d1f7..10b2caf 100644 --- a/src/components/Banner/index.jsx +++ b/src/components/Banner/index.jsx @@ -2,7 +2,7 @@ import React from 'react'; import PropTypes from 'prop-types'; import cn from 'classnames'; -import './styles.scss'; +import './styles.css'; export const BannerTypes = Object.freeze({ ERROR: 'error', diff --git a/src/components/Banner/styles.css b/src/components/Banner/styles.css new file mode 100644 index 0000000..90765ba --- /dev/null +++ b/src/components/Banner/styles.css @@ -0,0 +1,36 @@ +.Banner { + background: gray; + display: -webkit-box; + display: -ms-flexbox; + display: -webkit-flex; + display: flex; + -webkit-align-items: center; + align-items: center; + min-height: 4rem; + padding: 0.8rem 1.2rem; + border-radius: 0.3rem; + margin: 20px 0; } + .Banner > i { + font-size: 2.4rem; + color: #fff; + margin-right: 1.2rem; } + .Banner h3 { + color: #fff; + font-size: 1.4rem; + font-family: 'Lato', sans-serif; + font-weight: 700; + margin: 0; + margin-right: .5rem; } + .Banner__content { + color: #fff; + font-family: 'Lato', sans-serif; + font-weight: normal; + font-size: 1.4rem; } + .Banner__content span { + margin-right: 0.8rem; } + .Banner--error { + background: #f00; } + .Banner--warning { + background: #ff8300; } + .Banner--relief { + background: #1ea7fd; } diff --git a/src/components/Button/__snapshots__/index.spec.tsx.snap b/src/components/Button/__snapshots__/index.spec.tsx.snap new file mode 100644 index 0000000..9545787 --- /dev/null +++ b/src/components/Button/__snapshots__/index.spec.tsx.snap @@ -0,0 +1,15 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Button component Should match default snapshot 1`] = ` + + + +`; diff --git a/src/components/Button/index.spec.tsx b/src/components/Button/index.spec.tsx new file mode 100644 index 0000000..c243cfa --- /dev/null +++ b/src/components/Button/index.spec.tsx @@ -0,0 +1,38 @@ +import React from 'react'; +import { render, screen, fireEvent } from '@testing-library/react'; +import { Button, ButtonType } from '.'; + +describe('Button component', () => { + const renderComponent = (onClick = () => {}) => { + const ariaOptions = { + 'aria-label': 'survey options', + 'aria-haspopup': 'menu', + 'aria-expanded': false, + }; + + return render( + , + ); + }; + it('Should match default snapshot', () => { + + + const { asFragment } = renderComponent(); + + expect(asFragment()).toMatchSnapshot(); + }); + + it('Should click the button', () => { + const onClick = jest.fn(); + renderComponent(onClick); + fireEvent.click(screen.getByText('Click')); + expect(onClick).toHaveBeenCalled(); + }); +}); diff --git a/src/components/Button/index.stories.tsx b/src/components/Button/index.stories.tsx new file mode 100644 index 0000000..60c8896 --- /dev/null +++ b/src/components/Button/index.stories.tsx @@ -0,0 +1,39 @@ +import React from 'react'; +import { Story, Meta } from '@storybook/react'; +import StoryWrapper from '../StoryWrapper'; +import { Button, ButtonType, Props } from '.'; + +export default { + title: 'Button', + component: Button, +} as Meta; + +const Template: Story = (args) => ( + + + ); +}); diff --git a/src/components/Button/styles.css b/src/components/Button/styles.css new file mode 100644 index 0000000..224370a --- /dev/null +++ b/src/components/Button/styles.css @@ -0,0 +1,159 @@ +@keyframes spinner { + 0% { + transform: rotate(0deg); } + 100% { + transform: rotate(360deg); } } + +.aj-btn, +a.aj-btn { + display: inline-block; + height: 3rem; + padding: 0 1rem; + background: #f5f5f5; + border: 0.1rem solid #bbbbbb; + border-radius: 3px; + cursor: pointer; + white-space: nowrap; + position: relative; } + .aj-btn *, + a.aj-btn * { + vertical-align: top; } + .aj-btn.is-loading, + a.aj-btn.is-loading { + pointer-events: none; + position: relative; + padding-left: 3.2rem; } + .aj-btn.is-loading:before, + a.aj-btn.is-loading:before { + content: ""; + position: absolute; + left: 0.8rem; + top: 0.6rem; + width: 1.2rem; + height: 1.2rem; + border-radius: 50%; + border: 0.2rem solid #333333; + border-top: 0.2rem solid transparent; + animation: spinner 0.8s linear infinite; } + .aj-btn.has-icon, + a.aj-btn.has-icon { + position: relative; + padding-left: 3rem; } + .aj-btn.has-icon i, + a.aj-btn.has-icon i { + position: absolute; + left: 0.6rem; + top: 50%; + transform: translateY(-50%); + font-size: 1.8rem; + color: #595959; } + .aj-btn--dropdown, + a.aj-btn--dropdown { + padding-right: 3rem; } + .aj-btn--no-bold, + a.aj-btn--no-bold { + font-weight: 400 !important; } + .aj-btn--sort, + a.aj-btn--sort { + background-color: transparent; + border: 1px solid transparent; + padding: 0; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; } + .aj-btn--sort:active, .aj-btn--sort:focus, + a.aj-btn--sort:active, + a.aj-btn--sort:focus { + outline: none; } + .aj-btn--sort i, + a.aj-btn--sort i { + position: relative; + display: block; + height: 12px; + font-size: 24px; + color: #C6C6C6; } + .aj-btn--sort i.sort-direction, + a.aj-btn--sort i.sort-direction { + color: #595959; } + .aj-btn--sort i:nth-child(1), + a.aj-btn--sort i:nth-child(1) { + bottom: 4px; } + .aj-btn--sort i:nth-child(2), + a.aj-btn--sort i:nth-child(2) { + top: -9px; } + .aj-btn--icon, + .aj-btn a.aj-btn--icon, + a.aj-btn--icon, + a.aj-btn a.aj-btn--icon { + background-color: #ffffff; + border: none; + width: 3rem; + height: 3rem; + padding: 0; + display: flex; + align-items: center; + justify-content: center; + transition: box-shadow 0.1s ease; + position: relative; } + .aj-btn--icon i, + .aj-btn a.aj-btn--icon i, + a.aj-btn--icon i, + a.aj-btn a.aj-btn--icon i { + color: #595959; + font-size: 1.8rem; + line-height: 1; + transition: all 0.1s ease; } + .aj-btn--icon:hover, + .aj-btn a.aj-btn--icon:hover, + a.aj-btn--icon:hover, + a.aj-btn a.aj-btn--icon:hover { + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3); + background-color: #f5f5f5; + z-index: 2; } + .aj-btn--icon:hover i, + .aj-btn a.aj-btn--icon:hover i, + a.aj-btn--icon:hover i, + a.aj-btn a.aj-btn--icon:hover i { + color: #333333; } + .aj-btn--icon.has-error::after, + .aj-btn a.aj-btn--icon.has-error::after, + a.aj-btn--icon.has-error::after, + a.aj-btn a.aj-btn--icon.has-error::after { + content: ""; + position: absolute; + top: 0.5rem; + right: 0.3rem; + width: 0.8rem; + height: 0.8rem; + background: #C83232; + border: 0.1rem solid #ffffff; + border-radius: 50%; } + .aj-btn--icon-lg i, + .aj-btn--icon a.aj-btn--icon-lg i, + .aj-btn a.aj-btn--icon-lg i, + .aj-btn a.aj-btn--icon a.aj-btn--icon-lg i, + a.aj-btn--icon-lg i, + a.aj-btn--icon a.aj-btn--icon-lg i, + a.aj-btn a.aj-btn--icon-lg i, + a.aj-btn a.aj-btn--icon a.aj-btn--icon-lg i { + font-size: 2.4rem; } + .aj-btn--primary, + a.aj-btn--primary { + font-weight: bold; + color: white; + font-size: 14px; + padding: 12px 16px; + border-radius: 5px; + border: none; + line-height: 17px; + background-color: #3068C1; + letter-spacing: 0px; + height: 41px; } + .aj-btn--secondary, + a.aj-btn--secondary { + color: #343434; + font-size: 14px; + border-radius: 5px; + height: 41px; + border: 1px solid #CCCCCC; } diff --git a/src/components/Button/styles.scss b/src/components/Button/styles.scss new file mode 100644 index 0000000..0242806 --- /dev/null +++ b/src/components/Button/styles.scss @@ -0,0 +1,165 @@ +@import "../../styles/styles.scss"; + +.aj-btn, +a.aj-btn { + display: inline-block; + height: 3rem; + padding: 0 1rem; + background: $gray1; + border: $border; + border-radius: $radius; + cursor: pointer; + white-space: nowrap; + position: relative; + * { + vertical-align: top; + } + + &.is-loading { + pointer-events: none; + position: relative; + padding-left: 3.2rem; + + &:before { + content: ""; + position: absolute; + left: 0.8rem; + top: 0.6rem; + width: 1.2rem; + height: 1.2rem; + border-radius: 50%; + border: 0.2rem solid $text; + border-top: 0.2rem solid transparent; + animation: spinner 0.8s linear infinite; + } + } + + &.has-icon { + position: relative; + padding-left: 3rem; + + i { + position: absolute; + left: 0.6rem; + top: 50%; + transform: translateY(-50%); + font-size: 1.8rem; + color: $gray8; + } + } + + // Modifiers + &--dropdown { + padding-right: 3rem; + } + + &--no-bold { + font-weight: 400 !important; + } + + &--sort { + background-color: transparent; + border: 1px solid transparent; + padding: 0; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + + &:active, + &:focus { + outline: none; + } + + i { + position: relative; + display: block; + height: 12px; + font-size: 24px; + color: $grayC6; + + &.sort-direction { + color: $gray59; + } + + &:nth-child(1) { + bottom: 4px; + } + + &:nth-child(2) { + top: -9px; + } + } + } + + &--icon, + a.aj-btn--icon { + background-color: $white; + border: none; + width: 3rem; + height: 3rem; + padding: 0; + display: flex; + align-items: center; + justify-content: center; + transition: box-shadow 0.1s ease; + position: relative; + + i { + color: $alt-text; + font-size: 1.8rem; + line-height: 1; + transition: all 0.1s ease; + } + + &:hover { + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3); + background-color: $gray1; + z-index: 2; + + i { + color: $text; + } + } + + &.has-error::after { + content: ""; + position: absolute; + top: 0.5rem; + right: 0.3rem; + width: 0.8rem; + height: 0.8rem; + background: $red; + border: 0.1rem solid $white; + border-radius: 50%; + } + + &-lg, + a.aj-btn--icon-lg { + i { + font-size: 2.4rem; + } + } + } + + &--primary { + font-weight: bold; + color: white; + font-size: 14px; + padding: 12px 16px; + border-radius: 5px; + border: none; + line-height: 17px; + background-color: $blue30; + letter-spacing: 0px; + height: 41px; + } + + &--secondary { + color: $gray34; + font-size: 14px; + border-radius: 5px; + height: 41px; + border: 1px solid $whiteCC; + } +} diff --git a/src/components/Card/__snapshots__/index.spec.tsx.snap b/src/components/Card/__snapshots__/index.spec.tsx.snap new file mode 100644 index 0000000..4ed74f0 --- /dev/null +++ b/src/components/Card/__snapshots__/index.spec.tsx.snap @@ -0,0 +1,41 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Card component Should match default snapshot 1`] = ` + +
+
+

+ Survey Process +

+

+ Step 1 of 2 +

+
+
+
+
+`; + +exports[`Card component Should not render content if blank property is true 1`] = ` + +
+
+ 恵 +
+
+
+`; diff --git a/src/components/Card/index.spec.tsx b/src/components/Card/index.spec.tsx new file mode 100644 index 0000000..1435fab --- /dev/null +++ b/src/components/Card/index.spec.tsx @@ -0,0 +1,85 @@ + +import React from 'react'; +import { render, screen } from '@testing-library/react'; +import Card from '.'; + +describe('Card component', () => { + it('Should match default snapshot', () => { + const { asFragment } = render( + , + ); + + expect(asFragment()).toMatchSnapshot(); + }); + + it('Should not match default snapshot when classOverride prop is added', () => { + const { asFragment: defaultFragment } = render( + , + ); + + const { asFragment: modifiedFragment } = render( + , + ); + + expect(defaultFragment()).not.toEqual(modifiedFragment()); + }); + + it('Should not match default snapshot when classes prop is added', () => { + const { asFragment: defaultFragment } = render( + , + ); + + const classes = 'material-card a-box'; + const { asFragment: modifiedFragment } = render( + , + ); + + expect(defaultFragment()).not.toEqual(modifiedFragment()); + }); + + it('Should render children', () => { + render( + +
+
, + ); + + expect(screen.getByText('恵')).toBeTruthy(); + }); + + it('Should not render content if blank property is true', () => { + const { asFragment } = render( + +
+
, + ); + + expect(asFragment()).toMatchSnapshot(); + expect(screen.queryByText(/survey process/i)).toBeFalsy(); + expect(screen.getByTestId('grace')).toBeTruthy(); + }); +}); diff --git a/src/components/Card/index.stories.tsx b/src/components/Card/index.stories.tsx new file mode 100644 index 0000000..ec76dd7 --- /dev/null +++ b/src/components/Card/index.stories.tsx @@ -0,0 +1,37 @@ +import React from 'react'; +import { Story, Meta } from '@storybook/react'; +import StoryWrapper from '../StoryWrapper'; +import Card, { Props } from '.'; +import { Button, ButtonType } from '../Button'; + +export default { + title: 'Card', + component: Card, +} as Meta; + +const Template: Story = (args) => ( + + + +); + +export const Default = Template.bind({}); +Default.args = { + title: 'Qualtrics Surveys Setup', + subtitle: 'Step 1 of 2', + children: ( + <> +

+ In order to use this LTI tool, we need your authorization to integrate + with Canvas. After authorizing your Canvas account, we'll prompt you to do the + same with your Qualtrics account. +

+ + + ), +}; diff --git a/src/components/Card/index.tsx b/src/components/Card/index.tsx new file mode 100644 index 0000000..09fcf23 --- /dev/null +++ b/src/components/Card/index.tsx @@ -0,0 +1,42 @@ +import React from 'react'; +import cn from 'classnames'; + +import './styles.css'; + +export interface Props { + classOverride?: string, + classes?: string, + title: string, + subtitle?: string, + blank?: boolean, + children?: React.ReactNode, +} + +export default function Card(props: Props) { + const { + classOverride, + classes, + title, + subtitle, + blank, + children, + } = props; + + const baseClass = classOverride || 'aj-card'; + + return ( +
+ { !blank && + <> +
+

{title}

+

{subtitle}

+
+
+ {children} +
+ } + { blank && <>{children} } +
+ ); +} diff --git a/src/components/Card/styles.css b/src/components/Card/styles.css new file mode 100644 index 0000000..1c8953e --- /dev/null +++ b/src/components/Card/styles.css @@ -0,0 +1,38 @@ +.aj-card { + border-radius: 5px; + box-shadow: 0px 5px 11px -3px rgba(0, 0, 0, 0.36); + -webkit-box-shadow: 0px 5px 11px -3px rgba(0, 0, 0, 0.36); + padding: 1.5rem 2rem; + max-width: 420px; + font-family: Lato, sans-serif; + box-sizing: border-box; + border: 1px solid rgba(0, 0, 0, 0.036); } + .aj-card__heading { + display: flex; + flex-direction: column; + align-items: baseline; + justify-content: space-between; + padding-bottom: 0.25rem; } + .aj-card__heading > h1, + .aj-card__heading > h2 { + padding: 0; + margin: 0; } + .aj-card__heading-title { + font-size: 1.25rem; } + .aj-card__heading-subtitle { + font-size: 1rem; + opacity: 0.5; + font-weight: 400; } + .aj-card__content { + font-size: 1rem; + line-height: 1.5rem; + padding: 0; + padding-top: 1rem; + display: flex; + justify-content: flex-start; + flex-direction: column; + align-items: flex-end; } + .aj-card__content > p { + margin-top: 0; } + .aj-card__content > p:last-of-type { + margin-bottom: 1.75rem; } diff --git a/src/components/Card/styles.scss b/src/components/Card/styles.scss new file mode 100644 index 0000000..f63bc9f --- /dev/null +++ b/src/components/Card/styles.scss @@ -0,0 +1,53 @@ +.aj-card { + border-radius: 5px; + box-shadow: 0px 5px 11px -3px rgba(0, 0, 0, 0.36); + -webkit-box-shadow: 0px 5px 11px -3px rgba(0, 0, 0, 0.36); + padding: 1.5rem 2rem; + max-width: 420px; + font-family: Lato, sans-serif; + box-sizing: border-box; + border: 1px solid rgba(0, 0, 0, 0.036); + + &__heading { + display: flex; + flex-direction: column; + align-items: baseline; + justify-content: space-between; + padding-bottom: 0.25rem; + + & > h1, + & > h2 { + padding: 0; + margin: 0; + } + + &-title { + font-size: 1.25rem; + } + + &-subtitle { + font-size: 1rem; + opacity: 0.5; + font-weight: 400; + } + } + + &__content { + font-size: 1rem; + line-height: 1.5rem; + padding: 0; + padding-top: 1rem; + display: flex; + justify-content: flex-start; + flex-direction: column; + align-items: flex-end; + + & > p { + margin-top: 0; + } + + & > p:last-of-type { + margin-bottom: 1.75rem; + } + } +} diff --git a/src/components/Menu/__snapshots__/index.spec.jsx.snap b/src/components/Menu/__snapshots__/index.spec.jsx.snap new file mode 100644 index 0000000..ce45972 --- /dev/null +++ b/src/components/Menu/__snapshots__/index.spec.jsx.snap @@ -0,0 +1,27 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Menu component Should match snapshot when given renderChildren prop 1`] = ` + +
+ +
    +
  • + Menu Item +
  • +
  • + +
  • +
+
+
+`; diff --git a/src/components/Menu/index.jsx b/src/components/Menu/index.jsx new file mode 100644 index 0000000..3349f62 --- /dev/null +++ b/src/components/Menu/index.jsx @@ -0,0 +1,39 @@ +import { useState, useRef, useEffect } from 'react'; +import PropTypes from 'prop-types'; + +import { useListenOutsideClick } from '../common/hooks'; +import './style.css'; +export default function Menu(props) { + const [menuOpen, setMenuOpen] = useState(false); + const activeClass = menuOpen ? 'is-active' : ''; + const { renderChildren } = props; + + const closeMenu = () => { + setMenuOpen(false); + }; + + const onKeyPress = (e) => { + if ('keyCode' in e && e.keyCode === 13) { + closeMenu(); + } + }; + + const toggleMenu = () => { + setMenuOpen(!menuOpen); + }; + + const { ref: menuRef } = useListenOutsideClick(closeMenu); + + return renderChildren( + activeClass, + closeMenu, + menuOpen, + menuRef, + onKeyPress, + toggleMenu, + ); +} + +Menu.propTypes = { + renderChildren: PropTypes.func.isRequired, +}; diff --git a/src/components/Menu/index.spec.jsx b/src/components/Menu/index.spec.jsx new file mode 100644 index 0000000..454daa8 --- /dev/null +++ b/src/components/Menu/index.spec.jsx @@ -0,0 +1,57 @@ +import React from 'react'; +import { render, screen, fireEvent } from '@testing-library/react'; +import Menu from '.'; + +/* eslint-disable react/prop-types */ +const MockChild = (props) => { + const { + activeClass, + closeMenu, + menuRef, + toggleMenu, + } = props; + + return ( +
+ +
    +
  • + Menu Item +
  • +
  • + +
  • +
+
+ ); +}; + +describe('Menu component', () => { + + const renderComp = () => render( + ( + + )} + />); + + it('Should match snapshot when given renderChildren prop', () => { + const { asFragment } = renderComp(); + expect(asFragment()).toMatchSnapshot(); + }); + + it('Should open the menu', () => { + renderComp(); + fireEvent.click(screen.getByText('Open')); + expect(screen.queryByText('Menu Item')).toBeTruthy(); + }); +}); diff --git a/src/components/Menu/style.css b/src/components/Menu/style.css new file mode 100644 index 0000000..f22ba5b --- /dev/null +++ b/src/components/Menu/style.css @@ -0,0 +1,224 @@ +@keyframes spinner { + 0% { + transform: rotate(0deg); } + 100% { + transform: rotate(360deg); } } + +.aj-menu { + visibility: hidden; + position: absolute; + top: 50%; + right: 50%; + background-color: #ffffff; + border-radius: 0.3rem; + box-shadow: none; + z-index: 999; + margin: 0; + padding: 0; + transform: scale(0.5); + transform-origin: top right; + opacity: 0; + transition: all 0.1s ease-in; } + .aj-menu li { + opacity: 0; + transform: translateX(1rem); + transition: all 0s ease-in; + list-style-type: none; + border-radius: 0.3rem; } + .aj-menu a, + .aj-menu button { + border: none; + background-color: #ffffff; + padding: 0.6rem 2.8rem 0.6rem 2rem; + font-family: 'Lato', 'Helvetica Nue', Helvetica, Arial sans-serif; + font-weight: 400; + color: #333333 !important; + font-size: 1.4rem; + display: flex; + align-items: center; + white-space: nowrap; + text-decoration: none; + margin: 0px; + cursor: pointer; } + .aj-menu a i, + .aj-menu button i { + margin-right: 1.6rem; + color: #777777; } + .aj-menu a span, + .aj-menu button span { + line-height: 1; } + .aj-menu a:hover, .aj-menu a:focus, + .aj-menu button:hover, + .aj-menu button:focus { + background-color: #f5f5f5; } + .aj-menu a:focus, + .aj-menu button:focus { + outline: thin dotted #333; } + .aj-menu-container { + position: relative; } + .aj-menu-container.is-active { + overflow: initial; } + .aj-menu-container.is-active .aj-menu, + .aj-menu-container.is-active .aj-menu--select { + visibility: visible; + transform: scale(1); + opacity: 1; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4); + transition: opacity 0.15s ease-out, transform 0.15s ease-out; } + .aj-menu-container.is-active .aj-menu li, + .aj-menu-container.is-active .aj-menu--select li { + opacity: 1; + transform: translateX(0); + transition: opacity 0.15s ease-out, transform 0.15s ease-out; } + .aj-menu-compensation .aj-menu-container { + opacity: 0; } + .aj-menu-compensation .aj-menu-container > button { + display: none; } + .aj-menu-compensation .aj-menu-container .aj-menu { + position: relative; + transform: scale(1); } + .aj-menu__divider { + height: 0.1rem; + width: 100%; + background-color: #cccccc; + margin: 0.8rem 0; } + .aj-menu__has-status { + display: flex; + flex-direction: column; + align-items: flex-start; } + .aj-menu__has-status span:last-of-type { + font-size: 1.2rem; + color: #595959; + margin-top: 0.2rem; } + .aj-menu--right { + right: auto; + left: 50%; + transform-origin: top left; } + .aj-menu--right li { + transform: translateX(-1rem); } + .aj-menu--up .aj-menu { + top: auto; + bottom: 50%; + transform-origin: bottom right; } + .aj-menu--select { + right: 0; + top: auto; + min-width: 20rem; + visibility: hidden; + position: absolute; + background-color: #ffffff; + border-radius: 0.3rem; + box-shadow: none; + z-index: 999; + margin: 0; + padding-top: 0.8rem; + transform: scale(0.5); + transform-origin: top right; + opacity: 0; + transition: all 0.1s ease-in; } + .aj-menu--select li { + opacity: 0; + transform: translateX(1rem); + transition: all 0s ease-in; + list-style-type: none; } + .aj-menu--select button { + cursor: pointer; } + @media (max-width: 399px) { + .aj-menu { + padding: 0.8rem 0; } + .aj-menu button i, + .aj-menu a i { + display: none; } + .aj-menu button span, + .aj-menu a span { + line-height: 2.4rem; } } + +.aj-checkbox .aj-checkmark { + background-color: #ffffff; + padding: 0.9rem 2.4rem 1rem 6.4rem; + font-family: 'Lato', 'Helvetica Nue', Helvetica, Arial sans-serif; + font-weight: 400; + color: #333333 !important; + display: block; + width: 100%; + white-space: nowrap; + cursor: pointer; } + .aj-checkbox .aj-checkmark:hover { + background: #f5f5f5; } + +.aj-checkbox input[type="checkbox"] ~ span.aj-checkmark:before { + top: 1rem; + left: 2.8rem; } + +.aj-checkbox input[type="checkbox"] ~ span.aj-checkmark:after { + top: 1.1rem; + left: 3.3rem; } + +.aj-select__options { + padding: 0 1.6rem 1.6rem; } + .aj-select__options .aj-btn--gray { + width: 100%; + text-align: center; } + .aj-select__options button { + margin-top: 0.8rem; } + +.aj-preset-item { + display: flex; + align-items: center; + min-height: 3.2rem; + padding: 0 1.6rem 0 0; + transition: all 0.1s ease; } + .aj-preset-item:hover { + background-color: #f5f5f5; } + +.aj-preset-item__name { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + max-width: 24rem; + border: none; + background: none; + font-family: 'Lato', 'Helvetica Nue', Helvetica, Arial sans-serif; + font-weight: 400; + color: #333333; + font-size: 1.4rem; + padding: 1rem 0.4rem 1rem 1.6rem; + text-align: left; + flex: 1; + margin-right: auto; } + +.aj-preset__btn-icon { + border: none; + background: none; + height: 2.8rem; + width: 2.8rem; + padding: 0.4rem; + border-radius: 0.3rem; + margin-left: 0.4rem; + transition: all 0.1s ease; } + .aj-preset__btn-icon i { + font-size: 2rem; + color: #595959; + transition: all 0.1s ease; } + .aj-preset__btn-icon:hover { + background-color: #ffffff; } + .aj-preset__btn-icon:hover i { + color: #333333; } + +i.aj-preset__global { + margin: 0 0.4rem; + font-size: 2rem; + color: #bbbbbb; + cursor: default; } + +.aj-rotate { + animation: rotating 1s ease 0.3s infinite; } + +.aj-rotate--2s { + animation: rotating 2s linear infinite; } + +@keyframes rotating { + 0% { + transform: rotate(0deg); } + 100% { + transform: rotate(360deg); } } diff --git a/src/components/Menu/style.scss b/src/components/Menu/style.scss new file mode 100644 index 0000000..0acdd56 --- /dev/null +++ b/src/components/Menu/style.scss @@ -0,0 +1,285 @@ +@import "../../styles/styles.scss"; + +.aj-menu { + visibility: hidden; + position: absolute; + top: 50%; + right: 50%; + background-color: $white; + border-radius: 0.3rem; + box-shadow: none; + z-index: 999; + margin: 0; + padding: 0; + transform: scale(0.5); + transform-origin: top right; + opacity: 0; + transition: all 0.1s ease-in; + + li { + opacity: 0; + transform: translateX(1rem); + transition: all 0s ease-in; + list-style-type: none; + border-radius: 0.3rem; + } + + a, + button { + border: none; + background-color: $white; + padding: 0.6rem 2.8rem 0.6rem 2rem; + @include regular; + color: $gray10 !important; + font-size: 1.4rem; + display: flex; + align-items: center; + white-space: nowrap; + text-decoration: none; + margin: 0px; + cursor: pointer; + + i { + margin-right: 1.6rem; + color: $gray9; + } + + span { + line-height: 1; + } + + &:hover, + &:focus { + background-color: $gray1; + } + &:focus { + outline: thin dotted #333; + } + } + + &-container { + position: relative; + + &.is-active { + overflow: initial; + + .aj-menu, + .aj-menu--select { + visibility: visible; + transform: scale(1); + opacity: 1; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4); + transition: opacity 0.15s ease-out, transform 0.15s ease-out; + li { + opacity: 1; + transform: translateX(0); + transition: opacity 0.15s ease-out, transform 0.15s ease-out; + } + } + } + } + + &-compensation &-container { + opacity: 0; + & > button { + display: none; + } + .aj-menu { + position: relative; + transform: scale(1); + } + } + + &__divider { + height: 0.1rem; + width: 100%; + background-color: $gray4; + margin: 0.8rem 0; + } + + &__has-status { + display: flex; + flex-direction: column; + align-items: flex-start; + + span:last-of-type { + font-size: 1.2rem; + color: $alt-text; + margin-top: 0.2rem; + } + } + + // Modifiers + &--right { + right: auto; + left: 50%; + transform-origin: top left; + li { + transform: translateX(-1rem); + } + } + + &--up { + .aj-menu { + top: auto; + bottom: 50%; + transform-origin: bottom right; + } + } + + &--select { + right: 0; + top: auto; + min-width: 20rem; + visibility: hidden; + position: absolute; + background-color: $white; + border-radius: 0.3rem; + box-shadow: none; + z-index: 999; + margin: 0; + padding-top: 0.8rem; + transform: scale(0.5); + transform-origin: top right; + opacity: 0; + transition: all 0.1s ease-in; + + li { + opacity: 0; + transform: translateX(1rem); + transition: all 0s ease-in; + list-style-type: none; + } + button { + cursor: pointer; + } + } + + @media (max-width: 399px) { + padding: 0.8rem 0; + + button, + a { + i { + display: none; + } + span { + line-height: 2.4rem; + } + } + } +} + +.aj-checkbox { + .aj-checkmark { + background-color: $white; + padding: 0.9rem 2.4rem 1rem 6.4rem; + @include regular; + color: $gray10 !important; + display: block; + width: 100%; + white-space: nowrap; + cursor: pointer; + + &:hover { + background: $gray1; + } + } + + input[type="checkbox"] ~ span.aj-checkmark:before { + top: 1rem; + left: 2.8rem; + } + input[type="checkbox"] ~ span.aj-checkmark:after { + top: 1.1rem; + left: 3.3rem; + } +} + +.aj-select__options { + padding: 0 1.6rem 1.6rem; + + .aj-btn--gray { + width: 100%; + text-align: center; + } + button { + margin-top: 0.8rem; + } +} + +.aj-preset-item { + display: flex; + align-items: center; + min-height: 3.2rem; + padding: 0 1.6rem 0 0; + transition: all 0.1s ease; + + &:hover { + background-color: $gray1; + } +} + +.aj-preset-item__name { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + max-width: 24rem; + border: none; + background: none; + @include regular; + color: $text; + font-size: 1.4rem; + padding: 1rem 0.4rem 1rem 1.6rem; + text-align: left; + flex: 1; + margin-right: auto; +} + +.aj-preset__btn-icon { + border: none; + background: none; + height: 2.8rem; + width: 2.8rem; + padding: 0.4rem; + border-radius: 0.3rem; + margin-left: 0.4rem; + transition: all 0.1s ease; + + i { + font-size: 2rem; + color: $alt-text; + transition: all 0.1s ease; + } + + &:hover { + background-color: $white; + i { + color: $text; + } + } +} + +i.aj-preset__global { + margin: 0 0.4rem; + font-size: 2rem; + color: $gray5; + cursor: default; +} + +.aj-rotate { + animation: rotating 1s ease 0.3s infinite; +} + +.aj-rotate--2s { + animation: rotating 2s linear infinite; +} + +@keyframes rotating { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } +} diff --git a/src/components/SortableHeader/index.story-construction b/src/components/SortableHeader/index.story-construction new file mode 100644 index 0000000..044882e --- /dev/null +++ b/src/components/SortableHeader/index.story-construction @@ -0,0 +1,47 @@ +import React, { useState } from 'react'; +import { Story, Meta } from '@storybook/react'; +import StoryWrapper from '../StoryWrapper'; +import SortableHeader, { Props, SortDirection } from '.'; + +export default { + title: 'SortableHeader', + component: SortableHeader, +} as Meta; + +const Template: Story = (args) => { + const [searchTerm, setSearchTerm] = useState(''); + const [sortDirection, setSortDirection] = useState(SortDirection.Asc); + const [sortColumn, setSortColumn] = useState('createdAt'); + + args.onSearch = (newSearchTerm: string) => setSearchTerm(newSearchTerm); + args.onSort = (newSortDirection: SortDirection, newSortColumn: string) => { + setSortDirection(newSortDirection); + setSortColumn(newSortColumn); + }; + + args.currentPath = sortColumn; + args.currentDirection = sortDirection; + args.searchTerm = searchTerm; + + return ( + + + + + + + +
+
+ ); +} + +export const Default = Template.bind({}); +Default.args = { + ariaName: "Name", + sortPath: "name", + searchable: true, + searchTitle: "Name", + searchResultCount: 0, + children: "Name" +}; diff --git a/src/components/SortableHeader/index.tsx b/src/components/SortableHeader/index.tsx new file mode 100644 index 0000000..0d384c4 --- /dev/null +++ b/src/components/SortableHeader/index.tsx @@ -0,0 +1,213 @@ +import React, { useState, useRef, useEffect } from 'react'; +import i18n from 'i18next'; +import { SortDirection } from '../Table'; +import { Button, ButtonType } from '../Button' +import Tooltip from '../common/tooltip'; +import withLiveMessenger from '../common/with-live-messenger'; + +import { getID } from './utils'; +import './styles.css'; + +const ID = getID(); +const eatClick = (e: any) => { + e.preventDefault(); + e.stopPropagation(); + + return false; +}; + +export interface Props { + children: React.ReactNode, + rowSpan: number, + onSort: Function, + sortPath: string, + ariaName: string, + currentPath: string, + currentDirection: SortDirection, + tooltip: React.ReactNode, + searchable: boolean, + searchTitle: string, + onSearch: Function, + searchTerm: string, + searchResultCount: number, + announceAssertive: Function, + initializing: boolean, +} + +function SortableHeader(props: Props) { + const [searchExpanded, setSearchExpanded] = useState(false); + const searchInputRef = useRef(null); + + const { + children, + rowSpan, + onSort, + sortPath, + ariaName, + currentPath, + currentDirection, + tooltip, + searchable = false, + searchTitle = '', + onSearch = () => {}, + searchTerm = '', + searchResultCount = 0, + initializing, + } = props; + + useEffect(() => { + if (searchExpanded) { + searchInputRef.current?.focus(); + } else { + onSearch(''); + } + }, [searchExpanded]); + + function search() { + + if (!searchable) { + return null; + } + + return ( +
+ + onSearch(value)} + onClick={eatClick} + value={searchTerm} + tabIndex={searchExpanded ? 0 : -1} + aria-controls={`status-${ID}`} + ref={searchInputRef} + /> +
+ {i18n.t('{{searchResultCount}} results returned', { searchResultCount })} +
+ +
+ ); + } + + function isCurrentPath() { + return sortPath === currentPath; + } + + function getSortLabel(): string { + if (!isCurrentPath) return ''; + + return currentDirection === SortDirection.asc ? 'ascending' : 'descending'; + } + + function getTooltip() { + if (tooltip) { + return ( + {tooltip} + ); + } + + return null; + } + + function arrowClassName(direction: SortDirection) { + if (!isCurrentPath()) return ''; + if (direction === currentDirection) { + return 'sort-direction'; + } + + return ''; + } + + function invertSort() { + return currentDirection === SortDirection.asc + ? SortDirection.desc + : SortDirection.asc; + } + + const sortClick = (e: any) => { + if (!initializing) { + const { announceAssertive: announce } = props; + e.stopPropagation(); + + const sortDirection = isCurrentPath() ? invertSort() : SortDirection.asc; + announce( + i18n.t('Sorting by {{name}}, {{direction}}', { + name: ariaName, + direction: sortDirection === SortDirection.asc ? 'ascending' : 'descending', + }), + ); + onSort(sortDirection, sortPath); + } + }; + + return ( + + {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events */} +
+ {children} + {getTooltip()} + + {search()} +
+ + ); +} + + +export default withLiveMessenger(SortableHeader); diff --git a/src/components/SortableHeader/styles.css b/src/components/SortableHeader/styles.css new file mode 100644 index 0000000..be3687c --- /dev/null +++ b/src/components/SortableHeader/styles.css @@ -0,0 +1,45 @@ +@keyframes spinner { + 0% { + transform: rotate(0deg); } + 100% { + transform: rotate(360deg); } } + +.aj-table__head-row:first-child { + width: 50%; } + +.aj-table__head-row span { + font-size: 12px; + text-transform: uppercase; + color: #222; } + +.aj-table__head-row .aj-input--search { + display: flex; + align-items: center; + max-width: 235px; } + .aj-table__head-row .aj-input--search.is-expanded { + border: 1px solid #333; + border-radius: 2px; + animation: slide .3s ease-out; + animation-fill-mode: forwards; } + .aj-table__head-row .aj-input--search .aj-hidden { + display: none; } + .aj-table__head-row .aj-input--search button { + background-color: transparent; + border: 1px solid transparent; } + .aj-table__head-row .aj-input--search button i { + font-size: 18px; + line-height: 25px; } + .aj-table__head-row .aj-input--search input { + display: none; + border: none; + outline: none; } + .aj-table__head-row .aj-input--search.is-expanded input { + animation: slide 0.3s ease-out; + animation-fill-mode: forwards; + display: inline-block; } + +@keyframes slide { + from { + width: 0; } + to { + width: 100%; } } diff --git a/src/components/SortableHeader/styles.scss b/src/components/SortableHeader/styles.scss new file mode 100644 index 0000000..ee117b5 --- /dev/null +++ b/src/components/SortableHeader/styles.scss @@ -0,0 +1,61 @@ +@import "../../styles/styles.scss"; + +.aj-table__head-row { + &:first-child { + width: 50%; + } + + span { + font-size: 12px; + text-transform: uppercase; + color: #222; + } + + .aj-input--search { + display: flex; + align-items: center; + max-width: 235px; + + &.is-expanded { + border: 1px solid #333; + border-radius: 2px; + animation: slide .3s ease-out; + animation-fill-mode: forwards; + } + + .aj-hidden { + display: none; + } + + button { + background-color: transparent; + border: 1px solid transparent; + + i { + font-size: 18px; + line-height: 25px; + } + } + + input { + display: none; + border: none; + outline: none; + } + + &.is-expanded input { + animation: slide 0.3s ease-out; + animation-fill-mode: forwards; + display: inline-block; + } + } +} + +@keyframes slide { + from { + width: 0; + } + to { + width: 100%; + } +} diff --git a/src/components/SortableHeader/utils.ts b/src/components/SortableHeader/utils.ts new file mode 100644 index 0000000..aa21001 --- /dev/null +++ b/src/components/SortableHeader/utils.ts @@ -0,0 +1 @@ +export const getID = () => parseInt(String(Math.random() * 1e10), 27).toString(); \ No newline at end of file diff --git a/src/components/StoryWrapper/index.jsx b/src/components/StoryWrapper/index.jsx index e627f42..8daa94f 100644 --- a/src/components/StoryWrapper/index.jsx +++ b/src/components/StoryWrapper/index.jsx @@ -9,6 +9,7 @@ export default function StoryWrapper(props) { +
{children} diff --git a/src/components/SurveyItemLoading/index.jsx b/src/components/SurveyItemLoading/index.jsx new file mode 100644 index 0000000..3ad4ad3 --- /dev/null +++ b/src/components/SurveyItemLoading/index.jsx @@ -0,0 +1,16 @@ +import React from 'react'; +import LoadingSkeleton from '../LoadingSkeleton'; +import './styles.scss'; + +function SurveyItemLoading() { + return ( + + + + + + + ); +} + +export default SurveyItemLoading; diff --git a/src/components/SurveyItemLoading/styles.css b/src/components/SurveyItemLoading/styles.css new file mode 100644 index 0000000..6e3a8be --- /dev/null +++ b/src/components/SurveyItemLoading/styles.css @@ -0,0 +1,5 @@ +@keyframes spinner { + 0% { + transform: rotate(0deg); } + 100% { + transform: rotate(360deg); } } diff --git a/src/components/SurveyItemLoading/styles.scss b/src/components/SurveyItemLoading/styles.scss new file mode 100644 index 0000000..3065864 --- /dev/null +++ b/src/components/SurveyItemLoading/styles.scss @@ -0,0 +1,5 @@ +@import "../../styles/styles.scss"; + +.surveyLoadingItem { + // display: flex; +} diff --git a/src/components/Table/index.spec.tsx b/src/components/Table/index.spec.tsx new file mode 100644 index 0000000..94acc89 --- /dev/null +++ b/src/components/Table/index.spec.tsx @@ -0,0 +1,5 @@ +describe('Table Component', () => { + it('stub test', () => { + expect(true).toEqual(true); + }); +}); diff --git a/src/components/Table/index.stories.tsx b/src/components/Table/index.stories.tsx new file mode 100644 index 0000000..c4a6eee --- /dev/null +++ b/src/components/Table/index.stories.tsx @@ -0,0 +1,97 @@ +import React from 'react'; +import { Story, Meta } from '@storybook/react'; +import StoryWrapper from '../StoryWrapper'; +import { composeTable, Props } from '.'; +import { TableRow } from '../TableRow'; + +enum FilterType { + name = 'name', + dueAt = 'dueAt', + createdAt = 'createdAt', + completed = 'completed', +} + +const Table1 = composeTable(); +export default { + title: 'Table', + component: Table1, +} as Meta; + +const Template1: Story> = (args) => ( + + + +); + +export const Default = Template1.bind({}); +const defaultColumns = [ + { dataName: FilterType.name, displayName: 'NAME' }, + { dataName: FilterType.dueAt, displayName: 'DUE' }, + { dataName: FilterType.createdAt, displayName: 'CREATED' }, + { dataName: FilterType.completed, displayName: 'COMPLETED' }, + { dataName: 'actions', displayName: 'actions', hidden: true }, +] + +Default.args = { + columns: defaultColumns, + searchTerm: 'Hello World', + searchColumn: FilterType.name, + onSearch: () => console.log('Sup'), + renderTableContent: (one = 'one', two = 2, three = 'III') => ( + + + {one} + {two} + {three} + 四 + E + + + ) +}; + +enum FilterType2 { + product = 'product', + calories = 'calories', + fat = 'fat', + sugar = 'sugar', + protien = 'protien', + carbs = 'carbs', +} + +const Table2 = composeTable(); + +const Template2: Story> = (args) => ( + + + +); + +export const TableTwo = Template2.bind({}); +const defaultColumns2 = [ + { dataName: FilterType2.product, displayName: 'PRODUCT' }, + { dataName: FilterType2.calories, displayName: 'CALORIES' }, + { dataName: FilterType2.fat, displayName: 'FAT' }, + { dataName: FilterType2.sugar, displayName: 'SUGAR' }, + { dataName: FilterType2.protien, displayName: 'PROTIEN' }, + { dataName: FilterType2.carbs, displayName: 'CARBS' }, +] + +TableTwo.args = { + columns: defaultColumns2, + searchTerm: 'Hello World', + searchColumn: FilterType2.product, + onSearch: () => console.log('Sup'), + renderTableContent: (one = 'one', two = 2, three = 'III') => ( + + + {one} + {two} + {three} + 四 + E + VI + + + ) +}; \ No newline at end of file diff --git a/src/components/Table/index.tsx b/src/components/Table/index.tsx new file mode 100644 index 0000000..30b6056 --- /dev/null +++ b/src/components/Table/index.tsx @@ -0,0 +1,60 @@ +import React, { useState } from 'react'; +import { composeTableHead } from '../TableHead'; +import './styles.css'; + +export enum SortDirection { + asc = 'ASC', + desc = 'DESC', +} + +export type ColumnType = { + dataName: T + displayName: string + hidden?: boolean +} + +export interface Props { + columns: ColumnType[] + defaultSortColumn: T + searchTerm: string + searchColumn: T + headClasses?: string + onSearch: (arg: string) => void + renderTableContent: (...arg: any[]) => any +} + +export const composeTable = () => { + const TableHead = composeTableHead(); + + return ({ + columns, + searchTerm, + searchColumn, + headClasses, + defaultSortColumn, + onSearch, + renderTableContent, + }: Props) => { + const [sortColumn, setSortColumn] = useState(defaultSortColumn); + const [sortDirection, setSortDirection] = useState(SortDirection.asc); + + return ( + + { + setSortDirection(newSortDirection); + setSortColumn(newSortColumn); + }} + /> + {renderTableContent()} +
+ ); + } +} \ No newline at end of file diff --git a/src/components/Table/styles.css b/src/components/Table/styles.css new file mode 100644 index 0000000..cf0b774 --- /dev/null +++ b/src/components/Table/styles.css @@ -0,0 +1,26 @@ +@keyframes spinner { + 0% { + transform: rotate(0deg); } + 100% { + transform: rotate(360deg); } } + +.aj-table { + width: 100%; + border-collapse: collapse; + text-align: left; + table-layout: fixed; + min-width: 800px; + font-family: 'Lato', 'sans-serif'; } + .aj-table__row { + border-bottom: 1px solid #DDD; + height: 45px; } + .aj-table__head { + font-size: 12px; + font-weight: 700; + cursor: pointer; + border-bottom: 1px solid #DDD; } + .aj-table__head-row { + height: 44px; } + .aj-table__flex-cell { + display: flex; + align-items: center; } diff --git a/src/components/Table/styles.scss b/src/components/Table/styles.scss new file mode 100644 index 0000000..082e4fc --- /dev/null +++ b/src/components/Table/styles.scss @@ -0,0 +1,31 @@ +@import "../../styles/styles.scss"; + +.aj-table { + width: 100%; + border-collapse: collapse; + text-align: left; + table-layout: fixed; + min-width: 800px; + font-family: 'Lato', 'sans-serif'; + + &__row { + border-bottom: 1px solid $whiteDD; + height: 45px; + } + + &__head { + font-size: 12px; + font-weight: 700; + cursor: pointer; + border-bottom: 1px solid #DDD; + + &-row { + height: 44px; + } + } + + &__flex-cell { + display: flex; + align-items: center; + } +} diff --git a/src/components/TableHead/__snapshots__/index.spec.tsx.snap b/src/components/TableHead/__snapshots__/index.spec.tsx.snap new file mode 100644 index 0000000..4a3c978 --- /dev/null +++ b/src/components/TableHead/__snapshots__/index.spec.tsx.snap @@ -0,0 +1,79 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`TableHead Should match default Snapshot 1`] = ` + + + + + + + +
+
+ + Name + + + +
+
+`; diff --git a/src/components/TableHead/index.spec.tsx b/src/components/TableHead/index.spec.tsx new file mode 100644 index 0000000..35eb0dd --- /dev/null +++ b/src/components/TableHead/index.spec.tsx @@ -0,0 +1,28 @@ +import React from 'react'; +import { render } from '@testing-library/react'; +import { SortDirection } from '../Table'; +import { TableHead } from '.'; + +jest.mock('../SortableHeader/utils', () => ({ + getID: () => 123 +})) + +describe('TableHead', () => { + it('Should match default Snapshot', () => { + const { asFragment } = render( + + {}} + onSort={() => {}} + searchColumn="name" + searchTerm="" + sortColumn="name" + sortDirection={SortDirection.asc} + /> +
+ ); + + expect(asFragment()).toMatchSnapshot(); + }); +}); diff --git a/src/components/TableHead/index.tsx b/src/components/TableHead/index.tsx new file mode 100644 index 0000000..b9ad440 --- /dev/null +++ b/src/components/TableHead/index.tsx @@ -0,0 +1,66 @@ +import React from 'react'; +import SortableHeader from '../SortableHeader'; +import cn from 'classnames'; +import { SortDirection, ColumnType } from '../Table'; + +interface Props { + columns: ColumnType[], + searchColumn: T, + sortColumn: T, + sortDirection: SortDirection, + searchTerm: string, + classes?: string, + onSearch: (searchTerm: string) => void, + onSort: (newSortDirection: SortDirection, newSortColumn: T) => void, +} + +export const composeTableHead = () => { + return ({ + columns, + searchColumn, + sortColumn, + sortDirection, + searchTerm, + classes, + onSearch, + onSort, + }: Props) => { + + return ( + + + {columns.map((column, index) => { + if (column.hidden) { + return ( + + ); + } + + return ( + + {column.displayName} + + ); + })} + + + ); + } + +} diff --git a/src/components/TableHead/styles.css b/src/components/TableHead/styles.css new file mode 100644 index 0000000..e69de29 diff --git a/src/components/TableHead/styles.scss b/src/components/TableHead/styles.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/components/TableRow/index.spec.tsx b/src/components/TableRow/index.spec.tsx new file mode 100644 index 0000000..9bc42a2 --- /dev/null +++ b/src/components/TableRow/index.spec.tsx @@ -0,0 +1,10 @@ +import React from 'react'; +import { render } from '@testing-library/react'; +// import TableRow from '.'; + + +describe('SurveyItem component', () => { + it('description', () => { + expect(true).toEqual(true); + }); +}); diff --git a/src/components/TableRow/index.tsx b/src/components/TableRow/index.tsx new file mode 100644 index 0000000..9fa23ae --- /dev/null +++ b/src/components/TableRow/index.tsx @@ -0,0 +1,27 @@ +import React from 'react'; +import { ColumnType } from '../Table'; +import './styles.scss'; + +interface Props { + data: any, + renderData: (data: any, column: ColumnType) => React.ReactNode, + columns: ColumnType[] +} + +export function TableRow({ + data, + columns, + renderData, +}: Props) { + return ( + + { columns.map(columns => { + return ( + + {renderData(data, columns)} + + ); + })} + + ); +} diff --git a/src/components/TableRow/styles.css b/src/components/TableRow/styles.css new file mode 100644 index 0000000..2d68b7a --- /dev/null +++ b/src/components/TableRow/styles.css @@ -0,0 +1,37 @@ +@keyframes spinner { + 0% { + transform: rotate(0deg); } + 100% { + transform: rotate(360deg); } } + +.assignment-item__name { + font-size: 15px; } + +.assignment-item__due, .assignment-item__date { + font-size: 13px; + color: #5A5A5A; + letter-spacing: 0px; } + +.assignment-item__actions { + text-align: right; + display: flex; + align-items: center; + justify-content: flex-end; + height: 45px; } + .assignment-item__actions .aj-menu-container .loadingSkeleton { + margin: auto; + width: 80% !important; + height: 30px; } + .assignment-item__actions .qualtrics-link__results { + font-size: 12px; + font-weight: bold; } + .assignment-item__actions span.qualtrics-link__results { + font-size: 12px; + font-weight: bold; + color: #aaaaaa; } + .assignment-item__actions .locked { + color: #595959; + padding: 5px; + margin: 0px 18px 0px 24px; } + .assignment-item__actions .locked:hover { + cursor: not-allowed; } diff --git a/src/components/TableRow/styles.scss b/src/components/TableRow/styles.scss new file mode 100644 index 0000000..9cba378 --- /dev/null +++ b/src/components/TableRow/styles.scss @@ -0,0 +1,50 @@ +@import "../../styles/styles.scss"; + +.assignment-item { + &__name { + font-size: 15px; + } + + &__due, + &__date { + font-size: 13px; + color: $gray5A; + letter-spacing: 0px; + } + + &__actions { + text-align: right; + display: flex; + align-items: center; + justify-content: flex-end; + height: 45px; + + .aj-menu-container { + .loadingSkeleton { + margin: auto; + width: 80% !important; + height: 30px; + } + } + + .qualtrics-link__results { + font-size: 12px; + font-weight: bold; + } + + span.qualtrics-link__results { + font-size: 12px; + font-weight: bold; + color: #aaaaaa; + } + + .locked { + color: $gray59; + padding: 5px; + margin: 0px 18px 0px 24px; + &:hover { + cursor: not-allowed; + } + } + } +} diff --git a/src/components/TableTextBody/index.jsx b/src/components/TableTextBody/index.jsx new file mode 100644 index 0000000..ec49a6f --- /dev/null +++ b/src/components/TableTextBody/index.jsx @@ -0,0 +1,24 @@ +import React from 'react'; +import PropTypes from 'prop-types'; + +// Used to wrap string (or other content) in a tbody tags +// For displaying it within a table +// Specify colums to the number of columns of the table +// so it can span the entire content +const TableTextBody = ({ + className, columns, children +}) => ( + + + {children} + + +); + +TableTextBody.propTypes = { + className: PropTypes.string, + columns: PropTypes.number, + children: PropTypes.oneOfType([PropTypes.string, PropTypes.node]), +}; + +export default TableTextBody; diff --git a/src/components/common/hooks.ts b/src/components/common/hooks.ts new file mode 100644 index 0000000..4e5847b --- /dev/null +++ b/src/components/common/hooks.ts @@ -0,0 +1,55 @@ +import { + useRef, useCallback, useEffect, useState, +} from 'react'; + +export function useThrottledEffect(effect: () => void | (() => any), timeout: number, deps: any[]) { + const callback = useCallback(effect, deps); + + useEffect(() => { + const handler = setTimeout(() => { + callback(); + }, timeout); + + return () => { clearTimeout(handler); }; + + }, [callback, timeout]); +} + +interface DefaultState { + default: T, + current: T +} + +type DefaultReturn = [T, (newState: T) => void, () => void]; + +export function useDefaultState(data: T): DefaultReturn { + const [state, setState] = useState>({ + default: data, + current: data, + }); + + const updateCurrent = (newState: T) => setState({ ...state, current: newState }); + + const revert = () => setState({ ...state, current: state.default }); + + return [state.current, updateCurrent, revert]; +} + +export function useListenOutsideClick(callback: any) { + const ref = useRef(null); + + const handleClickOutside = (event: MouseEvent) => { + if (ref.current && !ref.current.contains(event.target as HTMLElement)) { + callback(event); + } + }; + + useEffect(() => { + document.addEventListener('click', handleClickOutside, true); + return () => { + document.removeEventListener('click', handleClickOutside, true); + }; + }, []); + + return { ref }; +} \ No newline at end of file diff --git a/src/components/common/out-link.jsx b/src/components/common/out-link.jsx new file mode 100644 index 0000000..af43306 --- /dev/null +++ b/src/components/common/out-link.jsx @@ -0,0 +1,11 @@ +import React from 'react'; + +export const OutLink = () => ( + {props.children} + +); \ No newline at end of file diff --git a/src/components/common/tooltip.jsx b/src/components/common/tooltip.jsx new file mode 100644 index 0000000..3849946 --- /dev/null +++ b/src/components/common/tooltip.jsx @@ -0,0 +1,34 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import Tippy from '@tippyjs/react'; + +class Tooltip extends React.Component { + + render() { + return ( + + + + ); + } +} + +Tooltip.propTypes = { + icon: PropTypes.string, + children: PropTypes.node.isRequired, + placement: PropTypes.string, +}; + +Tooltip.defaultProps = { + icon: 'info', + placement: 'top', +}; + + +export default Tooltip; diff --git a/src/components/common/with-live-messenger.jsx b/src/components/common/with-live-messenger.jsx new file mode 100644 index 0000000..b606e28 --- /dev/null +++ b/src/components/common/with-live-messenger.jsx @@ -0,0 +1,9 @@ +import React from 'react'; +import { LiveMessenger } from 'react-aria-live'; + +export default (Child) => (props) => ( + + {({ announceAssertive, announcePolite }) => ( + )} + +); diff --git a/src/css-stub.js b/src/css-stub.js new file mode 100644 index 0000000..a099545 --- /dev/null +++ b/src/css-stub.js @@ -0,0 +1 @@ +module.exports = {}; \ No newline at end of file diff --git a/src/index.js b/src/index.js index aa457b6..3ee008d 100644 --- a/src/index.js +++ b/src/index.js @@ -62,6 +62,7 @@ export { default as GqlStatus } from './components/common/gql_status'; export { default as IframeResizeWrapper } from './components/common/resize_wrapper'; export { default as InlineError } from './components/common/errors/inline_error'; export { Banner, BannerTypes } from './components/Banner'; +export { Button, ButtonType } from './components/Button'; // APOLLO REACT COMPONENTS export { default as AtomicMutation } from './graphql/atomic_mutation'; diff --git a/src/styles/.csscomb.json b/src/styles/.csscomb.json new file mode 100644 index 0000000..8456e41 --- /dev/null +++ b/src/styles/.csscomb.json @@ -0,0 +1,297 @@ +{ + "always-semicolon": true, + "block-indent": 2, + "colon-space": [0, 1], + "color-case": "lower", + "color-shorthand": true, + "combinator-space": true, + "element-case": "lower", + "eof-newline": true, + "leading-zero": false, + "remove-empty-rulesets": true, + "rule-indent": 2, + "stick-brace": " ", + "strip-spaces": true, + "unitless-zero": true, + "vendor-prefix-align": true, + "sort-order": [ + [ + "position", + "top", + "right", + "bottom", + "left", + "z-index", + "display", + "float", + "width", + "min-width", + "max-width", + "height", + "min-height", + "max-height", + "-webkit-box-sizing", + "-moz-box-sizing", + "box-sizing", + "-webkit-appearance", + "padding", + "padding-top", + "padding-right", + "padding-bottom", + "padding-left", + "margin", + "margin-top", + "margin-right", + "margin-bottom", + "margin-left", + "overflow", + "overflow-x", + "overflow-y", + "-webkit-overflow-scrolling", + "-ms-overflow-x", + "-ms-overflow-y", + "-ms-overflow-style", + "clip", + "clear", + "font", + "font-family", + "font-size", + "font-style", + "font-weight", + "font-variant", + "font-size-adjust", + "font-stretch", + "font-effect", + "font-emphasize", + "font-emphasize-position", + "font-emphasize-style", + "font-smooth", + "-webkit-hyphens", + "-moz-hyphens", + "hyphens", + "line-height", + "color", + "text-align", + "-webkit-text-align-last", + "-moz-text-align-last", + "-ms-text-align-last", + "text-align-last", + "text-emphasis", + "text-emphasis-color", + "text-emphasis-style", + "text-emphasis-position", + "text-decoration", + "text-indent", + "text-justify", + "text-outline", + "-ms-text-overflow", + "text-overflow", + "text-overflow-ellipsis", + "text-overflow-mode", + "text-shadow", + "text-transform", + "text-wrap", + "-webkit-text-size-adjust", + "-ms-text-size-adjust", + "letter-spacing", + "-ms-word-break", + "word-break", + "word-spacing", + "-ms-word-wrap", + "word-wrap", + "-moz-tab-size", + "-o-tab-size", + "tab-size", + "white-space", + "vertical-align", + "list-style", + "list-style-position", + "list-style-type", + "list-style-image", + "pointer-events", + "cursor", + "visibility", + "zoom", + "flex-direction", + "flex-order", + "flex-pack", + "flex-align", + "table-layout", + "empty-cells", + "caption-side", + "border-spacing", + "border-collapse", + "content", + "quotes", + "counter-reset", + "counter-increment", + "resize", + "-webkit-user-select", + "-moz-user-select", + "-ms-user-select", + "-o-user-select", + "user-select", + "nav-index", + "nav-up", + "nav-right", + "nav-down", + "nav-left", + "background", + "background-color", + "background-image", + "-ms-filter:\\'progid:DXImageTransform.Microsoft.gradient", + "filter:progid:DXImageTransform.Microsoft.gradient", + "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader", + "filter", + "background-repeat", + "background-attachment", + "background-position", + "background-position-x", + "background-position-y", + "-webkit-background-clip", + "-moz-background-clip", + "background-clip", + "background-origin", + "-webkit-background-size", + "-moz-background-size", + "-o-background-size", + "background-size", + "border", + "border-color", + "border-style", + "border-width", + "border-top", + "border-top-color", + "border-top-style", + "border-top-width", + "border-right", + "border-right-color", + "border-right-style", + "border-right-width", + "border-bottom", + "border-bottom-color", + "border-bottom-style", + "border-bottom-width", + "border-left", + "border-left-color", + "border-left-style", + "border-left-width", + "border-radius", + "border-top-left-radius", + "border-top-right-radius", + "border-bottom-right-radius", + "border-bottom-left-radius", + "-webkit-border-image", + "-moz-border-image", + "-o-border-image", + "border-image", + "-webkit-border-image-source", + "-moz-border-image-source", + "-o-border-image-source", + "border-image-source", + "-webkit-border-image-slice", + "-moz-border-image-slice", + "-o-border-image-slice", + "border-image-slice", + "-webkit-border-image-width", + "-moz-border-image-width", + "-o-border-image-width", + "border-image-width", + "-webkit-border-image-outset", + "-moz-border-image-outset", + "-o-border-image-outset", + "border-image-outset", + "-webkit-border-image-repeat", + "-moz-border-image-repeat", + "-o-border-image-repeat", + "border-image-repeat", + "outline", + "outline-width", + "outline-style", + "outline-color", + "outline-offset", + "-webkit-box-shadow", + "-moz-box-shadow", + "box-shadow", + "filter:progid:DXImageTransform.Microsoft.Alpha(Opacity", + "-ms-filter:\\'progid:DXImageTransform.Microsoft.Alpha", + "opacity", + "-ms-interpolation-mode", + "-webkit-transition", + "-moz-transition", + "-ms-transition", + "-o-transition", + "transition", + "-webkit-transition-delay", + "-moz-transition-delay", + "-ms-transition-delay", + "-o-transition-delay", + "transition-delay", + "-webkit-transition-timing-function", + "-moz-transition-timing-function", + "-ms-transition-timing-function", + "-o-transition-timing-function", + "transition-timing-function", + "-webkit-transition-duration", + "-moz-transition-duration", + "-ms-transition-duration", + "-o-transition-duration", + "transition-duration", + "-webkit-transition-property", + "-moz-transition-property", + "-ms-transition-property", + "-o-transition-property", + "transition-property", + "-webkit-transform", + "-moz-transform", + "-ms-transform", + "-o-transform", + "transform", + "-webkit-transform-origin", + "-moz-transform-origin", + "-ms-transform-origin", + "-o-transform-origin", + "transform-origin", + "-webkit-animation", + "-moz-animation", + "-ms-animation", + "-o-animation", + "animation", + "-webkit-animation-name", + "-moz-animation-name", + "-ms-animation-name", + "-o-animation-name", + "animation-name", + "-webkit-animation-duration", + "-moz-animation-duration", + "-ms-animation-duration", + "-o-animation-duration", + "animation-duration", + "-webkit-animation-play-state", + "-moz-animation-play-state", + "-ms-animation-play-state", + "-o-animation-play-state", + "animation-play-state", + "-webkit-animation-timing-function", + "-moz-animation-timing-function", + "-ms-animation-timing-function", + "-o-animation-timing-function", + "animation-timing-function", + "-webkit-animation-delay", + "-moz-animation-delay", + "-ms-animation-delay", + "-o-animation-delay", + "animation-delay", + "-webkit-animation-iteration-count", + "-moz-animation-iteration-count", + "-ms-animation-iteration-count", + "-o-animation-iteration-count", + "animation-iteration-count", + "-webkit-animation-direction", + "-moz-animation-direction", + "-ms-animation-direction", + "-o-animation-direction", + "animation-direction" + ] + ] +} diff --git a/src/styles/.csslintrc b/src/styles/.csslintrc new file mode 100644 index 0000000..005b862 --- /dev/null +++ b/src/styles/.csslintrc @@ -0,0 +1,19 @@ +{ + "adjoining-classes": false, + "box-sizing": false, + "box-model": false, + "compatible-vendor-prefixes": false, + "floats": false, + "font-sizes": false, + "gradients": false, + "important": false, + "known-properties": false, + "outline-none": false, + "qualified-headings": false, + "regex-selectors": false, + "shorthand": false, + "text-indent": false, + "unique-headings": false, + "universal-selector": false, + "unqualified-attributes": false +} diff --git a/src/styles/fonts/roboto-bold-webfont.woff b/src/styles/fonts/roboto-bold-webfont.woff new file mode 100644 index 0000000..8373f07 Binary files /dev/null and b/src/styles/fonts/roboto-bold-webfont.woff differ diff --git a/src/styles/fonts/roboto-bold-webfont.woff2 b/src/styles/fonts/roboto-bold-webfont.woff2 new file mode 100644 index 0000000..47aa106 Binary files /dev/null and b/src/styles/fonts/roboto-bold-webfont.woff2 differ diff --git a/src/styles/fonts/roboto-regular-webfont.woff b/src/styles/fonts/roboto-regular-webfont.woff new file mode 100644 index 0000000..847e110 Binary files /dev/null and b/src/styles/fonts/roboto-regular-webfont.woff differ diff --git a/src/styles/fonts/roboto-regular-webfont.woff2 b/src/styles/fonts/roboto-regular-webfont.woff2 new file mode 100644 index 0000000..c8c60cd Binary files /dev/null and b/src/styles/fonts/roboto-regular-webfont.woff2 differ diff --git a/src/styles/modules/_all.scss b/src/styles/modules/_all.scss new file mode 100644 index 0000000..0d4c662 --- /dev/null +++ b/src/styles/modules/_all.scss @@ -0,0 +1,2 @@ +@import "colors"; +@import "mixins"; diff --git a/src/styles/modules/_colors.scss b/src/styles/modules/_colors.scss new file mode 100644 index 0000000..eca62e8 --- /dev/null +++ b/src/styles/modules/_colors.scss @@ -0,0 +1,61 @@ +// Colors +$white: #ffffff; + +$yellow: #E2C10E; +$yellow2: #FDF761; +$yellow3: #fcfcd3; +$blue: #2D7DAE; +$green: #3A7934; +$green-alt: #51B548; +$red: #C83232; +$red2: #EFEFEF; + +$primary: #805ACB; +$primary-alt: #B388FF; + +$color1: #2797E5; +$color2: #01B200; +$color3: #B92FA7; +$color4: #961519; +$color5: #6F1C64; +$color6: #8A6337; +$color7: #3166C9; +$color8: #D0950D; +$color9: #D92828; +$color10: #26AF8F; + +$gray1: #f5f5f5; +$gray2: #eaeaea; +$gray3: #dddddd; +$gray4: #cccccc; +$gray5: #bbbbbb; +$gray6: #666666; +$gray8: #595959; +$gray9: #777777; +$gray10: #333333; +$gray11: #e1e1e1; +$gray12: #222222; + +$text: $gray10; +$alt-text: $gray8; +$blue-text: #20638D; + +$radius: 3px; +$border: 0.1rem solid $gray5; +$border2: 0.1rem solid $gray2; + +$incorrect: #D0021B; +$correct: #7ED321; + + + +$gray33: #333; +$gray59: #595959; +$gray5A: #5A5A5A; +$blue30: #3068C1; +$whiteF5: #F5F5F5; +$whiteDD: #DDD; +$grayC6: #C6C6C6; +$gray34: #343434; +$whiteCC: #CCCCCC; +$gray55: #555555; diff --git a/src/styles/modules/_mixins.scss b/src/styles/modules/_mixins.scss new file mode 100644 index 0000000..900b500 --- /dev/null +++ b/src/styles/modules/_mixins.scss @@ -0,0 +1,176 @@ +// Fonts must be relative to the main scss file (i.e. the file that includes this mixin) +// That's why the urls includes /fonts/ even though that is up one directory +//@font-face { + //font-family: "robotobold"; + //src: url("fonts/roboto-bold-webfont.woff2") format("woff2"), + //url("fonts/roboto-bold-webfont.woff") format("woff"); + //font-weight: normal; + //font-style: normal; + +//} + +//@font-face { + //font-family: "robotoregular"; + //src: url("fonts/roboto-regular-webfont.woff2") format("woff2"), + //url("fonts/roboto-regular-webfont.woff") format("woff"); + //font-weight: normal; + //font-style: normal; +//} + + +@mixin display-flex { + display: -webkit-box; + display: -ms-flexbox; + display: -webkit-flex; + display: flex; +} +@mixin justify-content($flex) { + -webkit-justify-content: $flex; + justify-content: $flex; +} +@mixin align-items($flex) { + -webkit-align-items: $flex; + -ms-flex-align: $flex; + align-items: $flex; +} +@mixin align-self($flex) { + -webkit-align-self: $flex; + -ms-flex-item-align: $flex; + align-self: $flex; +} +@mixin flex-wrap($flex) { + -webkit-flex-wrap: $flex; + -ms-flex-wrap: $flex; + flex-wrap: $flex; +} +@mixin flex-direction($flex) { + -webkit-flex-direction: $flex; + -ms-flex-direction: $flex; + flex-direction: $flex; +} +@mixin flex-shrink($flex) { + -webkit-flex-shrink: $flex; + -ms-flex-negative: $flex; + flex-shrink: $flex; +} +@mixin flex($flex...) { + -webkit-flex: $flex; + flex: $flex; +} + +@mixin center($position) { + + @if $position == 'vertical' { + top: 50%; + -webkit-transform: translateY(-50%); + -ms-transform: translateY(-50%); + transform: translateY(-50%); + } + @else if $position == 'horizontal' { + left: 50%; + -webkit-transform: translateX(-50%); + -ms-transform: translateX(-50%); + transform: translateX(-50%); + } + @else if $position == 'both' { + top: 50%; + left: 50%; + -webkit-transform: translate(-50%, -50%); + -ms-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); + } +} + +@mixin semi-bold{ + font-family: 'Lato', 'Helvetica Nue', Helvetica, Arial sans-serif; + font-weight: 400; +} +@mixin regular{ + font-family: 'Lato', 'Helvetica Nue', Helvetica, Arial sans-serif; + font-weight: 400; +} +@mixin bold{ + font-family: 'Lato', 'Helvetica Nue', Helvetica, Arial sans-serif; + font-weight: 700; +} + +// Transition mixin +// Add CSS transition to any element +@mixin transform($transform...) { + -webkit-transform: $transform; + -moz-transform: $transform; + -o-transform: $transform; + -ms-transform: $transform; + transform: $transform; +} + +// Transition mixin +// Add CSS transition to any element +@mixin transition($transition...) { + -webkit-transition: $transition; + -moz-transition: $transition; + -o-transition: $transition; + -ms-transition: $transition; + transition: $transition; +} + +// Animation mixin +// Animate an element +@mixin animation($animation...) { + -webkit-animation: $animation; + -moz-animation: $animation; + -o-animation: $animation; + animation: $animation; +} + +// Clearfix hack mixin +// Add clearfix hack - to contain floats within containers +@mixin clearfix { + &:before, + &:after { + content: ""; + clear: both; + display: table; + } +} + +// Display flex mixin +// Add flex display property to any element +@mixin displayFlex { + display: -webkit-box; + display: -ms-flexbox; + display: -webkit-flex; + display: flex; +} + +// Box sizing mixin +// Set box sizing for an element +@mixin boxSizing($sizing) { + -webkit-box-sizing: $sizing; + -moz-box-sizing: $sizing; + box-sizing: $sizing; +} + +// Truncate mixin +// Truncate single line text +@mixin truncate { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +@mixin no-highlight { + -webkit-touch-callout: none; /* iOS Safari */ + -webkit-user-select: none; /* Safari */ + -khtml-user-select: none; /* Konqueror HTML */ + -moz-user-select: none; /* Firefox */ + -ms-user-select: none; /* Internet Explorer/Edge */ + user-select: none; /* Non-prefixed version, currently + supported by Chrome and Opera */ +} + +@keyframes spinner{ + 0%{transform: rotate(0deg);} + 100%{transform: rotate(360deg);} +} + diff --git a/src/styles/styles.scss b/src/styles/styles.scss new file mode 100644 index 0000000..b6b65af --- /dev/null +++ b/src/styles/styles.scss @@ -0,0 +1 @@ +@import "modules/_all"; diff --git a/src/types.d.ts b/src/types.d.ts new file mode 100644 index 0000000..dba4ceb --- /dev/null +++ b/src/types.d.ts @@ -0,0 +1 @@ +declare module 'classnames'; \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..a448e6f --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,35 @@ +{ + "include": [ + "src/**/*", + ], + "exclude": [ + "src/**/*.stories.ts", + "src/**/*.stories.tsx", + "src/**/*.spec.ts", + "src/**/*.spec.tsx", + "src/**/*.stories.js", + "src/**/*.stories.jsx", + "src/**/*.spec.js", + "src/**/*.spec.jsx", + ], + "compilerOptions": { + "allowSyntheticDefaultImports": true, + "resolveJsonModule": true, + "esModuleInterop": true, + "strict": true, + "outDir": "libs", + "module": "commonjs", + "target": "es5", + "declaration": true, + "lib": ["es6", "dom"], + "sourceMap": true, + "allowJs": true, + "jsx": "react", + "moduleResolution": "node", + "noImplicitReturns": true, + "noImplicitThis": true, + "noImplicitAny": true, + "strictNullChecks": true, + "isolatedModules": true + }, +} \ No newline at end of file diff --git a/tsconfig.tsbuildinfo b/tsconfig.tsbuildinfo new file mode 100644 index 0000000..c244b48 --- /dev/null +++ b/tsconfig.tsbuildinfo @@ -0,0 +1 @@ +{"program":{"fileNames":["./node_modules/typescript/lib/lib.es5.d.ts","./node_modules/typescript/lib/lib.es2015.d.ts","./node_modules/typescript/lib/lib.es2016.d.ts","./node_modules/typescript/lib/lib.es2017.d.ts","./node_modules/typescript/lib/lib.es2018.d.ts","./node_modules/typescript/lib/lib.dom.d.ts","./node_modules/typescript/lib/lib.es2015.core.d.ts","./node_modules/typescript/lib/lib.es2015.collection.d.ts","./node_modules/typescript/lib/lib.es2015.generator.d.ts","./node_modules/typescript/lib/lib.es2015.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.promise.d.ts","./node_modules/typescript/lib/lib.es2015.proxy.d.ts","./node_modules/typescript/lib/lib.es2015.reflect.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2016.array.include.d.ts","./node_modules/typescript/lib/lib.es2017.object.d.ts","./node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2017.string.d.ts","./node_modules/typescript/lib/lib.es2017.intl.d.ts","./node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","./node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","./node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","./node_modules/typescript/lib/lib.es2018.intl.d.ts","./node_modules/typescript/lib/lib.es2018.promise.d.ts","./node_modules/typescript/lib/lib.es2018.regexp.d.ts","./node_modules/typescript/lib/lib.es2020.bigint.d.ts","./node_modules/typescript/lib/lib.esnext.intl.d.ts","./src/constants/wrapper.js","./src/actions/errors.js","./src/constants/network.js","./src/actions/jwt.js","./src/actions/modal.js","./src/actions/post_message.js","./src/reducers/errors.js","./src/reducers/jwt.js","./src/reducers/modal.js","./src/reducers/settings.js","./src/communications/communicator.js","./src/middleware/post_message.js","./src/api/api.js","./src/middleware/api.js","./src/loaders/jwt.js","./node_modules/redux/index.d.ts","./src/store/configure_store.js","./node_modules/@types/react/global.d.ts","./node_modules/csstype/index.d.ts","./node_modules/@types/prop-types/index.d.ts","./node_modules/@types/scheduler/tracing.d.ts","./node_modules/@types/react/index.d.ts","./src/components/settings.jsx","./src/libs/styles.js","./src/components/common/atomicjolt_loader.jsx","./src/components/common/errors/inline_error.jsx","./src/components/common/gql_status.jsx","./src/libs/resize_iframe.js","./src/components/common/resize_wrapper.jsx","./node_modules/classnames/index.d.ts","./src/components/banner/index.jsx","./src/components/button/index.tsx","./src/graphql/atomic_mutation.jsx","./src/graphql/atomic_query.jsx","./node_modules/@types/hoist-non-react-statics/index.d.ts","./node_modules/@types/react-redux/index.d.ts","./src/decorators/modal.js","./src/libs/lti_roles.js","./src/index.js","./src/types.d.ts","./node_modules/querystring/decode.d.ts","./node_modules/querystring/encode.d.ts","./node_modules/querystring/index.d.ts","./node_modules/nock/types/index.d.ts","./src/specs_support/helper.js","./src/api/api.spec.js","./src/api/superagent-mock-config.js","./src/communications/communicator.spec.js","./node_modules/@types/aria-query/index.d.ts","./node_modules/@testing-library/dom/types/matches.d.ts","./node_modules/@testing-library/dom/types/wait-for.d.ts","./node_modules/@testing-library/dom/types/query-helpers.d.ts","./node_modules/@testing-library/dom/types/queries.d.ts","./node_modules/@testing-library/dom/types/get-queries-for-element.d.ts","./node_modules/@testing-library/dom/node_modules/pretty-format/build/types.d.ts","./node_modules/@testing-library/dom/node_modules/pretty-format/build/index.d.ts","./node_modules/@testing-library/dom/types/screen.d.ts","./node_modules/@testing-library/dom/types/wait.d.ts","./node_modules/@testing-library/dom/types/wait-for-dom-change.d.ts","./node_modules/@testing-library/dom/types/wait-for-element.d.ts","./node_modules/@testing-library/dom/types/wait-for-element-to-be-removed.d.ts","./node_modules/@testing-library/dom/types/get-node-text.d.ts","./node_modules/@testing-library/dom/types/events.d.ts","./node_modules/@testing-library/dom/types/pretty-dom.d.ts","./node_modules/@testing-library/dom/types/role-helpers.d.ts","./node_modules/@testing-library/dom/types/config.d.ts","./node_modules/@testing-library/dom/types/suggestions.d.ts","./node_modules/@testing-library/dom/types/index.d.ts","./node_modules/@types/react-dom/index.d.ts","./node_modules/@types/react-dom/test-utils/index.d.ts","./node_modules/@testing-library/react/types/index.d.ts","./src/components/storywrapper/index.jsx","./src/components/banner/index.stories.jsx","./src/components/banner/index.spec.jsx","./src/components/card/index.tsx","./src/components/gqlstatus/index.jsx","./src/components/gqlstatus/index.stories.js","./src/constants/error.js","./src/constants/wrapper.spec.js","./src/libs/lti_roles.spec.js","./src/libs/styles.spec.js","./src/loaders/jwt.spec.js","./src/middleware/api.spec.js","./src/middleware/post_message.spec.js","./src/reducers/errors.spec.js","./src/reducers/jwt.spec.js","./src/reducers/settings.spec.js","./src/specs_support/stub.jsx","./src/specs_support/utils.js","./src/store/configure_store.spec.js","./node_modules/@babel/types/lib/index.d.ts","./node_modules/@types/babel__generator/index.d.ts","./node_modules/@babel/parser/typings/babel-parser.d.ts","./node_modules/@types/babel__template/index.d.ts","./node_modules/@types/babel__traverse/index.d.ts","./node_modules/@types/babel__core/index.d.ts","./node_modules/@types/braces/index.d.ts","./node_modules/@types/color-name/index.d.ts","./node_modules/@types/color-convert/conversions.d.ts","./node_modules/@types/color-convert/route.d.ts","./node_modules/@types/color-convert/index.d.ts","./node_modules/@types/node/assert/strict.d.ts","./node_modules/@types/node/globals.d.ts","./node_modules/@types/node/async_hooks.d.ts","./node_modules/@types/node/buffer.d.ts","./node_modules/@types/node/child_process.d.ts","./node_modules/@types/node/cluster.d.ts","./node_modules/@types/node/console.d.ts","./node_modules/@types/node/constants.d.ts","./node_modules/@types/node/crypto.d.ts","./node_modules/@types/node/dgram.d.ts","./node_modules/@types/node/diagnostic_channel.d.ts","./node_modules/@types/node/dns.d.ts","./node_modules/@types/node/dns/promises.d.ts","./node_modules/@types/node/domain.d.ts","./node_modules/@types/node/events.d.ts","./node_modules/@types/node/fs.d.ts","./node_modules/@types/node/fs/promises.d.ts","./node_modules/@types/node/http.d.ts","./node_modules/@types/node/http2.d.ts","./node_modules/@types/node/https.d.ts","./node_modules/@types/node/inspector.d.ts","./node_modules/@types/node/module.d.ts","./node_modules/@types/node/net.d.ts","./node_modules/@types/node/os.d.ts","./node_modules/@types/node/path.d.ts","./node_modules/@types/node/perf_hooks.d.ts","./node_modules/@types/node/process.d.ts","./node_modules/@types/node/punycode.d.ts","./node_modules/@types/node/querystring.d.ts","./node_modules/@types/node/readline.d.ts","./node_modules/@types/node/repl.d.ts","./node_modules/@types/node/stream.d.ts","./node_modules/@types/node/stream/promises.d.ts","./node_modules/@types/node/string_decoder.d.ts","./node_modules/@types/node/timers.d.ts","./node_modules/@types/node/timers/promises.d.ts","./node_modules/@types/node/tls.d.ts","./node_modules/@types/node/trace_events.d.ts","./node_modules/@types/node/tty.d.ts","./node_modules/@types/node/url.d.ts","./node_modules/@types/node/util.d.ts","./node_modules/@types/node/util/types.d.ts","./node_modules/@types/node/v8.d.ts","./node_modules/@types/node/vm.d.ts","./node_modules/@types/node/worker_threads.d.ts","./node_modules/@types/node/zlib.d.ts","./node_modules/@types/node/globals.global.d.ts","./node_modules/@types/node/wasi.d.ts","./node_modules/@types/node/ts3.6/base.d.ts","./node_modules/@types/node/assert.d.ts","./node_modules/@types/node/base.d.ts","./node_modules/@types/node/index.d.ts","./node_modules/@types/minimatch/index.d.ts","./node_modules/@types/glob/index.d.ts","./node_modules/@types/glob-base/index.d.ts","./node_modules/@types/graceful-fs/index.d.ts","./node_modules/@types/unist/index.d.ts","./node_modules/@types/hast/index.d.ts","./node_modules/@types/html-minifier-terser/index.d.ts","./node_modules/@types/is-function/index.d.ts","./node_modules/@types/istanbul-lib-coverage/index.d.ts","./node_modules/@types/istanbul-lib-report/index.d.ts","./node_modules/@types/istanbul-reports/index.d.ts","./node_modules/@types/jest/node_modules/jest-diff/build/cleanupsemantic.d.ts","./node_modules/@types/jest/node_modules/jest-diff/build/types.d.ts","./node_modules/@types/jest/node_modules/jest-diff/build/difflines.d.ts","./node_modules/@types/jest/node_modules/jest-diff/build/printdiffs.d.ts","./node_modules/@types/jest/node_modules/jest-diff/build/index.d.ts","./node_modules/@types/jest/node_modules/pretty-format/build/index.d.ts","./node_modules/@types/jest/index.d.ts","./node_modules/@types/json-schema/index.d.ts","./node_modules/@types/json5/index.d.ts","./node_modules/@types/markdown-to-jsx/index.d.ts","./node_modules/@types/mdast/index.d.ts","./node_modules/@types/micromatch/index.d.ts","./node_modules/form-data/index.d.ts","./node_modules/@types/node-fetch/externals.d.ts","./node_modules/@types/node-fetch/index.d.ts","./node_modules/@types/node-sass/index.d.ts","./node_modules/@types/normalize-package-data/index.d.ts","./node_modules/@types/npmlog/index.d.ts","./node_modules/@types/overlayscrollbars/index.d.ts","./node_modules/@types/parse-json/index.d.ts","./node_modules/@types/parse5/index.d.ts","./node_modules/@types/prettier/index.d.ts","./node_modules/@types/pretty-hrtime/index.d.ts","./node_modules/@types/qs/index.d.ts","./node_modules/@types/reach__router/index.d.ts","./node_modules/@types/react-syntax-highlighter/index.d.ts","./node_modules/@types/scheduler/index.d.ts","./node_modules/@types/source-list-map/index.d.ts","./node_modules/@types/stack-utils/index.d.ts","./node_modules/@types/tapable/index.d.ts","./node_modules/source-map/source-map.d.ts","./node_modules/@types/uglify-js/index.d.ts","./node_modules/anymatch/index.d.ts","./node_modules/@types/webpack-sources/node_modules/source-map/source-map.d.ts","./node_modules/@types/webpack-sources/lib/source.d.ts","./node_modules/@types/webpack-sources/lib/compatsource.d.ts","./node_modules/@types/webpack-sources/lib/concatsource.d.ts","./node_modules/@types/webpack-sources/lib/originalsource.d.ts","./node_modules/@types/webpack-sources/lib/prefixsource.d.ts","./node_modules/@types/webpack-sources/lib/rawsource.d.ts","./node_modules/@types/webpack-sources/lib/replacesource.d.ts","./node_modules/@types/webpack-sources/lib/sizeonlysource.d.ts","./node_modules/@types/webpack-sources/lib/sourcemapsource.d.ts","./node_modules/@types/webpack-sources/lib/index.d.ts","./node_modules/@types/webpack-sources/lib/cachedsource.d.ts","./node_modules/@types/webpack-sources/index.d.ts","./node_modules/@types/webpack/index.d.ts","./node_modules/@types/webpack-env/index.d.ts","./node_modules/@types/yargs-parser/index.d.ts","./node_modules/@types/yargs/index.d.ts","./node_modules/@types/jest/node_modules/pretty-format/build/types.d.ts"],"fileInfos":[{"version":"ac3a8c4040e183ce38da69d23b96939112457d1936198e6542672b7963cf0fce","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06",{"version":"1dad4fe1561d99dfd6709127608b99a76e5c2643626c800434f99c48038567ee","affectsGlobalScope":true},{"version":"cce43d02223f8049864f8568bed322c39424013275cd3bcc3f51492d8b546cb3","affectsGlobalScope":true},{"version":"43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"8dff1b4c2df638fcd976cbb0e636f23ab5968e836cd45084cc31d47d1ab19c49","affectsGlobalScope":true},{"version":"2bb4b3927299434052b37851a47bf5c39764f2ba88a888a107b32262e9292b7c","affectsGlobalScope":true},{"version":"810627a82ac06fb5166da5ada4159c4ec11978dfbb0805fe804c86406dab8357","affectsGlobalScope":true},{"version":"62d80405c46c3f4c527ee657ae9d43fda65a0bf582292429aea1e69144a522a6","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"8f4c9f651c8294a2eb1cbd12581fe25bfb901ab1d474bb93cd38c7e2f4be7a30","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"df9c8a72ca8b0ed62f5470b41208a0587f0f73f0a7db28e5a1272cf92537518e","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"60761e6ea886034af0f294f025a7199360ce4e2c8ba4ec6408bc049cf9b89799","affectsGlobalScope":true},{"version":"506b80b9951c9381dc5f11897b31fca5e2a65731d96ddefa19687fbc26b23c6e","affectsGlobalScope":true},{"version":"1f055470266e2d5430a72471fef29eec116884b5a47e8c44d5a79560e42117fa","signature":"b672a97f80702aa835b8c4c7b2970d7e2c4ecb236ffd7a8a0f22c50f27cefb4c"},{"version":"4ba94e76f275959e91cc05647eb6c5c86972d46c3479571fc6cda797ed58bd0b","signature":"9ceed77b8f412f4a1cc8bccaebd92d6566068007874ce181bbd2b7d822a2f81b"},{"version":"2dfa9d4584e63538289e152eb43db61b536133a2b64a506911a28008064e0906","signature":"6c25a6592dc941b08fe70fb2abb575d39a56bfa530acdf743a5272ff2540507a"},{"version":"6c752c429287b8e3ce35024bbc537c56b3206ede8fb8f1518b2cdaa0d265338c","signature":"a60359ed93bb2e445da833ecb72e851edef5d049a22966744e6c3ff87d2dec26"},{"version":"7a6817c3312967ad5499f16aa3930e1727acfdfcb1e865759fb8a3c943e6fc52","signature":"f8836b6ed37ad57fa08366cb4c98e77a2574dbd257fa97800603985877bc7a69"},{"version":"b103d85928eb3a442cb17c7a926be138b17e7226df1435e3837640725e51943d","signature":"5ffc43c607d2dd3b70d36d242a9548d46496b1ccde338e52e1a0af9df34e3e73"},{"version":"c42e62c0c56bbd6d422d3b5ee6948fdd0555bfc9297676bebdbbf1ab05e6dfe4","signature":"056ada9f4f1ae13d9a82221a69f39e75fb331c0a5d337103b9ee234b9149be03"},{"version":"8d1c87356c0de82629e9a1b0ab2ab27f4ae961205b98b890293a2ee290784565","signature":"ed86e701758b02a3223cd537b42f5260c02e7d8b75c6bb3fae11c4274fbbe14b"},{"version":"be7d08cd054a5783d1e90b6f172b3e6f17cda14a42196fd1a4db501f700ddd23","signature":"ef3b2a1c698b5881986babb69069bc327866de8e6c4987ddc5192b757cb7122f"},{"version":"167d04938a10022c0f83f34413970a48d1218bcc1e7f24f94ba01ba5dee7d0fe","signature":"4e47437262b68295a5af34146dbf45a11a71bc53b1fe2be8c681681d121132a0"},{"version":"09a166fb8fbf56405dbb147d3590ea93cb3ce06c1e764504f3e5976a7a487415","signature":"366d7fa2609022628b1b8c79cedb9e91f182673ae738162bfb23e343212dce3f"},{"version":"073c94cac3f1784906903b728ebf0f69eafa2eab8e37598c5e1a94ad7714539a","signature":"a3811d364aaf9beace3cb160256b336cf6102bcbd2cb3d69bdf15e3daf6b5117"},{"version":"fd41028f28e0c4a41e7d33e953ed41319ce6f190097c36c79da29083ab1ab25d","signature":"dc41c03d91ec9cb0c73e75fb0951c2462b4209770100306865b6c27375282f76"},{"version":"c9818304b49d4909fd89ec03edf0f33ea0731e0a74ec66566ac865dec5c555c6","signature":"a83184e6144bfbe1689c1c575ba327de909dee272af38ab6fc9c9c6bacdfcf63"},{"version":"44bd225b326811fad5122441fab13e47b9eaa75d9a8f168b8f50d8afa2bb24fe","signature":"81eea97383b7cfc8bfb186274dbae8470c4c99a35197c2ef1749b1055e175e45"},{"version":"d530250769a14518ebd6edda5b5f94abaaf3b9f612363c0da32082fa6acd0da8","affectsGlobalScope":true},{"version":"4598beb01c73e3787e46698ee061dd817d91e0482011497cc8d1a8aeebb1b16b","signature":"65d67386b377338c16b01d52616a8ba323f4b8fb4ce0940ae248fe8d5c3ad891"},{"version":"ecf78e637f710f340ec08d5d92b3f31b134a46a4fcf2e758690d8c46ce62cba6","affectsGlobalScope":true},"4ee363f83d7be2202f34fcd84c44da71bf3a9329fee8a05f976f75083a52ea94","a7e32dcb90bf0c1b7a1e4ac89b0f7747cbcba25e7beddc1ebf17be1e161842ad","f5a8b384f182b3851cec3596ccc96cb7464f8d3469f48c74bf2befb782a19de5",{"version":"ca1f4045ec1a501a114d63e2f3f24e2dba00c0cb9030b3109f579d54c1e95d63","affectsGlobalScope":true},{"version":"e8ae442777047fc593e50e4e2b799b104014194d4dc82e048da4f7d36129664d","signature":"f6118c10dc289c671043597bbf447d784f6c4cdfb875c13d5fb8c2ccc103d4b3"},{"version":"f23f0724f86295e3f6e512dce16d46d2fd86c07fc6aa3c90f5e499e095ba5f9b","signature":"18d9db6c6760ddead6e77e6673958be67a399e59fad06344c2e7daece9241a5b"},{"version":"38b49b12145990199d54c1e9c64b3735e877f14e3187152b89dcd70128eb23c3","signature":"c57bead5b56cf65a4a2cc199335106a4b5da72f120e5c81b4a6b94ef7554dedf"},{"version":"5436fbe8efe3b35f6ebf7cbf319ca407783d289e6c6ba92b056fe31c95055c49","signature":"49f35b917b077c941773dbc3730377d5fe630ad49a0189e9363410915edd5e94"},{"version":"d6ea10628e09958f48112a16e1343b8a533e4960b039571a26813ec98db4c198","signature":"0bf3ef35cd9a821d7babdfb11c8199b8960c1021dc63182ee3a6fb27468c89d9"},{"version":"e11f91401a4348a518011795722dcf18e339c3e743196507575821073e531a95","signature":"5b49a501642e889d49cda82ab48085b5493804ade9ce147bdca1e60651b24ac0"},{"version":"77c0d0a48141ee6d962b0ea52288d23046253ce9e874609e79b7a1c87f56f533","signature":"a2ba5c5d7e840c5a48d2738425c5b0b24503c83e0b9cc8634fbe8a0e1614072e"},"d153cbce75b7e1621eda0a4148748f44edd71ff44cc5351bac1c7787da4d5b05",{"version":"6f599ed302e28cbac4d40d4115050809f60662d5fb77b0398b30505d06803ffe","signature":"d7bb0d1944f32a64ce3abfaf71e754c6c86bfd8e853d30b6b6f86f00c60cd448"},{"version":"1a8d43dba25e7ba9801988f45d5e776ae2b2ffcac40c66fc0650aa8d7549613c","signature":"132f8cb2dcd91763e2150bfe9110130535b212a653f226f85b64adb36e5cfae9"},{"version":"f15352706a1e90a12daf58c54e358589723372c8c9773be1c3c1b12a6b7f35a5","signature":"3ca0b82fbcbb81ef077f28322c8dfa90ce30e3a8554b3d4222409b230527e1b0"},{"version":"21a365f42d5f3a3eed102f06114f67f2660b20a8bb91980d33626548510fb69b","signature":"7568bcfaea1b9d35bce5420fcd929fb90ba594507e0a1d0305f7bf45462acccc"},"bfe1b52cf71aea9bf8815810cc5d9490fa9617313e3d3c2ee3809a28b80d0bb4","89fb470ea4979b52a206816172c98f92141a95494b40ee2b8d75a901d0555ba7",{"version":"6f53bb50ab974681339afd18887362480c73a4a584dd5252d75001120a3c27f9","signature":"79b81417786323a682c1dc9468489956973344f6dbc6bab1b388ebbc535ff105"},{"version":"192912889e479c1f7de5c1c9ef7a9f9e63a20c3c2fccf49258cc03baed84f6e2","signature":"1ad694accfb96aa839a8a9320046ec3f9ea9dff490ca74899d06e46264dfc050"},{"version":"47d7b7530b3bc269074dd50c3b34b111d7ff1db90e050fa63d32077bb005478b","signature":"dc906793e0d3c740c548d6ad619aa36531a3d5b9d213190747f47ffd34781653"},"a015208aa8f2470b440e583bb3b4829f17f5f4c33567c9fea1334ae5dd6bfdb2","ad7e61eca7f2f8bf47e72695f9f6663b75e41d87ef49abdb17c0cb843862f8aa","ecba2e44af95b0599c269a92628cec22e752868bce37396740deb51a5c547a26","46a9fb41a8f3bc7539eeebc15a6e04b9e55d7537a081615ad3614220d34c3e0f","2ea5b63070e4cb3e2288ab7b51d5b29ce7835a3af9391385a9fb36a40c88eed4",{"version":"f4e27b105b1046c47028b2d73a32cee8e021cd0502940699418f1d45b7105f65","signature":"bd7d0b73119577ea878e1f3024ea3b1a886e6940a2d24e1a4863dc26df278308"},{"version":"4cee11ba69275d854ae6eeefc88b4daffccb3c38405aca7e3f4ee85984277ea2","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"6f20eb258245e3fb3ccc6c27bcfd24b0f1a1e5c36a40f33c71a52ab424df3e16","signature":"fa0597e96011ef788bd454a3a07a124b41368ed28e3a69f3da0869c6cc2b4abc"},{"version":"254a1afd7b14cf31f35b0d154386caa073c7efbb76bf93eb05191626ee1f5be2","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},"e51e34b4d8bd97569a7101c1b77234f6a1272cbb5bd50ed649b1da3f71070300","f70bc756d933cc38dc603331a4b5c8dee89e1e1fb956cfb7a6e04ebb4c008091","8387ec1601cf6b8948672537cf8d430431ba0d87b1f9537b4597c1ab8d3ade5b","e4b367f488986faa41155eba6408573e8ff66e98fd1870c3fb2a3570e421fad4","cd40e95389d7ea83b8eda20fd90a3d217af2973da559af0d1f3deb2015001327","38917038579abb914ee0957b48968b2bed721532e9bee8cb01b354093283344f","5d72971a459517c44c1379dab9ed248e87a61ba0a1e0f25c9d67e1e640cd9a09","02d734976af36f4273d930bea88b3e62adf6b078cf120c1c63d49aa8d8427c5c","d2ac9ef9ac638aebb16f0dfd03949f14d442dc9c58a0605069ba03b2088f1034","0197f7bcd7d83cd642bca7ca2272bebfeb48047a16c6e3e97f1421abe46c5069","4a93493a505ad7576039efb314a4c26821b272e7192c0724b6e877202258e668","876e5cfd4db6eab43d260bcf8adda394163d835adf0cbc9167c1c2d7bc13a34e","3aca7f4260dad9dcc0a0333654cb3cde6664d34a553ec06c953bce11151764d7","a0a6f0095f25f08a7129bc4d7cb8438039ec422dc341218d274e1e5131115988","cc7f5deaf4e1e2b8dde0645ae824d213cc71834a0d58d557f805f443451664a8","2ac36e828c9e778acbd5a34cd57c144a875443b45d6cee38cfebb9e5756e5dca","168994907c6427e885018396248c567b6214e0daa6b62d4fc1be334affa44c56","1710c396fe5c4804b37df33caab2e2f69cf0dd2a9f7a5e5379148d50f4ea7419","82200e963d3c767976a5a9f41ecf8c65eca14a6b33dcbe00214fcbe959698c46","5e4dd2e2cef503b3198735afd73a98b63a44a70d49fb0e9659222f1771b5f46d","b4dfafe583b829a382edccbe32303535d0785f0c02ba7f04418e2a81de97af8a","12758f44a694ee2fee1759aed3271f3d7ce45a37a0daec62b99f162a8f65b12f","93d72cd6f97ba8fa778d340091a0b25a08ea336a2ac79cd7d33086906b5c498e",{"version":"8de5ceef18926fd9d4b3ea27466633e55a16805e3cebcf7397712f28ae996d98","signature":"5ff360425776efc42c42a739694248add0077b354761f762b79a7a779263f0a4"},{"version":"0443bd5c60ba894f5ea16e9acdab9bb20669a538c19ecb3d6eb28e7c25905cb3","signature":"977216f6282a2e27fa594dc67778c45d113223f20a2e3af15e21627082576f64"},{"version":"e6f3cb0fcb23ac2004ad42b88d67c53c9738988e2b66399a856962ff7e72127f","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"80efdc6be04546e1a52626561c71db81bd54443f288640596eb066cd32dd2e34","signature":"7281245c23762f68bb72815f23895aed5bccbde121d4ea59b983e05ae275ad9f"},{"version":"5180b194b3ce9086d7d4168656946576954891fa69c148fa795fd3a0bf8e529a","signature":"0bf3ef35cd9a821d7babdfb11c8199b8960c1021dc63182ee3a6fb27468c89d9"},{"version":"0591251a7cedc09fcbd99da45bacefaa8341e693d1f1a108198a8bff05946a4a","signature":"02b730b3aaee8b4f82e1bdc8392c34a5911856ed3e4c55a7ac12083920ad0401"},{"version":"8492c1f3f465a18a067cba73df976e8a23709a02b44323e3296adad952a65f9a","signature":"b4b8fe7249af98f6b9ef3e43e1dd975c95d03a3f5b36757b608aa5a01ab4a286"},{"version":"3886cded610fec9e37ff1eaf8f1accc57ccca73cbce49ceec5b9e2b67f006196","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"db80920c82b54fd253f912f135a2b3e21730ad960dafc0acf512c0129be919f9","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"810135d0c2785014ca0ba39ac336ec60b06455d6a0ade66ab94e09ef915f3533","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"161f80c497d1089efbdf67b0c6972e29a9e159c4c83fdba6f3a552f00ac72f74","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"dcd7b4ab9eabb952e0bf2151720bdb12b533bb829d67ac076c6aaeb75593384e","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"7ccf5b22a74dcb9b3323a6644b7a24009eea441bfb612478fbb8fa9bcc55cd3f","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"89051bd0a4ac29545fbe92f5272f44807e47e7a31e2a4deab08ebfd0dacd1b9b","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"fff0e14f7483a4a419ca36124ee11ee87f21778bb8ae95b28d28b009097bf410","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"6fdaece1cc55ebb472934b4356fd6ad2083a953242f5ce4a2863b2805ecf432e","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"fac13efdb094adfdc5480e9cc202b27b6b15826a091538bd04a614a812d262e1","signature":"6d01febd3742c71f22fce2ceb031250702549fb4617463b2f5f7897be9833439"},{"version":"45fa09780f9cc8a57d2e72fbf35018949f4c6c8787f16a98403c101f783ceec8","signature":"b845df9f46abe155b56128ca2617c6d7d202dea2922235b3deacf7e55694a40b"},{"version":"cba8c422110623382afec77f6479cc4275223d3b97af1c40527044938bda5a56","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},"a17ba25a194979a88bfd925e849d76b63f68c4160b69a99c5d723eac5ffddaf0","b25c5f2970d06c729f464c0aeaa64b1a5b5f1355aa93554bb5f9c199b8624b1e","3e6297bcddf37e373d40ddb4c2b9e6fc98901b2a44c01b2d96af142874973c43","3051751533eee92572241b3cef28333212401408c4e7aa21718714b793c0f4ed","691aea9772797ca98334eb743e7686e29325b02c6931391bcee4cc7bf27a9f3b","6f1d39d26959517da3bd105c552eded4c34702705c64d75b03f54d864b6e41c2","cfb42d1c8aa66607ef3b1e2cee85d28148358ba62dc5e5146b317dae7bfd9a96","f0cb4b3ab88193e3e51e9e2622e4c375955003f1f81239d72c5b7a95415dad3e","92450d617e92f96354d281c8ed5613fd16cacea79eb60b1e9736494b3c057e69","8a9086357fe289efb682dc925358f30b6312c7219a5ca92212857a0a79612012","92bc42ed0e2d41559513fd457ee30d834c2f0fedb9ed5004c029cbf0ad2f8bd9","c7bdc99177a2a94d25fb13722adaaf5b3291bf70b4d1b27584ba189dd3889ba3",{"version":"7c4064a324cd755a9b281d5795fc6ebd9dd713b1c356220185c61eb1b2d0f1af","affectsGlobalScope":true},"e23424b97418eca3226fd24de079f1203eb70360622e4e093af2aff14d4be6ec","ff16181fe134bb123283eb6777c624f6f3ee3f5c17d70b8447fa68af0935d312","54868134aa26f98b6fbc8d28040d8a0f5e64a1cb0dfac7f059b35cac99d626f2","04eaa93bd75f937f9184dcb95a7983800c5770cf8ddd8ac0f3734dc02f5b20ef",{"version":"7ddd5487c03df04c01a8618e06d875e167524902ed3dd9a2a9345a0ef5202d6f","affectsGlobalScope":true},"45ac321f2e15d268fd74a90ddaa6467dcaaff2c5b13f95b4b85831520fb7a491","91550fb52e0781808bb5796aad0c084c006620f061793e6717c41085245fda47","c9f5f2920ff61d7158417b8440d5181ddc34a3dfef811a5677dd8a9fb91471e9","5cc0a492da3602510b8f5ed1852b1e0390002780d8758fbc8c0cd023ca7085f8","ec7dafafe751a5121f8f1c80201ebe7e7238c47e6329280a73c4d1ca4bb7fa28","64debeb10e4b7ae4ec9e89bfb4e04c6101ab98c3cc806d14e5488607cfec2753",{"version":"2866a528b2708aa272ec3eaafd3c980abb23aec1ef831cfc5eb2186b98c37ce5","affectsGlobalScope":true},{"version":"a5782d6cea81fe43d2db7ed41e789458c933ab3ab60602f7b5b14c4da3370496","affectsGlobalScope":true},"b86b7ff709a82ef3cba2184136c025989958bad483ffb13e4ca35d720245adf4","05b1c856de9c8f2c09c86a89455e25965342496ebe6d089760a9646c51295c76","c0d983dfc997b446ec8e456dea90e8c0c97ba896d55d7e34dfc351f32c405eb9","b447e123210c68f205f67b20c996c04a1eb64b0e591c5e06e164cd3d3a869b28","13257840c0850d4ebd7c2b17604a9e006f752de76c2400ebc752bc465c330452","42176966283d3835c34278b9b5c0f470d484c0c0c6a55c20a2c916a1ce69b6e8","0cff7901aedfe78e314f7d44088f07e2afa1b6e4f0473a4169b8456ca2fb245d","6ea59cf5479f3fad5db2caa4513d8d06d6cfee8d8df69e7a040c9b5b7f25f39c","e2236264a811ed1d09a2487a433e8f5216ae62378cf233954ae220cf886f6717","3ec1e108d587a5661ec790db607f482605ba9f3830e118ce578e3ffa3c42e22b","100b3bb9d39d2b1b5340f1bf45a52e94ef1692b45232b4ba00fac5c3cc56d331",{"version":"ec1a29ddaecb683aa360df0bd98ab5d4171d2d549554f7c5ab2a5c183a3dcb67","affectsGlobalScope":true},"7f77304372efe3c9967e5f9ea2061f1b4bf41dc3cda3c83cdd676f2e5af6b7e6","992c6f6be16c0a1d2eec13ece33adeea2c747ba27fcd078353a8f4bb5b4fea58","2597718d91e306949d89e285bf34c44192014ef541c3bd7cbb825c022749e974","a6b0abdb67d63ebe964ba5fee31bc3daf10c12eecd46b24d778426010c04c67e","ac4801ebc2355ba32329070123b1cd15891bf71b41dcaf9e75b4744832126a59","fd2298fba0640e7295e7bd545e2dfbfcccbb00c27019e501c87965a02bbdebf6","4fd3c4debadce3e9ab9dec3eb45f7f5e2e3d4ad65cf975a6d938d883cfb25a50","71ddd49185b68f27bfac127ef5d22cb2672c278e53e5370d9020ef50ca9c377d","b1ea7a6eaa7608e0e0529aebd323b526a79c6c05a4e519ae5c779675004dcdf1","9fcb033a6208485d8f3fadde31eb5cbcaf99149cff3e40c0dc53ebc6d0dff4e9","7df562288f949945cf69c21cd912100c2afedeeb7cdb219085f7f4b46cb7dde4","9d16690485ff1eb4f6fc57aebe237728fd8e03130c460919da3a35f4d9bd97f5","dcc6910d95a3625fd2b0487fda055988e46ab46c357a1b3618c27b4a8dd739c9","f4149f1aa299474c7040a35fe8f8ac2ad078cc1b190415adc1fff3ed52d490ea","3730099ed008776216268a97771de31753ef71e0a7d0ec650f588cba2a06ce44","8d649dbc429d7139a1d9a14ea2bf8af1dc089e0a879447539587463d4b6c248c","60c9e27816ec8ac8df7240598bb086e95b47edfb454c5cbf4003c812e0ed6e39","e361aecf17fc4034b4c122a1564471cdcd22ef3a51407803cb5a5fc020c04d02","4926467de88a92a4fc9971d8c6f21b91eca1c0e7fc2a46cc4638ab9440c73875",{"version":"2708349d5a11a5c2e5f3a0765259ebe7ee00cdcc8161cb9990cb4910328442a1","affectsGlobalScope":true},"fc0ae4a8ad3c762b96f9d2c3700cb879a373458cb0bf3175478e3b4f85f7ef2f","fabbec378e1ddd86fcf2662e716c2b8318acedb664ee3a4cba6f9e8ee8269cf1","b3593bd345ebea5e4d0a894c03251a3774b34df3d6db57075c18e089a599ba76","e61a21e9418f279bc480394a94d1581b2dee73747adcbdef999b6737e34d721b","13c7832f048b08604b7e88b69247aecf955bb7b27a0881c2f7f23bb645435479","95c22bc19835e28e2e524a4bb8898eb5f2107b640d7279a6d3aade261916bbf2","393137c76bd922ba70a2f8bf1ade4f59a16171a02fb25918c168d48875b0cfb0","d1ae472dde31ac39e68d52e1e21dcccba3989d146b7b8472f03525d0caad1775","3ebae8c00411116a66fca65b08228ea0cf0b72724701f9b854442100aab55aba","1320ee42b30487cceb6da9f230354fc34826111f76bf12f0ad76c717c12625b0","b6e83cdeca61289e5ffd770e55ed035babdffadd87d1ffa42b03e9fe8411333f","6767cce098e1e6369c26258b7a1f9e569c5467d501a47a090136d5ea6e80ae6d","11ef35fa1e8aef8229ce6b62ac1a6a0761d1d4bb4de1538bce6d10762a919139","de18acda71730bac52f4b256ce7511bb56cc21f6f114c59c46782eff2f632857","7eb06594824ada538b1d8b48c3925a83e7db792f47a081a62cf3e5c4e23cf0ee","029769d13d9917e3284cb2356ed28a6576e8b07ae6a06ee1e672518adf21a102","d8aab31ba8e618cc3eea10b0945de81cb93b7e8150a013a482332263b9305322","69da61a7b5093dac77fa3bec8be95dcf9a74c95a0e9161edb98bb24e30e439d2","561eca7a381b96d6ccac6e4061e6d2ae53f5bc44203f3fd9f5b26864c32ae6e9","62ea38627e3ebab429f7616812a9394d327c2bc271003dfba985de9b4137369f","b4439890c168d646357928431100daac5cbdee1d345a34e6bf6eca9f3abe22bc","02d734976af36f4273d930bea88b3e62adf6b078cf120c1c63d49aa8d8427c5c",{"version":"bbc19287f48d4b3c753bd2c82dd9326af19cccbfa1506f859029dfcedc7c5522","affectsGlobalScope":true},"3a1e165b22a1cb8df82c44c9a09502fd2b33f160cd277de2cd3a055d8e5c6b27","96d14f21b7652903852eef49379d04dbda28c16ed36468f8c9fa08f7c14c9538","9c138947e4cf970491111d971aa615db8353c7f0efc72bd84d8ad6e4743079c5","9a6d65d77455efaaaeff945bea30c38b8fe0922b807ba45cd23792392f1bfe76","9c36d6df17ca69a65a2a654d9bbd86d74c6d6055e566429cd0a1de82827680eb","736097ddbb2903bef918bb3b5811ef1c9c5656f2a73bd39b22a91b9cc2525e50","8fe9135b86994075c4192f3358a4350389e80d3abec712db2a82061962d9d21c","e0014889f31fee76a572b6b15e74b2174cbcf6346ae8ab5c69eb553a10e5c944","40b10a1850a75eb4c51f3df09a67f23fd4ca8bbc352caacce0beb44b62cb999c","c9ad058b2cc9ce6dc2ed92960d6d009e8c04bef46d3f5312283debca6869f613","0d65b782b1a9b5891802ef2022c78481b19dfe133ba8d9f7596fe1320314342d","1502b874bbaafdb762b3907945740f787058a6aabff5e27377f9b45e4bb08ff3","2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b","c555dd691dd05955e99cd93dd99c685a65e5287813ccb5e6bfde951183248e26","29651525db5579157e617c77e869af8bfdc1130f5d811c1f759ad35b7bafc8ef","b91aaad5f9c3f5dca5e8245d5f6464bdc63a77ba4453bb3e2d0c93959cddb13c","98437d5a640b67c41534f0de2dcb64c75433dcdff54ff8f8432e613663619a2e","2c69f898b82f3ebb97b3d09e7862c3dfb09a689bdc356339ef78c074028a7cfc",{"version":"cffd3848b7af4922d70028c805b7df5e8f0eac4a8d2410b0f55b47ca62c6c3a8","affectsGlobalScope":true},"3169db033165677f1d414baf0c82ba27801089ca1b66d97af464512a47df31b5","67fc055eb86a0632e2e072838f889ffe1754083cb13c8c80a06a7d895d877aae","41422586881bcd739b4e62d9b91cd29909f8572aa3e3cdf316b7c50f14708d49","d558a0fe921ebcc88d3212c2c42108abf9f0d694d67ebdeba37d7728c044f579","2887592574fcdfd087647c539dcb0fbe5af2521270dad4a37f9d17c16190d579","bee79f5862fe1278d2ba275298862bce3f7abf1e59d9c669c4b9a4b2bba96956","4fb0b7d532aa6fb850b6cd2f1ee4f00802d877b5c66a51903bc1fb0624126349","b90c59ac4682368a01c83881b814738eb151de8a58f52eb7edadea2bcffb11b9","8560a87b2e9f8e2c3808c8f6172c9b7eb6c9b08cb9f937db71c285ecf292c81d","ffe3931ff864f28d80ae2f33bd11123ad3d7bad9896b910a1e61504cc093e1f5","083c1bd82f8dc3a1ed6fc9e8eaddf141f7c05df418eca386598821e045253af9","274ebe605bd7f71ce161f9f5328febc7d547a2929f803f04b44ec4a7d8729517","6ca0207e70d985a24396583f55836b10dc181063ab6069733561bfde404d1bad","5908142efeaab38ffdf43927ee0af681ae77e0d7672b956dfb8b6c705dbfe106","f772b188b943549b5c5eb803133314b8aa7689eced80eed0b70e2f30ca07ab9c","0026b816ef05cfbf290e8585820eef0f13250438669107dfc44482bac007b14f","8ef5aad624890acfe0fa48230edce255f00934016d16acb8de0edac0ea5b21bb","9af6248ff4baf0c1ddc62bb0bc43197437bd5fb2c95ff8e10e4cf2e699ea45c1","d84398556ba4595ee6be554671da142cfe964cbdebb2f0c517a10f76f2b016c0","89b42f8ee5d387a39db85ee2c7123a391c3ede266a2bcd502c85ad55626c3b2b","99c7f3bbc03f6eb3e663c26c104d639617620c2925e76fc284f7bedf1877fa2b",{"version":"5b3e6ce357a7a1a07c858432a3d2002750058725874db09a03a0a9e899d861f5","affectsGlobalScope":true},"3bdd93ec24853e61bfa4c63ebaa425ff3e474156e87a47d90122e1d8cc717c1f","5a2a25feca554a8f289ed62114771b8c63d89f2b58325e2f8b7043e4e0160d11"],"options":{"allowSyntheticDefaultImports":true,"composite":true,"declaration":true,"esModuleInterop":true,"jsx":2,"module":1,"noImplicitAny":true,"noImplicitReturns":true,"noImplicitThis":true,"outDir":"./libs","rootDir":"./src","sourceMap":true,"strict":true,"strictNullChecks":true,"target":1},"fileIdsList":[[119],[83],[81],[78,79,80,81,82,85,86,87,88,89,90,91,92,93,94,95],[77],[84],[78,79,80],[78,79],[81,82,84],[79],[96,97,98],[119,120,121,122,123],[119,121],[126],[127,128],[127],[144,181,182],[145,181],[186],[50],[190],[190,191],[84,197],[193,194],[193,194,195,196],[125],[147,169,181,205,206],[181],[179],[178,179],[133,138],[144,145,152,161],[134,144,152],[170],[138,145,153],[161,166],[141,144,152],[142],[141],[144],[144,146,161,169],[144,145],[152,161,169],[144,145,147,152,161,166,169],[147,166,169],[180],[169],[141,144,161],[154],[132],[168],[159,170,173],[144,162],[161],[164],[138,152],[130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177],[152],[158],[171],[133,138,144,146,155,161,169,173],[50,98],[44,50,63],[50,218],[46,47,48,49],[223],[181,227,228,229,230,231,232,233,234,235,236,237],[226,227,236],[227,236],[220,226,227,236],[226,227,228,229,230,231,232,233,234,235,237],[227],[138,226,236],[138,181,222,223,224,225,238],[241],[147,161,181],[145,147,158,169],[69,70],[29],[29,31],[31],[31,41,72,73],[39],[48,50,68],[50,99,101],[50,59,100],[50,68],[48,50,51,52],[48,50,52],[48,50,53,54],[48,50,56],[50,100,104],[33,64],[48,50,54],[30,32,33,34,35,36,37,38,39,40,41,42,43,45,51,53,54,55,56,57,59,60,61,62,65,66],[66],[52],[32,41],[43],[29,41],[31,42,73],[40,73],[30],[30,35],[32],[32,36],[33],[38],[38,42,44,45,72],[48,50],[98],[44],[45],[96],[197,198],[243],[64]],"referencedMap":[[121,1],[84,2],[82,3],[96,4],[78,5],[92,6],[81,7],[80,8],[85,9],[87,10],[89,10],[88,10],[99,11],[124,12],[120,1],[122,13],[123,1],[127,14],[129,15],[128,16],[183,17],[185,18],[187,19],[63,20],[191,21],[192,22],[199,23],[195,24],[197,25],[196,24],[198,2],[202,20],[203,19],[204,26],[207,27],[208,28],[130,29],[180,30],[133,31],[134,32],[135,33],[136,34],[137,35],[138,36],[139,37],[141,38],[142,39],[143,40],[144,40],[145,41],[146,42],[147,43],[148,44],[149,45],[181,46],[150,40],[151,47],[152,48],[154,49],[155,50],[156,51],[159,40],[160,52],[161,53],[162,54],[164,40],[165,55],[166,56],[178,57],[168,58],[169,59],[170,60],[172,54],[174,61],[175,54],[210,40],[217,20],[97,20],[98,62],[64,63],[218,64],[50,65],[224,66],[238,67],[237,68],[228,69],[229,70],[236,71],[230,70],[231,69],[232,69],[233,69],[234,72],[227,73],[235,68],[239,74],[242,75],[205,76],[72,77],[71,78],[30,79],[32,80],[33,79],[34,79],[41,81],[74,82],[76,83],[59,84],[102,85],[101,86],[60,87],[103,87],[53,88],[54,89],[55,90],[57,91],[104,90],[105,92],[51,20],[100,20],[107,79],[65,93],[61,94],[62,90],[67,95],[108,96],[56,83],[109,97],[43,98],[110,99],[42,100],[111,101],[40,83],[112,102],[35,103],[113,104],[36,105],[114,106],[37,107],[115,108],[73,109],[116,110],[117,111],[45,112],[118,113]],"exportedModulesMap":[[121,1],[84,2],[82,3],[96,4],[78,5],[92,6],[81,7],[80,8],[85,9],[87,10],[89,10],[88,10],[99,114],[124,12],[120,1],[122,13],[123,1],[127,14],[129,15],[128,16],[183,17],[185,18],[187,19],[63,20],[191,21],[192,22],[199,115],[195,24],[197,25],[196,24],[198,116],[202,20],[203,19],[204,26],[207,27],[208,28],[130,29],[180,30],[133,31],[134,32],[135,33],[136,34],[137,35],[138,36],[139,37],[141,38],[142,39],[143,40],[144,40],[145,41],[146,42],[147,43],[148,44],[149,45],[181,46],[150,40],[151,47],[152,48],[154,49],[155,50],[156,51],[159,40],[160,52],[161,53],[162,54],[164,40],[165,55],[166,56],[178,57],[168,58],[169,59],[170,60],[172,54],[174,61],[175,54],[210,40],[217,20],[97,20],[98,62],[64,63],[218,64],[50,65],[224,66],[238,67],[237,68],[228,69],[229,70],[236,71],[230,70],[231,69],[232,69],[233,69],[234,72],[227,73],[235,68],[239,74],[242,75],[205,76],[72,77],[71,78],[60,20],[103,20],[65,117]],"semanticDiagnosticsPerFile":[121,119,84,83,94,91,90,82,96,78,92,81,80,93,85,95,87,89,88,79,86,99,77,124,120,122,123,125,127,129,128,126,184,183,185,187,63,188,189,190,191,192,199,193,195,197,196,194,198,200,201,202,203,204,182,206,207,208,179,130,132,180,133,134,135,136,137,138,139,140,141,142,143,144,145,146,131,176,147,148,149,181,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,178,168,169,170,171,172,173,177,174,175,209,210,211,212,213,214,215,48,216,217,97,98,64,218,46,50,219,49,220,221,222,224,186,240,238,237,228,229,236,230,231,232,233,234,227,235,226,239,241,242,225,58,47,205,72,69,70,71,44,223,6,8,7,2,9,10,11,12,13,14,15,16,3,4,20,17,18,19,21,22,23,5,24,25,26,27,1,28,30,32,33,34,41,74,75,39,76,59,102,101,60,103,53,54,55,57,104,105,51,100,106,31,29,107,65,61,62,67,66,108,56,52,109,43,110,42,111,40,112,35,113,36,114,37,38,115,73,116,117,45,118,68]},"version":"4.3.4"} \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index 07b185f..205f9e2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -567,7 +567,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-jsx@^7.14.5": +"@babel/plugin-syntax-jsx@^7.0.0", "@babel/plugin-syntax-jsx@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.14.5.tgz#000e2e25d8673cce49300517a3eda44c263e4201" integrity sha512-ohuFIsOMXJnbOMRfX7/w7LocdR6R7whhuRD4ax8IipLcLPlZGJKkBxgHp++U4N/vKyU16/YDQr2f5seajD3jIw== @@ -1058,7 +1058,7 @@ "@babel/plugin-transform-react-jsx-development" "^7.14.5" "@babel/plugin-transform-react-pure-annotations" "^7.14.5" -"@babel/preset-typescript@^7.12.7": +"@babel/preset-typescript@^7.12.7", "@babel/preset-typescript@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.14.5.tgz#aa98de119cf9852b79511f19e7f44a2d379bcce0" integrity sha512-u4zO6CdbRKbS9TypMqrlGH7sd2TAJppZwn3c/ZRLeO/wGsbddxgbPDUZVNrie3JWYLQ9vpineKlsrWFvO6Pwkw== @@ -1086,7 +1086,7 @@ core-js-pure "^3.14.0" regenerator-runtime "^0.13.4" -"@babel/runtime@^7.0.0", "@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.14.0", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.0", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": +"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.14.0", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.0", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": version "7.14.6" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.14.6.tgz#535203bc0892efc7dec60bdc27b2ecf6e409062d" integrity sha512-/PCB2uJ7oM44tz8YhC4Z/6PeOKXp4K588f+5M3clr1M4zbqztlo0XEfJ2LEzj/FgwfgGcIdl8n7YYjTCI0BYwg== @@ -1576,7 +1576,7 @@ schema-utils "^2.6.5" source-map "^0.7.3" -"@popperjs/core@^2.5.4", "@popperjs/core@^2.6.0": +"@popperjs/core@^2.5.4", "@popperjs/core@^2.6.0", "@popperjs/core@^2.8.3": version "2.9.2" resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.9.2.tgz#adea7b6953cbb34651766b0548468e743c6a2353" integrity sha512-VZMYa7+fXHdwIq1TDhSXoVmSPEGM/aa+6Aiq3nVVJ9bXr24zScr+NlKFKC3iPljA7ho/GAZr+d2jOf5GIRC30Q== @@ -2285,6 +2285,13 @@ "@babel/runtime" "^7.12.5" "@testing-library/dom" "^7.28.1" +"@tippyjs/react@^4.2.5": + version "4.2.5" + resolved "https://registry.yarnpkg.com/@tippyjs/react/-/react-4.2.5.tgz#9b5837db93a1cac953962404df906aef1a18e80d" + integrity sha512-YBLgy+1zznBNbx4JOoOdFXWMLXjBh9hLPwRtq3s8RRdrez2l3tPBRt2m2909wZd9S1KUeKjOOYYsnitccI9I3A== + dependencies: + tippy.js "^6.3.1" + "@types/aria-query@^4.2.0": version "4.2.1" resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-4.2.1.tgz#78b5433344e2f92e8b306c06a5622c50c245bf6b" @@ -2412,6 +2419,14 @@ dependencies: "@types/istanbul-lib-report" "*" +"@types/jest@^26.0.23": + version "26.0.23" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-26.0.23.tgz#a1b7eab3c503b80451d019efb588ec63522ee4e7" + integrity sha512-ZHLmWMJ9jJ9PTiT58juykZpL7KjwJywFN3Rr2pTSkyQfydf/rk22yS7W8p5DaVUMQ2BQC7oYiU3FjbTM/mYrOA== + dependencies: + jest-diff "^26.0.0" + pretty-format "^26.0.0" + "@types/json-schema@^7.0.4", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.6": version "7.0.7" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.7.tgz#98a993516c859eb0d5c4c8f098317a9ea68db9ad" @@ -2456,6 +2471,13 @@ "@types/node" "*" form-data "^3.0.0" +"@types/node-sass@^4.11.1": + version "4.11.1" + resolved "https://registry.yarnpkg.com/@types/node-sass/-/node-sass-4.11.1.tgz#bda27c5181cbf7c090c3058e119633dfb2b6504c" + integrity sha512-wPOmOEEtbwQiPTIgzUuRSQZ3H5YHinsxRGeZzPSDefAm4ylXWnZG9C0adses8ymyplKK0gwv3JkDNO8GGxnWfg== + dependencies: + "@types/node" "*" + "@types/node@*": version "15.12.4" resolved "https://registry.yarnpkg.com/@types/node/-/node-15.12.4.tgz#e1cf817d70a1e118e81922c4ff6683ce9d422e26" @@ -2518,6 +2540,13 @@ dependencies: "@types/react" "*" +"@types/react-dom@^17.0.8": + version "17.0.8" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-17.0.8.tgz#3180de6d79bf53762001ad854e3ce49f36dd71fc" + integrity sha512-0ohAiJAx1DAUEcY9UopnfwCE9sSMDGnY/oXjWMax6g3RpzmTt2GMyMVAXcbn0mo8XAff0SbQJl2/SBU+hjSZ1A== + dependencies: + "@types/react" "*" + "@types/react-redux@^7.1.16": version "7.1.16" resolved "https://registry.yarnpkg.com/@types/react-redux/-/react-redux-7.1.16.tgz#0fbd04c2500c12105494c83d4a3e45c084e3cb21" @@ -2535,7 +2564,7 @@ dependencies: "@types/react" "*" -"@types/react@*": +"@types/react@*", "@types/react@^17.0.11": version "17.0.11" resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.11.tgz#67fcd0ddbf5a0b083a0f94e926c7d63f3b836451" integrity sha512-yFRQbD+whVonItSk7ZzP/L+gPTJVBkL/7shLEF+i9GC/1cV3JmUxEQz6+9ylhUpWSDuqo1N9qEvqS6vTj4USUA== @@ -2866,12 +2895,12 @@ ajv-errors@^1.0.0: resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== -ajv-keywords@^3.1.0, ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: +ajv-keywords@^3.1.0, ajv-keywords@^3.2.0, ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: version "3.5.2" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== -ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5: +ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5, ajv@^6.5.3: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -3367,6 +3396,24 @@ babel-plugin-polyfill-regenerator@^0.2.2: dependencies: "@babel/helper-define-polyfill-provider" "^0.2.2" +babel-plugin-react-css-modules@^5.2.6: + version "5.2.6" + resolved "https://registry.yarnpkg.com/babel-plugin-react-css-modules/-/babel-plugin-react-css-modules-5.2.6.tgz#176663dae4add31af780f1ec86d3a93115875c83" + integrity sha512-jBU/oVgoEg/58Dcu0tjyNvaXBllxJXip7hlpiX+e0CYTmDADWB484P4pJb7d0L6nWKSzyEqtePcBaq3SKalG/g== + dependencies: + "@babel/plugin-syntax-jsx" "^7.0.0" + "@babel/types" "^7.0.0" + ajv "^6.5.3" + ajv-keywords "^3.2.0" + generic-names "^2.0.1" + postcss "^7.0.2" + postcss-modules "^1.3.2" + postcss-modules-extract-imports "^1.2.0" + postcss-modules-local-by-default "^1.2.0" + postcss-modules-parser "^1.1.1" + postcss-modules-scope "^1.1.0" + postcss-modules-values "^1.3.0" + babel-plugin-react-docgen@^4.2.1: version "4.2.1" resolved "https://registry.yarnpkg.com/babel-plugin-react-docgen/-/babel-plugin-react-docgen-4.2.1.tgz#7cc8e2f94e8dc057a06e953162f0810e4e72257b" @@ -3381,14 +3428,6 @@ babel-plugin-syntax-jsx@^6.18.0: resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946" integrity sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY= -babel-plugin-transform-scss@^1.0.11: - version "1.0.11" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-scss/-/babel-plugin-transform-scss-1.0.11.tgz#f4a2a7cbe8cd22d4a4c22bee90f5668c2aae3592" - integrity sha512-gFYqquGWZPk16m0AcAsuvYBvqx3AtzOULXFVgSVjYq4r42uAPWavm36lmjtHJtMMcMncPZ4NnOMJYexJQTzJTw== - dependencies: - node-sass "4.14.1" - path "0.12.7" - babel-preset-current-node-syntax@^0.1.2: version "0.1.4" resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-0.1.4.tgz#826f1f8e7245ad534714ba001f84f7e906c3b615" @@ -3483,13 +3522,6 @@ bindings@^1.5.0: dependencies: file-uri-to-path "1.0.0" -block-stream@*: - version "0.0.9" - resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" - integrity sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo= - dependencies: - inherits "~2.0.0" - bluebird@^3.3.5, bluebird@^3.5.5: version "3.7.2" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" @@ -3696,6 +3728,11 @@ buffer@^4.3.0: ieee754 "^1.1.4" isarray "^1.0.0" +builtin-modules@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" + integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8= + builtin-status-codes@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" @@ -3859,7 +3896,7 @@ ccount@^1.0.0: resolved "https://registry.yarnpkg.com/ccount/-/ccount-1.1.0.tgz#246687debb6014735131be8abab2d93898f8d043" integrity sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg== -chalk@2.4.2, chalk@^2.0.0, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2: +chalk@2.4.2, chalk@^2.0.0, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -3868,7 +3905,7 @@ chalk@2.4.2, chalk@^2.0.0, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^1.1.1: +chalk@^1.1.1, chalk@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= @@ -3987,7 +4024,7 @@ class-utils@^0.3.5: isobject "^3.0.0" static-extend "^0.1.1" -classnames@^2.2.5: +classnames@^2.2.5, classnames@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.1.tgz#dfcfa3891e306ec1dad105d0e88f4417b8535e8e" integrity sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA== @@ -4150,7 +4187,7 @@ comma-separated-tokens@^1.0.0: resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz#632b80b6117867a158f1080ad498b2fbe7e3f5ea" integrity sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw== -commander@^2.19.0, commander@^2.20.0: +commander@^2.12.1, commander@^2.19.0, commander@^2.20.0: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== @@ -4389,7 +4426,7 @@ cross-env@^7.0.2: dependencies: cross-spawn "^7.0.1" -cross-spawn@7.0.3, cross-spawn@^7.0.0, cross-spawn@^7.0.1: +cross-spawn@7.0.3, cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== @@ -4398,14 +4435,6 @@ cross-spawn@7.0.3, cross-spawn@^7.0.0, cross-spawn@^7.0.1: shebang-command "^2.0.0" which "^2.0.1" -cross-spawn@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-3.0.1.tgz#1256037ecb9f0c5f79e3d6ef135e30770184b982" - integrity sha1-ElYDfsufDF9549bvE14wdwGEuYI= - dependencies: - lru-cache "^4.0.1" - which "^1.2.9" - cross-spawn@^6.0.0, cross-spawn@^6.0.5: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" @@ -4453,6 +4482,18 @@ css-loader@^3.6.0: schema-utils "^2.7.0" semver "^6.3.0" +css-modules-loader-core@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/css-modules-loader-core/-/css-modules-loader-core-1.1.0.tgz#5908668294a1becd261ae0a4ce21b0b551f21d16" + integrity sha1-WQhmgpShvs0mGuCkziGwtVHyHRY= + dependencies: + icss-replace-symbols "1.1.0" + postcss "6.0.1" + postcss-modules-extract-imports "1.1.0" + postcss-modules-local-by-default "1.2.0" + postcss-modules-scope "1.1.0" + postcss-modules-values "1.3.0" + css-select@^4.1.3: version "4.1.3" resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.1.3.tgz#a70440f70317f2669118ad74ff105e65849c7067" @@ -4464,6 +4505,14 @@ css-select@^4.1.3: domutils "^2.6.0" nth-check "^2.0.0" +css-selector-tokenizer@^0.7.0: + version "0.7.3" + resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.7.3.tgz#735f26186e67c749aaf275783405cf0661fae8f1" + integrity sha512-jWQv3oCEL5kMErj4wRnK/OPoBi0D+P1FR2cDCKYPaMeD2eW3/mttav8HT4hT1CKopiJI/psEULjkClhvJo4Lvg== + dependencies: + cssesc "^3.0.0" + fastparse "^1.1.2" + css-what@^5.0.0: version "5.0.1" resolved "https://registry.yarnpkg.com/css-what/-/css-what-5.0.1.tgz#3efa820131f4669a8ac2408f9c32e7c7de9f4cad" @@ -4680,6 +4729,16 @@ diff-sequences@^25.2.6: resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-25.2.6.tgz#5f467c00edd35352b7bca46d7927d60e687a76dd" integrity sha512-Hq8o7+6GaZeoFjtpgvRBUknSXNeJiCx7V9Fr94ZMljNiCr9n9L8H8aJqgWOQiDDGdyn29fRNcDdRVJ5fdyihfg== +diff-sequences@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-26.6.2.tgz#48ba99157de1923412eed41db6b6d4aa9ca7c0b1" + integrity sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q== + +diff@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== + diffie-hellman@^5.0.0: version "5.0.3" resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" @@ -4945,6 +5004,11 @@ entities@^2.0.0: resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== +env-paths@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" + integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== + errno@^0.1.3, errno@~0.1.7: version "0.1.8" resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" @@ -5520,6 +5584,11 @@ fast-safe-stringify@^2.0.7: resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz#124aa885899261f68aedb42a7c080de9da608743" integrity sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA== +fastparse@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.2.tgz#91728c5a5942eced8531283c79441ee4122c35a9" + integrity sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ== + fastq@^1.6.0: version "1.11.0" resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.11.0.tgz#bb9fb955a07130a918eb63c1f5161cc32a5d0858" @@ -5869,16 +5938,6 @@ fsevents@^2.1.2, fsevents@~2.3.2: resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== -fstream@^1.0.0, fstream@^1.0.12: - version "1.0.12" - resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.12.tgz#4e8ba8ee2d48be4f7d0de505455548eae5932045" - integrity sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg== - dependencies: - graceful-fs "^4.1.2" - inherits "~2.0.0" - mkdirp ">=0.5 0" - rimraf "2" - function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" @@ -5930,6 +5989,13 @@ gaze@^1.0.0: dependencies: globule "^1.0.0" +generic-names@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/generic-names/-/generic-names-2.0.1.tgz#f8a378ead2ccaa7a34f0317b05554832ae41b872" + integrity sha512-kPCHWa1m9wGG/OwQpeweTwM/PYiQLrUIxXbt/P4Nic3LbGjCP0YwrALHW1uNLKZ0LIMg+RF+XRlj2ekT9ZlZAQ== + dependencies: + loader-utils "^1.1.0" + gensync@^1.0.0-beta.1, gensync@^1.0.0-beta.2: version "1.0.0-beta.2" resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" @@ -6131,7 +6197,7 @@ good-listener@^1.2.2: dependencies: delegate "^3.1.2" -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0, graceful-fs@^4.2.4: +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0, graceful-fs@^4.2.3, graceful-fs@^4.2.4: version "4.2.6" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== @@ -6179,6 +6245,11 @@ has-bigints@^1.0.1: resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== +has-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" + integrity sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo= + has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" @@ -6339,6 +6410,18 @@ highlight.js@^10.1.1, highlight.js@~10.7.0: resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-10.7.3.tgz#697272e3991356e40c3cac566a74eef681756531" integrity sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A== +history@^4.9.0: + version "4.10.1" + resolved "https://registry.yarnpkg.com/history/-/history-4.10.1.tgz#33371a65e3a83b267434e2b3f3b1b4c58aad4cf3" + integrity sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew== + dependencies: + "@babel/runtime" "^7.1.2" + loose-envify "^1.2.0" + resolve-pathname "^3.0.0" + tiny-invariant "^1.0.2" + tiny-warning "^1.0.0" + value-equal "^1.0.1" + hmac-drbg@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" @@ -6348,7 +6431,7 @@ hmac-drbg@^1.0.1: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.1" -hoist-non-react-statics@^3.3.0, hoist-non-react-statics@^3.3.2: +hoist-non-react-statics@^3.1.0, hoist-non-react-statics@^3.3.0, hoist-non-react-statics@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== @@ -6466,6 +6549,13 @@ human-signals@^1.1.1: resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== +i18next@^20.3.2: + version "20.3.2" + resolved "https://registry.yarnpkg.com/i18next/-/i18next-20.3.2.tgz#5195e76b9e0848a1c198001bf6c7fc72995a55f1" + integrity sha512-e8CML2R9Ng2sSQOM80wb/PrM2j8mDm84o/T4Amzn9ArVyNX5/ENWxxAXkRpZdTQNDaxKImF93Wep4mAoozFrKw== + dependencies: + "@babel/runtime" "^7.12.0" + iconv-lite@0.4.24, iconv-lite@^0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" @@ -6473,6 +6563,11 @@ iconv-lite@0.4.24, iconv-lite@^0.4.24: dependencies: safer-buffer ">= 2.1.2 < 3" +icss-replace-symbols@1.1.0, icss-replace-symbols@^1.0.2, icss-replace-symbols@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded" + integrity sha1-Bupvg2ead0njhs/h/oEq5dsiPe0= + icss-utils@^4.0.0, icss-utils@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.1.tgz#21170b53789ee27447c2f47dd683081403f9a467" @@ -6526,11 +6621,6 @@ imurmurhash@^0.1.4: resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= -in-publish@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/in-publish/-/in-publish-2.0.1.tgz#948b1a535c8030561cea522f73f78f4be357e00c" - integrity sha512-oDM0kUSNFC31ShNxHKUyfZKy8ZeXZBWMjMdZHKLOk13uvT27VTL/QzRGfRUcevJhpkZAvlhPYuXkF7eNWrtyxQ== - indent-string@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" @@ -6556,7 +6646,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.0, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: +inherits@2, inherits@2.0.4, inherits@^2.0.0, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -7001,6 +7091,11 @@ is-wsl@^2.1.1: dependencies: is-docker "^2.0.0" +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= + isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" @@ -7156,6 +7251,16 @@ jest-diff@^25.5.0: jest-get-type "^25.2.6" pretty-format "^25.5.0" +jest-diff@^26.0.0: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-26.6.2.tgz#1aa7468b52c3a68d7d5c5fdcdfcd5e49bd164394" + integrity sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA== + dependencies: + chalk "^4.0.0" + diff-sequences "^26.6.2" + jest-get-type "^26.3.0" + pretty-format "^26.6.2" + jest-docblock@^25.3.0: version "25.3.0" resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-25.3.0.tgz#8b777a27e3477cd77a168c05290c471a575623ef" @@ -7203,6 +7308,11 @@ jest-get-type@^25.2.6: resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-25.2.6.tgz#0b0a32fab8908b44d508be81681487dbabb8d877" integrity sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig== +jest-get-type@^26.3.0: + version "26.3.0" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-26.3.0.tgz#e97dc3c3f53c2b406ca7afaed4493b1d099199e0" + integrity sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig== + jest-haste-map@^25.5.1: version "25.5.1" resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-25.5.1.tgz#1df10f716c1d94e60a1ebf7798c9fb3da2620943" @@ -7511,7 +7621,7 @@ jest@^25.3.0: import-local "^3.0.2" jest-cli "^25.5.4" -js-base64@^2.1.8: +js-base64@^2.1.8, js-base64@^2.1.9: version "2.6.4" resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.6.4.tgz#f4e686c5de1ea1f867dbcad3d46d969428df98c4" integrity sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ== @@ -7781,7 +7891,7 @@ loader-utils@2.0.0, loader-utils@^2.0.0: emojis-list "^3.0.0" json5 "^2.1.2" -loader-utils@^1.2.3, loader-utils@^1.4.0: +loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== @@ -7820,11 +7930,67 @@ locate-path@^6.0.0: dependencies: p-locate "^5.0.0" +lodash._arrayeach@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._arrayeach/-/lodash._arrayeach-3.0.0.tgz#bab156b2a90d3f1bbd5c653403349e5e5933ef9e" + integrity sha1-urFWsqkNPxu9XGU0AzSeXlkz754= + +lodash._baseeach@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/lodash._baseeach/-/lodash._baseeach-3.0.4.tgz#cf8706572ca144e8d9d75227c990da982f932af3" + integrity sha1-z4cGVyyhROjZ11InyZDamC+TKvM= + dependencies: + lodash.keys "^3.0.0" + +lodash._bindcallback@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz#e531c27644cf8b57a99e17ed95b35c748789392e" + integrity sha1-5THCdkTPi1epnhftlbNcdIeJOS4= + +lodash._getnative@^3.0.0: + version "3.9.1" + resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" + integrity sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U= + +lodash.camelcase@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" + integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY= + lodash.debounce@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= +lodash.foreach@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/lodash.foreach/-/lodash.foreach-3.0.3.tgz#6fd7efb79691aecd67fdeac2761c98e701d6c39a" + integrity sha1-b9fvt5aRrs1n/erCdhyY5wHWw5o= + dependencies: + lodash._arrayeach "^3.0.0" + lodash._baseeach "^3.0.0" + lodash._bindcallback "^3.0.0" + lodash.isarray "^3.0.0" + +lodash.isarguments@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" + integrity sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo= + +lodash.isarray@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55" + integrity sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U= + +lodash.keys@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a" + integrity sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo= + dependencies: + lodash._getnative "^3.0.0" + lodash.isarguments "^3.0.0" + lodash.isarray "^3.0.0" + lodash.sortby@^4.7.0: version "4.7.0" resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" @@ -7847,7 +8013,7 @@ lolex@^5.0.0: dependencies: "@sinonjs/commons" "^1.7.0" -loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1, loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== @@ -7877,14 +8043,6 @@ lowlight@^1.14.0: fault "^1.0.0" highlight.js "~10.7.0" -lru-cache@^4.0.1: - version "4.1.5" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" - integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== - dependencies: - pseudomap "^1.0.2" - yallist "^2.1.2" - lru-cache@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" @@ -8048,6 +8206,11 @@ memory-fs@^0.5.0: errno "^0.1.3" readable-stream "^2.0.1" +memorystream@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" + integrity sha1-htcJCzDORV1j+64S3aUaR93K+bI= + meow@^3.7.0: version "3.7.0" resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" @@ -8163,6 +8326,14 @@ min-indent@^1.0.0: resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== +mini-create-react-context@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/mini-create-react-context/-/mini-create-react-context-0.4.1.tgz#072171561bfdc922da08a60c2197a497cc2d1d5e" + integrity sha512-YWCYEmd5CQeHGSAKrYvXgmzzkrvssZcuuQDDeqkT+PziKGMgE+0MCCtcKbROzocGBG1meBLl2FotlRwf4gAzbQ== + dependencies: + "@babel/runtime" "^7.12.1" + tiny-warning "^1.0.3" + minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" @@ -8245,7 +8416,7 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" -"mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@^0.5.3: +mkdirp@^0.5.1, mkdirp@^0.5.3: version "0.5.5" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== @@ -8378,23 +8549,21 @@ node-fetch@^2.6.1: resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== -node-gyp@^3.8.0: - version "3.8.0" - resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.8.0.tgz#540304261c330e80d0d5edce253a68cb3964218c" - integrity sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA== +node-gyp@^7.1.0: + version "7.1.2" + resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-7.1.2.tgz#21a810aebb187120251c3bcec979af1587b188ae" + integrity sha512-CbpcIo7C3eMu3dL1c3d0xw449fHIGALIJsRP4DDPHpyiW8vcriNY7ubh9TE4zEKfSxscY7PjeFnshE7h75ynjQ== dependencies: - fstream "^1.0.0" - glob "^7.0.3" - graceful-fs "^4.1.2" - mkdirp "^0.5.0" - nopt "2 || 3" - npmlog "0 || 1 || 2 || 3 || 4" - osenv "0" - request "^2.87.0" - rimraf "2" - semver "~5.3.0" - tar "^2.0.0" - which "1" + env-paths "^2.2.0" + glob "^7.1.4" + graceful-fs "^4.2.3" + nopt "^5.0.0" + npmlog "^4.1.2" + request "^2.88.2" + rimraf "^3.0.2" + semver "^7.3.2" + tar "^6.0.2" + which "^2.0.2" node-int64@^0.4.0: version "0.4.0" @@ -8451,33 +8620,32 @@ node-releases@^1.1.61, node-releases@^1.1.71: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.73.tgz#dd4e81ddd5277ff846b80b52bb40c49edf7a7b20" integrity sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg== -node-sass@4.14.1: - version "4.14.1" - resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.14.1.tgz#99c87ec2efb7047ed638fb4c9db7f3a42e2217b5" - integrity sha512-sjCuOlvGyCJS40R8BscF5vhVlQjNN069NtQ1gSxyK1u9iqvn6tf7O1R4GNowVZfiZUCRt5MmMs1xd+4V/7Yr0g== +node-sass@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-6.0.0.tgz#f30da3e858ad47bfd138bc0e0c6f924ed2f734af" + integrity sha512-GDzDmNgWNc9GNzTcSLTi6DU6mzSPupVJoStIi7cF3GjwSE9q1cVakbvAAVSt59vzUjV9JJoSZFKoo9krbjKd2g== dependencies: async-foreach "^0.1.3" chalk "^1.1.1" - cross-spawn "^3.0.0" + cross-spawn "^7.0.3" gaze "^1.0.0" get-stdin "^4.0.1" glob "^7.0.3" - in-publish "^2.0.0" lodash "^4.17.15" meow "^3.7.0" mkdirp "^0.5.1" nan "^2.13.2" - node-gyp "^3.8.0" + node-gyp "^7.1.0" npmlog "^4.0.0" request "^2.88.0" sass-graph "2.2.5" stdout-stream "^1.4.0" "true-case-path" "^1.0.2" -"nopt@2 || 3": - version "3.0.6" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" - integrity sha1-xkZdvwirzU2zWTF/eaxopkayj/k= +nopt@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-5.0.0.tgz#530942bb58a512fccafe53fe210f13a25355dc88" + integrity sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ== dependencies: abbrev "1" @@ -8508,6 +8676,21 @@ normalize-range@^0.1.2: resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= +npm-run-all@^4.1.5: + version "4.1.5" + resolved "https://registry.yarnpkg.com/npm-run-all/-/npm-run-all-4.1.5.tgz#04476202a15ee0e2e214080861bff12a51d98fba" + integrity sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ== + dependencies: + ansi-styles "^3.2.1" + chalk "^2.4.1" + cross-spawn "^6.0.5" + memorystream "^0.3.1" + minimatch "^3.0.4" + pidtree "^0.3.0" + read-pkg "^3.0.0" + shell-quote "^1.6.1" + string.prototype.padend "^3.0.0" + npm-run-path@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" @@ -8522,7 +8705,7 @@ npm-run-path@^4.0.0: dependencies: path-key "^3.0.0" -"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.0, npmlog@^4.1.2: +npmlog@^4.0.0, npmlog@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== @@ -8695,24 +8878,11 @@ os-browserify@^0.3.0: resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= -os-homedir@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= - -os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: +os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= -osenv@0: - version "0.1.5" - resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" - integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.0" - overlayscrollbars@^1.13.1: version "1.13.1" resolved "https://registry.yarnpkg.com/overlayscrollbars/-/overlayscrollbars-1.13.1.tgz#0b840a88737f43a946b9d87875a2f9e421d0338a" @@ -8996,6 +9166,13 @@ path-to-regexp@0.1.7: resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= +path-to-regexp@^1.7.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.8.0.tgz#887b3ba9d84393e87a0a0b9f4cb756198b53548a" + integrity sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA== + dependencies: + isarray "0.0.1" + path-type@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" @@ -9017,14 +9194,6 @@ path-type@^4.0.0: resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== -path@0.12.7: - version "0.12.7" - resolved "https://registry.yarnpkg.com/path/-/path-0.12.7.tgz#d4dc2a506c4ce2197eb481ebfcd5b36c0140b10f" - integrity sha1-1NwqUGxM4hl+tIHr/NWzbAFAsQ8= - dependencies: - process "^0.11.1" - util "^0.10.3" - pbkdf2@^3.0.3: version "3.1.2" resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" @@ -9046,6 +9215,11 @@ picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3: resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== +pidtree@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.3.1.tgz#ef09ac2cc0533df1f3250ccf2c4d366b0d12114a" + integrity sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA== + pify@^2.0.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" @@ -9164,6 +9338,20 @@ postcss-loader@^4.2.0: schema-utils "^3.0.0" semver "^7.3.4" +postcss-modules-extract-imports@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.1.0.tgz#b614c9720be6816eaee35fb3a5faa1dba6a05ddb" + integrity sha1-thTJcgvmgW6u41+zpfqh26agXds= + dependencies: + postcss "^6.0.1" + +postcss-modules-extract-imports@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.1.tgz#dc87e34148ec7eab5f791f7cd5849833375b741a" + integrity sha512-6jt9XZwUhwmRUhb/CkyJY020PYaPJsCyt3UjbaWo6XEbH/94Hmv6MP7fG2C5NDU/BcHzyGYxNtHvM+LTf9HrYw== + dependencies: + postcss "^6.0.1" + postcss-modules-extract-imports@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz#818719a1ae1da325f9832446b01136eeb493cd7e" @@ -9171,6 +9359,14 @@ postcss-modules-extract-imports@^2.0.0: dependencies: postcss "^7.0.5" +postcss-modules-local-by-default@1.2.0, postcss-modules-local-by-default@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz#f7d80c398c5a393fa7964466bd19500a7d61c069" + integrity sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk= + dependencies: + css-selector-tokenizer "^0.7.0" + postcss "^6.0.1" + postcss-modules-local-by-default@^3.0.2: version "3.0.3" resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz#bb14e0cc78279d504dbdcbfd7e0ca28993ffbbb0" @@ -9181,6 +9377,23 @@ postcss-modules-local-by-default@^3.0.2: postcss-selector-parser "^6.0.2" postcss-value-parser "^4.1.0" +postcss-modules-parser@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/postcss-modules-parser/-/postcss-modules-parser-1.1.1.tgz#95f71ad7916f0f39207bb81c401336c8d245738c" + integrity sha1-lfca15FvDzkge7gcQBM2yNJFc4w= + dependencies: + icss-replace-symbols "^1.0.2" + lodash.foreach "^3.0.3" + postcss "^5.0.10" + +postcss-modules-scope@1.1.0, postcss-modules-scope@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz#d6ea64994c79f97b62a72b426fbe6056a194bb90" + integrity sha1-1upkmUx5+XtipytCb75gVqGUu5A= + dependencies: + css-selector-tokenizer "^0.7.0" + postcss "^6.0.1" + postcss-modules-scope@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz#385cae013cc7743f5a7d7602d1073a89eaae62ee" @@ -9189,6 +9402,14 @@ postcss-modules-scope@^2.2.0: postcss "^7.0.6" postcss-selector-parser "^6.0.0" +postcss-modules-values@1.3.0, postcss-modules-values@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz#ecffa9d7e192518389f42ad0e83f72aec456ea20" + integrity sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA= + dependencies: + icss-replace-symbols "^1.1.0" + postcss "^6.0.1" + postcss-modules-values@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz#5b5000d6ebae29b4255301b4a3a54574423e7f10" @@ -9197,6 +9418,17 @@ postcss-modules-values@^3.0.0: icss-utils "^4.0.0" postcss "^7.0.6" +postcss-modules@^1.3.2: + version "1.5.0" + resolved "https://registry.yarnpkg.com/postcss-modules/-/postcss-modules-1.5.0.tgz#08da6ce43fcfadbc685a021fe6ed30ef929f0bcc" + integrity sha512-KiAihzcV0TxTTNA5OXreyIXctuHOfR50WIhqBpc8pe0Q5dcs/Uap9EVlifOI9am7zGGdGOJQ6B1MPYKo2UxgOg== + dependencies: + css-modules-loader-core "^1.1.0" + generic-names "^2.0.1" + lodash.camelcase "^4.3.0" + postcss "^7.0.1" + string-hash "^1.1.1" + postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2: version "6.0.6" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz#2c5bba8174ac2f6981ab631a42ab0ee54af332ea" @@ -9210,7 +9442,35 @@ postcss-value-parser@^4.1.0: resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb" integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ== -postcss@^7.0.14, postcss@^7.0.26, postcss@^7.0.32, postcss@^7.0.35, postcss@^7.0.5, postcss@^7.0.6: +postcss@6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.1.tgz#000dbd1f8eef217aa368b9a212c5fc40b2a8f3f2" + integrity sha1-AA29H47vIXqjaLmiEsX8QLKo8/I= + dependencies: + chalk "^1.1.3" + source-map "^0.5.6" + supports-color "^3.2.3" + +postcss@^5.0.10: + version "5.2.18" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.18.tgz#badfa1497d46244f6390f58b319830d9107853c5" + integrity sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg== + dependencies: + chalk "^1.1.3" + js-base64 "^2.1.9" + source-map "^0.5.6" + supports-color "^3.2.3" + +postcss@^6.0.1: + version "6.0.23" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.23.tgz#61c82cc328ac60e677645f979054eb98bc0e3324" + integrity sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag== + dependencies: + chalk "^2.4.1" + source-map "^0.6.1" + supports-color "^5.4.0" + +postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.2, postcss@^7.0.26, postcss@^7.0.32, postcss@^7.0.35, postcss@^7.0.5, postcss@^7.0.6: version "7.0.36" resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.36.tgz#056f8cffa939662a8f5905950c07d5285644dfcb" integrity sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw== @@ -9247,7 +9507,7 @@ pretty-format@^25.5.0: ansi-styles "^4.0.0" react-is "^16.12.0" -pretty-format@^26.6.2: +pretty-format@^26.0.0, pretty-format@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.6.2.tgz#e35c2705f14cb7fe2fe94fa078345b444120fc93" integrity sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg== @@ -9274,7 +9534,7 @@ process-nextick-args@~2.0.0: resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== -process@^0.11.1, process@^0.11.10: +process@^0.11.10: version "0.11.10" resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= @@ -9360,11 +9620,6 @@ prr@~1.0.1: resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= -pseudomap@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" - integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= - psl@^1.1.28: version "1.8.0" resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" @@ -9502,6 +9757,13 @@ raw-loader@^4.0.2: loader-utils "^2.0.0" schema-utils "^3.0.0" +react-aria-live@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/react-aria-live/-/react-aria-live-2.0.5.tgz#333480cb898d6963421bd86fe3cbd0ce54e37f08" + integrity sha512-rXiH1HNKJrr/UfVeGwA2aKY43r5WbjLs+AYB6/kJF1qny2hwxzQc1qewQmUpdQ5h8HAOTD8O/XlGcEHjqlCl0g== + dependencies: + uuid "^3.2.1" + react-colorful@^5.0.1: version "5.2.2" resolved "https://registry.yarnpkg.com/react-colorful/-/react-colorful-5.2.2.tgz#0a69d0648db47e51359d343854d83d250a742243" @@ -9553,6 +9815,11 @@ react-docgen-typescript@^1.20.5: resolved "https://registry.yarnpkg.com/react-docgen-typescript/-/react-docgen-typescript-1.22.0.tgz#00232c8e8e47f4437cac133b879b3e9437284bee" integrity sha512-MPLbF8vzRwAG3GcjdL+OHQlhgtWsLTXs+7uJiHfEeT3Ur7IsZaNYqRTLQ9sj2nB6M6jylcPCeCmH7qbszJmecg== +react-docgen-typescript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/react-docgen-typescript/-/react-docgen-typescript-2.0.0.tgz#0f684350159ae4d2d556f8bc241a74669753944b" + integrity sha512-lPf+KJKAo6a9klKyK4y8WwgaX+6t5/HkVjHOpJDMbmaXfXcV7zP0QgWtnEOc3ccEUXKvlHMGUMIS9f6Zgo1BSw== + react-docgen@^5.0.0: version "5.4.0" resolved "https://registry.yarnpkg.com/react-docgen/-/react-docgen-5.4.0.tgz#2cd7236720ec2769252ef0421f23250b39a153a1" @@ -9625,7 +9892,7 @@ react-inspector@^5.1.0: is-dom "^1.0.0" prop-types "^15.0.0" -react-is@^16.12.0, react-is@^16.13.1, react-is@^16.7.0, react-is@^16.8.1: +react-is@^16.12.0, react-is@^16.13.1, react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.1: version "16.13.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== @@ -9674,6 +9941,35 @@ react-refresh@^0.8.3: resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.8.3.tgz#721d4657672d400c5e3c75d063c4a85fb2d5d68f" integrity sha512-X8jZHc7nCMjaCqoU+V2I0cOhNW+QMBwSUkeXnTi8IPe6zaRWfn60ZzvFDZqWPfmSJfjub7dDW1SP0jaHWLu/hg== +react-router-dom@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-5.2.0.tgz#9e65a4d0c45e13289e66c7b17c7e175d0ea15662" + integrity sha512-gxAmfylo2QUjcwxI63RhQ5G85Qqt4voZpUXSEqCwykV0baaOTQDR1f0PmY8AELqIyVc0NEZUj0Gov5lNGcXgsA== + dependencies: + "@babel/runtime" "^7.1.2" + history "^4.9.0" + loose-envify "^1.3.1" + prop-types "^15.6.2" + react-router "5.2.0" + tiny-invariant "^1.0.2" + tiny-warning "^1.0.0" + +react-router@5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-5.2.0.tgz#424e75641ca8747fbf76e5ecca69781aa37ea293" + integrity sha512-smz1DUuFHRKdcJC0jobGo8cVbhO3x50tCL4icacOlcwDOEQPq4TMqwx3sY1TP+DvtTgz4nm3thuo7A+BK2U0Dw== + dependencies: + "@babel/runtime" "^7.1.2" + history "^4.9.0" + hoist-non-react-statics "^3.1.0" + loose-envify "^1.3.1" + mini-create-react-context "^0.4.0" + path-to-regexp "^1.7.0" + prop-types "^15.6.2" + react-is "^16.6.0" + tiny-invariant "^1.0.2" + tiny-warning "^1.0.0" + react-sizeme@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/react-sizeme/-/react-sizeme-3.0.1.tgz#4d12f4244e0e6a0fb97253e7af0314dc7c83a5a0" @@ -10031,7 +10327,7 @@ request-promise-native@^1.0.7: stealthy-require "^1.1.1" tough-cookie "^2.3.3" -request@^2.87.0, request@^2.88.0: +request@^2.88.0, request@^2.88.2: version "2.88.2" resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== @@ -10084,6 +10380,11 @@ resolve-from@^5.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== +resolve-pathname@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-pathname/-/resolve-pathname-3.0.0.tgz#99d02224d3cf263689becbb393bc560313025dcd" + integrity sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng== + resolve-url@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" @@ -10128,13 +10429,6 @@ reusify@^1.0.4: resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== -rimraf@2, rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.3: - version "2.7.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" - integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== - dependencies: - glob "^7.1.3" - rimraf@2.6.3: version "2.6.3" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" @@ -10142,6 +10436,13 @@ rimraf@2.6.3: dependencies: glob "^7.1.3" +rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.3: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + rimraf@^3.0.0, rimraf@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" @@ -10311,7 +10612,7 @@ select@^1.1.2: resolved "https://registry.yarnpkg.com/select/-/select-1.1.2.tgz#0e7350acdec80b1108528786ec1d4418d11b396d" integrity sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0= -"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.6.0: +"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.6.0: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== @@ -10333,11 +10634,6 @@ semver@^7.3.2, semver@^7.3.4: dependencies: lru-cache "^6.0.0" -semver@~5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" - integrity sha1-myzl094C0XxgEq0yaqa00M9U+U8= - send@0.17.1: version "0.17.1" resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" @@ -10454,7 +10750,7 @@ shebang-regex@^3.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -shell-quote@1.7.2: +shell-quote@1.7.2, shell-quote@^1.6.1: version "1.7.2" resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2" integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== @@ -10739,6 +11035,11 @@ stream-shift@^1.0.0: resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== +string-hash@^1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/string-hash/-/string-hash-1.1.3.tgz#e8aafc0ac1855b4666929ed7dd1275df5d6c811b" + integrity sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs= + string-length@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/string-length/-/string-length-3.1.0.tgz#107ef8c23456e187a8abd4a61162ff4ac6e25837" @@ -10955,7 +11256,14 @@ supports-color@^2.0.0: resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= -supports-color@^5.3.0: +supports-color@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" + integrity sha1-ZawFBLOVQXHYpklGsq48u4pfVPY= + dependencies: + has-flag "^1.0.0" + +supports-color@^5.3.0, supports-color@^5.4.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== @@ -11014,15 +11322,6 @@ tapable@^1.0.0, tapable@^1.1.3: resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== -tar@^2.0.0: - version "2.2.2" - resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.2.tgz#0ca8848562c7299b8b446ff6a4d60cdbb23edc40" - integrity sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA== - dependencies: - block-stream "*" - fstream "^1.0.12" - inherits "2" - tar@^6.0.2: version "6.1.0" resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.0.tgz#d1724e9bcc04b977b18d5c573b333a2207229a83" @@ -11150,6 +11449,23 @@ tiny-emitter@^2.0.0: resolved "https://registry.yarnpkg.com/tiny-emitter/-/tiny-emitter-2.1.0.tgz#1d1a56edfc51c43e863cbb5382a72330e3555423" integrity sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q== +tiny-invariant@^1.0.2: + version "1.1.0" + resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.1.0.tgz#634c5f8efdc27714b7f386c35e6760991d230875" + integrity sha512-ytxQvrb1cPc9WBEI/HSeYYoGD0kWnGEOR8RY6KomWLBVhqz0RgTwVO9dLrGz7dC+nN9llyI7OKAgRq8Vq4ZBSw== + +tiny-warning@^1.0.0, tiny-warning@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754" + integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA== + +tippy.js@^6.3.1: + version "6.3.1" + resolved "https://registry.yarnpkg.com/tippy.js/-/tippy.js-6.3.1.tgz#3788a007be7015eee0fd589a66b98fb3f8f10181" + integrity sha512-JnFncCq+rF1dTURupoJ4yPie5Cof978inW6/4S6kmWV7LL9YOSEVMifED3KdrVPEG+Z/TFH2CDNJcQEfaeuQww== + dependencies: + "@popperjs/core" "^2.8.3" + tmp@^0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" @@ -11290,7 +11606,7 @@ tsconfig-paths@^3.9.0: minimist "^1.2.0" strip-bom "^3.0.0" -tslib@^1.9.0: +tslib@^1.13.0, tslib@^1.8.1, tslib@^1.9.0: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== @@ -11300,6 +11616,32 @@ tslib@^2.0.0, tslib@^2.0.1, tslib@^2.0.3: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.0.tgz#803b8cdab3e12ba581a4ca41c8839bbb0dacb09e" integrity sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg== +tslint@^6.1.3: + version "6.1.3" + resolved "https://registry.yarnpkg.com/tslint/-/tslint-6.1.3.tgz#5c23b2eccc32487d5523bd3a470e9aa31789d904" + integrity sha512-IbR4nkT96EQOvKE2PW/djGz8iGNeJ4rF2mBfiYaR/nvUWYKJhLwimoJKgjIFEIDibBtOevj7BqCRL4oHeWWUCg== + dependencies: + "@babel/code-frame" "^7.0.0" + builtin-modules "^1.1.1" + chalk "^2.3.0" + commander "^2.12.1" + diff "^4.0.1" + glob "^7.1.1" + js-yaml "^3.13.1" + minimatch "^3.0.4" + mkdirp "^0.5.3" + resolve "^1.3.2" + semver "^5.3.0" + tslib "^1.13.0" + tsutils "^2.29.0" + +tsutils@^2.29.0: + version "2.29.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.29.0.tgz#32b488501467acbedd4b85498673a0812aca0b99" + integrity sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA== + dependencies: + tslib "^1.8.1" + tty-browserify@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" @@ -11364,6 +11706,11 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= +typescript@^4.3.4: + version "4.3.4" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.3.4.tgz#3f85b986945bcf31071decdd96cf8bfa65f9dcbc" + integrity sha512-uauPG7XZn9F/mo+7MrsRjyvbxFpzemRjKEZXS4AK83oP2KKOJPvb+9cO/gmnv8arWZvhnjVOXz7B49m1l0e9Ew== + unbox-primitive@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471" @@ -11605,13 +11952,6 @@ util@0.10.3: dependencies: inherits "2.0.1" -util@^0.10.3: - version "0.10.4" - resolved "https://registry.yarnpkg.com/util/-/util-0.10.4.tgz#3aa0125bfe668a4672de58857d3ace27ecb76901" - integrity sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A== - dependencies: - inherits "2.0.3" - util@^0.11.0: version "0.11.1" resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" @@ -11634,7 +11974,7 @@ uuid-browser@^3.1.0: resolved "https://registry.yarnpkg.com/uuid-browser/-/uuid-browser-3.1.0.tgz#0f05a40aef74f9e5951e20efbf44b11871e56410" integrity sha1-DwWkCu90+eWVHiDvv0SxGHHlZBA= -uuid@^3.3.2: +uuid@^3.2.1, uuid@^3.3.2: version "3.4.0" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== @@ -11670,6 +12010,11 @@ validate-npm-package-license@^3.0.1: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" +value-equal@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/value-equal/-/value-equal-1.0.1.tgz#1e0b794c734c5c0cade179c437d356d931a34d6c" + integrity sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw== + vary@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" @@ -11885,7 +12230,7 @@ which-module@^2.0.0: resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= -which@1, which@^1.2.9, which@^1.3.1: +which@^1.2.9, which@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== @@ -12011,11 +12356,6 @@ y18n@^5.0.5: resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== -yallist@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" - integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= - yallist@^3.0.2: version "3.1.1" resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd"