mirror of
https://github.com/strapi/strapi.git
synced 2025-11-01 02:16:03 +00:00
Merge branch 'master' into features/sso
This commit is contained in:
commit
1a42da3007
@ -20,10 +20,6 @@
|
||||
<img src="https://assets.strapi.io/uploads/Deploy_button_heroku_b1043fc67d.png" />
|
||||
</a>
|
||||
|
||||
<a href="https://fastandcomfy.io/strapi/">
|
||||
<img src="https://assets.strapi.io/uploads/deploy_button_fastandcomfy_7cb9319189.png" />
|
||||
</a>
|
||||
|
||||
<a href="https://render.com/docs/deploy-strapi">
|
||||
<img src="https://assets.strapi.io/uploads/deploy_render_e076b6f23a.png" height="44" />
|
||||
</a>
|
||||
|
||||
@ -16,7 +16,7 @@
|
||||
"lodash": "4.17.19",
|
||||
"mysql": "^2.17.1",
|
||||
"pg": "8.5.1",
|
||||
"sqlite3": "^5.0.0",
|
||||
"sqlite3": "^5.0.1",
|
||||
"strapi": "3.4.6",
|
||||
"strapi-admin": "3.4.6",
|
||||
"strapi-connector-bookshelf": "3.4.6",
|
||||
|
||||
@ -65,12 +65,20 @@
|
||||
"Roles.ListPage.notification.delete-not-allowed": "Eine Rolle, die mit einem Benutzer verknüpft ist, kann nicht gelöscht werden",
|
||||
"Roles.RoleRow.user-count.plural": "{number} Benutzer",
|
||||
"Roles.RoleRow.user-count.singular": "{number} Benutzer",
|
||||
"Settings.application.description": "Projektdetails ansehen",
|
||||
"Settings.application.edition-title": "Aktuelle Planversion",
|
||||
"Settings.application.link-pricing": "Alle Preisgestaltungen anzeigen",
|
||||
"Settings.application.link-upgrade": "Dein Projekt upgraden",
|
||||
"Settings.application.node-version": "NODE VERSION",
|
||||
"Settings.application.strapi-version": "STRAPI VERSION",
|
||||
"Settings.application.title": "Anwendung",
|
||||
"Roles.components.List.empty.withSearch": "Es gibt keine Rolle die der Suche ({search}) entspricht...",
|
||||
"Settings.PageTitle": "Einstellungen - {name}",
|
||||
"Settings.error": "Fehler",
|
||||
"Settings.global": "Globale Einstellungen",
|
||||
"Settings.permissions": "Administrationsoberfläche",
|
||||
"Settings.permissions.category": "Berechtigungseinstellungen für die {category}",
|
||||
"Settings.permissions.category.plugins": "Berechtigungseinstellungen für das {category} Plugin",
|
||||
"Settings.permissions.conditions.anytime": "Jederzeit",
|
||||
"Settings.permissions.conditions.apply": "Anwenden",
|
||||
"Settings.permissions.conditions.can": "Kann",
|
||||
@ -333,5 +341,7 @@
|
||||
"notification.permission.not-allowed-read": "Keine Berechtigung dieses Dokument einzusehen",
|
||||
"notification.success.delete": "Eintrag wurde gelöscht",
|
||||
"notification.success.saved": "Gespeichert",
|
||||
"notification.version.update.link": "Erfahre mehr",
|
||||
"notification.version.update.message": "Eine neue Strapi Version ist verfügbar",
|
||||
"request.error.model.unknown": "Dieses Schema existiert nicht"
|
||||
}
|
||||
}
|
||||
@ -19,11 +19,11 @@
|
||||
"@babel/plugin-proposal-class-properties": "^7.12.1",
|
||||
"@babel/plugin-syntax-dynamic-import": "^7.2.0",
|
||||
"@babel/plugin-transform-modules-commonjs": "^7.12.1",
|
||||
"@babel/plugin-transform-runtime": "^7.9.0",
|
||||
"@babel/plugin-transform-runtime": "^7.12.15",
|
||||
"@babel/polyfill": "^7.12.1",
|
||||
"@babel/preset-env": "^7.9.5",
|
||||
"@babel/preset-react": "^7.9.4",
|
||||
"@babel/runtime": "^7.9.2",
|
||||
"@babel/runtime": "^7.12.13",
|
||||
"@buffetjs/core": "3.3.4",
|
||||
"@buffetjs/custom": "3.3.4",
|
||||
"@buffetjs/hooks": "3.3.4",
|
||||
|
||||
@ -102,6 +102,7 @@ module.exports = strapi => {
|
||||
...connection.options,
|
||||
debug: _.get(connection.options, 'debug', false),
|
||||
pool: {
|
||||
..._.get(connection.options, 'pool', {}),
|
||||
min: _.get(connection.options, 'pool.min', 0),
|
||||
},
|
||||
},
|
||||
|
||||
@ -700,12 +700,14 @@ const buildSearchQuery = ({ model, params }) => qb => {
|
||||
|
||||
const searchColumns = Object.keys(model._attributes)
|
||||
.filter(attribute => !associations.includes(attribute))
|
||||
.filter(attribute => stringTypes.includes(model._attributes[attribute].type));
|
||||
.filter(attribute => stringTypes.includes(model._attributes[attribute].type))
|
||||
.filter(attribute => model._attributes[attribute].searchable !== false);
|
||||
|
||||
if (!_.isNaN(_.toNumber(query))) {
|
||||
const numberColumns = Object.keys(model._attributes)
|
||||
.filter(attribute => !associations.includes(attribute))
|
||||
.filter(attribute => numberTypes.includes(model._attributes[attribute].type));
|
||||
.filter(attribute => numberTypes.includes(model._attributes[attribute].type))
|
||||
.filter(attribute => model._attributes[attribute].searchable !== false);
|
||||
searchColumns.push(...numberColumns);
|
||||
}
|
||||
|
||||
|
||||
@ -36,6 +36,9 @@ const buildSearchOr = (model, query) => {
|
||||
}
|
||||
|
||||
const searchOr = Object.keys(model.attributes).reduce((acc, curr) => {
|
||||
if (model.attributes[curr].searchable === false) {
|
||||
return acc;
|
||||
}
|
||||
switch (model.attributes[curr].type) {
|
||||
case 'biginteger':
|
||||
case 'integer':
|
||||
|
||||
@ -311,7 +311,9 @@ module.exports = async ({ models, target }, ctx) => {
|
||||
const createOnFetchPopulateFn = ({ morphAssociations, componentAttributes, definition }) => {
|
||||
return function() {
|
||||
const populatedPaths = this.getPopulatedPaths();
|
||||
const { publicationState } = this.getOptions();
|
||||
const { publicationState, _depth = 0 } = this.getOptions();
|
||||
|
||||
if (_depth > 2) return;
|
||||
|
||||
const getMatchQuery = assoc => {
|
||||
const assocModel = strapi.db.getModelByAssoc(assoc);
|
||||
@ -334,7 +336,10 @@ const createOnFetchPopulateFn = ({ morphAssociations, componentAttributes, defin
|
||||
this.populate({ path: alias, match: matchQuery, options: { publicationState } });
|
||||
} else if (populatedPaths.includes(alias)) {
|
||||
_.set(this._mongooseOptions.populate, [alias, 'path'], `${alias}.ref`);
|
||||
_.set(this._mongooseOptions.populate, [alias, 'options'], { publicationState });
|
||||
_.set(this._mongooseOptions.populate, [alias, 'options'], {
|
||||
publicationState,
|
||||
_depth: _depth + 1,
|
||||
});
|
||||
|
||||
if (matchQuery !== undefined) {
|
||||
_.set(this._mongooseOptions.populate, [alias, 'match'], matchQuery);
|
||||
@ -350,13 +355,13 @@ const createOnFetchPopulateFn = ({ morphAssociations, componentAttributes, defin
|
||||
this.populate({
|
||||
path: ast.alias,
|
||||
match: getMatchQuery(ast),
|
||||
options: { publicationState },
|
||||
options: { publicationState, _depth: _depth + 1 },
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
componentAttributes.forEach(key => {
|
||||
this.populate({ path: `${key}.ref`, options: { publicationState } });
|
||||
this.populate({ path: `${key}.ref`, options: { publicationState, _depth: _depth + 1 } });
|
||||
});
|
||||
};
|
||||
};
|
||||
|
||||
@ -13,7 +13,7 @@
|
||||
"lib": "./lib"
|
||||
},
|
||||
"dependencies": {
|
||||
"@sentry/node": "^6.0.3",
|
||||
"@sentry/node": "6.1.0",
|
||||
"chalk": "^2.4.2",
|
||||
"execa": "^1.0.0",
|
||||
"fs-extra": "^9.0.1",
|
||||
|
||||
@ -28,7 +28,7 @@
|
||||
"markdown-it-deflist": "^2.0.3",
|
||||
"markdown-it-emoji": "^2.0.0",
|
||||
"markdown-it-footnote": "^3.0.2",
|
||||
"markdown-it-ins": "^3.0.0",
|
||||
"markdown-it-ins": "^3.0.1",
|
||||
"markdown-it-mark": "^3.0.1",
|
||||
"markdown-it-sub": "^1.0.0",
|
||||
"markdown-it-sup": "^1.0.0",
|
||||
|
||||
@ -0,0 +1,21 @@
|
||||
import React from 'react';
|
||||
import PropTypes from 'prop-types';
|
||||
import CTSelected from './icons/CTSelected';
|
||||
import CTUnselected from './icons/CTUnselected';
|
||||
|
||||
const CT = ({ selected }) =>
|
||||
selected ? (
|
||||
<CTSelected aria-hidden data-testid="ct-selected" />
|
||||
) : (
|
||||
<CTUnselected aria-hidden data-testid="ct-unselected" />
|
||||
);
|
||||
|
||||
CT.defaultProps = {
|
||||
selected: false,
|
||||
};
|
||||
|
||||
CT.propTypes = {
|
||||
selected: PropTypes.bool,
|
||||
};
|
||||
|
||||
export default CT;
|
||||
@ -0,0 +1,21 @@
|
||||
import React from 'react';
|
||||
import PropTypes from 'prop-types';
|
||||
import STSelected from './icons/STSelected';
|
||||
import STUnselected from './icons/STUnselected';
|
||||
|
||||
const ST = ({ selected }) =>
|
||||
selected ? (
|
||||
<STSelected aria-hidden data-testid="st-selected" />
|
||||
) : (
|
||||
<STUnselected aria-hidden data-testid="st-unselected" />
|
||||
);
|
||||
|
||||
ST.defaultProps = {
|
||||
selected: false,
|
||||
};
|
||||
|
||||
ST.propTypes = {
|
||||
selected: PropTypes.bool,
|
||||
};
|
||||
|
||||
export default ST;
|
||||
@ -0,0 +1,136 @@
|
||||
/* eslint-disable */
|
||||
import React from 'react';
|
||||
|
||||
const CTSelected = props => (
|
||||
<svg width="79px" height="86px" viewBox="0 0 79 86" {...props}>
|
||||
<defs>
|
||||
<filter
|
||||
x="-1.7%"
|
||||
y="-2.3%"
|
||||
width="103.5%"
|
||||
height="104.7%"
|
||||
filterUnits="objectBoundingBox"
|
||||
id="filter-1"
|
||||
>
|
||||
<feOffset dx="0" dy="2" in="SourceAlpha" result="shadowOffsetOuter1" />
|
||||
<feGaussianBlur stdDeviation="2" in="shadowOffsetOuter1" result="shadowBlurOuter1" />
|
||||
<feColorMatrix
|
||||
values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.05 0"
|
||||
type="matrix"
|
||||
in="shadowBlurOuter1"
|
||||
result="shadowMatrixOuter1"
|
||||
/>
|
||||
<feMerge>
|
||||
<feMergeNode in="shadowMatrixOuter1" />
|
||||
<feMergeNode in="SourceGraphic" />
|
||||
</feMerge>
|
||||
</filter>
|
||||
</defs>
|
||||
<g id="Prototype---Single-types" stroke="none" strokeWidth="1" fill="none" fillRule="evenodd">
|
||||
<g
|
||||
id="Plugins-/-Types-Builder-/-Single-page-settings"
|
||||
transform="translate(-396.000000, -443.000000)"
|
||||
>
|
||||
<g
|
||||
id="Modal---Edit-Single-Type"
|
||||
filter="url(#filter-1)"
|
||||
transform="translate(323.000000, 145.000000)"
|
||||
>
|
||||
<g id="Repeatable-content-type" transform="translate(31.000000, 269.000000)">
|
||||
<g id="Icon" transform="translate(51.000000, 38.000000)">
|
||||
<g id="file-text-o" transform="translate(17.142857, 0.000000)">
|
||||
<rect
|
||||
id="Rectangle"
|
||||
fill="#E4F0FC"
|
||||
x="1.71428571"
|
||||
y="3.42857143"
|
||||
width="30.8571429"
|
||||
height="44.5714286"
|
||||
/>
|
||||
<rect
|
||||
id="Rectangle"
|
||||
fill="#E4F0FC"
|
||||
x="32.5714286"
|
||||
y="16.2857143"
|
||||
width="8.57142857"
|
||||
height="31.7142857"
|
||||
/>
|
||||
<polygon
|
||||
id="Path-2"
|
||||
fill="#E4F0FC"
|
||||
points="29.5714286 3.42857143 41.1428571 15.4285714 29.5714286 16.2857143 27.2444196 15.4285714 27.2444196 3.42857143"
|
||||
/>
|
||||
<path
|
||||
d="M40.9598214,10.6026786 C41.4806548,11.1235119 41.9270833,11.8303571 42.2991071,12.7232143 C42.671131,13.6160714 42.8571429,14.4345238 42.8571429,15.1785714 L42.8571429,47.3214286 C42.8571429,48.0654762 42.5967262,48.6979167 42.0758929,49.21875 C41.5550595,49.7395833 40.922619,50 40.1785714,50 L2.67857143,50 C1.93452381,50 1.30208333,49.7395833 0.78125,49.21875 C0.260416667,48.6979167 0,48.0654762 0,47.3214286 L0,2.67857143 C0,1.93452381 0.260416667,1.30208333 0.78125,0.78125 C1.30208333,0.260416667 1.93452381,0 2.67857143,0 L27.6785714,0 C28.422619,0 29.2410714,0.186011905 30.1339286,0.558035714 C31.0267857,0.930059524 31.733631,1.3764881 32.2544643,1.89732143 L40.9598214,10.6026786 Z M28.5714286,3.79464286 L28.5714286,14.2857143 L39.0625,14.2857143 C38.8764881,13.7462798 38.671875,13.3649554 38.4486607,13.1417411 L29.7154018,4.40848214 C29.4921875,4.18526786 29.1108631,3.98065476 28.5714286,3.79464286 Z M39.2857143,46.4285714 L39.2857143,17.8571429 L27.6785714,17.8571429 C26.9345238,17.8571429 26.3020833,17.5967262 25.78125,17.0758929 C25.2604167,16.5550595 25,15.922619 25,15.1785714 L25,3.57142857 L3.57142857,3.57142857 L3.57142857,46.4285714 L39.2857143,46.4285714 Z M10.7142857,22.3214286 C10.7142857,22.0610119 10.7979911,21.8470982 10.9654018,21.6796875 C11.1328125,21.5122768 11.3467262,21.4285714 11.6071429,21.4285714 L31.25,21.4285714 C31.5104167,21.4285714 31.7243304,21.5122768 31.8917411,21.6796875 C32.0591518,21.8470982 32.1428571,22.0610119 32.1428571,22.3214286 L32.1428571,24.1071429 C32.1428571,24.3675595 32.0591518,24.5814732 31.8917411,24.7488839 C31.7243304,24.9162946 31.5104167,25 31.25,25 L11.6071429,25 C11.3467262,25 11.1328125,24.9162946 10.9654018,24.7488839 C10.7979911,24.5814732 10.7142857,24.3675595 10.7142857,24.1071429 L10.7142857,22.3214286 Z M31.25,28.5714286 C31.5104167,28.5714286 31.7243304,28.6551339 31.8917411,28.8225446 C32.0591518,28.9899554 32.1428571,29.203869 32.1428571,29.4642857 L32.1428571,31.25 C32.1428571,31.5104167 32.0591518,31.7243304 31.8917411,31.8917411 C31.7243304,32.0591518 31.5104167,32.1428571 31.25,32.1428571 L11.6071429,32.1428571 C11.3467262,32.1428571 11.1328125,32.0591518 10.9654018,31.8917411 C10.7979911,31.7243304 10.7142857,31.5104167 10.7142857,31.25 L10.7142857,29.4642857 C10.7142857,29.203869 10.7979911,28.9899554 10.9654018,28.8225446 C11.1328125,28.6551339 11.3467262,28.5714286 11.6071429,28.5714286 L31.25,28.5714286 Z M31.25,35.7142857 C31.5104167,35.7142857 31.7243304,35.7979911 31.8917411,35.9654018 C32.0591518,36.1328125 32.1428571,36.3467262 32.1428571,36.6071429 L32.1428571,38.3928571 C32.1428571,38.6532738 32.0591518,38.8671875 31.8917411,39.0345982 C31.7243304,39.2020089 31.5104167,39.2857143 31.25,39.2857143 L11.6071429,39.2857143 C11.3467262,39.2857143 11.1328125,39.2020089 10.9654018,39.0345982 C10.7979911,38.8671875 10.7142857,38.6532738 10.7142857,38.3928571 L10.7142857,36.6071429 C10.7142857,36.3467262 10.7979911,36.1328125 10.9654018,35.9654018 C11.1328125,35.7979911 11.3467262,35.7142857 11.6071429,35.7142857 L31.25,35.7142857 Z"
|
||||
id="Shape"
|
||||
fill="#A5D5FF"
|
||||
fillRule="nonzero"
|
||||
/>
|
||||
</g>
|
||||
<g id="file-text-o" transform="translate(8.571429, 8.571429)">
|
||||
<rect
|
||||
id="Rectangle"
|
||||
fill="#E4F0FC"
|
||||
x="1.71428571"
|
||||
y="3.42857143"
|
||||
width="30.8571429"
|
||||
height="44.5714286"
|
||||
/>
|
||||
<rect
|
||||
id="Rectangle"
|
||||
fill="#E4F0FC"
|
||||
x="32.5714286"
|
||||
y="16.2857143"
|
||||
width="8.57142857"
|
||||
height="31.7142857"
|
||||
/>
|
||||
<polygon
|
||||
id="Path-2"
|
||||
fill="#E4F0FC"
|
||||
points="29.5714286 3.42857143 41.1428571 15.4285714 29.5714286 16.2857143 27.2444196 15.4285714 27.2444196 3.42857143"
|
||||
/>
|
||||
<path
|
||||
d="M40.9598214,10.6026786 C41.4806548,11.1235119 41.9270833,11.8303571 42.2991071,12.7232143 C42.671131,13.6160714 42.8571429,14.4345238 42.8571429,15.1785714 L42.8571429,47.3214286 C42.8571429,48.0654762 42.5967262,48.6979167 42.0758929,49.21875 C41.5550595,49.7395833 40.922619,50 40.1785714,50 L2.67857143,50 C1.93452381,50 1.30208333,49.7395833 0.78125,49.21875 C0.260416667,48.6979167 0,48.0654762 0,47.3214286 L0,2.67857143 C0,1.93452381 0.260416667,1.30208333 0.78125,0.78125 C1.30208333,0.260416667 1.93452381,0 2.67857143,0 L27.6785714,0 C28.422619,0 29.2410714,0.186011905 30.1339286,0.558035714 C31.0267857,0.930059524 31.733631,1.3764881 32.2544643,1.89732143 L40.9598214,10.6026786 Z M28.5714286,3.79464286 L28.5714286,14.2857143 L39.0625,14.2857143 C38.8764881,13.7462798 38.671875,13.3649554 38.4486607,13.1417411 L29.7154018,4.40848214 C29.4921875,4.18526786 29.1108631,3.98065476 28.5714286,3.79464286 Z M39.2857143,46.4285714 L39.2857143,17.8571429 L27.6785714,17.8571429 C26.9345238,17.8571429 26.3020833,17.5967262 25.78125,17.0758929 C25.2604167,16.5550595 25,15.922619 25,15.1785714 L25,3.57142857 L3.57142857,3.57142857 L3.57142857,46.4285714 L39.2857143,46.4285714 Z M10.7142857,22.3214286 C10.7142857,22.0610119 10.7979911,21.8470982 10.9654018,21.6796875 C11.1328125,21.5122768 11.3467262,21.4285714 11.6071429,21.4285714 L31.25,21.4285714 C31.5104167,21.4285714 31.7243304,21.5122768 31.8917411,21.6796875 C32.0591518,21.8470982 32.1428571,22.0610119 32.1428571,22.3214286 L32.1428571,24.1071429 C32.1428571,24.3675595 32.0591518,24.5814732 31.8917411,24.7488839 C31.7243304,24.9162946 31.5104167,25 31.25,25 L11.6071429,25 C11.3467262,25 11.1328125,24.9162946 10.9654018,24.7488839 C10.7979911,24.5814732 10.7142857,24.3675595 10.7142857,24.1071429 L10.7142857,22.3214286 Z M31.25,28.5714286 C31.5104167,28.5714286 31.7243304,28.6551339 31.8917411,28.8225446 C32.0591518,28.9899554 32.1428571,29.203869 32.1428571,29.4642857 L32.1428571,31.25 C32.1428571,31.5104167 32.0591518,31.7243304 31.8917411,31.8917411 C31.7243304,32.0591518 31.5104167,32.1428571 31.25,32.1428571 L11.6071429,32.1428571 C11.3467262,32.1428571 11.1328125,32.0591518 10.9654018,31.8917411 C10.7979911,31.7243304 10.7142857,31.5104167 10.7142857,31.25 L10.7142857,29.4642857 C10.7142857,29.203869 10.7979911,28.9899554 10.9654018,28.8225446 C11.1328125,28.6551339 11.3467262,28.5714286 11.6071429,28.5714286 L31.25,28.5714286 Z M31.25,35.7142857 C31.5104167,35.7142857 31.7243304,35.7979911 31.8917411,35.9654018 C32.0591518,36.1328125 32.1428571,36.3467262 32.1428571,36.6071429 L32.1428571,38.3928571 C32.1428571,38.6532738 32.0591518,38.8671875 31.8917411,39.0345982 C31.7243304,39.2020089 31.5104167,39.2857143 31.25,39.2857143 L11.6071429,39.2857143 C11.3467262,39.2857143 11.1328125,39.2020089 10.9654018,39.0345982 C10.7979911,38.8671875 10.7142857,38.6532738 10.7142857,38.3928571 L10.7142857,36.6071429 C10.7142857,36.3467262 10.7979911,36.1328125 10.9654018,35.9654018 C11.1328125,35.7979911 11.3467262,35.7142857 11.6071429,35.7142857 L31.25,35.7142857 Z"
|
||||
id="Shape"
|
||||
fill="#A5D5FF"
|
||||
fillRule="nonzero"
|
||||
/>
|
||||
</g>
|
||||
<g id="file-text-o" transform="translate(0.000000, 17.142857)">
|
||||
<rect
|
||||
id="Rectangle"
|
||||
fill="#E4F0FC"
|
||||
x="1.71428571"
|
||||
y="3.42857143"
|
||||
width="30.8571429"
|
||||
height="44.5714286"
|
||||
/>
|
||||
<rect
|
||||
id="Rectangle"
|
||||
fill="#E4F0FC"
|
||||
x="31.5714286"
|
||||
y="16.2857143"
|
||||
width="8.57142857"
|
||||
height="31.7142857"
|
||||
/>
|
||||
<polygon
|
||||
id="Path-2"
|
||||
fill="#E4F0FC"
|
||||
points="29.5714286 3.42857143 41.1428571 15.4285714 29.5714286 16.2857143 27.2444196 15.4285714 27.2444196 3.42857143"
|
||||
/>
|
||||
<path
|
||||
d="M40.9598214,10.6026786 C41.4806548,11.1235119 41.9270833,11.8303571 42.2991071,12.7232143 C42.671131,13.6160714 42.8571429,14.4345238 42.8571429,15.1785714 L42.8571429,47.3214286 C42.8571429,48.0654762 42.5967262,48.6979167 42.0758929,49.21875 C41.5550595,49.7395833 40.922619,50 40.1785714,50 L2.67857143,50 C1.93452381,50 1.30208333,49.7395833 0.78125,49.21875 C0.260416667,48.6979167 0,48.0654762 0,47.3214286 L0,2.67857143 C0,1.93452381 0.260416667,1.30208333 0.78125,0.78125 C1.30208333,0.260416667 1.93452381,0 2.67857143,0 L27.6785714,0 C28.422619,0 29.2410714,0.186011905 30.1339286,0.558035714 C31.0267857,0.930059524 31.733631,1.3764881 32.2544643,1.89732143 L40.9598214,10.6026786 Z M28.5714286,3.79464286 L28.5714286,14.2857143 L39.0625,14.2857143 C38.8764881,13.7462798 38.671875,13.3649554 38.4486607,13.1417411 L29.7154018,4.40848214 C29.4921875,4.18526786 29.1108631,3.98065476 28.5714286,3.79464286 Z M39.2857143,46.4285714 L39.2857143,17.8571429 L27.6785714,17.8571429 C26.9345238,17.8571429 26.3020833,17.5967262 25.78125,17.0758929 C25.2604167,16.5550595 25,15.922619 25,15.1785714 L25,3.57142857 L3.57142857,3.57142857 L3.57142857,46.4285714 L39.2857143,46.4285714 Z M10.7142857,22.3214286 C10.7142857,22.0610119 10.7979911,21.8470982 10.9654018,21.6796875 C11.1328125,21.5122768 11.3467262,21.4285714 11.6071429,21.4285714 L31.25,21.4285714 C31.5104167,21.4285714 31.7243304,21.5122768 31.8917411,21.6796875 C32.0591518,21.8470982 32.1428571,22.0610119 32.1428571,22.3214286 L32.1428571,24.1071429 C32.1428571,24.3675595 32.0591518,24.5814732 31.8917411,24.7488839 C31.7243304,24.9162946 31.5104167,25 31.25,25 L11.6071429,25 C11.3467262,25 11.1328125,24.9162946 10.9654018,24.7488839 C10.7979911,24.5814732 10.7142857,24.3675595 10.7142857,24.1071429 L10.7142857,22.3214286 Z M31.25,28.5714286 C31.5104167,28.5714286 31.7243304,28.6551339 31.8917411,28.8225446 C32.0591518,28.9899554 32.1428571,29.203869 32.1428571,29.4642857 L32.1428571,31.25 C32.1428571,31.5104167 32.0591518,31.7243304 31.8917411,31.8917411 C31.7243304,32.0591518 31.5104167,32.1428571 31.25,32.1428571 L11.6071429,32.1428571 C11.3467262,32.1428571 11.1328125,32.0591518 10.9654018,31.8917411 C10.7979911,31.7243304 10.7142857,31.5104167 10.7142857,31.25 L10.7142857,29.4642857 C10.7142857,29.203869 10.7979911,28.9899554 10.9654018,28.8225446 C11.1328125,28.6551339 11.3467262,28.5714286 11.6071429,28.5714286 L31.25,28.5714286 Z M31.25,35.7142857 C31.5104167,35.7142857 31.7243304,35.7979911 31.8917411,35.9654018 C32.0591518,36.1328125 32.1428571,36.3467262 32.1428571,36.6071429 L32.1428571,38.3928571 C32.1428571,38.6532738 32.0591518,38.8671875 31.8917411,39.0345982 C31.7243304,39.2020089 31.5104167,39.2857143 31.25,39.2857143 L11.6071429,39.2857143 C11.3467262,39.2857143 11.1328125,39.2020089 10.9654018,39.0345982 C10.7979911,38.8671875 10.7142857,38.6532738 10.7142857,38.3928571 L10.7142857,36.6071429 C10.7142857,36.3467262 10.7979911,36.1328125 10.9654018,35.9654018 C11.1328125,35.7979911 11.3467262,35.7142857 11.6071429,35.7142857 L31.25,35.7142857 Z"
|
||||
id="Shape"
|
||||
fill="#A5D5FF"
|
||||
fillRule="nonzero"
|
||||
/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
);
|
||||
|
||||
export default CTSelected;
|
||||
@ -0,0 +1,136 @@
|
||||
/* eslint-disable */
|
||||
import React from 'react';
|
||||
|
||||
const CTUnSelected = props => (
|
||||
<svg width="79px" height="86px" viewBox="0 0 79 86" {...props}>
|
||||
<defs>
|
||||
<filter
|
||||
x="-1.7%"
|
||||
y="-2.3%"
|
||||
width="103.5%"
|
||||
height="104.7%"
|
||||
filterUnits="objectBoundingBox"
|
||||
id="filter-1"
|
||||
>
|
||||
<feOffset dx="0" dy="2" in="SourceAlpha" result="shadowOffsetOuter1" />
|
||||
<feGaussianBlur stdDeviation="2" in="shadowOffsetOuter1" result="shadowBlurOuter1" />
|
||||
<feColorMatrix
|
||||
values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.05 0"
|
||||
type="matrix"
|
||||
in="shadowBlurOuter1"
|
||||
result="shadowMatrixOuter1"
|
||||
/>
|
||||
<feMerge>
|
||||
<feMergeNode in="shadowMatrixOuter1" />
|
||||
<feMergeNode in="SourceGraphic" />
|
||||
</feMerge>
|
||||
</filter>
|
||||
</defs>
|
||||
<g id="Prototype---Single-types" stroke="none" strokeWidth="1" fill="none" fillRule="evenodd">
|
||||
<g
|
||||
id="Plugins-/-Types-Builder-/-Single-page-settings"
|
||||
transform="translate(-396.000000, -443.000000)"
|
||||
>
|
||||
<g
|
||||
id="Modal---Edit-Single-Type"
|
||||
filter="url(#filter-1)"
|
||||
transform="translate(323.000000, 145.000000)"
|
||||
>
|
||||
<g id="Repeatable-content-type" transform="translate(31.000000, 269.000000)">
|
||||
<g id="Icon" transform="translate(51.000000, 38.000000)">
|
||||
<g id="file-text-o" transform="translate(17.142857, 0.000000)">
|
||||
<rect
|
||||
id="Rectangle"
|
||||
fill="#FAFAFB"
|
||||
x="1.71428571"
|
||||
y="3.42857143"
|
||||
width="30.8571429"
|
||||
height="44.5714286"
|
||||
/>
|
||||
<rect
|
||||
id="Rectangle"
|
||||
fill="#FAFAFB"
|
||||
x="32.5714286"
|
||||
y="16.2857143"
|
||||
width="8.57142857"
|
||||
height="31.7142857"
|
||||
/>
|
||||
<polygon
|
||||
id="Path-2"
|
||||
fill="#FAFAFB"
|
||||
points="29.5714286 3.42857143 41.1428571 15.4285714 29.5714286 16.2857143 27.2444196 15.4285714 27.2444196 3.42857143"
|
||||
/>
|
||||
<path
|
||||
d="M40.9598214,10.6026786 C41.4806548,11.1235119 41.9270833,11.8303571 42.2991071,12.7232143 C42.671131,13.6160714 42.8571429,14.4345238 42.8571429,15.1785714 L42.8571429,47.3214286 C42.8571429,48.0654762 42.5967262,48.6979167 42.0758929,49.21875 C41.5550595,49.7395833 40.922619,50 40.1785714,50 L2.67857143,50 C1.93452381,50 1.30208333,49.7395833 0.78125,49.21875 C0.260416667,48.6979167 0,48.0654762 0,47.3214286 L0,2.67857143 C0,1.93452381 0.260416667,1.30208333 0.78125,0.78125 C1.30208333,0.260416667 1.93452381,0 2.67857143,0 L27.6785714,0 C28.422619,0 29.2410714,0.186011905 30.1339286,0.558035714 C31.0267857,0.930059524 31.733631,1.3764881 32.2544643,1.89732143 L40.9598214,10.6026786 Z M28.5714286,3.79464286 L28.5714286,14.2857143 L39.0625,14.2857143 C38.8764881,13.7462798 38.671875,13.3649554 38.4486607,13.1417411 L29.7154018,4.40848214 C29.4921875,4.18526786 29.1108631,3.98065476 28.5714286,3.79464286 Z M39.2857143,46.4285714 L39.2857143,17.8571429 L27.6785714,17.8571429 C26.9345238,17.8571429 26.3020833,17.5967262 25.78125,17.0758929 C25.2604167,16.5550595 25,15.922619 25,15.1785714 L25,3.57142857 L3.57142857,3.57142857 L3.57142857,46.4285714 L39.2857143,46.4285714 Z M10.7142857,22.3214286 C10.7142857,22.0610119 10.7979911,21.8470982 10.9654018,21.6796875 C11.1328125,21.5122768 11.3467262,21.4285714 11.6071429,21.4285714 L31.25,21.4285714 C31.5104167,21.4285714 31.7243304,21.5122768 31.8917411,21.6796875 C32.0591518,21.8470982 32.1428571,22.0610119 32.1428571,22.3214286 L32.1428571,24.1071429 C32.1428571,24.3675595 32.0591518,24.5814732 31.8917411,24.7488839 C31.7243304,24.9162946 31.5104167,25 31.25,25 L11.6071429,25 C11.3467262,25 11.1328125,24.9162946 10.9654018,24.7488839 C10.7979911,24.5814732 10.7142857,24.3675595 10.7142857,24.1071429 L10.7142857,22.3214286 Z M31.25,28.5714286 C31.5104167,28.5714286 31.7243304,28.6551339 31.8917411,28.8225446 C32.0591518,28.9899554 32.1428571,29.203869 32.1428571,29.4642857 L32.1428571,31.25 C32.1428571,31.5104167 32.0591518,31.7243304 31.8917411,31.8917411 C31.7243304,32.0591518 31.5104167,32.1428571 31.25,32.1428571 L11.6071429,32.1428571 C11.3467262,32.1428571 11.1328125,32.0591518 10.9654018,31.8917411 C10.7979911,31.7243304 10.7142857,31.5104167 10.7142857,31.25 L10.7142857,29.4642857 C10.7142857,29.203869 10.7979911,28.9899554 10.9654018,28.8225446 C11.1328125,28.6551339 11.3467262,28.5714286 11.6071429,28.5714286 L31.25,28.5714286 Z M31.25,35.7142857 C31.5104167,35.7142857 31.7243304,35.7979911 31.8917411,35.9654018 C32.0591518,36.1328125 32.1428571,36.3467262 32.1428571,36.6071429 L32.1428571,38.3928571 C32.1428571,38.6532738 32.0591518,38.8671875 31.8917411,39.0345982 C31.7243304,39.2020089 31.5104167,39.2857143 31.25,39.2857143 L11.6071429,39.2857143 C11.3467262,39.2857143 11.1328125,39.2020089 10.9654018,39.0345982 C10.7979911,38.8671875 10.7142857,38.6532738 10.7142857,38.3928571 L10.7142857,36.6071429 C10.7142857,36.3467262 10.7979911,36.1328125 10.9654018,35.9654018 C11.1328125,35.7979911 11.3467262,35.7142857 11.6071429,35.7142857 L31.25,35.7142857 Z"
|
||||
id="Shape"
|
||||
fill="#EEEEEE"
|
||||
fillRule="nonzero"
|
||||
/>
|
||||
</g>
|
||||
<g id="file-text-o" transform="translate(8.571429, 8.571429)">
|
||||
<rect
|
||||
id="Rectangle"
|
||||
fill="#FAFAFB"
|
||||
x="1.71428571"
|
||||
y="3.42857143"
|
||||
width="30.8571429"
|
||||
height="44.5714286"
|
||||
/>
|
||||
<rect
|
||||
id="Rectangle"
|
||||
fill="#FAFAFB"
|
||||
x="32.5714286"
|
||||
y="16.2857143"
|
||||
width="8.57142857"
|
||||
height="31.7142857"
|
||||
/>
|
||||
<polygon
|
||||
id="Path-2"
|
||||
fill="#FAFAFB"
|
||||
points="29.5714286 3.42857143 41.1428571 15.4285714 29.5714286 16.2857143 27.2444196 15.4285714 27.2444196 3.42857143"
|
||||
/>
|
||||
<path
|
||||
d="M40.9598214,10.6026786 C41.4806548,11.1235119 41.9270833,11.8303571 42.2991071,12.7232143 C42.671131,13.6160714 42.8571429,14.4345238 42.8571429,15.1785714 L42.8571429,47.3214286 C42.8571429,48.0654762 42.5967262,48.6979167 42.0758929,49.21875 C41.5550595,49.7395833 40.922619,50 40.1785714,50 L2.67857143,50 C1.93452381,50 1.30208333,49.7395833 0.78125,49.21875 C0.260416667,48.6979167 0,48.0654762 0,47.3214286 L0,2.67857143 C0,1.93452381 0.260416667,1.30208333 0.78125,0.78125 C1.30208333,0.260416667 1.93452381,0 2.67857143,0 L27.6785714,0 C28.422619,0 29.2410714,0.186011905 30.1339286,0.558035714 C31.0267857,0.930059524 31.733631,1.3764881 32.2544643,1.89732143 L40.9598214,10.6026786 Z M28.5714286,3.79464286 L28.5714286,14.2857143 L39.0625,14.2857143 C38.8764881,13.7462798 38.671875,13.3649554 38.4486607,13.1417411 L29.7154018,4.40848214 C29.4921875,4.18526786 29.1108631,3.98065476 28.5714286,3.79464286 Z M39.2857143,46.4285714 L39.2857143,17.8571429 L27.6785714,17.8571429 C26.9345238,17.8571429 26.3020833,17.5967262 25.78125,17.0758929 C25.2604167,16.5550595 25,15.922619 25,15.1785714 L25,3.57142857 L3.57142857,3.57142857 L3.57142857,46.4285714 L39.2857143,46.4285714 Z M10.7142857,22.3214286 C10.7142857,22.0610119 10.7979911,21.8470982 10.9654018,21.6796875 C11.1328125,21.5122768 11.3467262,21.4285714 11.6071429,21.4285714 L31.25,21.4285714 C31.5104167,21.4285714 31.7243304,21.5122768 31.8917411,21.6796875 C32.0591518,21.8470982 32.1428571,22.0610119 32.1428571,22.3214286 L32.1428571,24.1071429 C32.1428571,24.3675595 32.0591518,24.5814732 31.8917411,24.7488839 C31.7243304,24.9162946 31.5104167,25 31.25,25 L11.6071429,25 C11.3467262,25 11.1328125,24.9162946 10.9654018,24.7488839 C10.7979911,24.5814732 10.7142857,24.3675595 10.7142857,24.1071429 L10.7142857,22.3214286 Z M31.25,28.5714286 C31.5104167,28.5714286 31.7243304,28.6551339 31.8917411,28.8225446 C32.0591518,28.9899554 32.1428571,29.203869 32.1428571,29.4642857 L32.1428571,31.25 C32.1428571,31.5104167 32.0591518,31.7243304 31.8917411,31.8917411 C31.7243304,32.0591518 31.5104167,32.1428571 31.25,32.1428571 L11.6071429,32.1428571 C11.3467262,32.1428571 11.1328125,32.0591518 10.9654018,31.8917411 C10.7979911,31.7243304 10.7142857,31.5104167 10.7142857,31.25 L10.7142857,29.4642857 C10.7142857,29.203869 10.7979911,28.9899554 10.9654018,28.8225446 C11.1328125,28.6551339 11.3467262,28.5714286 11.6071429,28.5714286 L31.25,28.5714286 Z M31.25,35.7142857 C31.5104167,35.7142857 31.7243304,35.7979911 31.8917411,35.9654018 C32.0591518,36.1328125 32.1428571,36.3467262 32.1428571,36.6071429 L32.1428571,38.3928571 C32.1428571,38.6532738 32.0591518,38.8671875 31.8917411,39.0345982 C31.7243304,39.2020089 31.5104167,39.2857143 31.25,39.2857143 L11.6071429,39.2857143 C11.3467262,39.2857143 11.1328125,39.2020089 10.9654018,39.0345982 C10.7979911,38.8671875 10.7142857,38.6532738 10.7142857,38.3928571 L10.7142857,36.6071429 C10.7142857,36.3467262 10.7979911,36.1328125 10.9654018,35.9654018 C11.1328125,35.7979911 11.3467262,35.7142857 11.6071429,35.7142857 L31.25,35.7142857 Z"
|
||||
id="Shape"
|
||||
fill="#EEEEEE"
|
||||
fillRule="nonzero"
|
||||
/>
|
||||
</g>
|
||||
<g id="file-text-o" transform="translate(0.000000, 17.142857)">
|
||||
<rect
|
||||
id="Rectangle"
|
||||
fill="#FAFAFB"
|
||||
x="1.71428571"
|
||||
y="3.42857143"
|
||||
width="30.8571429"
|
||||
height="44.5714286"
|
||||
/>
|
||||
<rect
|
||||
id="Rectangle"
|
||||
fill="#FAFAFB"
|
||||
x="32.5714286"
|
||||
y="16.2857143"
|
||||
width="8.57142857"
|
||||
height="31.7142857"
|
||||
/>
|
||||
<polygon
|
||||
id="Path-2"
|
||||
fill="#FAFAFB"
|
||||
points="29.5714286 3.42857143 41.1428571 15.4285714 29.5714286 16.2857143 27.2444196 15.4285714 27.2444196 3.42857143"
|
||||
/>
|
||||
<path
|
||||
d="M40.9598214,10.6026786 C41.4806548,11.1235119 41.9270833,11.8303571 42.2991071,12.7232143 C42.671131,13.6160714 42.8571429,14.4345238 42.8571429,15.1785714 L42.8571429,47.3214286 C42.8571429,48.0654762 42.5967262,48.6979167 42.0758929,49.21875 C41.5550595,49.7395833 40.922619,50 40.1785714,50 L2.67857143,50 C1.93452381,50 1.30208333,49.7395833 0.78125,49.21875 C0.260416667,48.6979167 0,48.0654762 0,47.3214286 L0,2.67857143 C0,1.93452381 0.260416667,1.30208333 0.78125,0.78125 C1.30208333,0.260416667 1.93452381,0 2.67857143,0 L27.6785714,0 C28.422619,0 29.2410714,0.186011905 30.1339286,0.558035714 C31.0267857,0.930059524 31.733631,1.3764881 32.2544643,1.89732143 L40.9598214,10.6026786 Z M28.5714286,3.79464286 L28.5714286,14.2857143 L39.0625,14.2857143 C38.8764881,13.7462798 38.671875,13.3649554 38.4486607,13.1417411 L29.7154018,4.40848214 C29.4921875,4.18526786 29.1108631,3.98065476 28.5714286,3.79464286 Z M39.2857143,46.4285714 L39.2857143,17.8571429 L27.6785714,17.8571429 C26.9345238,17.8571429 26.3020833,17.5967262 25.78125,17.0758929 C25.2604167,16.5550595 25,15.922619 25,15.1785714 L25,3.57142857 L3.57142857,3.57142857 L3.57142857,46.4285714 L39.2857143,46.4285714 Z M10.7142857,22.3214286 C10.7142857,22.0610119 10.7979911,21.8470982 10.9654018,21.6796875 C11.1328125,21.5122768 11.3467262,21.4285714 11.6071429,21.4285714 L31.25,21.4285714 C31.5104167,21.4285714 31.7243304,21.5122768 31.8917411,21.6796875 C32.0591518,21.8470982 32.1428571,22.0610119 32.1428571,22.3214286 L32.1428571,24.1071429 C32.1428571,24.3675595 32.0591518,24.5814732 31.8917411,24.7488839 C31.7243304,24.9162946 31.5104167,25 31.25,25 L11.6071429,25 C11.3467262,25 11.1328125,24.9162946 10.9654018,24.7488839 C10.7979911,24.5814732 10.7142857,24.3675595 10.7142857,24.1071429 L10.7142857,22.3214286 Z M31.25,28.5714286 C31.5104167,28.5714286 31.7243304,28.6551339 31.8917411,28.8225446 C32.0591518,28.9899554 32.1428571,29.203869 32.1428571,29.4642857 L32.1428571,31.25 C32.1428571,31.5104167 32.0591518,31.7243304 31.8917411,31.8917411 C31.7243304,32.0591518 31.5104167,32.1428571 31.25,32.1428571 L11.6071429,32.1428571 C11.3467262,32.1428571 11.1328125,32.0591518 10.9654018,31.8917411 C10.7979911,31.7243304 10.7142857,31.5104167 10.7142857,31.25 L10.7142857,29.4642857 C10.7142857,29.203869 10.7979911,28.9899554 10.9654018,28.8225446 C11.1328125,28.6551339 11.3467262,28.5714286 11.6071429,28.5714286 L31.25,28.5714286 Z M31.25,35.7142857 C31.5104167,35.7142857 31.7243304,35.7979911 31.8917411,35.9654018 C32.0591518,36.1328125 32.1428571,36.3467262 32.1428571,36.6071429 L32.1428571,38.3928571 C32.1428571,38.6532738 32.0591518,38.8671875 31.8917411,39.0345982 C31.7243304,39.2020089 31.5104167,39.2857143 31.25,39.2857143 L11.6071429,39.2857143 C11.3467262,39.2857143 11.1328125,39.2020089 10.9654018,39.0345982 C10.7979911,38.8671875 10.7142857,38.6532738 10.7142857,38.3928571 L10.7142857,36.6071429 C10.7142857,36.3467262 10.7979911,36.1328125 10.9654018,35.9654018 C11.1328125,35.7979911 11.3467262,35.7142857 11.6071429,35.7142857 L31.25,35.7142857 Z"
|
||||
id="Shape"
|
||||
fill="#EEEEEE"
|
||||
fillRule="nonzero"
|
||||
/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
);
|
||||
|
||||
export default CTUnSelected;
|
||||
@ -0,0 +1,80 @@
|
||||
/* eslint-disable */
|
||||
import React from 'react';
|
||||
|
||||
const STSelected = props => (
|
||||
<svg width="61px" height="68px" viewBox="0 0 61 68" {...props}>
|
||||
<defs>
|
||||
<filter
|
||||
x="-1.7%"
|
||||
y="-2.3%"
|
||||
width="103.5%"
|
||||
height="104.7%"
|
||||
filterUnits="objectBoundingBox"
|
||||
id="filter-1"
|
||||
>
|
||||
<feOffset dx="0" dy="2" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
|
||||
<feGaussianBlur
|
||||
stdDeviation="2"
|
||||
in="shadowOffsetOuter1"
|
||||
result="shadowBlurOuter1"
|
||||
></feGaussianBlur>
|
||||
<feColorMatrix
|
||||
values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.05 0"
|
||||
type="matrix"
|
||||
in="shadowBlurOuter1"
|
||||
result="shadowMatrixOuter1"
|
||||
></feColorMatrix>
|
||||
<feMerge>
|
||||
<feMergeNode in="shadowMatrixOuter1"></feMergeNode>
|
||||
<feMergeNode in="SourceGraphic"></feMergeNode>
|
||||
</feMerge>
|
||||
</filter>
|
||||
</defs>
|
||||
<g id="Prototype---Single-types" stroke="none" strokeWidth="1" fill="none" fillRule="evenodd">
|
||||
<g
|
||||
id="Plugins-/-Types-Builder-/-Single-page-settings"
|
||||
transform="translate(-849.000000, -452.000000)"
|
||||
>
|
||||
<g
|
||||
id="Modal---Edit-Single-Type"
|
||||
filter="url(#filter-1)"
|
||||
transform="translate(323.000000, 145.000000)"
|
||||
>
|
||||
<g id="Single-content-type" transform="translate(476.000000, 269.000000)">
|
||||
<g id="file-text-o" transform="translate(59.000000, 47.000000)">
|
||||
<rect
|
||||
id="Rectangle"
|
||||
fill="#E4F0FC"
|
||||
x="1.69491525"
|
||||
y="3.38983051"
|
||||
width="30.5084746"
|
||||
height="44.0677966"
|
||||
></rect>
|
||||
<rect
|
||||
id="Rectangle"
|
||||
fill="#E4F0FC"
|
||||
x="31.2033898"
|
||||
y="16.1016949"
|
||||
width="8.47457627"
|
||||
height="31.3559322"
|
||||
></rect>
|
||||
<polygon
|
||||
id="Path-2"
|
||||
fill="#E4F0FC"
|
||||
points="29.2372881 3.38983051 40.6779661 15.2542373 29.2372881 16.1016949 26.9365731 15.2542373 26.9365731 3.38983051"
|
||||
></polygon>
|
||||
<path
|
||||
d="M40.4969986,10.4828743 C41.0119468,10.9978225 41.453331,11.6966808 41.8211511,12.5794492 C42.1889713,13.4622175 42.3728814,14.2714218 42.3728814,15.0070621 L42.3728814,46.7867232 C42.3728814,47.5223635 42.1154073,48.1476577 41.600459,48.6626059 C41.0855108,49.1775541 40.4602166,49.4350282 39.7245763,49.4350282 L2.64830508,49.4350282 C1.91266478,49.4350282 1.28737053,49.1775541 0.772422316,48.6626059 C0.257474105,48.1476577 0,47.5223635 0,46.7867232 L0,2.64830508 C0,1.91266478 0.257474105,1.28737053 0.772422316,0.772422316 C1.28737053,0.257474105 1.91266478,0 2.64830508,0 L27.3658192,0 C28.1014595,0 28.9106638,0.183910075 29.7934322,0.551730226 C30.6762006,0.919550377 31.3750589,1.36093456 31.8900071,1.87588277 L40.4969986,10.4828743 Z M28.2485876,3.75176554 L28.2485876,14.1242938 L38.6211158,14.1242938 C38.4372057,13.5909546 38.2349047,13.2139389 38.0142126,12.9932468 L29.3796345,4.35866879 C29.1589424,4.13797669 28.7819268,3.93567561 28.2485876,3.75176554 Z M38.8418079,45.9039548 L38.8418079,17.6553672 L27.3658192,17.6553672 C26.6301789,17.6553672 26.0048847,17.3978931 25.4899364,16.8829449 C24.9749882,16.3679967 24.7175141,15.7427024 24.7175141,15.0070621 L24.7175141,3.53107345 L3.53107345,3.53107345 L3.53107345,45.9039548 L38.8418079,45.9039548 Z M10.5932203,22.069209 C10.5932203,21.8117349 10.6759799,21.6002383 10.8414989,21.4347193 C11.007018,21.2692002 11.2185146,21.1864407 11.4759887,21.1864407 L30.8968927,21.1864407 C31.1543668,21.1864407 31.3658633,21.2692002 31.5313824,21.4347193 C31.6969015,21.6002383 31.779661,21.8117349 31.779661,22.069209 L31.779661,23.8347458 C31.779661,24.0922199 31.6969015,24.3037165 31.5313824,24.4692355 C31.3658633,24.6347546 31.1543668,24.7175141 30.8968927,24.7175141 L11.4759887,24.7175141 C11.2185146,24.7175141 11.007018,24.6347546 10.8414989,24.4692355 C10.6759799,24.3037165 10.5932203,24.0922199 10.5932203,23.8347458 L10.5932203,22.069209 Z M30.8968927,28.2485876 C31.1543668,28.2485876 31.3658633,28.3313471 31.5313824,28.4968662 C31.6969015,28.6623852 31.779661,28.8738818 31.779661,29.1313559 L31.779661,30.8968927 C31.779661,31.1543668 31.6969015,31.3658633 31.5313824,31.5313824 C31.3658633,31.6969015 31.1543668,31.779661 30.8968927,31.779661 L11.4759887,31.779661 C11.2185146,31.779661 11.007018,31.6969015 10.8414989,31.5313824 C10.6759799,31.3658633 10.5932203,31.1543668 10.5932203,30.8968927 L10.5932203,29.1313559 C10.5932203,28.8738818 10.6759799,28.6623852 10.8414989,28.4968662 C11.007018,28.3313471 11.2185146,28.2485876 11.4759887,28.2485876 L30.8968927,28.2485876 Z M30.8968927,35.3107345 C31.1543668,35.3107345 31.3658633,35.393494 31.5313824,35.5590131 C31.6969015,35.7245321 31.779661,35.9360287 31.779661,36.1935028 L31.779661,37.9590395 C31.779661,38.2165137 31.6969015,38.4280102 31.5313824,38.5935293 C31.3658633,38.7590484 31.1543668,38.8418079 30.8968927,38.8418079 L11.4759887,38.8418079 C11.2185146,38.8418079 11.007018,38.7590484 10.8414989,38.5935293 C10.6759799,38.4280102 10.5932203,38.2165137 10.5932203,37.9590395 L10.5932203,36.1935028 C10.5932203,35.9360287 10.6759799,35.7245321 10.8414989,35.5590131 C11.007018,35.393494 11.2185146,35.3107345 11.4759887,35.3107345 L30.8968927,35.3107345 Z"
|
||||
id="Shape"
|
||||
fill="#A5D5FF"
|
||||
fillRule="nonzero"
|
||||
></path>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
);
|
||||
|
||||
export default STSelected;
|
||||
@ -0,0 +1,76 @@
|
||||
/* eslint-disable */
|
||||
import React from 'react';
|
||||
|
||||
const STUnselected = props => (
|
||||
<svg width="61px" height="68px" viewBox="0 0 61 68" {...props}>
|
||||
<defs>
|
||||
<filter
|
||||
x="-1.7%"
|
||||
y="-2.3%"
|
||||
width="103.5%"
|
||||
height="104.7%"
|
||||
filterUnits="objectBoundingBox"
|
||||
id="filter-1"
|
||||
>
|
||||
<feOffset dx="0" dy="2" in="SourceAlpha" result="shadowOffsetOuter1" />
|
||||
<feGaussianBlur stdDeviation="2" in="shadowOffsetOuter1" result="shadowBlurOuter1" />
|
||||
<feColorMatrix
|
||||
values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.05 0"
|
||||
type="matrix"
|
||||
in="shadowBlurOuter1"
|
||||
result="shadowMatrixOuter1"
|
||||
/>
|
||||
<feMerge>
|
||||
<feMergeNode in="shadowMatrixOuter1" />
|
||||
<feMergeNode in="SourceGraphic" />
|
||||
</feMerge>
|
||||
</filter>
|
||||
</defs>
|
||||
<g id="Prototype---Single-types" stroke="none" strokeWidth="1" fill="none" fillRule="evenodd">
|
||||
<g
|
||||
id="Plugins-/-Types-Builder-/-Single-page-settings"
|
||||
transform="translate(-849.000000, -452.000000)"
|
||||
>
|
||||
<g
|
||||
id="Modal---Edit-Single-Type"
|
||||
filter="url(#filter-1)"
|
||||
transform="translate(323.000000, 145.000000)"
|
||||
>
|
||||
<g id="Single-content-type" transform="translate(476.000000, 269.000000)">
|
||||
<g id="file-text-o" transform="translate(59.000000, 47.000000)">
|
||||
<rect
|
||||
id="Rectangle"
|
||||
fill="#FAFAFB"
|
||||
x="1.69491525"
|
||||
y="3.38983051"
|
||||
width="30.5084746"
|
||||
height="44.0677966"
|
||||
/>
|
||||
<rect
|
||||
id="Rectangle"
|
||||
fill="#FAFAFB"
|
||||
x="31.2033898"
|
||||
y="16.1016949"
|
||||
width="8.47457627"
|
||||
height="31.3559322"
|
||||
/>
|
||||
<polygon
|
||||
id="Path-2"
|
||||
fill="#FAFAFB"
|
||||
points="29.2372881 3.38983051 40.6779661 15.2542373 29.2372881 16.1016949 26.9365731 15.2542373 26.9365731 3.38983051"
|
||||
/>
|
||||
<path
|
||||
d="M40.4969986,10.4828743 C41.0119468,10.9978225 41.453331,11.6966808 41.8211511,12.5794492 C42.1889713,13.4622175 42.3728814,14.2714218 42.3728814,15.0070621 L42.3728814,46.7867232 C42.3728814,47.5223635 42.1154073,48.1476577 41.600459,48.6626059 C41.0855108,49.1775541 40.4602166,49.4350282 39.7245763,49.4350282 L2.64830508,49.4350282 C1.91266478,49.4350282 1.28737053,49.1775541 0.772422316,48.6626059 C0.257474105,48.1476577 0,47.5223635 0,46.7867232 L0,2.64830508 C0,1.91266478 0.257474105,1.28737053 0.772422316,0.772422316 C1.28737053,0.257474105 1.91266478,0 2.64830508,0 L27.3658192,0 C28.1014595,0 28.9106638,0.183910075 29.7934322,0.551730226 C30.6762006,0.919550377 31.3750589,1.36093456 31.8900071,1.87588277 L40.4969986,10.4828743 Z M28.2485876,3.75176554 L28.2485876,14.1242938 L38.6211158,14.1242938 C38.4372057,13.5909546 38.2349047,13.2139389 38.0142126,12.9932468 L29.3796345,4.35866879 C29.1589424,4.13797669 28.7819268,3.93567561 28.2485876,3.75176554 Z M38.8418079,45.9039548 L38.8418079,17.6553672 L27.3658192,17.6553672 C26.6301789,17.6553672 26.0048847,17.3978931 25.4899364,16.8829449 C24.9749882,16.3679967 24.7175141,15.7427024 24.7175141,15.0070621 L24.7175141,3.53107345 L3.53107345,3.53107345 L3.53107345,45.9039548 L38.8418079,45.9039548 Z M10.5932203,22.069209 C10.5932203,21.8117349 10.6759799,21.6002383 10.8414989,21.4347193 C11.007018,21.2692002 11.2185146,21.1864407 11.4759887,21.1864407 L30.8968927,21.1864407 C31.1543668,21.1864407 31.3658633,21.2692002 31.5313824,21.4347193 C31.6969015,21.6002383 31.779661,21.8117349 31.779661,22.069209 L31.779661,23.8347458 C31.779661,24.0922199 31.6969015,24.3037165 31.5313824,24.4692355 C31.3658633,24.6347546 31.1543668,24.7175141 30.8968927,24.7175141 L11.4759887,24.7175141 C11.2185146,24.7175141 11.007018,24.6347546 10.8414989,24.4692355 C10.6759799,24.3037165 10.5932203,24.0922199 10.5932203,23.8347458 L10.5932203,22.069209 Z M30.8968927,28.2485876 C31.1543668,28.2485876 31.3658633,28.3313471 31.5313824,28.4968662 C31.6969015,28.6623852 31.779661,28.8738818 31.779661,29.1313559 L31.779661,30.8968927 C31.779661,31.1543668 31.6969015,31.3658633 31.5313824,31.5313824 C31.3658633,31.6969015 31.1543668,31.779661 30.8968927,31.779661 L11.4759887,31.779661 C11.2185146,31.779661 11.007018,31.6969015 10.8414989,31.5313824 C10.6759799,31.3658633 10.5932203,31.1543668 10.5932203,30.8968927 L10.5932203,29.1313559 C10.5932203,28.8738818 10.6759799,28.6623852 10.8414989,28.4968662 C11.007018,28.3313471 11.2185146,28.2485876 11.4759887,28.2485876 L30.8968927,28.2485876 Z M30.8968927,35.3107345 C31.1543668,35.3107345 31.3658633,35.393494 31.5313824,35.5590131 C31.6969015,35.7245321 31.779661,35.9360287 31.779661,36.1935028 L31.779661,37.9590395 C31.779661,38.2165137 31.6969015,38.4280102 31.5313824,38.5935293 C31.3658633,38.7590484 31.1543668,38.8418079 30.8968927,38.8418079 L11.4759887,38.8418079 C11.2185146,38.8418079 11.007018,38.7590484 10.8414989,38.5935293 C10.6759799,38.4280102 10.5932203,38.2165137 10.5932203,37.9590395 L10.5932203,36.1935028 C10.5932203,35.9360287 10.6759799,35.7245321 10.8414989,35.5590131 C11.007018,35.393494 11.2185146,35.3107345 11.4759887,35.3107345 L30.8968927,35.3107345 Z"
|
||||
id="Shape"
|
||||
fill="#EEEEEE"
|
||||
fillRule="nonzero"
|
||||
/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
);
|
||||
|
||||
export default STUnselected;
|
||||
@ -1,11 +1,29 @@
|
||||
import React from 'react';
|
||||
import PropTypes from 'prop-types';
|
||||
import { useGlobalContext } from 'strapi-helper-plugin';
|
||||
import { Flex } from '@buffetjs/core';
|
||||
import styled from 'styled-components';
|
||||
import CTIcon from './CT';
|
||||
import STIcon from './ST';
|
||||
import CustomLabel from './Label';
|
||||
import Enumeration from './Enumeration';
|
||||
import EnumerationWrapper from './EnumerationWrapper';
|
||||
import Wrapper from './Wrapper';
|
||||
|
||||
/**
|
||||
* TODO: Those should not exist, remove with design system
|
||||
*/
|
||||
const CTHackSpan = styled.span`
|
||||
margin-left: -1rem;
|
||||
margin-right: 1rem;
|
||||
margin-top: -1.3rem;
|
||||
`;
|
||||
const STHackSpan = styled.span`
|
||||
margin-left: -1rem;
|
||||
margin-right: 1rem;
|
||||
margin-top: -0.5rem;
|
||||
`;
|
||||
|
||||
const BooleanBox = ({ label, name, onChange, onChangeCallback, options, value }) => {
|
||||
const { formatMessage } = useGlobalContext();
|
||||
|
||||
@ -31,17 +49,37 @@ const BooleanBox = ({ label, name, onChange, onChangeCallback, options, value })
|
||||
value={option.value}
|
||||
/>
|
||||
))}
|
||||
{options.map(option => (
|
||||
<EnumerationWrapper
|
||||
className="option"
|
||||
key={option.value}
|
||||
htmlFor={option.value.toString()}
|
||||
>
|
||||
<span className="option__indicator" />
|
||||
<span className="option__title">{formatMessage({ id: option.headerId })}</span>
|
||||
<p>{formatMessage({ id: option.descriptionId })}</p>
|
||||
</EnumerationWrapper>
|
||||
))}
|
||||
{options.map(option => {
|
||||
const isST = option.value === 'singleType';
|
||||
const isCT = option.value === 'collectionType';
|
||||
|
||||
return (
|
||||
<EnumerationWrapper
|
||||
className="option"
|
||||
key={option.value}
|
||||
htmlFor={option.value.toString()}
|
||||
>
|
||||
<Flex>
|
||||
{isST && (
|
||||
<STHackSpan>
|
||||
<STIcon selected={value === 'singleType'} />
|
||||
</STHackSpan>
|
||||
)}
|
||||
{isCT && (
|
||||
<CTHackSpan>
|
||||
<CTIcon selected={value === 'collectionType'} />
|
||||
</CTHackSpan>
|
||||
)}
|
||||
|
||||
<div>
|
||||
<span className="option__indicator" />
|
||||
<span className="option__title">{formatMessage({ id: option.headerId })}</span>
|
||||
<p>{formatMessage({ id: option.descriptionId })}</p>
|
||||
</div>
|
||||
</Flex>
|
||||
</EnumerationWrapper>
|
||||
);
|
||||
})}
|
||||
</Wrapper>
|
||||
</div>
|
||||
);
|
||||
|
||||
@ -0,0 +1,112 @@
|
||||
import React from 'react';
|
||||
import { render, screen } from '@testing-library/react';
|
||||
import { ThemeProvider } from 'styled-components';
|
||||
import defaultThemes from '../../../../../../strapi-admin/admin/src/themes';
|
||||
import BooleanBox from '..';
|
||||
|
||||
jest.mock('strapi-helper-plugin', () => ({
|
||||
useGlobalContext: () => ({ formatMessage: ({ id }) => id }),
|
||||
}));
|
||||
|
||||
describe('BooleanBox', () => {
|
||||
it('has single type selected by default and verifies the other states', () => {
|
||||
const options = [
|
||||
{
|
||||
headerId: 'menu.section.models.name.singular',
|
||||
descriptionId: 'form.button.collection-type.description',
|
||||
value: 'collectionType',
|
||||
},
|
||||
{
|
||||
headerId: 'menu.section.single-types.name.singular',
|
||||
descriptionId: 'form.button.single-type.description',
|
||||
value: 'singleType',
|
||||
},
|
||||
];
|
||||
|
||||
render(
|
||||
<ThemeProvider theme={defaultThemes}>
|
||||
<BooleanBox
|
||||
label="Hello world"
|
||||
name="box"
|
||||
onChange={() => null}
|
||||
onChangeCallback={() => null}
|
||||
options={options}
|
||||
value="singleType"
|
||||
/>
|
||||
</ThemeProvider>
|
||||
);
|
||||
|
||||
expect(screen.getByTestId('st-selected')).toBeVisible();
|
||||
expect(screen.getByTestId('ct-unselected')).toBeVisible();
|
||||
|
||||
expect(screen.queryByTestId('ct-selected')).toBeFalsy();
|
||||
expect(screen.queryByTestId('st-unselected')).toBeFalsy();
|
||||
});
|
||||
|
||||
it('has collection type selected by default and verifies the other states', () => {
|
||||
const options = [
|
||||
{
|
||||
headerId: 'menu.section.models.name.singular',
|
||||
descriptionId: 'form.button.collection-type.description',
|
||||
value: 'collectionType',
|
||||
},
|
||||
{
|
||||
headerId: 'menu.section.single-types.name.singular',
|
||||
descriptionId: 'form.button.single-type.description',
|
||||
value: 'singleType',
|
||||
},
|
||||
];
|
||||
|
||||
render(
|
||||
<ThemeProvider theme={defaultThemes}>
|
||||
<BooleanBox
|
||||
label="Hello world"
|
||||
name="box"
|
||||
onChange={() => null}
|
||||
onChangeCallback={() => null}
|
||||
options={options}
|
||||
value="collectionType"
|
||||
/>
|
||||
</ThemeProvider>
|
||||
);
|
||||
|
||||
expect(screen.getByTestId('ct-selected')).toBeVisible();
|
||||
expect(screen.getByTestId('st-unselected')).toBeVisible();
|
||||
|
||||
expect(screen.queryByTestId('st-selected')).toBeFalsy();
|
||||
expect(screen.queryByTestId('ct-unselected')).toBeFalsy();
|
||||
});
|
||||
|
||||
it('does not show the ST and CT icons for other types', () => {
|
||||
const options = [
|
||||
{
|
||||
headerId: 'menu.section.models.name.singular',
|
||||
descriptionId: 'form.button.collection-type.description',
|
||||
value: 'text',
|
||||
},
|
||||
{
|
||||
headerId: 'menu.section.single-types.name.singular',
|
||||
descriptionId: 'form.button.single-type.description',
|
||||
value: 'string',
|
||||
},
|
||||
];
|
||||
|
||||
render(
|
||||
<ThemeProvider theme={defaultThemes}>
|
||||
<BooleanBox
|
||||
label="Hello world"
|
||||
name="box"
|
||||
onChange={() => null}
|
||||
onChangeCallback={() => null}
|
||||
options={options}
|
||||
value="collectionType"
|
||||
/>
|
||||
</ThemeProvider>
|
||||
);
|
||||
|
||||
expect(screen.queryByTestId('ct-selected')).toBeFalsy();
|
||||
expect(screen.queryByTestId('st-unselected')).toBeFalsy();
|
||||
expect(screen.queryByTestId('st-selected')).toBeFalsy();
|
||||
expect(screen.queryByTestId('ct-unselected')).toBeFalsy();
|
||||
});
|
||||
});
|
||||
@ -16,6 +16,7 @@
|
||||
"attribute.json.description": "Daten im JSON-Format",
|
||||
"attribute.media": "Medien",
|
||||
"attribute.media.description": "Dateien wie Bilder, Videos, etc",
|
||||
"attribute.null": " ",
|
||||
"attribute.number": "Zahl",
|
||||
"attribute.number.description": "Zahlen (ganzzahlig, Gleitkommazahl, dezimal)",
|
||||
"attribute.password": "Passwort",
|
||||
@ -65,6 +66,9 @@
|
||||
"form.attribute.component.option.single.description": "Nützlich um Felder wie volle Addresse, Hauptinformationen, etc. zu grupppieren",
|
||||
"form.attribute.item.customColumnName": "Eigener Spaltenname",
|
||||
"form.attribute.item.customColumnName.description": "Dies ist nützlich, um Spalten in der Datenbank für Antworten der API umzubenennen",
|
||||
"form.attribute.item.date.type.date": "Datum",
|
||||
"form.attribute.item.date.type.datetime": "Datum und Uhrzeit",
|
||||
"form.attribute.item.date.type.time": "Uhrzeit",
|
||||
"form.attribute.item.defineRelation.fieldName": "Feldname",
|
||||
"form.attribute.item.enumeration.graphql": "Namensüberschreibung für GraphQL",
|
||||
"form.attribute.item.enumeration.graphql.description": "Ermöglicht, den standardmäßig generierten Namen für GraphQL zu überschreiben",
|
||||
@ -180,4 +184,4 @@
|
||||
"relation.oneWay": "hat ein(-e/-en)",
|
||||
"table.attributes.title.plural": "{number} Felder",
|
||||
"table.attributes.title.singular": "{number} Feld"
|
||||
}
|
||||
}
|
||||
@ -5,6 +5,9 @@
|
||||
"containers.HomePage.Block.title": "Versionen",
|
||||
"containers.HomePage.Button.open": "Dokumentation öffnen",
|
||||
"containers.HomePage.Button.update": "Aktualisieren",
|
||||
"containers.HomePage.copied": "Token in der Zwischenablage kopiert",
|
||||
"containers.HomePage.form.jwtToken": "Jwt Token abrufen",
|
||||
"containers.HomePage.form.jwtToken.description": "Kopieren Sie diesen Token und nutzen Sie es unter Swagger, um Anfragen zu stellen",
|
||||
"containers.HomePage.PluginHeader.description": "Einstellungen des Dokumentation-Plugins ändern",
|
||||
"containers.HomePage.PluginHeader.title": "Dokumentation - Einstellungen",
|
||||
"containers.HomePage.PopUpWarning.confirm": "Ich verstehe",
|
||||
@ -16,9 +19,12 @@
|
||||
"containers.HomePage.form.showGeneratedFiles": "Generierte Dateien anzeigen",
|
||||
"containers.HomePage.form.showGeneratedFiles.inputDescription": "Nützlich, wenn Sie die generierte Dokumentation überschreiben möchten. \nDas Plugin wird nach Modell und Plugin geteilte Dateien erzeugen. \nDurch die Aktivierung dieser Option wird es einfacher sein, Ihre Dokumentation anzupassen.",
|
||||
"error.deleteDoc.versionMissing": "Die Version, die Sie zu löschen versuchen, existiert nicht.",
|
||||
|
||||
"error.noVersion": "Eine Version wird benötigt",
|
||||
"error.regenerateDoc": "Ein Fehler ist während dem Neu-Erstellen der Dokumentation aufgetreten.",
|
||||
"error.regenerateDoc.versionMissing": "Die Version, die Sie zu generieren versuchen, existiert nicht",
|
||||
"notification.update.success": "Einstellungen wurden erfolgreich aktualisiert",
|
||||
"notification.delete.success": "Dokument wurde erfolgreich gelöscht",
|
||||
"notification.generate.success": "Dokument wurde erfolgreich generiert",
|
||||
"plugin.name": "Dokumentation"
|
||||
}
|
||||
}
|
||||
@ -36,7 +36,7 @@
|
||||
"redux-immutable": "^4.0.0",
|
||||
"reselect": "^4.0.0",
|
||||
"strapi-helper-plugin": "3.4.6",
|
||||
"swagger-ui-dist": "3.41.1"
|
||||
"swagger-ui-dist": "3.43.0"
|
||||
},
|
||||
"author": {
|
||||
"name": "soupette",
|
||||
|
||||
@ -348,7 +348,7 @@ module.exports = {
|
||||
}
|
||||
|
||||
if (isField) {
|
||||
acc.properties[curr] = { type: this.getType(attribute.type) };
|
||||
acc.properties[curr] = { type: this.getType(attribute.type), enum: attribute.enum };
|
||||
} else {
|
||||
const newGetter = getter.slice();
|
||||
newGetter.splice(newGetter.length - 1, 1, 'associations');
|
||||
@ -359,6 +359,7 @@ module.exports = {
|
||||
switch (relationNature) {
|
||||
case 'manyToMany':
|
||||
case 'oneToMany':
|
||||
case 'manyWay':
|
||||
case 'manyToManyMorph':
|
||||
acc.properties[curr] = {
|
||||
type: 'array',
|
||||
@ -573,6 +574,7 @@ module.exports = {
|
||||
switch (relationNature) {
|
||||
case 'manyToMany':
|
||||
case 'oneToMany':
|
||||
case 'manyWay':
|
||||
case 'manyToManyMorph':
|
||||
acc.properties[current] = {
|
||||
type: 'array',
|
||||
|
||||
7
packages/strapi-plugin-sentry/.editorconfig
Normal file
7
packages/strapi-plugin-sentry/.editorconfig
Normal file
@ -0,0 +1,7 @@
|
||||
root = true
|
||||
|
||||
[*]
|
||||
end_of_line = lf
|
||||
insert_final_newline = false
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
103
packages/strapi-plugin-sentry/.gitattributes
vendored
Normal file
103
packages/strapi-plugin-sentry/.gitattributes
vendored
Normal file
@ -0,0 +1,103 @@
|
||||
# From https://github.com/Danimoth/gitattributes/blob/master/Web.gitattributes
|
||||
|
||||
# Handle line endings automatically for files detected as text
|
||||
# and leave all files detected as binary untouched.
|
||||
* text=auto
|
||||
|
||||
#
|
||||
# The above will handle all files NOT found below
|
||||
#
|
||||
|
||||
#
|
||||
## These files are text and should be normalized (Convert crlf => lf)
|
||||
#
|
||||
|
||||
# source code
|
||||
*.php text
|
||||
*.css text
|
||||
*.sass text
|
||||
*.scss text
|
||||
*.less text
|
||||
*.styl text
|
||||
*.js text eol=lf
|
||||
*.coffee text
|
||||
*.json text
|
||||
*.htm text
|
||||
*.html text
|
||||
*.xml text
|
||||
*.svg text
|
||||
*.txt text
|
||||
*.ini text
|
||||
*.inc text
|
||||
*.pl text
|
||||
*.rb text
|
||||
*.py text
|
||||
*.scm text
|
||||
*.sql text
|
||||
*.sh text
|
||||
*.bat text
|
||||
|
||||
# templates
|
||||
*.ejs text
|
||||
*.hbt text
|
||||
*.jade text
|
||||
*.haml text
|
||||
*.hbs text
|
||||
*.dot text
|
||||
*.tmpl text
|
||||
*.phtml text
|
||||
|
||||
# git config
|
||||
.gitattributes text
|
||||
.gitignore text
|
||||
.gitconfig text
|
||||
|
||||
# code analysis config
|
||||
.jshintrc text
|
||||
.jscsrc text
|
||||
.jshintignore text
|
||||
.csslintrc text
|
||||
|
||||
# misc config
|
||||
*.yaml text
|
||||
*.yml text
|
||||
.editorconfig text
|
||||
|
||||
# build config
|
||||
*.npmignore text
|
||||
*.bowerrc text
|
||||
|
||||
# Heroku
|
||||
Procfile text
|
||||
.slugignore text
|
||||
|
||||
# Documentation
|
||||
*.md text
|
||||
LICENSE text
|
||||
AUTHORS text
|
||||
|
||||
|
||||
#
|
||||
## These files are binary and should be left untouched
|
||||
#
|
||||
|
||||
# (binary is a macro for -text -diff)
|
||||
*.png binary
|
||||
*.jpg binary
|
||||
*.jpeg binary
|
||||
*.gif binary
|
||||
*.ico binary
|
||||
*.mov binary
|
||||
*.mp4 binary
|
||||
*.mp3 binary
|
||||
*.flv binary
|
||||
*.fla binary
|
||||
*.swf binary
|
||||
*.gz binary
|
||||
*.zip binary
|
||||
*.7z binary
|
||||
*.ttf binary
|
||||
*.eot binary
|
||||
*.woff binary
|
||||
*.pyc binary
|
||||
*.pdf binary
|
||||
10
packages/strapi-plugin-sentry/.gitignore
vendored
Normal file
10
packages/strapi-plugin-sentry/.gitignore
vendored
Normal file
@ -0,0 +1,10 @@
|
||||
# Don't check auto-generated stuff into git
|
||||
coverage
|
||||
node_modules
|
||||
stats.json
|
||||
package-lock.json
|
||||
|
||||
# Cruft
|
||||
.DS_Store
|
||||
npm-debug.log
|
||||
.idea
|
||||
10
packages/strapi-plugin-sentry/.npmignore
Normal file
10
packages/strapi-plugin-sentry/.npmignore
Normal file
@ -0,0 +1,10 @@
|
||||
# Don't check auto-generated stuff into git
|
||||
coverage
|
||||
node_modules
|
||||
stats.json
|
||||
package-lock.json
|
||||
|
||||
# Cruft
|
||||
.DS_Store
|
||||
npm-debug.log
|
||||
.idea
|
||||
22
packages/strapi-plugin-sentry/LICENSE
Normal file
22
packages/strapi-plugin-sentry/LICENSE
Normal file
@ -0,0 +1,22 @@
|
||||
Copyright (c) 2015-present Strapi Solutions SAS
|
||||
|
||||
Portions of the Strapi software are licensed as follows:
|
||||
|
||||
* All software that resides under an "ee/" directory (the “EE Software”), if that directory exists, is licensed under the license defined in "ee/LICENSE".
|
||||
|
||||
* All software outside of the above-mentioned directories or restrictions above is available under the "MIT Expat" license as set forth below.
|
||||
|
||||
MIT Expat License
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
116
packages/strapi-plugin-sentry/README.md
Normal file
116
packages/strapi-plugin-sentry/README.md
Normal file
@ -0,0 +1,116 @@
|
||||
# Strapi plugin Sentry
|
||||
|
||||
The official plugin to track Strapi errors with Sentry.
|
||||
|
||||
## Features
|
||||
|
||||
- Initialize a Sentry instance when your Strapi app starts
|
||||
- Send errors encountered in your application's end API to Sentry
|
||||
- Attach useful metadata to Sentry events, to help you with debugging
|
||||
- Expose a global Sentry service
|
||||
|
||||
## Configuration
|
||||
|
||||
| property | type (default) | description |
|
||||
| -------------- | ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `dsn` | string (`null`) | Your Sentry data source name ([see Sentry docs](https://docs.sentry.io/product/sentry-basics/dsn-explainer/)). |
|
||||
| `sendMetadata` | boolean (`true`) | Whether the plugin should attach additional information (like OS, browser, etc.) to the events sent to Sentry. |
|
||||
| `init` | object (`{}`) | A config object that is passed directly to Sentry during the `Sentry.init()`. See all available options [on Sentry's docs](https://docs.sentry.io/platforms/node/configuration/options/) |
|
||||
|
||||
**Example**
|
||||
|
||||
`./config/plugins.js`
|
||||
|
||||
```js
|
||||
module.exports = ({ env }) => ({
|
||||
// ...
|
||||
sentry: {
|
||||
dsn: env('SENTRY_DSN'),
|
||||
sendMetadata: true,
|
||||
},
|
||||
// ...
|
||||
});
|
||||
```
|
||||
|
||||
## Global Sentry service
|
||||
|
||||
You can access a Sentry service throughout your app.
|
||||
|
||||
```js
|
||||
const sentryService = strapi.plugins.sentry.services.sentry;
|
||||
```
|
||||
|
||||
This service exposes the following methods:
|
||||
|
||||
### `sendError(error, configureScope)`
|
||||
|
||||
Use it to manually send errors to Sentry. The `configureScope` is optional, it allows you to customize the error event. Read more about Sentry's scope system [on their docs](https://docs.sentry.io/platforms/node/enriching-events/scopes/#configuring-the-scope).
|
||||
|
||||
**Example**
|
||||
|
||||
```js
|
||||
try {
|
||||
// Your code here
|
||||
} catch (error) {
|
||||
// Either send a simple error
|
||||
strapi.plugins.sentry.services.sentry.sendError(error);
|
||||
|
||||
// Or send an error with a customized Sentry scope
|
||||
strapi.plugins.sentry.services.sentry.sendError(error, (scope, sentryInstance) => {
|
||||
// Customize the scope here
|
||||
scope.setTag('my_custom_tag', 'Tag value');
|
||||
});
|
||||
throw error;
|
||||
}
|
||||
```
|
||||
|
||||
### `getInstance()`
|
||||
|
||||
Use it if you need direct access to the Sentry instance, which should already already be initialized. It's useful if `sendError` doesn't suit your needs.
|
||||
|
||||
**Example**
|
||||
|
||||
```js
|
||||
const sentryInstance = strapi.plugins.sentry.services.sentry.getInstance();
|
||||
```
|
||||
|
||||
## Disabling
|
||||
|
||||
### Disabling only the middleware
|
||||
|
||||
By default, this plugin uses a middleware that logs all your unhandled API errors to Sentry. You can disable this feature by turning off the `sentry` middleware in your app's config.
|
||||
|
||||
**Example**
|
||||
|
||||
`./config/middleware.js`
|
||||
|
||||
```js
|
||||
module.exports = {
|
||||
//...
|
||||
settings: {
|
||||
sentry: {
|
||||
enabled: false,
|
||||
},
|
||||
},
|
||||
};
|
||||
```
|
||||
|
||||
Only the middleware will be disabled. You will still have access to the Sentry service.
|
||||
|
||||
### Disabling the plugin entirely
|
||||
|
||||
You can also completely disable this plugin (both the middleware and the service). If you omit the `dsn` property of your plugin's settings, or if you give it a null value, the Sentry plugin will be ignored. You can use the `env` utility to disable it depending on the environment.
|
||||
|
||||
**Example**
|
||||
|
||||
`./config/plugins.js`
|
||||
|
||||
```js
|
||||
module.exports = ({ env }) => ({
|
||||
// ...
|
||||
sentry: {
|
||||
dsn: env('NODE_ENV') === 'development' ? null : env('SENTRY_DSN'),
|
||||
},
|
||||
// ...
|
||||
});
|
||||
```
|
||||
@ -0,0 +1 @@
|
||||
<svg class="css-15xgryy e10nushx5" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 72 66" width="400" height="367"><path d="M29,2.26a4.67,4.67,0,0,0-8,0L14.42,13.53A32.21,32.21,0,0,1,32.17,40.19H27.55A27.68,27.68,0,0,0,12.09,17.47L6,28a15.92,15.92,0,0,1,9.23,12.17H4.62A.76.76,0,0,1,4,39.06l2.94-5a10.74,10.74,0,0,0-3.36-1.9l-2.91,5a4.54,4.54,0,0,0,1.69,6.24A4.66,4.66,0,0,0,4.62,44H19.15a19.4,19.4,0,0,0-8-17.31l2.31-4A23.87,23.87,0,0,1,23.76,44H36.07a35.88,35.88,0,0,0-16.41-31.8l4.67-8a.77.77,0,0,1,1.05-.27c.53.29,20.29,34.77,20.66,35.17a.76.76,0,0,1-.68,1.13H40.6q.09,1.91,0,3.81h4.78A4.59,4.59,0,0,0,50,39.43a4.49,4.49,0,0,0-.62-2.28Z" fill="#362d59" transform="translate(11, 11)"></path></svg>
|
||||
|
After Width: | Height: | Size: 700 B |
29
packages/strapi-plugin-sentry/admin/src/index.js
Normal file
29
packages/strapi-plugin-sentry/admin/src/index.js
Normal file
@ -0,0 +1,29 @@
|
||||
import pluginPkg from '../../package.json';
|
||||
import pluginId from './pluginId';
|
||||
import pluginLogo from './assets/images/logo.svg';
|
||||
import trads from './translations';
|
||||
|
||||
export default strapi => {
|
||||
const pluginDescription = pluginPkg.strapi.description || pluginPkg.description;
|
||||
|
||||
const plugin = {
|
||||
blockerComponent: null,
|
||||
blockerComponentProps: {},
|
||||
description: pluginDescription,
|
||||
icon: pluginPkg.strapi.icon,
|
||||
id: pluginId,
|
||||
isReady: true,
|
||||
initializer: () => null,
|
||||
injectedComponents: [],
|
||||
isRequired: pluginPkg.strapi.required || false,
|
||||
layout: null,
|
||||
lifecycles: () => {},
|
||||
mainComponent: null,
|
||||
name: pluginPkg.strapi.name,
|
||||
pluginLogo,
|
||||
preventComponentRendering: false,
|
||||
trads,
|
||||
};
|
||||
|
||||
return strapi.registerPlugin(plugin);
|
||||
};
|
||||
5
packages/strapi-plugin-sentry/admin/src/pluginId.js
Normal file
5
packages/strapi-plugin-sentry/admin/src/pluginId.js
Normal file
@ -0,0 +1,5 @@
|
||||
import pluginPkg from '../../package.json';
|
||||
|
||||
const pluginId = pluginPkg.name.replace(/^strapi-plugin-/i, '');
|
||||
|
||||
export default pluginId;
|
||||
@ -0,0 +1 @@
|
||||
{}
|
||||
@ -0,0 +1 @@
|
||||
{}
|
||||
@ -0,0 +1 @@
|
||||
{}
|
||||
@ -0,0 +1,4 @@
|
||||
{
|
||||
"plugin.description.short": "Send Strapi error events to Sentry.",
|
||||
"plugin.description.long": "Send Strapi error events to Sentry."
|
||||
}
|
||||
@ -0,0 +1 @@
|
||||
{}
|
||||
@ -0,0 +1,4 @@
|
||||
{
|
||||
"plugin.description.short": "Envoie vos erreurs Strapi à Sentry.",
|
||||
"plugin.description.long": "Envoie vos erreurs Strapi à Sentry."
|
||||
}
|
||||
@ -0,0 +1 @@
|
||||
{}
|
||||
@ -0,0 +1,49 @@
|
||||
import ar from './ar.json';
|
||||
import cs from './cs.json';
|
||||
import de from './de.json';
|
||||
import en from './en.json';
|
||||
import es from './es.json';
|
||||
import fr from './fr.json';
|
||||
import id from './id.json';
|
||||
import it from './it.json';
|
||||
import ko from './ko.json';
|
||||
import ms from './ms.json';
|
||||
import nl from './nl.json';
|
||||
import pl from './pl.json';
|
||||
import ptBR from './pt-BR.json';
|
||||
import pt from './pt.json';
|
||||
import ru from './ru.json';
|
||||
import th from './th.json';
|
||||
import tr from './tr.json';
|
||||
import uk from './uk.json';
|
||||
import vi from './vi.json';
|
||||
import zhHans from './zh-Hans.json';
|
||||
import zh from './zh.json';
|
||||
import sk from './sk.json';
|
||||
|
||||
const trads = {
|
||||
ar,
|
||||
cs,
|
||||
de,
|
||||
en,
|
||||
es,
|
||||
fr,
|
||||
id,
|
||||
it,
|
||||
ko,
|
||||
ms,
|
||||
nl,
|
||||
pl,
|
||||
'pt-BR': ptBR,
|
||||
pt,
|
||||
ru,
|
||||
th,
|
||||
tr,
|
||||
uk,
|
||||
vi,
|
||||
'zh-Hans': zhHans,
|
||||
zh,
|
||||
sk,
|
||||
};
|
||||
|
||||
export default trads;
|
||||
@ -0,0 +1 @@
|
||||
{}
|
||||
@ -0,0 +1 @@
|
||||
{}
|
||||
@ -0,0 +1 @@
|
||||
{}
|
||||
@ -0,0 +1 @@
|
||||
{}
|
||||
@ -0,0 +1 @@
|
||||
{}
|
||||
@ -0,0 +1 @@
|
||||
{}
|
||||
@ -0,0 +1 @@
|
||||
{}
|
||||
@ -0,0 +1 @@
|
||||
{}
|
||||
@ -0,0 +1 @@
|
||||
{}
|
||||
@ -0,0 +1 @@
|
||||
{}
|
||||
@ -0,0 +1 @@
|
||||
{}
|
||||
@ -0,0 +1 @@
|
||||
{}
|
||||
@ -0,0 +1 @@
|
||||
{}
|
||||
@ -0,0 +1 @@
|
||||
{}
|
||||
@ -0,0 +1 @@
|
||||
{}
|
||||
7
packages/strapi-plugin-sentry/config/functions/bootstrap.js
vendored
Normal file
7
packages/strapi-plugin-sentry/config/functions/bootstrap.js
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
'use strict';
|
||||
|
||||
module.exports = async () => {
|
||||
// Initialize the Sentry service exposed by this plugin
|
||||
const { sentry } = strapi.plugins.sentry.services;
|
||||
sentry.init();
|
||||
};
|
||||
3
packages/strapi-plugin-sentry/config/routes.json
Normal file
3
packages/strapi-plugin-sentry/config/routes.json
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"routes": []
|
||||
}
|
||||
5
packages/strapi-plugin-sentry/config/settings.json
Normal file
5
packages/strapi-plugin-sentry/config/settings.json
Normal file
@ -0,0 +1,5 @@
|
||||
{
|
||||
"dsn": null,
|
||||
"sendMetadata": true,
|
||||
"init": {}
|
||||
}
|
||||
9
packages/strapi-plugin-sentry/controllers/sentry.js
Normal file
9
packages/strapi-plugin-sentry/controllers/sentry.js
Normal file
@ -0,0 +1,9 @@
|
||||
'use strict';
|
||||
|
||||
/**
|
||||
* sentry.js controller
|
||||
*
|
||||
* @description: A set of functions called "actions" of the `sentry` plugin.
|
||||
*/
|
||||
|
||||
module.exports = {};
|
||||
@ -0,0 +1,5 @@
|
||||
{
|
||||
"sentry": {
|
||||
"enabled": true
|
||||
}
|
||||
}
|
||||
33
packages/strapi-plugin-sentry/middlewares/sentry/index.js
Normal file
33
packages/strapi-plugin-sentry/middlewares/sentry/index.js
Normal file
@ -0,0 +1,33 @@
|
||||
'use strict';
|
||||
|
||||
module.exports = strapi => ({
|
||||
beforeInitialize() {
|
||||
strapi.config.middleware.load.after.unshift('sentry');
|
||||
},
|
||||
initialize() {
|
||||
const { sentry } = strapi.plugins.sentry.services;
|
||||
sentry.init();
|
||||
|
||||
strapi.app.use(async (ctx, next) => {
|
||||
try {
|
||||
await next();
|
||||
} catch (error) {
|
||||
sentry.sendError(error, (scope, sentryInstance) => {
|
||||
scope.addEventProcessor(event => {
|
||||
// Parse Koa context to add error metadata
|
||||
return sentryInstance.Handlers.parseRequest(event, ctx.request, {
|
||||
// Don't parse the transaction name, we'll do it manually
|
||||
transaction: false,
|
||||
});
|
||||
});
|
||||
// Manually add transaction name
|
||||
scope.setTag('transaction', `${ctx.method} ${ctx.request.url}`);
|
||||
// Manually add Strapi version
|
||||
scope.setTag('strapi_version', strapi.config.info.strapi);
|
||||
scope.setTag('method', ctx.method);
|
||||
});
|
||||
throw error;
|
||||
}
|
||||
});
|
||||
},
|
||||
});
|
||||
30
packages/strapi-plugin-sentry/package.json
Normal file
30
packages/strapi-plugin-sentry/package.json
Normal file
@ -0,0 +1,30 @@
|
||||
{
|
||||
"name": "strapi-plugin-sentry",
|
||||
"version": "3.4.6",
|
||||
"description": "Send Strapi error events to Sentry",
|
||||
"strapi": {
|
||||
"name": "Sentry",
|
||||
"icon": "plug",
|
||||
"description": "sentry.plugin.description"
|
||||
},
|
||||
"dependencies": {
|
||||
"@sentry/node": "6.1.0"
|
||||
},
|
||||
"author": {
|
||||
"name": "A Strapi developer",
|
||||
"email": "",
|
||||
"url": ""
|
||||
},
|
||||
"maintainers": [
|
||||
{
|
||||
"name": "A Strapi developer",
|
||||
"email": "",
|
||||
"url": ""
|
||||
}
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=10.16.0 <=14.x.x",
|
||||
"npm": ">=6.0.0"
|
||||
},
|
||||
"license": "SEE LICENSE IN LICENSE"
|
||||
}
|
||||
106
packages/strapi-plugin-sentry/services/__tests__/sentry.test.js
Normal file
106
packages/strapi-plugin-sentry/services/__tests__/sentry.test.js
Normal file
@ -0,0 +1,106 @@
|
||||
'use strict';
|
||||
|
||||
const INVALID_DSN = 'an_invalid_dsn';
|
||||
const VALID_DSN = 'a_valid_dsn';
|
||||
const captureException = jest.fn();
|
||||
|
||||
jest.mock('@sentry/node', () => {
|
||||
return {
|
||||
init(options = {}) {
|
||||
if (options.dsn !== VALID_DSN) {
|
||||
throw Error();
|
||||
}
|
||||
},
|
||||
captureException,
|
||||
withScope(configureScope) {
|
||||
configureScope();
|
||||
},
|
||||
};
|
||||
});
|
||||
|
||||
let sentryService = require('../sentry');
|
||||
const defaultConfig = require('../../config/settings.json');
|
||||
|
||||
describe('strapi-plugin-sentry service', () => {
|
||||
beforeEach(() => {
|
||||
// Reset Strapi state
|
||||
global.strapi = {
|
||||
config: {},
|
||||
plugins: {
|
||||
sentry: {
|
||||
config: defaultConfig,
|
||||
},
|
||||
},
|
||||
log: {
|
||||
warn: jest.fn(),
|
||||
info: jest.fn(),
|
||||
},
|
||||
};
|
||||
sentryService = require('../sentry');
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
// Reset the plugin resource state
|
||||
jest.resetModules();
|
||||
});
|
||||
|
||||
it('disables Sentry when no DSN is provided', () => {
|
||||
sentryService.init();
|
||||
expect(strapi.log.info).toHaveBeenCalledWith(expect.stringMatching(/disabled/i));
|
||||
|
||||
const instance = sentryService.getInstance();
|
||||
expect(instance).toBeNull();
|
||||
});
|
||||
|
||||
it('disables Sentry when an invalid DSN is provided', () => {
|
||||
global.strapi.plugins.sentry.config = {
|
||||
dsn: INVALID_DSN,
|
||||
};
|
||||
sentryService.init();
|
||||
expect(strapi.log.warn).toHaveBeenCalledWith(expect.stringMatching(/could not set up sentry/i));
|
||||
|
||||
const instance = sentryService.getInstance();
|
||||
expect(instance).toBeNull();
|
||||
});
|
||||
|
||||
it("doesn't send events before init", () => {
|
||||
sentryService.sendError(Error());
|
||||
expect(strapi.log.warn).toHaveBeenCalledWith(expect.stringMatching(/cannot send event/i));
|
||||
});
|
||||
|
||||
it('initializes and sends errors', () => {
|
||||
global.strapi.plugins.sentry.config = {
|
||||
dsn: VALID_DSN,
|
||||
};
|
||||
sentryService.init();
|
||||
|
||||
// Saves the instance correctly
|
||||
const instance = sentryService.getInstance();
|
||||
expect(instance).not.toBeNull();
|
||||
|
||||
// Doesn't allow re-init
|
||||
sentryService.init();
|
||||
|
||||
// Send error
|
||||
const error = Error('an error');
|
||||
const configureScope = jest.fn();
|
||||
sentryService.sendError(error, configureScope);
|
||||
expect(configureScope).toHaveBeenCalled();
|
||||
expect(captureException).toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it('does not not send metadata when the option is disabled', () => {
|
||||
// Init with metadata option disabled
|
||||
global.strapi.plugins.sentry.config = {
|
||||
dsn: VALID_DSN,
|
||||
sendMetadata: false,
|
||||
};
|
||||
sentryService.init();
|
||||
|
||||
// Send error
|
||||
const error = Error('an error');
|
||||
const configureScope = jest.fn();
|
||||
sentryService.sendError(error, configureScope);
|
||||
expect(configureScope).not.toHaveBeenCalled();
|
||||
});
|
||||
});
|
||||
87
packages/strapi-plugin-sentry/services/sentry.js
Normal file
87
packages/strapi-plugin-sentry/services/sentry.js
Normal file
@ -0,0 +1,87 @@
|
||||
'use strict';
|
||||
|
||||
const Sentry = require('@sentry/node');
|
||||
const defaultSettings = require('../config/settings.json');
|
||||
|
||||
const createSentryService = () => {
|
||||
let isReady = false;
|
||||
let instance = null;
|
||||
let settings = {};
|
||||
|
||||
return {
|
||||
/**
|
||||
* Initialize Sentry service
|
||||
*/
|
||||
init() {
|
||||
// Make sure there isn't a Sentry instance already running
|
||||
if (instance != null) {
|
||||
return this;
|
||||
}
|
||||
|
||||
// Retrieve user settings and merge them with the default ones
|
||||
settings = {
|
||||
...defaultSettings,
|
||||
...strapi.plugins.sentry.config,
|
||||
};
|
||||
|
||||
try {
|
||||
// Don't init Sentry if no DSN was provided
|
||||
if (settings.dsn) {
|
||||
Sentry.init({
|
||||
dsn: settings.dsn,
|
||||
environment: strapi.config.environment,
|
||||
...settings.init,
|
||||
});
|
||||
// Store the successfully initialized Sentry instance
|
||||
instance = Sentry;
|
||||
isReady = true;
|
||||
} else {
|
||||
strapi.log.info('strapi-plugin-sentry is disabled because no Sentry DSN was provided');
|
||||
}
|
||||
} catch (error) {
|
||||
strapi.log.warn('Could not set up Sentry, make sure you entered a valid DSN');
|
||||
}
|
||||
|
||||
return this;
|
||||
},
|
||||
|
||||
/**
|
||||
* Expose Sentry instance through a getter
|
||||
* @returns {Sentry}
|
||||
*/
|
||||
getInstance() {
|
||||
return instance;
|
||||
},
|
||||
|
||||
/**
|
||||
* Callback to [configure an instance of Sentry's scope]{@link https://docs.sentry.io/platforms/node/enriching-events/scopes/#configuring-the-scope}
|
||||
* @callback configureScope
|
||||
* @param {Sentry.scope} scope
|
||||
* @param {Sentry=} instance An initialized Sentry instance
|
||||
*/
|
||||
|
||||
/**
|
||||
* Higher level method to send exception events to Sentry
|
||||
* @param {Error} error An error object
|
||||
* @param {configureScope=} configureScope
|
||||
*/
|
||||
sendError(error, configureScope) {
|
||||
// Make sure Sentry is ready
|
||||
if (!isReady) {
|
||||
strapi.log.warn("Sentry wasn't properly initialized, cannot send event");
|
||||
return;
|
||||
}
|
||||
|
||||
instance.withScope(scope => {
|
||||
// Configure the Sentry scope using the provided callback
|
||||
if (configureScope && settings.sendMetadata) {
|
||||
configureScope(scope, instance);
|
||||
}
|
||||
// Actually send the Error to Sentry
|
||||
instance.captureException(error);
|
||||
});
|
||||
},
|
||||
};
|
||||
};
|
||||
|
||||
module.exports = createSentryService();
|
||||
@ -3,6 +3,7 @@
|
||||
const { resolve } = require('path');
|
||||
const range = require('koa-range');
|
||||
const koaStatic = require('koa-static');
|
||||
const _ = require('lodash');
|
||||
|
||||
module.exports = strapi => ({
|
||||
initialize() {
|
||||
@ -23,6 +24,12 @@ module.exports = strapi => ({
|
||||
strapi.app.onerror(err);
|
||||
});
|
||||
|
||||
strapi.router.get('/uploads/(.*)', range, koaStatic(staticDir, { defer: true }));
|
||||
const localServerConfig =
|
||||
_.get(strapi, 'plugins.upload.config.providerOptions.localServer') || {};
|
||||
strapi.router.get(
|
||||
'/uploads/(.*)',
|
||||
range,
|
||||
koaStatic(staticDir, { defer: true, ...localServerConfig })
|
||||
);
|
||||
},
|
||||
});
|
||||
|
||||
@ -15,7 +15,7 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"lodash": "4.17.20",
|
||||
"nodemailer": "6.4.17"
|
||||
"nodemailer": "6.4.18"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
|
||||
@ -113,6 +113,7 @@ program
|
||||
.alias('dev')
|
||||
.option('--no-build', 'Disable build')
|
||||
.option('--watch-admin', 'Enable watch', false)
|
||||
.option('--polling', 'Watching file changes in network directories', false)
|
||||
.option('--browser <name>', 'Open the browser', true)
|
||||
.description('Start your Strapi application in development mode')
|
||||
.action(getLocalScript('develop'));
|
||||
|
||||
@ -14,7 +14,7 @@ const strapi = require('../index');
|
||||
* `$ strapi develop`
|
||||
*
|
||||
*/
|
||||
module.exports = async function({ build, watchAdmin, browser }) {
|
||||
module.exports = async function({ build, watchAdmin, polling, browser }) {
|
||||
const dir = process.cwd();
|
||||
const config = loadConfiguration(dir);
|
||||
|
||||
@ -77,6 +77,7 @@ module.exports = async function({ build, watchAdmin, browser }) {
|
||||
dir,
|
||||
strapiInstance,
|
||||
watchIgnoreFiles: adminWatchIgnoreFiles,
|
||||
polling,
|
||||
});
|
||||
|
||||
process.on('message', message => {
|
||||
@ -106,7 +107,7 @@ module.exports = async function({ build, watchAdmin, browser }) {
|
||||
* @param {Strapi} options.strapi - Strapi instance
|
||||
* @param {array} options.watchIgnoreFiles - Array of custom file paths that should not be watched
|
||||
*/
|
||||
function watchFileChanges({ dir, strapiInstance, watchIgnoreFiles }) {
|
||||
function watchFileChanges({ dir, strapiInstance, watchIgnoreFiles, polling }) {
|
||||
const restart = () => {
|
||||
if (strapiInstance.reload.isWatching && !strapiInstance.reload.isReloading) {
|
||||
strapiInstance.reload.isReloading = true;
|
||||
@ -116,6 +117,7 @@ function watchFileChanges({ dir, strapiInstance, watchIgnoreFiles }) {
|
||||
|
||||
const watcher = chokidar.watch(dir, {
|
||||
ignoreInitial: true,
|
||||
usePolling: polling,
|
||||
ignored: [
|
||||
/(^|[/\\])\../, // dot files
|
||||
/tmp/,
|
||||
|
||||
195
yarn.lock
195
yarn.lock
@ -215,19 +215,12 @@
|
||||
dependencies:
|
||||
"@babel/types" "^7.12.1"
|
||||
|
||||
"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.10.4":
|
||||
version "7.10.4"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz#4c5c54be04bd31670a7382797d75b9fa2e5b5620"
|
||||
integrity sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw==
|
||||
"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.12.1", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.7.0":
|
||||
version "7.12.13"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.12.13.tgz#ec67e4404f41750463e455cc3203f6a32e93fcb0"
|
||||
integrity sha512-NGmfvRp9Rqxy0uHSSVP+SRIW1q31a7Ji10cLBcqSDUngGentY4FRiHOFZFE1CLU5eiL0oE8reH7Tg1y99TDM/g==
|
||||
dependencies:
|
||||
"@babel/types" "^7.10.4"
|
||||
|
||||
"@babel/helper-module-imports@^7.12.1", "@babel/helper-module-imports@^7.7.0":
|
||||
version "7.12.5"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz#1bfc0229f794988f76ed0a4d4e90860850b54dfb"
|
||||
integrity sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA==
|
||||
dependencies:
|
||||
"@babel/types" "^7.12.5"
|
||||
"@babel/types" "^7.12.13"
|
||||
|
||||
"@babel/helper-module-transforms@^7.10.4", "@babel/helper-module-transforms@^7.10.5", "@babel/helper-module-transforms@^7.12.1":
|
||||
version "7.12.1"
|
||||
@ -251,10 +244,10 @@
|
||||
dependencies:
|
||||
"@babel/types" "^7.10.4"
|
||||
|
||||
"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3":
|
||||
version "7.10.4"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz#2f75a831269d4f677de49986dff59927533cf375"
|
||||
integrity sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==
|
||||
"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3":
|
||||
version "7.12.13"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.12.13.tgz#174254d0f2424d8aefb4dd48057511247b0a9eeb"
|
||||
integrity sha512-C+10MXCXJLiR6IeG9+Wiejt9jmtFpxUc3MQqCmPY8hfCjyUGl9kT+B2okzEZrtykiwrc4dbCPdDoz0A/HQbDaA==
|
||||
|
||||
"@babel/helper-regex@^7.10.4":
|
||||
version "7.10.5"
|
||||
@ -318,6 +311,11 @@
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2"
|
||||
integrity sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==
|
||||
|
||||
"@babel/helper-validator-identifier@^7.12.11":
|
||||
version "7.12.11"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed"
|
||||
integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==
|
||||
|
||||
"@babel/helper-wrap-function@^7.10.4":
|
||||
version "7.10.4"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.10.4.tgz#8a6f701eab0ff39f765b5a1cfef409990e624b87"
|
||||
@ -825,14 +823,13 @@
|
||||
dependencies:
|
||||
"@babel/helper-plugin-utils" "^7.10.4"
|
||||
|
||||
"@babel/plugin-transform-runtime@^7.9.0":
|
||||
version "7.11.5"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.11.5.tgz#f108bc8e0cf33c37da031c097d1df470b3a293fc"
|
||||
integrity sha512-9aIoee+EhjySZ6vY5hnLjigHzunBlscx9ANKutkeWTJTx6m5Rbq6Ic01tLvO54lSusR+BxV7u4UDdCmXv5aagg==
|
||||
"@babel/plugin-transform-runtime@^7.12.15":
|
||||
version "7.12.15"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.12.15.tgz#4337b2507288007c2b197059301aa0af8d90c085"
|
||||
integrity sha512-OwptMSRnRWJo+tJ9v9wgAf72ydXWfYSXWhnQjZing8nGZSDFqU1MBleKM3+DriKkcbv7RagA8gVeB0A1PNlNow==
|
||||
dependencies:
|
||||
"@babel/helper-module-imports" "^7.10.4"
|
||||
"@babel/helper-plugin-utils" "^7.10.4"
|
||||
resolve "^1.8.1"
|
||||
"@babel/helper-module-imports" "^7.12.13"
|
||||
"@babel/helper-plugin-utils" "^7.12.13"
|
||||
semver "^5.5.1"
|
||||
|
||||
"@babel/plugin-transform-shorthand-properties@^7.10.4":
|
||||
@ -1002,10 +999,10 @@
|
||||
core-js-pure "^3.0.0"
|
||||
regenerator-runtime "^0.13.4"
|
||||
|
||||
"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.5", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.2.0", "@babel/runtime@^7.4.0", "@babel/runtime@^7.4.4", "@babel/runtime@^7.4.5", "@babel/runtime@^7.5.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2":
|
||||
version "7.12.5"
|
||||
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.5.tgz#410e7e487441e1b360c29be715d870d9b985882e"
|
||||
integrity sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg==
|
||||
"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.5", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.2.0", "@babel/runtime@^7.4.0", "@babel/runtime@^7.4.4", "@babel/runtime@^7.4.5", "@babel/runtime@^7.5.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2":
|
||||
version "7.12.13"
|
||||
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.13.tgz#0a21452352b02542db0ffb928ac2d3ca7cb6d66d"
|
||||
integrity sha512-8+3UMPBrjFa/6TtKi/7sehPKqfAm4g6K+YQjyyFOLUTxzOngcRZTlAVY8sc2CORJYqdHQY8gRPHmn+qo15rCBw==
|
||||
dependencies:
|
||||
regenerator-runtime "^0.13.4"
|
||||
|
||||
@ -1042,6 +1039,15 @@
|
||||
lodash "^4.17.19"
|
||||
to-fast-properties "^2.0.0"
|
||||
|
||||
"@babel/types@^7.12.13":
|
||||
version "7.12.13"
|
||||
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.13.tgz#8be1aa8f2c876da11a9cf650c0ecf656913ad611"
|
||||
integrity sha512-oKrdZTld2im1z8bDwTOQvUbxKwE+854zc16qWZQlcTqMN00pWxHQ4ZeOq0yDMnisOpRykH2/5Qqcrk/OlbAjiQ==
|
||||
dependencies:
|
||||
"@babel/helper-validator-identifier" "^7.12.11"
|
||||
lodash "^4.17.19"
|
||||
to-fast-properties "^2.0.0"
|
||||
|
||||
"@bcoe/v8-coverage@^0.2.3":
|
||||
version "0.2.3"
|
||||
resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39"
|
||||
@ -2702,72 +2708,72 @@
|
||||
"@sendgrid/client" "^6.4.0"
|
||||
"@sendgrid/helpers" "^6.4.0"
|
||||
|
||||
"@sentry/core@6.0.3":
|
||||
version "6.0.3"
|
||||
resolved "https://registry.yarnpkg.com/@sentry/core/-/core-6.0.3.tgz#620cb32365a11eac75497bed281bd52b9f0bb359"
|
||||
integrity sha512-UykB/4/98y2DkNvwTiL2ofFPuK3KDHc7rIRNsdj6dg6D+Cf7FRexgmWUUkZrpC/y+QBj0TPqkcFDcZAuQDa3Ag==
|
||||
"@sentry/core@6.1.0":
|
||||
version "6.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@sentry/core/-/core-6.1.0.tgz#7dd4584dcaf2188a78b94b766068342e6ee65229"
|
||||
integrity sha512-57mXkp3NoyxRycXrL+Ec6bYS6UYJZp9tYX0lUp5Ry2M0FxDZ3Q4drkjr8MIQOhBaQXP2ukSX4QTVLGMPm60zMw==
|
||||
dependencies:
|
||||
"@sentry/hub" "6.0.3"
|
||||
"@sentry/minimal" "6.0.3"
|
||||
"@sentry/types" "6.0.3"
|
||||
"@sentry/utils" "6.0.3"
|
||||
"@sentry/hub" "6.1.0"
|
||||
"@sentry/minimal" "6.1.0"
|
||||
"@sentry/types" "6.1.0"
|
||||
"@sentry/utils" "6.1.0"
|
||||
tslib "^1.9.3"
|
||||
|
||||
"@sentry/hub@6.0.3":
|
||||
version "6.0.3"
|
||||
resolved "https://registry.yarnpkg.com/@sentry/hub/-/hub-6.0.3.tgz#097f7b1e775a4c6c20c9bec60d7507d5ad2e8db0"
|
||||
integrity sha512-BfV32tE09rjTWM9W0kk8gzxUC2k1h57Z5dNWJ35na79+LguNNtCcI6fHlFQ3PkJca6ITYof9FI8iQHUfsHFZnw==
|
||||
"@sentry/hub@6.1.0":
|
||||
version "6.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@sentry/hub/-/hub-6.1.0.tgz#fb22734c91c9d68564737996bf28b7e032e3d8ee"
|
||||
integrity sha512-JnBSCgNg3VHiMojUl5tCHU8iWPVuE+qqENIzG9A722oJms1kKWBvWl+yQzhWBNdgk5qeAY3F5UzKWJZkbJ6xow==
|
||||
dependencies:
|
||||
"@sentry/types" "6.0.3"
|
||||
"@sentry/utils" "6.0.3"
|
||||
"@sentry/types" "6.1.0"
|
||||
"@sentry/utils" "6.1.0"
|
||||
tslib "^1.9.3"
|
||||
|
||||
"@sentry/minimal@6.0.3":
|
||||
version "6.0.3"
|
||||
resolved "https://registry.yarnpkg.com/@sentry/minimal/-/minimal-6.0.3.tgz#6eaaf78c479c49720df3e712d41518e7f4f0ffdf"
|
||||
integrity sha512-YsW+nw0SMyyb7UQdjZeKlZjxbGsJFpXNLh9iIp6fHKnoLTTv17YPm2ej9sOikDsQuVotaPg/xn/Qt5wySGHIxw==
|
||||
"@sentry/minimal@6.1.0":
|
||||
version "6.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@sentry/minimal/-/minimal-6.1.0.tgz#b3abf76d93b95477a3c1029db810818bdc56845f"
|
||||
integrity sha512-g6sfNKenL7wnsr/tibp8nFiMv/XRH0s0Pt4p151npmNI+SmjuUz3GGYEXk8ChCyaKldYKilkNOFdVXJxUf5gZw==
|
||||
dependencies:
|
||||
"@sentry/hub" "6.0.3"
|
||||
"@sentry/types" "6.0.3"
|
||||
"@sentry/hub" "6.1.0"
|
||||
"@sentry/types" "6.1.0"
|
||||
tslib "^1.9.3"
|
||||
|
||||
"@sentry/node@^6.0.3":
|
||||
version "6.0.3"
|
||||
resolved "https://registry.yarnpkg.com/@sentry/node/-/node-6.0.3.tgz#f41e707db710fd7c48e3bffdf05c8edeec95cbe9"
|
||||
integrity sha512-yvj/e91NPiTtkjUvQSdTqAlRkEw0f/jIC70abobtWH0ExUJOuLHOPWMCpAYST8Adv2QV7eGEhywseRrY1dxSsw==
|
||||
"@sentry/node@6.1.0":
|
||||
version "6.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@sentry/node/-/node-6.1.0.tgz#9e20443fdfd15e508da5c0b674ef32960e8a6380"
|
||||
integrity sha512-yOxYHoPxg8Br19QOsJbonP2uYirv1FFxdNkdeykfO2QBorRUkcirjET5qjRfz73jF1YYtUZBuxwR+f9ZOPqGTg==
|
||||
dependencies:
|
||||
"@sentry/core" "6.0.3"
|
||||
"@sentry/hub" "6.0.3"
|
||||
"@sentry/tracing" "6.0.3"
|
||||
"@sentry/types" "6.0.3"
|
||||
"@sentry/utils" "6.0.3"
|
||||
"@sentry/core" "6.1.0"
|
||||
"@sentry/hub" "6.1.0"
|
||||
"@sentry/tracing" "6.1.0"
|
||||
"@sentry/types" "6.1.0"
|
||||
"@sentry/utils" "6.1.0"
|
||||
cookie "^0.4.1"
|
||||
https-proxy-agent "^5.0.0"
|
||||
lru_map "^0.3.3"
|
||||
tslib "^1.9.3"
|
||||
|
||||
"@sentry/tracing@6.0.3":
|
||||
version "6.0.3"
|
||||
resolved "https://registry.yarnpkg.com/@sentry/tracing/-/tracing-6.0.3.tgz#103f4942ddd546321e22ba20c011adf52b25b3f2"
|
||||
integrity sha512-H7dnsvPz9cD1nuCNQM4MxcHxt2JdT9F8dQ/4+gp+eB9iBLy6staMrmKRLYuAcMU/M3MCDG4ISIip7KbTt74OLg==
|
||||
"@sentry/tracing@6.1.0":
|
||||
version "6.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@sentry/tracing/-/tracing-6.1.0.tgz#cefabd0e4794fefb6a0a17478a8f09b2f1f3d889"
|
||||
integrity sha512-s6a4Ra3hHn4awiNz4fOEK6TCV2w2iLcxdppijcYEB7S/1rJpmqZgHWDicqufbOmVMOLmyKLEQ7w+pZq3TR3WgQ==
|
||||
dependencies:
|
||||
"@sentry/hub" "6.0.3"
|
||||
"@sentry/minimal" "6.0.3"
|
||||
"@sentry/types" "6.0.3"
|
||||
"@sentry/utils" "6.0.3"
|
||||
"@sentry/hub" "6.1.0"
|
||||
"@sentry/minimal" "6.1.0"
|
||||
"@sentry/types" "6.1.0"
|
||||
"@sentry/utils" "6.1.0"
|
||||
tslib "^1.9.3"
|
||||
|
||||
"@sentry/types@6.0.3":
|
||||
version "6.0.3"
|
||||
resolved "https://registry.yarnpkg.com/@sentry/types/-/types-6.0.3.tgz#a1ef6d6b2ac2a9201e3e4a894db6ecf7ceb5b27c"
|
||||
integrity sha512-266aBQbk9AGedhG2dzXshWbn23LYLElXqlI74DLku48UrU2v7TGKdyik/8/nfOfquCoRSp0GFGYHbItwU124XQ==
|
||||
"@sentry/types@6.1.0":
|
||||
version "6.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@sentry/types/-/types-6.1.0.tgz#5f9379229423ca1325acf6709e95687180f67132"
|
||||
integrity sha512-kIaN52Fw5K+2mKRaHE2YluJ+F/qMGSUzZXIFDNdC6OUMXQ4TM8gZTrITXs8CLDm7cK8iCqFCtzKOjKK6KyOKAg==
|
||||
|
||||
"@sentry/utils@6.0.3":
|
||||
version "6.0.3"
|
||||
resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-6.0.3.tgz#114d9faa47f76416c3e140711465e76d2129dba8"
|
||||
integrity sha512-lvuBFvZHYs1zYwI8dkC8Z8ryb0aYnwPFUl1rbZiMwJpYI2Dgl1jpqqZWv9luux2rSRYOMid74uGedV708rvEgA==
|
||||
"@sentry/utils@6.1.0":
|
||||
version "6.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-6.1.0.tgz#52e3d7050983e685d3a48f9d2efa1e6eb4ae3e6d"
|
||||
integrity sha512-6JAplzUOS6bEwfX0PDRZBbYRvn9EN22kZfcL0qGHtM9L0QQ5ybjbbVwOpbXgRkiZx++dQbzLFtelxnDhsbFG+Q==
|
||||
dependencies:
|
||||
"@sentry/types" "6.0.3"
|
||||
"@sentry/types" "6.1.0"
|
||||
tslib "^1.9.3"
|
||||
|
||||
"@sindresorhus/is@^0.14.0":
|
||||
@ -12780,10 +12786,10 @@ markdown-it-footnote@^3.0.2:
|
||||
resolved "https://registry.yarnpkg.com/markdown-it-footnote/-/markdown-it-footnote-3.0.2.tgz#1575ee7a093648d4e096aa33386b058d92ac8bc1"
|
||||
integrity sha512-JVW6fCmZWjvMdDQSbOT3nnOQtd9iAXmw7hTSh26+v42BnvXeVyGMDBm5b/EZocMed2MbCAHiTX632vY0FyGB8A==
|
||||
|
||||
markdown-it-ins@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/markdown-it-ins/-/markdown-it-ins-3.0.0.tgz#b1b56824c78dc66e52b0fc97531b317cd78d79d2"
|
||||
integrity sha512-+vyAdBuMGwmT2yMlAFJSx2VR/0QZ1onQ/Mkkmr4l9tDFOh5sVoAgRbkgbuSsk+sxJ9vaMH/IQ323ydfvQrPO/Q==
|
||||
markdown-it-ins@^3.0.1:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.yarnpkg.com/markdown-it-ins/-/markdown-it-ins-3.0.1.tgz#c09356b917cf1dbf73add0b275d67ab8c73d4b4d"
|
||||
integrity sha512-32SSfZqSzqyAmmQ4SHvhxbFqSzPDqsZgMHDwxqPzp+v+t8RsmqsBZRG+RfRQskJko9PfKC2/oxyOs4Yg/CfiRw==
|
||||
|
||||
markdown-it-mark@^3.0.1:
|
||||
version "3.0.1"
|
||||
@ -13536,12 +13542,7 @@ node-abi@^2.7.0:
|
||||
dependencies:
|
||||
semver "^5.4.1"
|
||||
|
||||
node-addon-api@2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-2.0.0.tgz#f9afb8d777a91525244b01775ea0ddbe1125483b"
|
||||
integrity sha512-ASCL5U13as7HhOExbT6OlWJJUV/lLzL2voOSP1UVehpRD8FbSrSDjfScK/KwAvVTI5AS6r4VwbOMlIqtvRidnA==
|
||||
|
||||
node-addon-api@^3.1.0:
|
||||
node-addon-api@^3.0.0, node-addon-api@^3.1.0:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.1.0.tgz#98b21931557466c6729e51cb77cd39c965f42239"
|
||||
integrity sha512-flmrDNB06LIl5lywUz7YlNGZH/5p0M7W28k8hzd9Lshtdh1wshD2Y+U4h9LD6KObOy1f+fEVdgprPrEymjM5uw==
|
||||
@ -13713,10 +13714,10 @@ nodemailer-shared@1.1.0:
|
||||
dependencies:
|
||||
nodemailer-fetch "1.6.0"
|
||||
|
||||
nodemailer@6.4.17:
|
||||
version "6.4.17"
|
||||
resolved "https://registry.yarnpkg.com/nodemailer/-/nodemailer-6.4.17.tgz#8de98618028953b80680775770f937243a7d7877"
|
||||
integrity sha512-89ps+SBGpo0D4Bi5ZrxcrCiRFaMmkCt+gItMXQGzEtZVR3uAD3QAQIDoxTWnx3ky0Dwwy/dhFrQ+6NNGXpw/qQ==
|
||||
nodemailer@6.4.18:
|
||||
version "6.4.18"
|
||||
resolved "https://registry.yarnpkg.com/nodemailer/-/nodemailer-6.4.18.tgz#2788c85792844fc17befda019031609017f4b9a1"
|
||||
integrity sha512-ht9cXxQ+lTC+t00vkSIpKHIyM4aXIsQ1tcbQCn5IOnxYHi81W2XOaU66EQBFFpbtzLEBTC94gmkbD4mGZQzVpA==
|
||||
|
||||
noop-logger@^0.1.1:
|
||||
version "0.1.1"
|
||||
@ -16877,7 +16878,7 @@ resolve@1.1.x:
|
||||
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b"
|
||||
integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=
|
||||
|
||||
resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.10.1, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.16.1, resolve@^1.17.0, resolve@^1.18.1, resolve@^1.3.2, resolve@^1.8.1:
|
||||
resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.10.1, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.16.1, resolve@^1.17.0, resolve@^1.18.1, resolve@^1.3.2:
|
||||
version "1.18.1"
|
||||
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.18.1.tgz#018fcb2c5b207d2a6424aee361c5a266da8f4130"
|
||||
integrity sha512-lDfCPaMKfOJXjy0dPayzPdF1phampNWr3qFCjAu+rw/qbQmr5jWH5xN2hwh9QKfw9E5v4hwV7A+jrCmL8yjjqA==
|
||||
@ -18217,12 +18218,12 @@ sprintf-js@~1.0.2:
|
||||
resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
|
||||
integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=
|
||||
|
||||
sqlite3@^5.0.0:
|
||||
version "5.0.0"
|
||||
resolved "https://registry.yarnpkg.com/sqlite3/-/sqlite3-5.0.0.tgz#1bfef2151c6bc48a3ab1a6c126088bb8dd233566"
|
||||
integrity sha512-rjvqHFUaSGnzxDy2AHCwhHy6Zp6MNJzCPGYju4kD8yi6bze4d1/zMTg6C7JI49b7/EM7jKMTvyfN/4ylBKdwfw==
|
||||
sqlite3@^5.0.1:
|
||||
version "5.0.1"
|
||||
resolved "https://registry.yarnpkg.com/sqlite3/-/sqlite3-5.0.1.tgz#d5b58c8d1568bbaf13062eb9465982f36324f78a"
|
||||
integrity sha512-kh2lTIcYNfmVcvhVJihsYuPj9U0xzBbh6bmqILO2hkryWSC9RRhzYmkIDtJkJ+d8Kg4wZRJ0T1reyHUEspICfg==
|
||||
dependencies:
|
||||
node-addon-api "2.0.0"
|
||||
node-addon-api "^3.0.0"
|
||||
node-pre-gyp "^0.11.0"
|
||||
optionalDependencies:
|
||||
node-gyp "3.x"
|
||||
@ -18882,10 +18883,10 @@ svgo@^1.0.0:
|
||||
unquote "~1.1.1"
|
||||
util.promisify "~1.0.0"
|
||||
|
||||
swagger-ui-dist@3.41.1:
|
||||
version "3.41.1"
|
||||
resolved "https://registry.yarnpkg.com/swagger-ui-dist/-/swagger-ui-dist-3.41.1.tgz#1cb803fab9aef9bd45e1848068908887a23bf27f"
|
||||
integrity sha512-Wg3RqMBp8dSYEwyvXOWuOTwh3fTxYxmtAvLjEbUwRlPXKEHcde3BG/v2zjswrDVcumUpPQ6Cp5RG3LMz6M0YIw==
|
||||
swagger-ui-dist@3.43.0:
|
||||
version "3.43.0"
|
||||
resolved "https://registry.yarnpkg.com/swagger-ui-dist/-/swagger-ui-dist-3.43.0.tgz#b064a2cec1d27776f9a124bc70423cfa0bbc0d3f"
|
||||
integrity sha512-PtE+g23bNbYv8qqAVoPBqNQth8hU5Sl5ZsQ7gHXlO5jlCt31dVTiKI9ArHIT1b23ZzUYTnKsFgPYYFoiWyNCAw==
|
||||
|
||||
switchback@^2.0.1:
|
||||
version "2.0.5"
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user