@iobroker/adapter-react-v5 4.11.3 → 4.11.4

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.
Files changed (38) hide show
  1. package/Components/IconPicker.d.ts +9 -3
  2. package/Components/IconSelector.d.ts +1 -1
  3. package/Components/SimpleCron/cron2text.d.ts +4 -6
  4. package/Components/SimpleCron/cron2text.js +463 -481
  5. package/Components/SimpleCron/cronText.d.ts +1 -1
  6. package/Components/SimpleCron/cronText.js +46 -48
  7. package/Components/SimpleCron/index.d.ts +38 -7
  8. package/Components/SimpleCron/index.js +579 -729
  9. package/Components/SimpleCron/jquery.cron.locale.d.ts +28 -1
  10. package/Components/SimpleCron/jquery.cron.locale.js +530 -336
  11. package/Dialogs/ComplexCron.d.ts +13 -12
  12. package/Dialogs/ComplexCron.js +59 -130
  13. package/Dialogs/Cron.d.ts +17 -14
  14. package/Dialogs/Cron.js +92 -183
  15. package/Dialogs/SimpleCron.d.ts +11 -11
  16. package/Dialogs/SimpleCron.js +49 -119
  17. package/GenericApp.d.ts +7 -2
  18. package/GenericApp.js +3 -25
  19. package/README.md +3 -0
  20. package/i18n/de.json +2 -1
  21. package/i18n/en.json +2 -1
  22. package/i18n/es.json +2 -1
  23. package/i18n/fr.json +2 -1
  24. package/i18n/it.json +2 -1
  25. package/i18n/nl.json +2 -1
  26. package/i18n/pl.json +2 -1
  27. package/i18n/pt.json +2 -1
  28. package/i18n/ru.json +2 -1
  29. package/i18n/uk.json +2 -1
  30. package/i18n/zh-cn.json +2 -1
  31. package/package.json +1 -1
  32. package/Components/SimpleCron/cron2text.js.map +0 -1
  33. package/Components/SimpleCron/cronText.js.map +0 -1
  34. package/Components/SimpleCron/index.js.map +0 -1
  35. package/Components/SimpleCron/jquery.cron.locale.js.map +0 -1
  36. package/Dialogs/ComplexCron.js.map +0 -1
  37. package/Dialogs/Cron.js.map +0 -1
  38. package/Dialogs/SimpleCron.js.map +0 -1
@@ -1,131 +1,61 @@
1
1
  "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports["default"] = void 0;
8
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
9
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
10
- var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
11
- var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
12
- var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
13
- var _react = _interopRequireDefault(require("react"));
14
- var _propTypes = _interopRequireDefault(require("prop-types"));
15
- var _styles = require("@mui/styles");
16
- var _Button = _interopRequireDefault(require("@mui/material/Button"));
17
- var _DialogTitle = _interopRequireDefault(require("@mui/material/DialogTitle"));
18
- var _DialogContent = _interopRequireDefault(require("@mui/material/DialogContent"));
19
- var _DialogActions = _interopRequireDefault(require("@mui/material/DialogActions"));
20
- var _Dialog = _interopRequireDefault(require("@mui/material/Dialog"));
21
- var _Check = _interopRequireDefault(require("@mui/icons-material/Check"));
22
- var _Cancel = _interopRequireDefault(require("@mui/icons-material/Cancel"));
23
- var _SimpleCron = _interopRequireDefault(require("../Components/SimpleCron"));
24
- var _i18n = _interopRequireDefault(require("../i18n"));
25
- function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2["default"])(o), (0, _possibleConstructorReturn2["default"])(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2["default"])(t).constructor) : o.apply(t, e)); }
26
- function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const react_1 = __importDefault(require("react"));
7
+ const styles_1 = require("@mui/styles");
8
+ const material_1 = require("@mui/material");
9
+ const icons_material_1 = require("@mui/icons-material");
10
+ const SimpleCron_1 = __importDefault(require("../Components/SimpleCron"));
11
+ const i18n_1 = __importDefault(require("../i18n"));
27
12
  // Generates cron expression
28
-
29
- var styles = function styles() {
30
- return {
13
+ const styles = {
31
14
  headerID: {
32
- fontWeight: 'bold',
33
- fontStyle: 'italic'
15
+ fontWeight: 'bold',
16
+ fontStyle: 'italic',
34
17
  },
35
18
  radio: {
36
- display: 'inline-block'
19
+ display: 'inline-block',
37
20
  },
38
21
  dialogPaper: {
39
- height: 'calc(100% - 96px)'
40
- }
41
- };
22
+ height: 'calc(100% - 96px)',
23
+ },
42
24
  };
