@webiny/app-mailer 5.34.8 → 5.35.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4,16 +4,12 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.usePermission = void 0;
7
-
8
7
  var _appSecurity = require("@webiny/app-security");
9
-
10
8
  var _react = require("react");
11
-
12
9
  var usePermission = function usePermission() {
13
10
  var _useSecurity = (0, _appSecurity.useSecurity)(),
14
- identity = _useSecurity.identity,
15
- getPermission = _useSecurity.getPermission;
16
-
11
+ identity = _useSecurity.identity,
12
+ getPermission = _useSecurity.getPermission;
17
13
  var canChangeSettings = (0, _react.useCallback)(function () {
18
14
  var permission = getPermission("mailer.settings");
19
15
  return !!permission;
@@ -22,5 +18,4 @@ var usePermission = function usePermission() {
22
18
  canChangeSettings: canChangeSettings
23
19
  };
24
20
  };
25
-
26
21
  exports.usePermission = usePermission;
@@ -1 +1 @@
1
- {"version":3,"names":["usePermission","useSecurity","identity","getPermission","canChangeSettings","useCallback","permission"],"sources":["usePermission.ts"],"sourcesContent":["import { useSecurity } from \"@webiny/app-security\";\nimport { useCallback } from \"react\";\nimport { MailerSecurityPermission } from \"~/types\";\n\nexport const usePermission = () => {\n const { identity, getPermission } = useSecurity();\n\n const canChangeSettings = useCallback((): boolean => {\n const permission = getPermission<MailerSecurityPermission>(\"mailer.settings\");\n return !!permission;\n }, [identity]);\n\n return {\n canChangeSettings\n };\n};\n"],"mappings":";;;;;;;AAAA;;AACA;;AAGO,IAAMA,aAAa,GAAG,SAAhBA,aAAgB,GAAM;EAC/B,mBAAoC,IAAAC,wBAAA,GAApC;EAAA,IAAQC,QAAR,gBAAQA,QAAR;EAAA,IAAkBC,aAAlB,gBAAkBA,aAAlB;;EAEA,IAAMC,iBAAiB,GAAG,IAAAC,kBAAA,EAAY,YAAe;IACjD,IAAMC,UAAU,GAAGH,aAAa,CAA2B,iBAA3B,CAAhC;IACA,OAAO,CAAC,CAACG,UAAT;EACH,CAHyB,EAGvB,CAACJ,QAAD,CAHuB,CAA1B;EAKA,OAAO;IACHE,iBAAiB,EAAjBA;EADG,CAAP;AAGH,CAXM"}
1
+ {"version":3,"names":["usePermission","useSecurity","identity","getPermission","canChangeSettings","useCallback","permission"],"sources":["usePermission.ts"],"sourcesContent":["import { useSecurity } from \"@webiny/app-security\";\nimport { useCallback } from \"react\";\nimport { MailerSecurityPermission } from \"~/types\";\n\nexport const usePermission = () => {\n const { identity, getPermission } = useSecurity();\n\n const canChangeSettings = useCallback((): boolean => {\n const permission = getPermission<MailerSecurityPermission>(\"mailer.settings\");\n return !!permission;\n }, [identity]);\n\n return {\n canChangeSettings\n };\n};\n"],"mappings":";;;;;;AAAA;AACA;AAGO,IAAMA,aAAa,GAAG,SAAhBA,aAAa,GAAS;EAC/B,mBAAoC,IAAAC,wBAAW,GAAE;IAAzCC,QAAQ,gBAARA,QAAQ;IAAEC,aAAa,gBAAbA,aAAa;EAE/B,IAAMC,iBAAiB,GAAG,IAAAC,kBAAW,EAAC,YAAe;IACjD,IAAMC,UAAU,GAAGH,aAAa,CAA2B,iBAAiB,CAAC;IAC7E,OAAO,CAAC,CAACG,UAAU;EACvB,CAAC,EAAE,CAACJ,QAAQ,CAAC,CAAC;EAEd,OAAO;IACHE,iBAAiB,EAAjBA;EACJ,CAAC;AACL,CAAC;AAAC"}
package/index.js CHANGED
@@ -9,5 +9,4 @@ Object.defineProperty(exports, "Module", {
9
9
  return _Module.Module;
10
10
  }
11
11
  });
12
-
13
12
  var _Module = require("./plugins/Module");
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["index.tsx"],"sourcesContent":["import { Module } from \"~/plugins/Module\";\n\nexport { Module };\n"],"mappings":";;;;;;;;;;;;AAAA"}
1
+ {"version":3,"names":[],"sources":["index.tsx"],"sourcesContent":["import { Module } from \"~/plugins/Module\";\n\nexport { Module };\n"],"mappings":";;;;;;;;;;;AAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webiny/app-mailer",
3
- "version": "5.34.8",
3
+ "version": "5.35.0-beta.0",
4
4
  "main": "index.js",
5
5
  "repository": {
6
6
  "type": "git",
@@ -10,13 +10,13 @@
10
10
  "license": "MIT",
11
11
  "dependencies": {
12
12
  "@apollo/react-components": "3.1.5",
13
- "@babel/runtime": "7.19.0",
14
- "@emotion/core": "10.3.1",
15
- "@webiny/app-admin": "5.34.8",
16
- "@webiny/app-security": "5.34.8",
17
- "@webiny/form": "5.34.8",
18
- "@webiny/ui": "5.34.8",
19
- "@webiny/validation": "5.34.8",
13
+ "@babel/runtime": "7.20.13",
14
+ "@emotion/react": "11.10.6",
15
+ "@webiny/app-admin": "5.35.0-beta.0",
16
+ "@webiny/app-security": "5.35.0-beta.0",
17
+ "@webiny/form": "5.35.0-beta.0",
18
+ "@webiny/ui": "5.35.0-beta.0",
19
+ "@webiny/validation": "5.35.0-beta.0",
20
20
  "apollo-cache": "1.3.5",
21
21
  "apollo-client": "2.6.10",
22
22
  "apollo-link": "1.2.14",
@@ -35,8 +35,8 @@
35
35
  "@babel/preset-react": "^7.0.0",
36
36
  "@babel/preset-typescript": "^7.18.6",
37
37
  "@types/react": "17.0.39",
38
- "@webiny/cli": "^5.34.8",
39
- "@webiny/project-utils": "^5.34.8",
38
+ "@webiny/cli": "^5.35.0-beta.0",
39
+ "@webiny/project-utils": "^5.35.0-beta.0",
40
40
  "babel-plugin-emotion": "^9.2.8",
41
41
  "rimraf": "^3.0.2",
42
42
  "ttypescript": "^1.5.12",
@@ -55,5 +55,5 @@
55
55
  "removeViewBox": false
56
56
  }
57
57
  },
58
- "gitHead": "6e77eebaac687279fe82ea04f667b7e84214b96a"
58
+ "gitHead": "8acc9e8892842cabb3980ce0b6432fde55968d5b"
59
59
  }
