source: frontend/node_modules/eslint-plugin-import/lib/rules/prefer-default-export.js

Last change on this file was 9af201e, checked in by MBK <marija.karapandzova@…>, 11 days ago

Fix frontend appearance

  • Property mode set to 100644
File size: 12.4 KB
Line 
1'use strict';
2
3var _docsUrl = require('../docsUrl');var _docsUrl2 = _interopRequireDefault(_docsUrl);function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { 'default': obj };}
4
5var SINGLE_EXPORT_ERROR_MESSAGE = 'Prefer default export on a file with single export.';
6var ANY_EXPORT_ERROR_MESSAGE = 'Prefer default export to be present on every file that has export.';
7
8module.exports = {
9 meta: {
10 type: 'suggestion',
11 docs: {
12 category: 'Style guide',
13 description: 'Prefer a default export if module exports a single name or multiple names.',
14 url: (0, _docsUrl2['default'])('prefer-default-export') },
15
16 schema: [{
17 type: 'object',
18 properties: {
19 target: {
20 type: 'string',
21 'enum': ['single', 'any'],
22 'default': 'single' } },
23
24
25 additionalProperties: false }] },
26
27
28
29 create: function () {function create(context) {
30 var specifierExportCount = 0;
31 var hasDefaultExport = false;
32 var hasStarExport = false;
33 var hasTypeExport = false;
34 var namedExportNode = null;
35 // get options. by default we look into files with single export
36 var _ref = context.options[0] || {},_ref$target = _ref.target,target = _ref$target === undefined ? 'single' : _ref$target;
37 function captureDeclaration(identifierOrPattern) {
38 if (identifierOrPattern && identifierOrPattern.type === 'ObjectPattern') {
39 // recursively capture
40 identifierOrPattern.properties.
41 forEach(function (property) {
42 captureDeclaration(property.value);
43 });
44 } else if (identifierOrPattern && identifierOrPattern.type === 'ArrayPattern') {
45 identifierOrPattern.elements.
46 forEach(captureDeclaration);
47 } else {
48 // assume it's a single standard identifier
49 specifierExportCount++;
50 }
51 }
52
53 return {
54 ExportDefaultSpecifier: function () {function ExportDefaultSpecifier() {
55 hasDefaultExport = true;
56 }return ExportDefaultSpecifier;}(),
57
58 ExportSpecifier: function () {function ExportSpecifier(node) {
59 if ((node.exported.name || node.exported.value) === 'default') {
60 hasDefaultExport = true;
61 } else {
62 specifierExportCount++;
63 namedExportNode = node;
64 }
65 }return ExportSpecifier;}(),
66
67 ExportNamedDeclaration: function () {function ExportNamedDeclaration(node) {
68 // if there are specifiers, node.declaration should be null
69 if (!node.declaration) {return;}var
70
71 type = node.declaration.type;
72
73 if (
74 type === 'TSTypeAliasDeclaration' ||
75 type === 'TypeAlias' ||
76 type === 'TSInterfaceDeclaration' ||
77 type === 'InterfaceDeclaration')
78 {
79 specifierExportCount++;
80 hasTypeExport = true;
81 return;
82 }
83
84 if (node.declaration.declarations) {
85 node.declaration.declarations.forEach(function (declaration) {
86 captureDeclaration(declaration.id);
87 });
88 } else {
89 // captures 'export function foo() {}' syntax
90 specifierExportCount++;
91 }
92
93 namedExportNode = node;
94 }return ExportNamedDeclaration;}(),
95
96 ExportDefaultDeclaration: function () {function ExportDefaultDeclaration() {
97 hasDefaultExport = true;
98 }return ExportDefaultDeclaration;}(),
99
100 ExportAllDeclaration: function () {function ExportAllDeclaration() {
101 hasStarExport = true;
102 }return ExportAllDeclaration;}(),
103
104 'Program:exit': function () {function ProgramExit() {
105 if (hasDefaultExport || hasStarExport || hasTypeExport) {
106 return;
107 }
108 if (target === 'single' && specifierExportCount === 1) {
109 context.report(namedExportNode, SINGLE_EXPORT_ERROR_MESSAGE);
110 } else if (target === 'any' && specifierExportCount > 0) {
111 context.report(namedExportNode, ANY_EXPORT_ERROR_MESSAGE);
112 }
113 }return ProgramExit;}() };
114
115 }return create;}() };
116//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydWxlcy9wcmVmZXItZGVmYXVsdC1leHBvcnQuanMiXSwibmFtZXMiOlsiU0lOR0xFX0VYUE9SVF9FUlJPUl9NRVNTQUdFIiwiQU5ZX0VYUE9SVF9FUlJPUl9NRVNTQUdFIiwibW9kdWxlIiwiZXhwb3J0cyIsIm1ldGEiLCJ0eXBlIiwiZG9jcyIsImNhdGVnb3J5IiwiZGVzY3JpcHRpb24iLCJ1cmwiLCJzY2hlbWEiLCJwcm9wZXJ0aWVzIiwidGFyZ2V0IiwiYWRkaXRpb25hbFByb3BlcnRpZXMiLCJjcmVhdGUiLCJjb250ZXh0Iiwic3BlY2lmaWVyRXhwb3J0Q291bnQiLCJoYXNEZWZhdWx0RXhwb3J0IiwiaGFzU3RhckV4cG9ydCIsImhhc1R5cGVFeHBvcnQiLCJuYW1lZEV4cG9ydE5vZGUiLCJvcHRpb25zIiwiY2FwdHVyZURlY2xhcmF0aW9uIiwiaWRlbnRpZmllck9yUGF0dGVybiIsImZvckVhY2giLCJwcm9wZXJ0eSIsInZhbHVlIiwiZWxlbWVudHMiLCJFeHBvcnREZWZhdWx0U3BlY2lmaWVyIiwiRXhwb3J0U3BlY2lmaWVyIiwibm9kZSIsImV4cG9ydGVkIiwibmFtZSIsIkV4cG9ydE5hbWVkRGVjbGFyYXRpb24iLCJkZWNsYXJhdGlvbiIsImRlY2xhcmF0aW9ucyIsImlkIiwiRXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uIiwiRXhwb3J0QWxsRGVjbGFyYXRpb24iLCJyZXBvcnQiXSwibWFwcGluZ3MiOiJBQUFBOztBQUVBLHFDOztBQUVBLElBQU1BLDhCQUE4QixxREFBcEM7QUFDQSxJQUFNQywyQkFBMkIsb0VBQWpDOztBQUVBQyxPQUFPQyxPQUFQLEdBQWlCO0FBQ2ZDLFFBQU07QUFDSkMsVUFBTSxZQURGO0FBRUpDLFVBQU07QUFDSkMsZ0JBQVUsYUFETjtBQUVKQyxtQkFBYSw0RUFGVDtBQUdKQyxXQUFLLDBCQUFRLHVCQUFSLENBSEQsRUFGRjs7QUFPSkMsWUFBUSxDQUFDO0FBQ1BMLFlBQU0sUUFEQztBQUVQTSxrQkFBWTtBQUNWQyxnQkFBUTtBQUNOUCxnQkFBTSxRQURBO0FBRU4sa0JBQU0sQ0FBQyxRQUFELEVBQVcsS0FBWCxDQUZBO0FBR04scUJBQVMsUUFISCxFQURFLEVBRkw7OztBQVNQUSw0QkFBc0IsS0FUZixFQUFELENBUEosRUFEUzs7OztBQXFCZkMsUUFyQmUsK0JBcUJSQyxPQXJCUSxFQXFCQztBQUNkLFVBQUlDLHVCQUF1QixDQUEzQjtBQUNBLFVBQUlDLG1CQUFtQixLQUF2QjtBQUNBLFVBQUlDLGdCQUFnQixLQUFwQjtBQUNBLFVBQUlDLGdCQUFnQixLQUFwQjtBQUNBLFVBQUlDLGtCQUFrQixJQUF0QjtBQUNBO0FBTmMsaUJBT2lCTCxRQUFRTSxPQUFSLENBQWdCLENBQWhCLEtBQXNCLEVBUHZDLG9CQU9OVCxNQVBNLENBT05BLE1BUE0sK0JBT0csUUFQSDtBQVFkLGVBQVNVLGtCQUFULENBQTRCQyxtQkFBNUIsRUFBaUQ7QUFDL0MsWUFBSUEsdUJBQXVCQSxvQkFBb0JsQixJQUFwQixLQUE2QixlQUF4RCxFQUF5RTtBQUN2RTtBQUNBa0IsOEJBQW9CWixVQUFwQjtBQUNHYSxpQkFESCxDQUNXLFVBQVVDLFFBQVYsRUFBb0I7QUFDM0JILCtCQUFtQkcsU0FBU0MsS0FBNUI7QUFDRCxXQUhIO0FBSUQsU0FORCxNQU1PLElBQUlILHVCQUF1QkEsb0JBQW9CbEIsSUFBcEIsS0FBNkIsY0FBeEQsRUFBd0U7QUFDN0VrQiw4QkFBb0JJLFFBQXBCO0FBQ0dILGlCQURILENBQ1dGLGtCQURYO0FBRUQsU0FITSxNQUdDO0FBQ1I7QUFDRU47QUFDRDtBQUNGOztBQUVELGFBQU87QUFDTFksOEJBREssaURBQ29CO0FBQ3ZCWCwrQkFBbUIsSUFBbkI7QUFDRCxXQUhJOztBQUtMWSx1QkFMSyx3Q0FLV0MsSUFMWCxFQUtpQjtBQUNwQixnQkFBSSxDQUFDQSxLQUFLQyxRQUFMLENBQWNDLElBQWQsSUFBc0JGLEtBQUtDLFFBQUwsQ0FBY0wsS0FBckMsTUFBZ0QsU0FBcEQsRUFBK0Q7QUFDN0RULGlDQUFtQixJQUFuQjtBQUNELGFBRkQsTUFFTztBQUNMRDtBQUNBSSxnQ0FBa0JVLElBQWxCO0FBQ0Q7QUFDRixXQVpJOztBQWNMRyw4QkFkSywrQ0Fja0JILElBZGxCLEVBY3dCO0FBQzNCO0FBQ0EsZ0JBQUksQ0FBQ0EsS0FBS0ksV0FBVixFQUF1QixDQUFFLE9BQVMsQ0FGUDs7QUFJbkI3QixnQkFKbUIsR0FJVnlCLEtBQUtJLFdBSkssQ0FJbkI3QixJQUptQjs7QUFNM0I7QUFDRUEscUJBQVMsd0JBQVQ7QUFDR0EscUJBQVMsV0FEWjtBQUVHQSxxQkFBUyx3QkFGWjtBQUdHQSxxQkFBUyxzQkFKZDtBQUtFO0FBQ0FXO0FBQ0FHLDhCQUFnQixJQUFoQjtBQUNBO0FBQ0Q7O0FBRUQsZ0JBQUlXLEtBQUtJLFdBQUwsQ0FBaUJDLFlBQXJCLEVBQW1DO0FBQ2pDTCxtQkFBS0ksV0FBTCxDQUFpQkMsWUFBakIsQ0FBOEJYLE9BQTlCLENBQXNDLFVBQVVVLFdBQVYsRUFBdUI7QUFDM0RaLG1DQUFtQlksWUFBWUUsRUFBL0I7QUFDRCxlQUZEO0FBR0QsYUFKRCxNQUlPO0FBQ0w7QUFDQXBCO0FBQ0Q7O0FBRURJLDhCQUFrQlUsSUFBbEI7QUFDRCxXQXpDSTs7QUEyQ0xPLGdDQTNDSyxtREEyQ3NCO0FBQ3pCcEIsK0JBQW1CLElBQW5CO0FBQ0QsV0E3Q0k7O0FBK0NMcUIsNEJBL0NLLCtDQStDa0I7QUFDckJwQiw0QkFBZ0IsSUFBaEI7QUFDRCxXQWpESTs7QUFtREwsc0JBbkRLLHNDQW1EWTtBQUNmLGdCQUFJRCxvQkFBb0JDLGFBQXBCLElBQXFDQyxhQUF6QyxFQUF3RDtBQUN0RDtBQUNEO0FBQ0QsZ0JBQUlQLFdBQVcsUUFBWCxJQUF1QkkseUJBQXlCLENBQXBELEVBQXVEO0FBQ3JERCxzQkFBUXdCLE1BQVIsQ0FBZW5CLGVBQWYsRUFBZ0NwQiwyQkFBaEM7QUFDRCxhQUZELE1BRU8sSUFBSVksV0FBVyxLQUFYLElBQW9CSSx1QkFBdUIsQ0FBL0MsRUFBa0Q7QUFDdkRELHNCQUFRd0IsTUFBUixDQUFlbkIsZUFBZixFQUFnQ25CLHdCQUFoQztBQUNEO0FBQ0YsV0E1REksd0JBQVA7O0FBOERELEtBM0djLG1CQUFqQiIsImZpbGUiOiJwcmVmZXItZGVmYXVsdC1leHBvcnQuanMiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbmltcG9ydCBkb2NzVXJsIGZyb20gJy4uL2RvY3NVcmwnO1xuXG5jb25zdCBTSU5HTEVfRVhQT1JUX0VSUk9SX01FU1NBR0UgPSAnUHJlZmVyIGRlZmF1bHQgZXhwb3J0IG9uIGEgZmlsZSB3aXRoIHNpbmdsZSBleHBvcnQuJztcbmNvbnN0IEFOWV9FWFBPUlRfRVJST1JfTUVTU0FHRSA9ICdQcmVmZXIgZGVmYXVsdCBleHBvcnQgdG8gYmUgcHJlc2VudCBvbiBldmVyeSBmaWxlIHRoYXQgaGFzIGV4cG9ydC4nO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgbWV0YToge1xuICAgIHR5cGU6ICdzdWdnZXN0aW9uJyxcbiAgICBkb2NzOiB7XG4gICAgICBjYXRlZ29yeTogJ1N0eWxlIGd1aWRlJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnUHJlZmVyIGEgZGVmYXVsdCBleHBvcnQgaWYgbW9kdWxlIGV4cG9ydHMgYSBzaW5nbGUgbmFtZSBvciBtdWx0aXBsZSBuYW1lcy4nLFxuICAgICAgdXJsOiBkb2NzVXJsKCdwcmVmZXItZGVmYXVsdC1leHBvcnQnKSxcbiAgICB9LFxuICAgIHNjaGVtYTogW3tcbiAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICB0YXJnZXQ6IHtcbiAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICBlbnVtOiBbJ3NpbmdsZScsICdhbnknXSxcbiAgICAgICAgICBkZWZhdWx0OiAnc2luZ2xlJyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBhZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2UsXG4gICAgfV0sXG4gIH0sXG5cbiAgY3JlYXRlKGNvbnRleHQpIHtcbiAgICBsZXQgc3BlY2lmaWVyRXhwb3J0Q291bnQgPSAwO1xuICAgIGxldCBoYXNEZWZhdWx0RXhwb3J0ID0gZmFsc2U7XG4gICAgbGV0IGhhc1N0YXJFeHBvcnQgPSBmYWxzZTtcbiAgICBsZXQgaGFzVHlwZUV4cG9ydCA9IGZhbHNlO1xuICAgIGxldCBuYW1lZEV4cG9ydE5vZGUgPSBudWxsO1xuICAgIC8vIGdldCBvcHRpb25zLiBieSBkZWZhdWx0IHdlIGxvb2sgaW50byBmaWxlcyB3aXRoIHNpbmdsZSBleHBvcnRcbiAgICBjb25zdCB7IHRhcmdldCA9ICdzaW5nbGUnIH0gPSAgY29udGV4dC5vcHRpb25zWzBdIHx8IHt9O1xuICAgIGZ1bmN0aW9uIGNhcHR1cmVEZWNsYXJhdGlvbihpZGVudGlmaWVyT3JQYXR0ZXJuKSB7XG4gICAgICBpZiAoaWRlbnRpZmllck9yUGF0dGVybiAmJiBpZGVudGlmaWVyT3JQYXR0ZXJuLnR5cGUgPT09ICdPYmplY3RQYXR0ZXJuJykge1xuICAgICAgICAvLyByZWN1cnNpdmVseSBjYXB0dXJlXG4gICAgICAgIGlkZW50aWZpZXJPclBhdHRlcm4ucHJvcGVydGllc1xuICAgICAgICAgIC5mb3JFYWNoKGZ1bmN0aW9uIChwcm9wZXJ0eSkge1xuICAgICAgICAgICAgY2FwdHVyZURlY2xhcmF0aW9uKHByb3BlcnR5LnZhbHVlKTtcbiAgICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAoaWRlbnRpZmllck9yUGF0dGVybiAmJiBpZGVudGlmaWVyT3JQYXR0ZXJuLnR5cGUgPT09ICdBcnJheVBhdHRlcm4nKSB7XG4gICAgICAgIGlkZW50aWZpZXJPclBhdHRlcm4uZWxlbWVudHNcbiAgICAgICAgICAuZm9yRWFjaChjYXB0dXJlRGVjbGFyYXRpb24pO1xuICAgICAgfSBlbHNlICB7XG4gICAgICAvLyBhc3N1bWUgaXQncyBhIHNpbmdsZSBzdGFuZGFyZCBpZGVudGlmaWVyXG4gICAgICAgIHNwZWNpZmllckV4cG9ydENvdW50Kys7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIEV4cG9ydERlZmF1bHRTcGVjaWZpZXIoKSB7XG4gICAgICAgIGhhc0RlZmF1bHRFeHBvcnQgPSB0cnVlO1xuICAgICAgfSxcblxuICAgICAgRXhwb3J0U3BlY2lmaWVyKG5vZGUpIHtcbiAgICAgICAgaWYgKChub2RlLmV4cG9ydGVkLm5hbWUgfHwgbm9kZS5leHBvcnRlZC52YWx1ZSkgPT09ICdkZWZhdWx0Jykge1xuICAgICAgICAgIGhhc0RlZmF1bHRFeHBvcnQgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNwZWNpZmllckV4cG9ydENvdW50Kys7XG4gICAgICAgICAgbmFtZWRFeHBvcnROb2RlID0gbm9kZTtcbiAgICAgICAgfVxuICAgICAgfSxcblxuICAgICAgRXhwb3J0TmFtZWREZWNsYXJhdGlvbihub2RlKSB7XG4gICAgICAgIC8vIGlmIHRoZXJlIGFyZSBzcGVjaWZpZXJzLCBub2RlLmRlY2xhcmF0aW9uIHNob3VsZCBiZSBudWxsXG4gICAgICAgIGlmICghbm9kZS5kZWNsYXJhdGlvbikgeyByZXR1cm47IH1cblxuICAgICAgICBjb25zdCB7IHR5cGUgfSA9IG5vZGUuZGVjbGFyYXRpb247XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIHR5cGUgPT09ICdUU1R5cGVBbGlhc0RlY2xhcmF0aW9uJ1xuICAgICAgICAgIHx8IHR5cGUgPT09ICdUeXBlQWxpYXMnXG4gICAgICAgICAgfHwgdHlwZSA9PT0gJ1RTSW50ZXJmYWNlRGVjbGFyYXRpb24nXG4gICAgICAgICAgfHwgdHlwZSA9PT0gJ0ludGVyZmFjZURlY2xhcmF0aW9uJ1xuICAgICAgICApIHtcbiAgICAgICAgICBzcGVjaWZpZXJFeHBvcnRDb3VudCsrO1xuICAgICAgICAgIGhhc1R5cGVFeHBvcnQgPSB0cnVlO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChub2RlLmRlY2xhcmF0aW9uLmRlY2xhcmF0aW9ucykge1xuICAgICAgICAgIG5vZGUuZGVjbGFyYXRpb24uZGVjbGFyYXRpb25zLmZvckVhY2goZnVuY3Rpb24gKGRlY2xhcmF0aW9uKSB7XG4gICAgICAgICAgICBjYXB0dXJlRGVjbGFyYXRpb24oZGVjbGFyYXRpb24uaWQpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIGNhcHR1cmVzICdleHBvcnQgZnVuY3Rpb24gZm9vKCkge30nIHN5bnRheFxuICAgICAgICAgIHNwZWNpZmllckV4cG9ydENvdW50Kys7XG4gICAgICAgIH1cblxuICAgICAgICBuYW1lZEV4cG9ydE5vZGUgPSBub2RlO1xuICAgICAgfSxcblxuICAgICAgRXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uKCkge1xuICAgICAgICBoYXNEZWZhdWx0RXhwb3J0ID0gdHJ1ZTtcbiAgICAgIH0sXG5cbiAgICAgIEV4cG9ydEFsbERlY2xhcmF0aW9uKCkge1xuICAgICAgICBoYXNTdGFyRXhwb3J0ID0gdHJ1ZTtcbiAgICAgIH0sXG5cbiAgICAgICdQcm9ncmFtOmV4aXQnKCkge1xuICAgICAgICBpZiAoaGFzRGVmYXVsdEV4cG9ydCB8fCBoYXNTdGFyRXhwb3J0IHx8IGhhc1R5cGVFeHBvcnQpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRhcmdldCA9PT0gJ3NpbmdsZScgJiYgc3BlY2lmaWVyRXhwb3J0Q291bnQgPT09IDEpIHtcbiAgICAgICAgICBjb250ZXh0LnJlcG9ydChuYW1lZEV4cG9ydE5vZGUsIFNJTkdMRV9FWFBPUlRfRVJST1JfTUVTU0FHRSk7XG4gICAgICAgIH0gZWxzZSBpZiAodGFyZ2V0ID09PSAnYW55JyAmJiBzcGVjaWZpZXJFeHBvcnRDb3VudCA+IDApIHtcbiAgICAgICAgICBjb250ZXh0LnJlcG9ydChuYW1lZEV4cG9ydE5vZGUsIEFOWV9FWFBPUlRfRVJST1JfTUVTU0FHRSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfTtcbiAgfSxcbn07XG4iXX0=
Note: See TracBrowser for help on using the repository browser.