43
- var DialogSimpleCron = /*#__PURE__*/function (_React$Component) {
44
- (0, _inherits2["default"])(DialogSimpleCron, _React$Component);
45
- function DialogSimpleCron(props) {
46
- var _this;
47
- (0, _classCallCheck2["default"])(this, DialogSimpleCron);
48
- _this = _callSuper(this, DialogSimpleCron, [props]);
49
- var cron;
50
- if (_this.props.cron && typeof _this.props.cron === 'string' && _this.props.cron.replace(/^["']/, '')[0] !== '{') {
51
- cron = _this.props.cron.replace(/['"]/g, '').trim();
52
- } else {
53
- cron = _this.props.cron || '{}';
54
- if (typeof cron === 'string') {
55
- cron = cron.replace(/^["']/, '').replace(/["']\n?$/, '');
56
- }
25
+ class DialogSimpleCron extends react_1.default.Component {
26
+ constructor(props) {
27
+ super(props);
28
+ let cron;
29
+ if (this.props.cron && typeof this.props.cron === 'string' && this.props.cron.replace(/^["']/, '')[0] !== '{') {
30
+ cron = this.props.cron.replace(/['"]/g, '').trim();
31
+ }
32
+ else {
33
+ cron = this.props.cron || '{}';
34
+ if (typeof cron === 'string') {
35
+ cron = cron.replace(/^["']/, '').replace(/["']\n?$/, '');
36
+ }
37
+ }
38
+ this.state = {
39
+ cron,
40
+ };
57
41
  }
58
- _this.state = {
59
- cron: cron
60
- };
61
- return _this;
62
- }
63
- (0, _createClass2["default"])(DialogSimpleCron, [{
64
- key: "handleCancel",
65
- value: function handleCancel() {
66
- this.props.onClose();
42
+ handleCancel() {
43
+ this.props.onClose();
67
44
  }
68
- }, {
69
- key: "handleOk",
70
- value: function handleOk() {
71
- this.props.onOk(this.state.cron);
72
- this.props.onClose();
45
+ handleOk() {
46
+ this.props.onOk(this.state.cron);
47
+ this.props.onClose();
73
48
  }
74
- }, {
75
- key: "render",
76
- value: function render() {
77
- var _this2 = this;
78
- return /*#__PURE__*/_react["default"].createElement(_Dialog["default"], {
79
- onClose: function onClose() {},
80
- maxWidth: "md",
81
- fullWidth: true,
82
- classes: {
83
- paper: this.props.classes.dialogPaper
84
- },
85
- open: !0,
86
- "aria-labelledby": "cron-dialog-title"
87
- }, /*#__PURE__*/_react["default"].createElement(_DialogTitle["default"], {
88
- id: "cron-dialog-title"
89
- }, this.props.title || _i18n["default"].t('ra_Define CRON...')), /*#__PURE__*/_react["default"].createElement(_DialogContent["default"], {
90
- style: {
91
- height: '100%',
92
- overflow: 'hidden'
93
- }
94
- }, /*#__PURE__*/_react["default"].createElement(_SimpleCron["default"], {
95
- cronExpression: this.state.cron,
96
- onChange: function onChange(cron) {
97
- return _this2.setState({
98
- cron: cron
99
- });
100
- },
101
- language: _i18n["default"].getLanguage()
102
- })), /*#__PURE__*/_react["default"].createElement(_DialogActions["default"], null, /*#__PURE__*/_react["default"].createElement(_Button["default"], {
103
- variant: "contained",
104
- onClick: function onClick() {
105
- return _this2.handleOk();
106
- },
107
- color: "primary",
108
- startIcon: /*#__PURE__*/_react["default"].createElement(_Check["default"], null)
109
- }, this.props.ok || _i18n["default"].t('ra_Ok')), /*#__PURE__*/_react["default"].createElement(_Button["default"], {
110
- variant: "contained",
111
- onClick: function onClick() {
112
- return _this2.handleCancel();
113
- },
114
- color: "grey",
115
- startIcon: /*#__PURE__*/_react["default"].createElement(_Cancel["default"], null)
116
- }, this.props.cancel || _i18n["default"].t('ra_Cancel'))));
49
+ render() {
50
+ return react_1.default.createElement(material_1.Dialog, { onClose: () => { }, maxWidth: "md", fullWidth: true, classes: { paper: this.props.classes.dialogPaper }, open: !0, "aria-labelledby": "cron-dialog-title" },
51
+ react_1.default.createElement(material_1.DialogTitle, { id: "cron-dialog-title" }, this.props.title || i18n_1.default.t('ra_Define CRON...')),
52
+ react_1.default.createElement(material_1.DialogContent, { style: { height: '100%', overflow: 'hidden' } },
53
+ react_1.default.createElement(SimpleCron_1.default, { cronExpression: this.state.cron, onChange: cron => this.setState({ cron }), language: i18n_1.default.getLanguage() })),
54
+ react_1.default.createElement(material_1.DialogActions, null,
55
+ react_1.default.createElement(material_1.Button, { variant: "contained", onClick: () => this.handleOk(), color: "primary", startIcon: react_1.default.createElement(icons_material_1.Check, null) }, this.props.ok || i18n_1.default.t('ra_Ok')),
56
+ react_1.default.createElement(material_1.Button, { variant: "contained", onClick: () => this.handleCancel(),
57
+ // @ts-expect-error grey is allowed color
58
+ color: "grey", startIcon: react_1.default.createElement(icons_material_1.Cancel, null) }, this.props.cancel || i18n_1.default.t('ra_Cancel'))));
117
59
  }
118
- }]);
119
- return DialogSimpleCron;
120
- }(_react["default"].Component);
121
- DialogSimpleCron.propTypes = {
122
- classes: _propTypes["default"].object,
123
- onClose: _propTypes["default"].func.isRequired,
124
- onOk: _propTypes["default"].func.isRequired,
125
- title: _propTypes["default"].string,
126
- cron: _propTypes["default"].string,
127
- cancel: _propTypes["default"].string,
128
- ok: _propTypes["default"].string
129
- };
130
- var _default = exports["default"] = (0, _styles.withStyles)(styles)(DialogSimpleCron);
131
- //# sourceMappingURL=SimpleCron.js.map
60
+ }
61
+ exports.default = (0, styles_1.withStyles)(styles)(DialogSimpleCron);
package/GenericApp.d.ts CHANGED
@@ -11,6 +11,8 @@ import Router from './Components/Router';
11
11
  import LegacyConnection from './LegacyConnection';
12
12
  import { ConnectionProps, ThemeName, ThemeType, Width } from './types';
13
13
  declare global {
14
+ /** If config has been changed */
15
+ var changed: boolean;
14
16
  interface Window {
15
17
  io: any;
16
18
  SocketClient: any;
@@ -18,6 +20,9 @@ declare global {
18
20
  socketUrl: string;
19
21
  oldAlert: any;
20
22
  changed: boolean;
23
+ $iframeDialog: {
24
+ close?: () => void;
25
+ };
21
26
  }
22
27
  }
23
28
  interface GenericAppProps {
@@ -68,7 +73,7 @@ interface GenericAppState {
68
73
  _alertMessage: string | React.JSX.Element;
69
74
  common?: Record<string, any>;
70
75
  }
71
- declare class GenericApp extends Router<GenericAppProps, GenericAppState> {
76
+ declare class GenericApp<TProps extends GenericAppProps = GenericAppProps, TState extends GenericAppState = GenericAppState> extends Router<TProps, TState> {
72
77
  protected socket: AdminConnection;
73
78
  protected readonly instance: number;
74
79
  protected readonly adapterName: string;
@@ -88,7 +93,7 @@ declare class GenericApp extends Router<GenericAppProps, GenericAppState> {
88
93
  * @param {import('./types').GenericAppProps} props
89
94
  * @param {import('./types').GenericAppSettings | undefined} settings
90
95
  */
91
- constructor(props: GenericAppProps, settings?: GenericAppSettings);
96
+ constructor(props: TProps, settings?: GenericAppSettings);
92
97
  /**
93
98
  * Checks if this connection is running in a web adapter and not in an admin.
94
99
  * @returns True if running in a web adapter or in a socketio adapter.
package/GenericApp.js CHANGED
@@ -201,27 +201,7 @@ class GenericApp extends Router_1.default {
201
201
  const location = Router_1.default.getLocation();
202
202
  location.tab = location.tab || (window._localStorage || window.localStorage).getItem(`${this.adapterName}-adapter`) || '';
203
203
  const themeInstance = this.createTheme();
204
- this.state = {
205
- selectedTab: (window._localStorage || window.localStorage).getItem(`${this.adapterName}-adapter`) || '',
206
- selectedTabNum: -1,
207
- native: {},
208
- errorText: '',
209
- changed: false,
210
- connected: false,
211
- loaded: false,
212
- isConfigurationError: '',
213
- expertMode: false,
214
- toast: '',
215
- theme: themeInstance,
216
- themeName: this.getThemeName(themeInstance),
217
- themeType: this.getThemeType(themeInstance),
218
- bottomButtons: (settings && settings.bottomButtons) === false ? false : ((props === null || props === void 0 ? void 0 : props.bottomButtons) !== false),
219
- width: GenericApp.getWidth(),
220
- confirmClose: false,
221
- _alert: false,
222
- _alertType: 'info',
223
- _alertMessage: '',
224
- };
204
+ this.state = Object.assign(Object.assign({}, (this.state || {})), { selectedTab: (window._localStorage || window.localStorage).getItem(`${this.adapterName}-adapter`) || '', selectedTabNum: -1, native: {}, errorText: '', changed: false, connected: false, loaded: false, isConfigurationError: '', expertMode: false, toast: '', theme: themeInstance, themeName: this.getThemeName(themeInstance), themeType: this.getThemeType(themeInstance), bottomButtons: (settings && settings.bottomButtons) === false ? false : ((props === null || props === void 0 ? void 0 : props.bottomButtons) !== false), width: GenericApp.getWidth(), confirmClose: false, _alert: false, _alertType: 'info', _alertMessage: '' });
225
205
  // init translations
226
206
  const translations = {
227
207
  en: require('./i18n/en.json'),
@@ -279,7 +259,7 @@ class GenericApp extends Router_1.default {
279
259
  this.showAlert(message.toString(), 'info');
280
260
  }
281
261
  };
282
- // @ts-expect-error I don't know
262
+ // @ts-expect-error either make props in ConnectionProps required or the constructor needs to accept than as they are (means adapt socket-client)
283
263
  this.socket = new ConnectionClass(Object.assign(Object.assign({}, ((props === null || props === void 0 ? void 0 : props.socket) || (settings === null || settings === void 0 ? void 0 : settings.socket))), { name: this.adapterName, doNotLoadAllObjects: settings === null || settings === void 0 ? void 0 : settings.doNotLoadAllObjects, onProgress: (progress) => {
284
264
  if (progress === socket_client_1.PROGRESS.CONNECTING) {
285
265
  this.setState({ connected: false });
@@ -310,7 +290,7 @@ class GenericApp extends Router_1.default {
310
290
  (instanceObj === null || instanceObj === void 0 ? void 0 : instanceObj.common) &&
311
291
  instanceObj.common.name &&
312
292
  instanceObj.common.version &&
313
- // @ts-expect-error will be extended in js-controller
293
+ // @ts-expect-error will be extended in js-controller TODO: this is redundant to state `${this.instanceId}.plugins.sentry.enabled`, remove this in future when admin sets the state correctly
314
294
  !instanceObj.common.disableDataReporting &&
315
295
  window.location.host !== 'localhost:3000';
316
296
  // activate sentry plugin
@@ -674,9 +654,7 @@ class GenericApp extends Router_1.default {
674
654
  static onClose() {
675
655
  if (typeof window.parent !== 'undefined' && window.parent) {
676
656
  try {
677
- // @ts-expect-error No idea how to solve it
678
657
  if (window.parent.$iframeDialog && typeof window.parent.$iframeDialog.close === 'function') {
679
- // @ts-expect-error No idea how to solve it
680
658
  window.parent.$iframeDialog.close();
681
659
  }
682
660
  else {
package/README.md CHANGED
@@ -670,6 +670,9 @@ socket.getObjectViewCustom('custom', 'state', 'startKey', 'endKey')
670
670
  -->
671
671
 
672
672
  ## Changelog
673
+ ### 4.11.4 (2024-03-18)
674
+ * (bluefox) Corrected types of IconPicker
675
+
673
676
  ### 4.11.3 (2024-03-17)
674
677
  * (bluefox) Made filters for the file selector dialog optional
675
678
 
package/i18n/de.json CHANGED
@@ -421,5 +421,6 @@
421
421
  "ra_create_number_state": "Nummern-Zustand erstellen",
422
422
  "ra_create_boolean_state": "Booleschen Zustand erstellen",
423
423
  "ra_Select color": "Wähle Farbe",
424
- "ra_Cannot read licenses: %s": "Lizenzen können nicht gelesen werden: %s"
424
+ "ra_Cannot read licenses: %s": "Lizenzen können nicht gelesen werden: %s",
425
+ "ra_Advanced options": "Erweiterte Optionen"
425
426
  }
package/i18n/en.json CHANGED
@@ -421,5 +421,6 @@
421
421
  "ra_create_number_state": "Create number state",
422
422
  "ra_create_boolean_state": "Create boolean state",
423
423
  "ra_Select color": "Select color",
424
- "ra_Cannot read licenses: %s": "Cannot read licenses: %s"
424
+ "ra_Cannot read licenses: %s": "Cannot read licenses: %s",
425
+ "ra_Advanced options": "Advanced options"
425
426
  }
package/i18n/es.json CHANGED
@@ -421,5 +421,6 @@
421
421
  "ra_create_number_state": "Crear estado numérico",
422
422
  "ra_create_boolean_state": "Crear estado booleano",
423
423
  "ra_Select color": "Seleccionar el color",
424
- "ra_Cannot read licenses: %s": "No se pueden leer licencias: %s"
424
+ "ra_Cannot read licenses: %s": "No se pueden leer licencias: %s",
425
+ "ra_Advanced options": "Opciones avanzadas"
425
426
  }
package/i18n/fr.json CHANGED
@@ -421,5 +421,6 @@
421
421
  "ra_create_number_state": "Créer un état de numéro",
422
422
  "ra_create_boolean_state": "Créer un état booléen",
423
423
  "ra_Select color": "Choisissez la couleur",
424
- "ra_Cannot read licenses: %s": "Impossible de lire les licences : %s"
424
+ "ra_Cannot read licenses: %s": "Impossible de lire les licences : %s",
425
+ "ra_Advanced options": "Options avancées"
425
426
  }
package/i18n/it.json CHANGED
@@ -421,5 +421,6 @@
421
421
  "ra_create_number_state": "Crea lo stato del numero",
422
422
  "ra_create_boolean_state": "Crea uno stato booleano",
423
423
  "ra_Select color": "Seleziona il colore",
424
- "ra_Cannot read licenses: %s": "Impossibile leggere le licenze: %s"
424
+ "ra_Cannot read licenses: %s": "Impossibile leggere le licenze: %s",
425
+ "ra_Advanced options": "Opzioni avanzate"
425
426
  }
package/i18n/nl.json CHANGED
@@ -421,5 +421,6 @@
421
421
  "ra_create_number_state": "Nummerstatus maken",
422
422
  "ra_create_boolean_state": "Creëer een Booleaanse status",
423
423
  "ra_Select color": "Selecteer kleur",
424
- "ra_Cannot read licenses: %s": "Kan licenties niet lezen: %s"
424
+ "ra_Cannot read licenses: %s": "Kan licenties niet lezen: %s",
425
+ "ra_Advanced options": "Geavanceerde mogelijkheden"
425
426
  }
package/i18n/pl.json CHANGED
@@ -421,5 +421,6 @@
421
421
  "ra_create_number_state": "Utwórz stan liczbowy",
422
422
  "ra_create_boolean_state": "Utwórz stan logiczny",
423
423
  "ra_Select color": "Wybierz kolor",
424
- "ra_Cannot read licenses: %s": "Nie można odczytać licencji: %s"
424
+ "ra_Cannot read licenses: %s": "Nie można odczytać licencji: %s",
425
+ "ra_Advanced options": "Zaawansowane opcje"
425
426
  }
package/i18n/pt.json CHANGED
@@ -421,5 +421,6 @@
421
421
  "ra_create_number_state": "Criar estado numérico",
422
422
  "ra_create_boolean_state": "Criar estado booleano",
423
423
  "ra_Select color": "Selecione a cor",
424
- "ra_Cannot read licenses: %s": "Não é possível ler licenças: %s"
424
+ "ra_Cannot read licenses: %s": "Não é possível ler licenças: %s",
425
+ "ra_Advanced options": "Opções avançadas"
425
426
  }
package/i18n/ru.json CHANGED
@@ -421,5 +421,6 @@
421
421
  "ra_create_number_state": "Создать состояние номера",
422
422
  "ra_create_boolean_state": "Создать логическое состояние",
423
423
  "ra_Select color": "Выберите цвет",
424
- "ra_Cannot read licenses: %s": "Невозможно прочитать лицензии: %s"
424
+ "ra_Cannot read licenses: %s": "Невозможно прочитать лицензии: %s",
425
+ "ra_Advanced options": "Расширенные настройки"
425
426
  }
package/i18n/uk.json CHANGED
@@ -421,5 +421,6 @@
421
421
  "ra_create_number_state": "Створити номерний стан",
422
422
  "ra_create_boolean_state": "Створіть логічний стан",
423
423
  "ra_Select color": "Виберіть колір",
424
- "ra_Cannot read licenses: %s": "Неможливо прочитати ліцензії: %s"
424
+ "ra_Cannot read licenses: %s": "Неможливо прочитати ліцензії: %s",
425
+ "ra_Advanced options": "Розширені опції"
425
426
  }
package/i18n/zh-cn.json CHANGED
@@ -421,5 +421,6 @@
421
421
  "ra_create_number_state": "创建号码状态",
422
422
  "ra_create_boolean_state": "创建布尔状态",
423
423
  "ra_Select color": "选择颜色",
424
- "ra_Cannot read licenses: %s": "无法读取许可证:%s"
424
+ "ra_Cannot read licenses: %s": "无法读取许可证:%s",
425
+ "ra_Advanced options": "高级选项"
425
426
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@iobroker/adapter-react-v5",
3
- "version": "4.11.3",
3
+ "version": "4.11.4",
4
4
  "description": "React classes to develop admin interfaces for ioBroker with react.",
5
5
  "author": {
6
6
  "name": "Denis Haev (bluefox)",
@@ -1 +0,0 @@
1
- {"version":3,"file":"cron2text.js","names":["cronToText","cronspec","withSeconds","locale","NAMES","JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC","SUN","MON","TUE","WED","THU","FRI","SAT","REPLACEMENTS","FIELDS","s","m","h","D","M","Y","d","getValue","value","offset","arguments","length","undefined","max","Number","isNaN","Math","min","cloneSchedule","sched","clone","field","slice","add","name","inc","i","indexOf","push","sort","a","b","addHash","schedules","curSched","hash","dc","addWeekday","except1","except2","exceptions","addRange","item","incSplit","split","range","rangeSplit","parse","toString","replace","isHash","itemSorter","parseExpr","expr","schedule","components","f","component","items","prepareExpr","prepared","toUpperCase","parseCron","hasSeconds","e","concat","absFloor","number","ceil","floor","toInt","argumentForCoercion","coercedNumber","isFinite","ordinal","output","ORDINALS","th","st","nd","rd","numberList","numbers","lastVal","pop","join","and","numberToDateName","type","DOW","MONTH","dateList","outputText","zeroPad","x","scheduleToSentence","_schedule","_withSeconds","Every","hm","j","k","At","hour","second","minute","on","_default","exports"],"sources":["SimpleCron/cron2text.js"],"sourcesContent":["/**\n * Given a cronspec, return the human-readable string.\n * @param {string} cronspec\n * @param withSeconds\n * @param {Object=} locale\n */\nfunction cronToText(cronspec, withSeconds, locale) {\n // Constant array to convert valid names to values\n const NAMES = {\n JAN: 1,\n FEB: 2,\n MAR: 3,\n APR: 4,\n MAY: 5,\n JUN: 6,\n JUL: 7,\n AUG: 8,\n SEP: 9,\n OCT: 10,\n NOV: 11,\n DEC: 12,\n SUN: 1,\n MON: 2,\n TUE: 3,\n WED: 4,\n THU: 5,\n FRI: 6,\n SAT: 7,\n };\n\n // Parsable replacements for common expressions\n const REPLACEMENTS = {\n '* * * * * *': '0/1 * * * * *',\n '@YEARLY': '0 0 1 1 *',\n '@ANNUALLY': '0 0 1 1 *',\n '@MONTHLY': '0 0 1 * *',\n '@WEEKLY': '0 0 * * 0',\n '@DAILY': '0 0 * * *',\n '@HOURLY': '0 * * * *',\n };\n\n // Contains the index, min, and max for each of the constraints\n const FIELDS = {\n s: [0, 0, 59], // seconds\n m: [1, 0, 59], // minutes\n h: [2, 0, 23], // hours\n D: [3, 1, 31], // day of month\n M: [4, 1, 12], // month\n Y: [6, 1970, 2099], // year\n d: [5, 1, 7, 1], // day of week\n };\n\n /**\n * Returns the value + offset if value is a number, otherwise it\n * attempts to look up the value in the NAMES table and returns\n * that result instead.\n *\n * @param {Number,String} value: The value that should be parsed\n * @param {Number=} offset: Any offset that must be added to the value\n * @param {Number=} max\n * @returns {Number|null}\n */\n function getValue(value) {\n const offset = arguments.length <= 1 || arguments[1] === undefined ? 0 : arguments[1];\n const max = arguments.length <= 2 || arguments[2] === undefined ? 9999 : arguments[2];\n\n return Number.isNaN(value) ? NAMES[value] || null : Math.min(+value + offset, max);\n }\n\n /**\n * Returns a deep clone of a schedule skipping any day of week\n * constraints.\n *\n * @param {Object} sched: The schedule that will be cloned\n * @returns {Object}\n */\n function cloneSchedule(sched) {\n const clone = {};\n let field;\n\n for (field in sched) {\n if (field !== 'dc' && field !== 'd') {\n clone[field] = sched[field].slice(0);\n }\n }\n\n return clone;\n }\n\n /**\n * Adds values to the specified constraint in the current schedule.\n *\n * @param {Object} sched: The schedule to add the constraint to\n * @param {String} name: Name of constraint to add\n * @param {Number} min: Minimum value for this constraint\n * @param {Number} max: Maximum value for this constraint\n */\n function add(sched, name, min, max) {\n const inc = arguments.length <= 4 || arguments[4] === undefined ? 0 : arguments[4];\n\n let i = min;\n\n if (!sched[name]) {\n sched[name] = [];\n }\n\n while (i <= max) {\n if (sched[name].indexOf(i) < 0) {\n sched[name].push(i);\n }\n i += inc || 1;\n }\n\n sched[name].sort((a, b) => a - b);\n }\n\n /**\n * Adds a hash item (of the form x#y or xL) to the schedule.\n *\n * @param {Object} schedules: The current schedule array to add to\n * @param {Object} curSched: The current schedule to add to\n * @param {Number} value: The value to add (x of x#y or xL)\n * @param {Number} hash: The hash value to add (y of x#y)\n */\n function addHash(schedules, curSched, value, hash) {\n // if there are any existing day of week constraints that\n // aren't equal to the one we're adding, create a new\n // composite schedule\n if ((curSched.d && !curSched.dc) || (curSched.dc && curSched.dc.indexOf(hash) < 0)) {\n schedules.push(cloneSchedule(curSched));\n curSched = schedules[schedules.length - 1];\n }\n\n add(curSched, 'd', value, value);\n add(curSched, 'dc', hash, hash);\n }\n\n /**\n *\n * @param {Object} s: The existing set of schedules\n * @param {Object} curSched: The current schedule to add to\n * @param {Number} value\n */\n function addWeekday(s, curSched, value) {\n const except1 = {};\n const except2 = {};\n if (value === 1) {\n // cron doesn't pass month boundaries, so if 1st is a\n // weekend then we need to use 2nd or 3rd instead\n add(curSched, 'D', 1, 3);\n add(curSched, 'd', NAMES.MON, NAMES.FRI);\n add(except1, 'D', 2, 2);\n add(except1, 'd', NAMES.TUE, NAMES.FRI);\n add(except2, 'D', 3, 3);\n add(except2, 'd', NAMES.TUE, NAMES.FRI);\n } else {\n // normally you want the closest day, so if v is a\n // Saturday, use the previous Friday. If it's a\n // sunday, use the following Monday.\n add(curSched, 'D', value - 1, value + 1);\n add(curSched, 'd', NAMES.MON, NAMES.FRI);\n add(except1, 'D', value - 1, value - 1);\n add(except1, 'd', NAMES.MON, NAMES.THU);\n add(except2, 'D', value + 1, value + 1);\n add(except2, 'd', NAMES.TUE, NAMES.FRI);\n }\n s.exceptions.push(except1);\n s.exceptions.push(except2);\n }\n\n /**\n * Adds a range item (of the form x-y/z) to the schedule.\n *\n * @param {String} item: The cron expression item to add\n * @param {Object} curSched: The current schedule to add to\n * @param {String} name: The name to use for this constraint\n * @param {Number} min: The min value for the constraint\n * @param {Number} max: The max value for the constraint\n * @param {Number} offset: The offset to apply to the cron value\n */\n function addRange(item, curSched, name, min, max, offset) {\n // parse range/x\n const incSplit = item.split('/');\n const inc = +incSplit[1];\n const range = incSplit[0];\n\n // parse x-y or * or 0\n if (range !== '*' && range !== '0') {\n const rangeSplit = range.split('-');\n min = getValue(rangeSplit[0], offset, max);\n\n // fix for issue #13, range may be a single digit\n max = getValue(rangeSplit[1], offset, max) || max;\n }\n\n add(curSched, name, min, max, inc);\n }\n\n /**\n * Parses a particular item within a cron expression.\n *\n * @param {String} item: The cron expression item to parse\n * @param {Object} s: The existing set of schedules\n * @param {String} name: The name to use for this constraint\n * @param {Number} min: The min value for the constraint\n * @param {Number} max: The max value for the constraint\n * @param {Number} offset: The offset to apply to the cron value\n */\n function parse(item, s, name, min, max, offset) {\n let value;\n let split;\n const schedules = s.schedules;\n const curSched = schedules[schedules.length - 1];\n\n // L just means min - 1 (this also makes it work for any field)\n if (item === 'L') {\n item = (min - 1).toString(10);\n }\n\n // parse x\n if ((value = getValue(item, offset, max)) !== null) {\n add(curSched, name, value, value);\n } else if ((value = getValue(item.replace('W', ''), offset, max)) !== null) {\n // parse xW\n addWeekday(s, curSched, value);\n } else if ((value = getValue(item.replace('L', ''), offset, max)) !== null) {\n // parse xL\n addHash(schedules, curSched, value, min - 1);\n } else if ((split = item.split('#')).length === 2) {\n // parse x#y\n value = getValue(split[0], offset, max);\n addHash(schedules, curSched, value, getValue(split[1]));\n } else {\n // parse x-y or x-y/z or */z or 0/z\n addRange(item, curSched, name, min, max, offset);\n }\n }\n\n /**\n * Returns true if the item is either of the form x#y or xL.\n *\n * @param {String} item: The expression item to check\n */\n function isHash(item) {\n return item.indexOf('#') > -1 || item.indexOf('L') > 0;\n }\n\n function itemSorter(a, b) {\n return isHash(a) && !isHash(b) ? 1 : a - b;\n }\n\n /**\n * Parses each of the fields in a cron expression. The expression must\n * include the seconds field, the year field is optional.\n *\n * @param {String} expr: The cron expression to parse\n */\n function parseExpr(expr) {\n const schedule = { schedules: [{}], exceptions: [] };\n const components = expr.replace(/(\\s)+/g, ' ').split(' ');\n let field;\n let f;\n let component;\n let items;\n\n for (field in FIELDS) {\n f = FIELDS[field];\n component = components[f[0]];\n if (component && component !== '*' && component !== '?') {\n // need to sort so that any #'s come last, otherwise\n // schedule clones to handle # won't contain all of the\n // other constraints\n items = component.split(',').sort(itemSorter);\n let i;\n const length = items.length;\n for (i = 0; i < length; i++) {\n parse(items[i], schedule, field, f[1], f[2], f[3]);\n }\n }\n }\n\n return schedule;\n }\n\n /**\n * Make cron expression parsable.\n *\n * @param {String} expr: The cron expression to prepare\n */\n function prepareExpr(expr) {\n const prepared = expr.toUpperCase();\n return REPLACEMENTS[prepared] || prepared;\n }\n\n function parseCron(expr, hasSeconds) {\n const e = prepareExpr(expr);\n return parseExpr(hasSeconds ? e : `0 ${e}`);\n }\n\n const schedule = parseCron(cronspec, withSeconds);\n\n function absFloor(number) {\n if (number < 0) {\n return Math.ceil(number);\n }\n return Math.floor(number);\n }\n\n function toInt(argumentForCoercion) {\n const coercedNumber = +argumentForCoercion;\n let value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n function ordinal(number) {\n const b = number % 10;\n const output = (toInt(number % 100 / 10) === 1) ? locale.ORDINALS.th :\n (b === 1) ? locale.ORDINALS.st :\n (b === 2) ? locale.ORDINALS.nd :\n (b === 3) ? locale.ORDINALS.rd : locale.ORDINALS.th;\n return number + output;\n }\n\n /**\n * For an array of numbers, e.g. a list of hours in a schedule,\n * return a string listing out all of the values (complete with\n * \"and\" plus ordinal text on the last item).\n * @param {Number[]} numbers\n * @returns {string}\n */\n function numberList(numbers) {\n if (numbers.length < 2) {\n return ordinal(numbers);\n }\n\n const lastVal = numbers.pop();\n return `${numbers.join(', ')} ${locale.and} ${ordinal(lastVal)}`;\n }\n\n /**\n * Parse a number into day of week, or a month name;\n * used in dateList below.\n * @param {Number|String} value\n * @param {String} type\n * @returns {String}\n */\n function numberToDateName(value, type) {\n if (type === 'dow') {\n return locale.DOW[value - 1];\n }\n if (type === 'mon') {\n return locale.MONTH[value - 1];\n }\n return value;\n }\n\n /**\n * From an array of numbers corresponding to dates (given in type: either\n * days of the week, or months), return a string listing all the values.\n * @param {Number[]} numbers\n * @param {String} type\n * @returns {String}\n */\n function dateList(numbers, type) {\n if (numbers.length < 2) {\n return numberToDateName(`${numbers[0]}`, type);\n }\n\n const lastVal = `${numbers.pop()}`;\n let outputText = '';\n\n for (let i = 0, value; (value = numbers[i]); i++) {\n if (outputText.length > 0) {\n outputText += ', ';\n }\n outputText += numberToDateName(value, type);\n }\n return `${outputText} ${locale.and} ${numberToDateName(lastVal, type)}`;\n }\n\n /**\n * Pad to equivalent of sprintf('%02d').\n * @param {Number} x\n * @returns {string}\n */\n function zeroPad(x) {\n return x < 10 ? `0${x}` : x;\n }\n\n //----------------\n\n /**\n * Given a schedule, generate a friendly sentence description.\n * @param {Object} _schedule\n * @param {boolean} _withSeconds\n * @returns {string}\n */\n function scheduleToSentence(_schedule, _withSeconds) {\n let outputText = `${locale.Every} `;\n\n if (_schedule.h && _schedule.m && _schedule.h.length <= 2 && _schedule.m.length <= 2 && _withSeconds && _schedule.s && _schedule.s.length <= 2) {\n // If there are only one or two specified values for\n // hour or minute, print them in HH:MM:SS format\n\n const hm = [];\n for (let i = 0; i < _schedule.h.length; i++) {\n for (let j = 0; j < _schedule.m.length; j++) {\n for (let k = 0; k < _schedule.s.length; k++) {\n hm.push(`${zeroPad(_schedule.h[i])}:${zeroPad(_schedule.m[j])}:${zeroPad(_schedule.s[k])}`);\n }\n }\n }\n if (hm.length < 2) {\n outputText = `${locale.At} ${hm[0]}`;\n } else {\n const lastVal = hm.pop();\n outputText = `${locale.At} ${hm.join(', ')} ${locale.and} ${lastVal}`;\n }\n if (!_schedule.d && !_schedule.D) {\n outputText += ` ${locale['every day']} `;\n }\n } else if (_schedule.h && _schedule.m && _schedule.h.length <= 2 && _schedule.m.length <= 2) {\n // If there are only one or two specified values for\n // hour or minute, print them in HH:MM format\n\n const hm = [];\n for (let i = 0; i < _schedule.h.length; i++) {\n for (let j = 0; j < _schedule.m.length; j++) {\n hm.push(`${zeroPad(_schedule.h[i])}:${zeroPad(_schedule.m[j])}`);\n }\n }\n if (hm.length < 2) {\n outputText = `${locale.At} ${hm[0]}`;\n } else {\n const lastVal = hm.pop();\n outputText = `${locale.At} ${hm.join(', ')} ${locale.and} ${lastVal}`;\n }\n\n if (!_schedule.d && !_schedule.D) {\n outputText += ` ${locale['every day']} `;\n }\n } else if (_schedule.h) { // runs only at specific hours\n // Otherwise, list out every specified hour/minute value.\n if (_schedule.m) { // and only at specific minutes\n if (_withSeconds) {\n if (!_schedule.s || _schedule.s.length === 60) {\n outputText += `${locale['second of every']} ${numberList(_schedule.m)} ${locale['minute past the']} ${numberList(_schedule.h)} ${locale.hour}`;\n } else {\n outputText += `${numberList(_schedule.s)} ${locale['second of every']} ${numberList(_schedule.m)} ${locale['minute past the']} ${numberList(_schedule.h)} ${locale.hour}`;\n }\n } else {\n outputText += `${numberList(_schedule.m)} ${locale['minute past the']} ${numberList(_schedule.h)} ${locale.hour}`;\n }\n } else if (_withSeconds) {\n // specific hours, but every minute\n if (!_schedule.s || _schedule.s.length === 60) {\n outputText += `${locale['second of every']} ${locale['minute of']} ${numberList(_schedule.h)} ${locale.hour}`;\n } else {\n outputText += `${numberList(_schedule.s)} ${locale['second of every']} ${locale['minute of']} ${numberList(_schedule.h)} ${locale.hour}`;\n }\n } else {\n outputText += `${locale['minute of']} ${numberList(_schedule.h)} ${locale.hour}`;\n }\n } else if (_schedule.m) { // every hour, but specific minutes\n if (_withSeconds) {\n if (!_schedule.s || _schedule.s.length === 60) {\n outputText += `${locale['second of every']} ${numberList(_schedule.m)} ${locale['minute every hour']}`;\n } else {\n outputText += `${numberList(_schedule.s)} ${locale['second of every']} ${numberList(_schedule.m)} ${locale['minute every hour']}`;\n }\n } else {\n outputText += `${numberList(_schedule.m)} ${locale['minute every hour']}`;\n }\n } else if (_withSeconds) {\n if (!_schedule.s || _schedule.s.length === 60) {\n outputText += locale.second;\n } else {\n outputText += `${numberList(_schedule.s)} ${locale.second}`;\n }\n } else { // cronspec has \"*\" for both hour and minute\n outputText += locale.minute;\n }\n\n if (_schedule.D) { // runs only on specific day(s) of month\n outputText += (locale['on the'] ? ` ${locale['on the']} ` : ' ') + numberList(_schedule.D);\n if (!_schedule.M) {\n outputText += ` ${locale['of every month']}`;\n }\n }\n\n if (_schedule.d) { // runs only on specific day(s) of week\n if (_schedule.D) {\n // if both day fields are specified, cron uses both; superuser.com/a/348372\n outputText += ` ${locale['and every']} `;\n } else {\n outputText += ` ${locale.on} `;\n }\n outputText += dateList(_schedule.d, 'dow');\n }\n\n if (_schedule.M) {\n // runs only in specific months; put this output last\n outputText += ` ${locale.in} ${dateList(_schedule.M, 'mon')}`;\n }\n\n return outputText;\n }\n\n return scheduleToSentence(schedule.schedules[0], withSeconds);\n}\n\nexport default cronToText;\n"],"mappings":"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","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"cronText.js","names":["_cron2text","_interopRequireDefault","require","_jqueryCron","correctCasus","text","replace","convertCronToText","cron","lang","withSeconds","split","length","cronToText","JQUERY_CRON_LOCALE","en","_default","exports"],"sources":["SimpleCron/cronText.js"],"sourcesContent":["import cronToText from './cron2text';\nimport JQUERY_CRON_LOCALE from './jquery.cron.locale';\n\nfunction correctCasus(text /* , seconds */) {\n text = text.replace('Каждую(ый) минуту', 'Каждую минуту');\n text = text.replace('Каждую(ый) минут(у)', 'Каждую минуту');\n text = text.replace('Каждую(ый) час', 'Каждый час');\n text = text.replace('Каждую(ый) секунду', 'Каждую секунду');\n text = text.replace(/ (\\d{1,2}) числа/, ' $1го числа');\n\n text = text.replace(/ (\\d{1,2}) в Январе/, ' $1го числа в Январе');\n text = text.replace(/ (\\d{1,2}) в Феврале/, ' $1го числа в Феврале');\n text = text.replace(/ (\\d{1,2}) в Марте/, ' $1го числа в Марте');\n text = text.replace(/ (\\d{1,2}) в Апреле/, ' $1го числа в Апреле');\n text = text.replace(/ (\\d{1,2}) в Майе/, ' $1го числа в Майе');\n text = text.replace(/ (\\d{1,2}) в Июне/, ' $1го числа в Июне');\n text = text.replace(/ (\\d{1,2}) в Июле/, ' $1го числа в Июле');\n text = text.replace(/ (\\d{1,2}) в Августе/, ' $1го числа в Августе');\n text = text.replace(/ (\\d{1,2}) в Сентябре/, ' $1го числа в Сентябре');\n text = text.replace(/ (\\d{1,2}) в Октябре/, ' $1го числа в Октябре');\n text = text.replace(/ (\\d{1,2}) в Ноябре/, ' $1го числа в Ноябре');\n text = text.replace(/ (\\d{1,2}) в Декабре/, ' $1го числа в Декабре');\n\n text = text.replace('Каждую(ый) 0 минуту', 'Каждые ноль минут');\n text = text.replace(/Каждую\\(ый\\) ([\\d\\sи,]+) минуту/, 'Каждую $1 минуту');\n\n text = text.replace(/каждой\\(го\\) ([\\d\\sи,]+) минуту/, 'каждой $1 минуты');\n text = text.replace('каждой(го) минут(у)', 'каждой минуты');\n\n text = text.replace(' 0 часа(ов)', ' 0 часов');\n text = text.replace(' 1 часа(ов)', ' 1 час');\n text = text.replace(' 2 часа(ов)', ' 2 часа');\n text = text.replace(' 3 часа(ов)', ' 3 часа');\n text = text.replace(' 4 часа(ов)', ' 4 часа');\n text = text.replace(/ (\\d{1,2}) часа\\(ов\\)/, ' $1 часов');\n\n text = text.replace('Jede(r) Sekunde', 'Jede Sekunde');\n text = text.replace(/Jede\\(r\\) ([\\d\\sund,]+) Sekunde/, 'Jede $1 Sekunde');\n text = text.replace('Jede(r) Minute', 'Jede Minute');\n text = text.replace('Jede Minuten', 'Jede Minute');\n text = text.replace('Jede(r) Stunde', 'Jede Stunde');\n text = text.replace(/Jede\\(r\\) ([\\d\\sund,]+) Minute/, 'Jede $1 Minute');\n text = text.replace('Jede Sekunde in Minuten', 'Jede Sekunde in jeder Minute');\n\n return text;\n}\n\nfunction convertCronToText(cron, lang) {\n const withSeconds = cron.split(' ').length === 6;\n const text = cronToText(cron, withSeconds, JQUERY_CRON_LOCALE[lang] || JQUERY_CRON_LOCALE.en);\n return correctCasus(text, withSeconds);\n}\n\nexport default convertCronToText;\n"],"mappings":"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","ignoreList":[]}