package/plugins/Module.js CHANGED
@@ -1,57 +1,40 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
-
5
4
  var _interopRequireWildcard3 = require("@babel/runtime/helpers/interopRequireWildcard").default;
6
-
7
5
  Object.defineProperty(exports, "__esModule", {
8
6
  value: true
9
7
  });
10
8
  exports.Module = void 0;
11
-
12
9
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
13
-
14
10
  var _interopRequireWildcard2 = _interopRequireDefault(require("@babel/runtime/helpers/interopRequireWildcard"));
15
-
16
11
  var _react = _interopRequireWildcard3(require("react"));
17
-
18
12
  var _appAdmin = require("@webiny/app-admin");
19
-
20
13
  var _appSecurity = require("@webiny/app-security");
21
-
22
14
  var _AdminLayout = require("@webiny/app-admin/components/AdminLayout");
23
-
24
15
  var _reactHelmet = _interopRequireDefault(require("react-helmet"));
25
-
26
16
  var _usePermission2 = require("../hooks/usePermission");
27
-
28
17
  var _Progress = require("@webiny/ui/Progress");
29
-
30
18
  var _excluded = ["children"];
31
19
  var Settings = /*#__PURE__*/(0, _react.lazy)(function () {
32
20
  return Promise.resolve().then(function () {
33
21
  return (0, _interopRequireWildcard2.default)(require("../views/settings"));
34
22
  });
35
23
  });
36
-
37
24
  var Loader = function Loader(_ref) {
38
25
  var children = _ref.children,
39
- props = (0, _objectWithoutProperties2.default)(_ref, _excluded);
26
+ props = (0, _objectWithoutProperties2.default)(_ref, _excluded);
40
27
  return /*#__PURE__*/_react.default.createElement(_react.Suspense, {
41
28
  fallback: /*#__PURE__*/_react.default.createElement(_Progress.CircularProgress, null)
42
29
  }, /*#__PURE__*/_react.default.cloneElement(children, props));
43
30
  };
44
-
45
31
  var MailerSettings = function MailerSettings() {
46
32
  var _usePermission = (0, _usePermission2.usePermission)(),
47
- canChangeSettings = _usePermission.canChangeSettings;
48
-
33
+ canChangeSettings = _usePermission.canChangeSettings;
49
34
  var changeSettings = canChangeSettings();
50
-
51
35
  if (!changeSettings) {
52
36
  return null;
53
37
  }
54
-
55
38
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_appAdmin.AddMenu, {
56
39
  name: "settings"
57
40
  }, /*#__PURE__*/_react.default.createElement(_appAdmin.AddMenu, {
@@ -73,9 +56,7 @@ var MailerSettings = function MailerSettings() {
73
56
  }
74
57
  }));
75
58
  };
76
-
77
59
  var Module = function Module() {
78
60
  return /*#__PURE__*/_react.default.createElement(_appAdmin.Plugins, null, /*#__PURE__*/_react.default.createElement(MailerSettings, null));
79
61
  };
80
-
81
62
  exports.Module = Module;
@@ -1 +1 @@
1
- {"version":3,"names":["Settings","lazy","Loader","children","props","React","cloneElement","MailerSettings","usePermission","canChangeSettings","changeSettings","Module"],"sources":["Module.tsx"],"sourcesContent":["import React, { lazy, Suspense } from \"react\";\nimport { AddMenu as Menu, AddRoute, Plugins } from \"@webiny/app-admin\";\nimport { SecureRoute } from \"@webiny/app-security\";\nimport { AdminLayout } from \"@webiny/app-admin/components/AdminLayout\";\nimport Helmet from \"react-helmet\";\nimport { usePermission } from \"~/hooks/usePermission\";\nimport { CircularProgress } from \"@webiny/ui/Progress\";\n\nconst Settings = lazy(() => import(\"~/views/settings\"));\n\ninterface LoaderProps {\n children: React.ReactElement;\n}\nconst Loader: React.FC<LoaderProps> = ({ children, ...props }) => (\n <Suspense fallback={<CircularProgress />}>{React.cloneElement(children, props)}</Suspense>\n);\n\nconst MailerSettings: React.FC = () => {\n const { canChangeSettings } = usePermission();\n\n const changeSettings = canChangeSettings();\n\n if (!changeSettings) {\n return null;\n }\n\n return (\n <>\n <Menu name={\"settings\"}>\n <Menu name={\"settings.mailer\"} label={\"Mailer\"}>\n <Menu\n name={\"settings.mailer.settings\"}\n label={\"Settings\"}\n path={\"/mailer/settings\"}\n />\n </Menu>\n </Menu>\n <AddRoute\n exact\n path={\"/mailer/settings\"}\n render={() => (\n <SecureRoute permission={\"mailer.settings\"}>\n <AdminLayout>\n <Helmet title={\"Mailer - Settings\"} />\n <Loader>\n <Settings />\n </Loader>\n </AdminLayout>\n </SecureRoute>\n )}\n />\n </>\n );\n};\n\nexport const Module: React.FC = () => {\n return (\n <Plugins>\n <MailerSettings />\n </Plugins>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;AAEA,IAAMA,QAAQ,gBAAG,IAAAC,WAAA,EAAK;EAAA;IAAA;EAAA;AAAA,CAAL,CAAjB;;AAKA,IAAMC,MAA6B,GAAG,SAAhCA,MAAgC;EAAA,IAAGC,QAAH,QAAGA,QAAH;EAAA,IAAgBC,KAAhB;EAAA,oBAClC,6BAAC,eAAD;IAAU,QAAQ,eAAE,6BAAC,0BAAD;EAApB,gBAA2CC,cAAA,CAAMC,YAAN,CAAmBH,QAAnB,EAA6BC,KAA7B,CAA3C,CADkC;AAAA,CAAtC;;AAIA,IAAMG,cAAwB,GAAG,SAA3BA,cAA2B,GAAM;EACnC,qBAA8B,IAAAC,6BAAA,GAA9B;EAAA,IAAQC,iBAAR,kBAAQA,iBAAR;;EAEA,IAAMC,cAAc,GAAGD,iBAAiB,EAAxC;;EAEA,IAAI,CAACC,cAAL,EAAqB;IACjB,OAAO,IAAP;EACH;;EAED,oBACI,yEACI,6BAAC,iBAAD;IAAM,IAAI,EAAE;EAAZ,gBACI,6BAAC,iBAAD;IAAM,IAAI,EAAE,iBAAZ;IAA+B,KAAK,EAAE;EAAtC,gBACI,6BAAC,iBAAD;IACI,IAAI,EAAE,0BADV;IAEI,KAAK,EAAE,UAFX;IAGI,IAAI,EAAE;EAHV,EADJ,CADJ,CADJ,eAUI,6BAAC,kBAAD;IACI,KAAK,MADT;IAEI,IAAI,EAAE,kBAFV;IAGI,MAAM,EAAE;MAAA,oBACJ,6BAAC,wBAAD;QAAa,UAAU,EAAE;MAAzB,gBACI,6BAAC,wBAAD,qBACI,6BAAC,oBAAD;QAAQ,KAAK,EAAE;MAAf,EADJ,eAEI,6BAAC,MAAD,qBACI,6BAAC,QAAD,OADJ,CAFJ,CADJ,CADI;IAAA;EAHZ,EAVJ,CADJ;AA2BH,CApCD;;AAsCO,IAAMC,MAAgB,GAAG,SAAnBA,MAAmB,GAAM;EAClC,oBACI,6BAAC,iBAAD,qBACI,6BAAC,cAAD,OADJ,CADJ;AAKH,CANM"}
1
+ {"version":3,"names":["Settings","lazy","Loader","children","props","React","cloneElement","MailerSettings","usePermission","canChangeSettings","changeSettings","Module"],"sources":["Module.tsx"],"sourcesContent":["import React, { lazy, Suspense } from \"react\";\nimport { AddMenu as Menu, AddRoute, Plugins } from \"@webiny/app-admin\";\nimport { SecureRoute } from \"@webiny/app-security\";\nimport { AdminLayout } from \"@webiny/app-admin/components/AdminLayout\";\nimport Helmet from \"react-helmet\";\nimport { usePermission } from \"~/hooks/usePermission\";\nimport { CircularProgress } from \"@webiny/ui/Progress\";\n\nconst Settings = lazy(() => import(\"~/views/settings\"));\n\ninterface LoaderProps {\n children: React.ReactElement;\n}\nconst Loader: React.FC<LoaderProps> = ({ children, ...props }) => (\n <Suspense fallback={<CircularProgress />}>{React.cloneElement(children, props)}</Suspense>\n);\n\nconst MailerSettings: React.FC = () => {\n const { canChangeSettings } = usePermission();\n\n const changeSettings = canChangeSettings();\n\n if (!changeSettings) {\n return null;\n }\n\n return (\n <>\n <Menu name={\"settings\"}>\n <Menu name={\"settings.mailer\"} label={\"Mailer\"}>\n <Menu\n name={\"settings.mailer.settings\"}\n label={\"Settings\"}\n path={\"/mailer/settings\"}\n />\n </Menu>\n </Menu>\n <AddRoute\n exact\n path={\"/mailer/settings\"}\n render={() => (\n <SecureRoute permission={\"mailer.settings\"}>\n <AdminLayout>\n <Helmet title={\"Mailer - Settings\"} />\n <Loader>\n <Settings />\n </Loader>\n </AdminLayout>\n </SecureRoute>\n )}\n />\n </>\n );\n};\n\nexport const Module: React.FC = () => {\n return (\n <Plugins>\n <MailerSettings />\n </Plugins>\n );\n};\n"],"mappings":";;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAuD;AAEvD,IAAMA,QAAQ,gBAAG,IAAAC,WAAI,EAAC;EAAA;IAAA;EAAA;AAAA,CAAgC,CAAC;AAKvD,IAAMC,MAA6B,GAAG,SAAhCA,MAA6B;EAAA,IAAMC,QAAQ,QAARA,QAAQ;IAAKC,KAAK;EAAA,oBACvD,6BAAC,eAAQ;IAAC,QAAQ,eAAE,6BAAC,0BAAgB;EAAI,gBAAEC,cAAK,CAACC,YAAY,CAACH,QAAQ,EAAEC,KAAK,CAAC,CAAY;AAAA,CAC7F;AAED,IAAMG,cAAwB,GAAG,SAA3BA,cAAwB,GAAS;EACnC,qBAA8B,IAAAC,6BAAa,GAAE;IAArCC,iBAAiB,kBAAjBA,iBAAiB;EAEzB,IAAMC,cAAc,GAAGD,iBAAiB,EAAE;EAE1C,IAAI,CAACC,cAAc,EAAE;IACjB,OAAO,IAAI;EACf;EAEA,oBACI,yEACI,6BAAC,iBAAI;IAAC,IAAI,EAAE;EAAW,gBACnB,6BAAC,iBAAI;IAAC,IAAI,EAAE,iBAAkB;IAAC,KAAK,EAAE;EAAS,gBAC3C,6BAAC,iBAAI;IACD,IAAI,EAAE,0BAA2B;IACjC,KAAK,EAAE,UAAW;IAClB,IAAI,EAAE;EAAmB,EAC3B,CACC,CACJ,eACP,6BAAC,kBAAQ;IACL,KAAK;IACL,IAAI,EAAE,kBAAmB;IACzB,MAAM,EAAE;MAAA,oBACJ,6BAAC,wBAAW;QAAC,UAAU,EAAE;MAAkB,gBACvC,6BAAC,wBAAW,qBACR,6BAAC,oBAAM;QAAC,KAAK,EAAE;MAAoB,EAAG,eACtC,6BAAC,MAAM,qBACH,6BAAC,QAAQ,OAAG,CACP,CACC,CACJ;IAAA;EAChB,EACJ,CACH;AAEX,CAAC;AAEM,IAAMC,MAAgB,GAAG,SAAnBA,MAAgB,GAAS;EAClC,oBACI,6BAAC,iBAAO,qBACJ,6BAAC,cAAc,OAAG,CACZ;AAElB,CAAC;AAAC"}
@@ -1,58 +1,36 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
-
5
4
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
6
-
7
5
  Object.defineProperty(exports, "__esModule", {
8
6
  value: true
9
7
  });
10
8
  exports.Settings = void 0;
11
-
12
9
  var _regeneratorRuntime2 = _interopRequireDefault(require("@babel/runtime/helpers/regeneratorRuntime"));
13
-
14
10
  var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
15
-
16
11
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
17
-
18
12
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
19
-
20
13
  var _react = _interopRequireWildcard(require("react"));
21
-
22
14
  var _appAdmin = require("@webiny/app-admin");
23
-
24
15
  var _reactComponents = require("@apollo/react-components");
25
-
26
16
  var _form = require("@webiny/form");
27
-
28
17
  var _SimpleForm = require("@webiny/app-admin/components/SimpleForm");
29
-
30
18
  var _Progress = require("@webiny/ui/Progress");
31
-
32
19
  var _Grid = require("@webiny/ui/Grid");
33
-
34
20
  var _Input = require("@webiny/ui/Input");
35
-
36
21
  var _validation = require("@webiny/validation");
37
-
38
22
  var _Button = require("@webiny/ui/Button");
39
-
40
23
  var _graphql = require("./graphql");
41
-
42
24
  var _Alert = require("@webiny/ui/Alert");
43
-
44
25
  var displayErrors = function displayErrors(errors) {
45
26
  if (!errors) {
46
27
  return null;
47
28
  }
48
-
49
29
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, errors.map(function (error) {
50
30
  var field = error.path[0];
51
-
52
31
  if (!field) {
53
32
  return null;
54
33
  }
55
-
56
34
  return /*#__PURE__*/_react.default.createElement(_Alert.Alert, {
57
35
  key: "".concat(field),
58
36
  title: error.message,
@@ -60,24 +38,19 @@ var displayErrors = function displayErrors(errors) {
60
38
  });
61
39
  }));
62
40
  };
63
-
64
41
  var Settings = function Settings() {
65
42
  var _useSnackbar = (0, _appAdmin.useSnackbar)(),
66
- showSnackbar = _useSnackbar.showSnackbar;
67
-
43
+ showSnackbar = _useSnackbar.showSnackbar;
68
44
  var password = (0, _react.useRef)();
69
-
70
45
  var _useState = (0, _react.useState)(),
71
- _useState2 = (0, _slicedToArray2.default)(_useState, 2),
72
- errors = _useState2[0],
73
- setErrors = _useState2[1];
74
-
46
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
47
+ errors = _useState2[0],
48
+ setErrors = _useState2[1];
75
49
  (0, _react.useEffect)(function () {
76
50
  var t = setTimeout(function () {
77
51
  if (!password.current) {
78
52
  return;
79
53
  }
80
-
81
54
  password.current.value = "";
82
55
  }, 300);
83
56
  return function () {
@@ -88,72 +61,59 @@ var Settings = function Settings() {
88
61
  query: _graphql.GET_SETTINGS_QUERY
89
62
  }, function (_ref) {
90
63
  var response = _ref.data,
91
- queryInProgress = _ref.loading;
64
+ queryInProgress = _ref.loading;
92
65
  return /*#__PURE__*/_react.default.createElement(_reactComponents.Mutation, {
93
66
  mutation: _graphql.SAVE_SETTINGS_MUTATION
94
67
  }, function (update, result) {
95
68
  var _ref2 = (response === null || response === void 0 ? void 0 : response.mailer.settings) || {},
96
- settingsData = _ref2.data,
97
- settingsError = _ref2.error;
98
-
69
+ settingsData = _ref2.data,
70
+ settingsError = _ref2.error;
99
71
  var mutationInProgress = result.loading;
100
-
101
72
  var _onSubmit = /*#__PURE__*/function () {
102
73
  var _ref3 = (0, _asyncToGenerator2.default)( /*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee(data) {
103
74
  return (0, _regeneratorRuntime2.default)().wrap(function _callee$(_context) {
104
- while (1) {
105
- switch (_context.prev = _context.next) {
106
- case 0:
107
- setErrors([]);
108
- _context.next = 3;
109
- return update({
110
- variables: {
111
- data: data
112
- },
113
- update: function update(cache, result) {
114
- var _result$data;
115
-
116
- var data = structuredClone(cache.readQuery({
117
- query: _graphql.GET_SETTINGS_QUERY
118
- }));
119
-
120
- var _ref4 = ((_result$data = result.data) === null || _result$data === void 0 ? void 0 : _result$data.mailer.settings) || {},
121
- updateData = _ref4.data,
122
- updateError = _ref4.error;
123
-
124
- var errors = updateError === null || updateError === void 0 ? void 0 : updateError.data.errors;
125
-
126
- if (errors) {
127
- setErrors(errors);
128
- showSnackbar("Settings not updated! Please check your network and console logs for detailed information.");
129
- return;
130
- }
131
-
132
- data.mailer.settings.data = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, settingsData), updateData);
133
- cache.writeQuery({
134
- query: _graphql.GET_SETTINGS_QUERY,
135
- data: data
136
- });
137
- showSnackbar("Settings updated successfully.");
75
+ while (1) switch (_context.prev = _context.next) {
76
+ case 0:
77
+ setErrors([]);
78
+ _context.next = 3;
79
+ return update({
80
+ variables: {
81
+ data: data
82
+ },
83
+ update: function update(cache, result) {
84
+ var _result$data;
85
+ var data = structuredClone(cache.readQuery({
86
+ query: _graphql.GET_SETTINGS_QUERY
87
+ }));
88
+ var _ref4 = ((_result$data = result.data) === null || _result$data === void 0 ? void 0 : _result$data.mailer.settings) || {},
89
+ updateData = _ref4.data,
90
+ updateError = _ref4.error;
91
+ var errors = updateError === null || updateError === void 0 ? void 0 : updateError.data.errors;
92
+ if (errors) {
93
+ setErrors(errors);
94
+ showSnackbar("Settings not updated! Please check your network and console logs for detailed information.");
95
+ return;
138
96
  }
139
- });
140
-
141
- case 3:
142
- case "end":
143
- return _context.stop();
144
- }
97
+ data.mailer.settings.data = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, settingsData), updateData);
98
+ cache.writeQuery({
99
+ query: _graphql.GET_SETTINGS_QUERY,
100
+ data: data
101
+ });
102
+ showSnackbar("Settings updated successfully.");
103
+ }
104
+ });
105
+ case 3:
106
+ case "end":
107
+ return _context.stop();
145
108
  }
146
109
  }, _callee);
147
110
  }));
148
-
149
111
  return function onSubmit(_x) {
150
112
  return _ref3.apply(this, arguments);
151
113
  };
152
114
  }();
153
-
154
115
  if (settingsError) {
155
116
  var _settingsError$data;
156
-
157
117
  return /*#__PURE__*/_react.default.createElement(_appAdmin.CenteredView, null, /*#__PURE__*/_react.default.createElement(_SimpleForm.SimpleFormHeader, {
158
118
  title: "Mailer Settings"
159
119
  }), /*#__PURE__*/_react.default.createElement(_Grid.Grid, {
@@ -167,13 +127,10 @@ var Settings = function Settings() {
167
127
  type: "danger"
168
128
  }), ((_settingsError$data = settingsError.data) === null || _settingsError$data === void 0 ? void 0 : _settingsError$data.description) && /*#__PURE__*/_react.default.createElement("p", null, settingsError.data.description))));
169
129
  }
170
-
171
130
  var passwordValidators = [];
172
-
173
131
  if (!(settingsData !== null && settingsData !== void 0 && settingsData.user)) {
174
132
  passwordValidators.push(_validation.validation.create("required,minLength:5"));
175
133
  }
176
-
177
134
  return /*#__PURE__*/_react.default.createElement(_appAdmin.CenteredView, null, /*#__PURE__*/_react.default.createElement(_form.Form, {
178
135
  data: settingsData || {},
179
136
  onSubmit: function onSubmit(data) {
@@ -184,7 +141,7 @@ var Settings = function Settings() {
184
141
  }
185
142
  }, function (_ref5) {
186
143
  var Bind = _ref5.Bind,
187
- form = _ref5.form;
144
+ form = _ref5.form;
188
145
  return /*#__PURE__*/_react.default.createElement(_SimpleForm.SimpleForm, null, (queryInProgress || mutationInProgress) && /*#__PURE__*/_react.default.createElement(_Progress.CircularProgress, null), /*#__PURE__*/_react.default.createElement(_SimpleForm.SimpleFormHeader, {
189
146
  title: "Mailer Settings"
190
147
  }), /*#__PURE__*/_react.default.createElement(_SimpleForm.SimpleFormContent, null, displayErrors(errors), /*#__PURE__*/_react.default.createElement(_Grid.Grid, null, /*#__PURE__*/_react.default.createElement(_Grid.Cell, {
@@ -220,7 +177,8 @@ var Settings = function Settings() {
220
177
  label: "Password",
221
178
  type: "password",
222
179
  autoComplete: "new-password",
223
- value: "" // @ts-ignore
180
+ value: ""
181
+ // @ts-ignore
224
182
  ,
225
183
  inputRef: password
226
184
  }))), /*#__PURE__*/_react.default.createElement(_Grid.Cell, {
@@ -248,5 +206,4 @@ var Settings = function Settings() {
248
206
  });
249
207
  });
250
208
  };
251
-
252
209
  exports.Settings = Settings;
@@ -1 +1 @@
1
- {"version":3,"names":["displayErrors","errors","map","error","field","path","message","Settings","useSnackbar","showSnackbar","password","useRef","useState","setErrors","useEffect","t","setTimeout","current","value","clearTimeout","GET_SETTINGS_QUERY","response","data","queryInProgress","loading","SAVE_SETTINGS_MUTATION","update","result","mailer","settings","settingsData","settingsError","mutationInProgress","onSubmit","variables","cache","structuredClone","readQuery","query","updateData","updateError","writeQuery","backgroundColor","description","passwordValidators","user","push","validation","create","Bind","form","ev","submit"],"sources":["Settings.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from \"react\";\nimport { CenteredView, useSnackbar } from \"@webiny/app-admin\";\nimport { Mutation, Query } from \"@apollo/react-components\";\nimport { Form } from \"@webiny/form\";\nimport {\n SimpleForm,\n SimpleFormContent,\n SimpleFormFooter,\n SimpleFormHeader\n} from \"@webiny/app-admin/components/SimpleForm\";\nimport { CircularProgress } from \"@webiny/ui/Progress\";\nimport { Cell, Grid } from \"@webiny/ui/Grid\";\nimport { Input } from \"@webiny/ui/Input\";\nimport { validation } from \"@webiny/validation\";\nimport { ButtonPrimary } from \"@webiny/ui/Button\";\nimport {\n GET_SETTINGS_QUERY,\n SettingsQueryResponse,\n SAVE_SETTINGS_MUTATION,\n SaveSettingsMutationVariables,\n SaveSettingsMutationResponse\n} from \"./graphql\";\nimport { TransportSettings, ValidationError } from \"~/types\";\nimport { Alert } from \"@webiny/ui/Alert\";\nimport { Validator } from \"@webiny/validation/types\";\n\nconst displayErrors = (errors?: ValidationError[]) => {\n if (!errors) {\n return null;\n }\n return (\n <>\n {errors.map(error => {\n const field = error.path[0];\n if (!field) {\n return null;\n }\n return <Alert key={`${field}`} title={error.message} type=\"danger\" />;\n })}\n </>\n );\n};\n\nexport const Settings: React.FC = () => {\n const { showSnackbar } = useSnackbar();\n\n const password = useRef<HTMLInputElement>();\n\n const [errors, setErrors] = useState<ValidationError[] | undefined>();\n\n useEffect(() => {\n const t = setTimeout(() => {\n if (!password.current) {\n return;\n }\n password.current.value = \"\";\n }, 300);\n\n return () => {\n clearTimeout(t);\n };\n }, []);\n\n return (\n <Query<SettingsQueryResponse> query={GET_SETTINGS_QUERY}>\n {({ data: response, loading: queryInProgress }) => (\n <Mutation<SaveSettingsMutationResponse, SaveSettingsMutationVariables>\n mutation={SAVE_SETTINGS_MUTATION}\n >\n {(update, result) => {\n const { data: settingsData, error: settingsError } =\n response?.mailer.settings || {};\n const { loading: mutationInProgress } = result;\n\n const onSubmit = async (data: TransportSettings): Promise<void> => {\n setErrors([]);\n await update({\n variables: {\n data\n },\n update: (cache, result) => {\n const data = structuredClone(\n cache.readQuery({ query: GET_SETTINGS_QUERY })\n );\n\n const { data: updateData, error: updateError } =\n result.data?.mailer.settings || {};\n\n const errors = updateError?.data.errors;\n if (errors) {\n setErrors(errors);\n showSnackbar(\n \"Settings not updated! Please check your network and console logs for detailed information.\"\n );\n return;\n }\n\n data.mailer.settings.data = {\n ...settingsData,\n ...updateData\n };\n\n cache.writeQuery({\n query: GET_SETTINGS_QUERY,\n data\n });\n showSnackbar(\"Settings updated successfully.\");\n }\n });\n };\n if (settingsError) {\n return (\n <CenteredView>\n <SimpleFormHeader title=\"Mailer Settings\" />\n <Grid style={{ backgroundColor: \"#FFFFFF\" }}>\n <Cell span={12}>\n <Alert title={settingsError.message} type=\"danger\" />\n {settingsError.data?.description && (\n <p>{settingsError.data.description}</p>\n )}\n </Cell>\n </Grid>\n </CenteredView>\n );\n }\n\n const passwordValidators: Validator[] = [];\n if (!settingsData?.user) {\n passwordValidators.push(validation.create(\"required,minLength:5\"));\n }\n\n return (\n <CenteredView>\n <Form\n data={settingsData || {}}\n onSubmit={data => {\n /**\n * We are positive that data is TransportSettings.\n */\n onSubmit(data as unknown as TransportSettings);\n }}\n >\n {({ Bind, form }) => (\n <SimpleForm>\n {(queryInProgress || mutationInProgress) && (\n <CircularProgress />\n )}\n <SimpleFormHeader title=\"Mailer Settings\" />\n <SimpleFormContent>\n {displayErrors(errors)}\n <Grid>\n <Cell span={12}>\n <Bind\n name={\"host\"}\n validators={[\n validation.create(\n \"required,minLength:1\"\n )\n ]}\n >\n <Input type=\"text\" label=\"Hostname\" />\n </Bind>\n </Cell>\n <Cell span={12}>\n <Bind name={\"port\"}>\n <Input type=\"number\" label=\"Port\" />\n </Bind>\n </Cell>\n <Cell span={12}>\n <Bind\n name={\"user\"}\n validators={[\n validation.create(\n \"required,minLength:1\"\n )\n ]}\n >\n <Input\n type=\"text\"\n label=\"User\"\n autoComplete=\"new-password\"\n />\n </Bind>\n </Cell>\n <Cell span={12}>\n <Bind\n name={\"password\"}\n validators={passwordValidators}\n >\n <Input\n label=\"Password\"\n type=\"password\"\n autoComplete=\"new-password\"\n value={\"\"}\n // @ts-ignore\n inputRef={password}\n />\n </Bind>\n </Cell>\n <Cell span={12}>\n <Bind\n name={\"from\"}\n validators={[\n validation.create(\n \"required,minLength:1,email\"\n )\n ]}\n >\n <Input type=\"text\" label=\"Mail from\" />\n </Bind>\n </Cell>\n <Cell span={12}>\n <Bind\n name={\"replyTo\"}\n validators={[\n validation.create(\"email\")\n ]}\n >\n <Input\n type=\"text\"\n label=\"Mail reply-to\"\n />\n </Bind>\n </Cell>\n </Grid>\n </SimpleFormContent>\n <SimpleFormFooter>\n <ButtonPrimary\n onClick={ev => {\n form.submit(ev);\n }}\n >\n Save Settings\n </ButtonPrimary>\n </SimpleFormFooter>\n </SimpleForm>\n )}\n </Form>\n </CenteredView>\n );\n }}\n </Mutation>\n )}\n </Query>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["displayErrors","errors","map","error","field","path","message","Settings","useSnackbar","showSnackbar","password","useRef","useState","setErrors","useEffect","t","setTimeout","current","value","clearTimeout","GET_SETTINGS_QUERY","response","data","queryInProgress","loading","SAVE_SETTINGS_MUTATION","update","result","mailer","settings","settingsData","settingsError","mutationInProgress","onSubmit","variables","cache","structuredClone","readQuery","query","updateData","updateError","writeQuery","backgroundColor","description","passwordValidators","user","push","validation","create","Bind","form","ev","submit"],"sources":["Settings.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from \"react\";\nimport { CenteredView, useSnackbar } from \"@webiny/app-admin\";\nimport { Mutation, Query } from \"@apollo/react-components\";\nimport { Form } from \"@webiny/form\";\nimport {\n SimpleForm,\n SimpleFormContent,\n SimpleFormFooter,\n SimpleFormHeader\n} from \"@webiny/app-admin/components/SimpleForm\";\nimport { CircularProgress } from \"@webiny/ui/Progress\";\nimport { Cell, Grid } from \"@webiny/ui/Grid\";\nimport { Input } from \"@webiny/ui/Input\";\nimport { validation } from \"@webiny/validation\";\nimport { ButtonPrimary } from \"@webiny/ui/Button\";\nimport {\n GET_SETTINGS_QUERY,\n SettingsQueryResponse,\n SAVE_SETTINGS_MUTATION,\n SaveSettingsMutationVariables,\n SaveSettingsMutationResponse\n} from \"./graphql\";\nimport { TransportSettings, ValidationError } from \"~/types\";\nimport { Alert } from \"@webiny/ui/Alert\";\nimport { Validator } from \"@webiny/validation/types\";\n\nconst displayErrors = (errors?: ValidationError[]) => {\n if (!errors) {\n return null;\n }\n return (\n <>\n {errors.map(error => {\n const field = error.path[0];\n if (!field) {\n return null;\n }\n return <Alert key={`${field}`} title={error.message} type=\"danger\" />;\n })}\n </>\n );\n};\n\nexport const Settings: React.FC = () => {\n const { showSnackbar } = useSnackbar();\n\n const password = useRef<HTMLInputElement>();\n\n const [errors, setErrors] = useState<ValidationError[] | undefined>();\n\n useEffect(() => {\n const t = setTimeout(() => {\n if (!password.current) {\n return;\n }\n password.current.value = \"\";\n }, 300);\n\n return () => {\n clearTimeout(t);\n };\n }, []);\n\n return (\n <Query<SettingsQueryResponse> query={GET_SETTINGS_QUERY}>\n {({ data: response, loading: queryInProgress }) => (\n <Mutation<SaveSettingsMutationResponse, SaveSettingsMutationVariables>\n mutation={SAVE_SETTINGS_MUTATION}\n >\n {(update, result) => {\n const { data: settingsData, error: settingsError } =\n response?.mailer.settings || {};\n const { loading: mutationInProgress } = result;\n\n const onSubmit = async (data: TransportSettings): Promise<void> => {\n setErrors([]);\n await update({\n variables: {\n data\n },\n update: (cache, result) => {\n const data = structuredClone(\n cache.readQuery({ query: GET_SETTINGS_QUERY })\n );\n\n const { data: updateData, error: updateError } =\n result.data?.mailer.settings || {};\n\n const errors = updateError?.data.errors;\n if (errors) {\n setErrors(errors);\n showSnackbar(\n \"Settings not updated! Please check your network and console logs for detailed information.\"\n );\n return;\n }\n\n data.mailer.settings.data = {\n ...settingsData,\n ...updateData\n };\n\n cache.writeQuery({\n query: GET_SETTINGS_QUERY,\n data\n });\n showSnackbar(\"Settings updated successfully.\");\n }\n });\n };\n if (settingsError) {\n return (\n <CenteredView>\n <SimpleFormHeader title=\"Mailer Settings\" />\n <Grid style={{ backgroundColor: \"#FFFFFF\" }}>\n <Cell span={12}>\n <Alert title={settingsError.message} type=\"danger\" />\n {settingsError.data?.description && (\n <p>{settingsError.data.description}</p>\n )}\n </Cell>\n </Grid>\n </CenteredView>\n );\n }\n\n const passwordValidators: Validator[] = [];\n if (!settingsData?.user) {\n passwordValidators.push(validation.create(\"required,minLength:5\"));\n }\n\n return (\n <CenteredView>\n <Form\n data={settingsData || {}}\n onSubmit={data => {\n /**\n * We are positive that data is TransportSettings.\n */\n onSubmit(data as unknown as TransportSettings);\n }}\n >\n {({ Bind, form }) => (\n <SimpleForm>\n {(queryInProgress || mutationInProgress) && (\n <CircularProgress />\n )}\n <SimpleFormHeader title=\"Mailer Settings\" />\n <SimpleFormContent>\n {displayErrors(errors)}\n <Grid>\n <Cell span={12}>\n <Bind\n name={\"host\"}\n validators={[\n validation.create(\n \"required,minLength:1\"\n )\n ]}\n >\n <Input type=\"text\" label=\"Hostname\" />\n </Bind>\n </Cell>\n <Cell span={12}>\n <Bind name={\"port\"}>\n <Input type=\"number\" label=\"Port\" />\n </Bind>\n </Cell>\n <Cell span={12}>\n <Bind\n name={\"user\"}\n validators={[\n validation.create(\n \"required,minLength:1\"\n )\n ]}\n >\n <Input\n type=\"text\"\n label=\"User\"\n autoComplete=\"new-password\"\n />\n </Bind>\n </Cell>\n <Cell span={12}>\n <Bind\n name={\"password\"}\n validators={passwordValidators}\n >\n <Input\n label=\"Password\"\n type=\"password\"\n autoComplete=\"new-password\"\n value={\"\"}\n // @ts-ignore\n inputRef={password}\n />\n </Bind>\n </Cell>\n <Cell span={12}>\n <Bind\n name={\"from\"}\n validators={[\n validation.create(\n \"required,minLength:1,email\"\n )\n ]}\n >\n <Input type=\"text\" label=\"Mail from\" />\n </Bind>\n </Cell>\n <Cell span={12}>\n <Bind\n name={\"replyTo\"}\n validators={[\n validation.create(\"email\")\n ]}\n >\n <Input\n type=\"text\"\n label=\"Mail reply-to\"\n />\n </Bind>\n </Cell>\n </Grid>\n </SimpleFormContent>\n <SimpleFormFooter>\n <ButtonPrimary\n onClick={ev => {\n form.submit(ev);\n }}\n >\n Save Settings\n </ButtonPrimary>\n </SimpleFormFooter>\n </SimpleForm>\n )}\n </Form>\n </CenteredView>\n );\n }}\n </Mutation>\n )}\n </Query>\n );\n};\n"],"mappings":"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"}
@@ -1,18 +1,13 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.SAVE_SETTINGS_MUTATION = exports.GET_SETTINGS_QUERY = void 0;
9
-
10
8
  var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
11
-
12
9
  var _graphqlTag = _interopRequireDefault(require("graphql-tag"));
13
-
14
10
  var _templateObject, _templateObject2;
15
-
16
11
  var SETTINGS_FIELDS = "\n {\n host\n port\n user\n from\n replyTo\n }\n";
17
12
  var ERROR_FIELDS = "\n {\n message\n code\n data\n }\n";
18
13
  var GET_SETTINGS_QUERY = (0, _graphqlTag.default)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n query GetMailerSettings {\n mailer {\n settings: getSettings {\n data ", "\n error ", "\n }\n }\n }\n"])), SETTINGS_FIELDS, ERROR_FIELDS);
@@ -1 +1 @@
1
- {"version":3,"names":["SETTINGS_FIELDS","ERROR_FIELDS","GET_SETTINGS_QUERY","gql","SAVE_SETTINGS_MUTATION"],"sources":["graphql.ts"],"sourcesContent":["import gql from \"graphql-tag\";\nimport { ApiError, TransportSettings, ValidationErrors } from \"~/types\";\n\nconst SETTINGS_FIELDS = `\n {\n host\n port\n user\n from\n replyTo\n }\n`;\n\nconst ERROR_FIELDS = `\n {\n message\n code\n data\n }\n`;\n\nexport interface SettingsQueryResponse {\n mailer: {\n settings: {\n data: TransportSettings | null;\n error: ApiError | null;\n };\n };\n}\nexport const GET_SETTINGS_QUERY = gql`\n query GetMailerSettings {\n mailer {\n settings: getSettings {\n data ${SETTINGS_FIELDS}\n error ${ERROR_FIELDS}\n }\n }\n }\n`;\n\nexport interface SaveSettingsMutationVariables {\n data: TransportSettings & {\n password?: string;\n };\n}\n\nexport interface SaveSettingsMutationResponse {\n mailer: {\n settings: {\n data: TransportSettings | null;\n error: ApiError<ValidationErrors> | null;\n };\n };\n}\nexport const SAVE_SETTINGS_MUTATION = gql`\n mutation SaveTransportSettings($data: MailerTransportSettingsInput!) {\n mailer {\n settings: saveSettings(data: $data) {\n data ${SETTINGS_FIELDS}\n error ${ERROR_FIELDS}\n }\n }\n }\n`;\n"],"mappings":";;;;;;;;;;;AAAA;;;;AAGA,IAAMA,eAAe,8FAArB;AAUA,IAAMC,YAAY,kEAAlB;AAgBO,IAAMC,kBAAkB,OAAGC,mBAAH,qQAIRH,eAJQ,EAKPC,YALO,CAAxB;;AAyBA,IAAMG,sBAAsB,OAAGD,mBAAH,kUAIZH,eAJY,EAKXC,YALW,CAA5B"}
1
+ {"version":3,"names":["SETTINGS_FIELDS","ERROR_FIELDS","GET_SETTINGS_QUERY","gql","SAVE_SETTINGS_MUTATION"],"sources":["graphql.ts"],"sourcesContent":["import gql from \"graphql-tag\";\nimport { ApiError, TransportSettings, ValidationErrors } from \"~/types\";\n\nconst SETTINGS_FIELDS = `\n {\n host\n port\n user\n from\n replyTo\n }\n`;\n\nconst ERROR_FIELDS = `\n {\n message\n code\n data\n }\n`;\n\nexport interface SettingsQueryResponse {\n mailer: {\n settings: {\n data: TransportSettings | null;\n error: ApiError | null;\n };\n };\n}\nexport const GET_SETTINGS_QUERY = gql`\n query GetMailerSettings {\n mailer {\n settings: getSettings {\n data ${SETTINGS_FIELDS}\n error ${ERROR_FIELDS}\n }\n }\n }\n`;\n\nexport interface SaveSettingsMutationVariables {\n data: TransportSettings & {\n password?: string;\n };\n}\n\nexport interface SaveSettingsMutationResponse {\n mailer: {\n settings: {\n data: TransportSettings | null;\n error: ApiError<ValidationErrors> | null;\n };\n };\n}\nexport const SAVE_SETTINGS_MUTATION = gql`\n mutation SaveTransportSettings($data: MailerTransportSettingsInput!) {\n mailer {\n settings: saveSettings(data: $data) {\n data ${SETTINGS_FIELDS}\n error ${ERROR_FIELDS}\n }\n }\n }\n`;\n"],"mappings":";;;;;;;;AAAA;AAA8B;AAG9B,IAAMA,eAAe,8FAQpB;AAED,IAAMC,YAAY,kEAMjB;AAUM,IAAMC,kBAAkB,OAAGC,mBAAG,qQAIdH,eAAe,EACdC,YAAY,CAInC;AAAC;AAgBK,IAAMG,sBAAsB,OAAGD,mBAAG,kUAIlBH,eAAe,EACdC,YAAY,CAInC;AAAC"}
@@ -4,8 +4,6 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  var _Settings = require("./Settings");
9
-
10
8
  var _default = _Settings.Settings;
11
9
  exports.default = _default;
@@ -1 +1 @@
1
- {"version":3,"names":["Settings"],"sources":["index.ts"],"sourcesContent":["import { Settings } from \"./Settings\";\n\nexport default Settings;\n"],"mappings":";;;;;;;AAAA;;eAEeA,kB"}
1
+ {"version":3,"names":["Settings"],"sources":["index.ts"],"sourcesContent":["import { Settings } from \"./Settings\";\n\nexport default Settings;\n"],"mappings":";;;;;;AAAA;AAAsC,eAEvBA,kBAAQ;AAAA"}