iobroker.parcelapp 0.2.18 → 0.3.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.
package/README.md CHANGED
@@ -32,19 +32,19 @@ ioBroker adapter that connects to the [parcel.app](https://parcelapp.net) API an
32
32
  ## Requirements
33
33
 
34
34
  - **Node.js >= 20**
35
- - **ioBroker js-controller >= 6.0.11**
36
- - **ioBroker Admin >= 7.6.20**
35
+ - **ioBroker js-controller >= 7.0.7**
36
+ - **ioBroker Admin >= 7.7.22**
37
37
  - **parcel.app Premium subscription** — required for API access
38
38
 
39
39
  ---
40
40
 
41
41
  ## Configuration
42
42
 
43
- | Option | Description | Default |
44
- |--------|-------------|---------|
45
- | **API Key** | Your parcel.app API key (get it at [web.parcelapp.net](https://web.parcelapp.net)) | — |
46
- | **Poll Interval** | How often to fetch updates (minutes) | 10 |
47
- | **Auto-remove delivered** | Remove delivered packages from states automatically. When disabled, they stay until deleted in parcel.app. | Yes |
43
+ | Option | Description | Default |
44
+ | ------------------------- | ---------------------------------------------------------------------------------------------------------- | ------- |
45
+ | **API Key** | Your parcel.app API key (get it at [web.parcelapp.net](https://web.parcelapp.net)) | — |
46
+ | **Poll Interval** | How often to fetch updates (minutes) | 10 |
47
+ | **Auto-remove delivered** | Remove delivered packages from states automatically. When disabled, they stay until deleted in parcel.app. | Yes |
48
48
 
49
49
  Status labels (`Delivered`, `In Transit`, …) and delivery estimates (`today`, `tomorrow`, `in X days`) are rendered in the ioBroker system language.
50
50
 
@@ -81,16 +81,17 @@ parcelapp.0.
81
81
  You can add new deliveries from JavaScript/Blockly scripts:
82
82
 
83
83
  ```javascript
84
- sendTo('parcelapp.0', 'addDelivery', {
85
- tracking_number: '1234567890',
86
- carrier_code: 'dhl',
87
- description: 'My package'
84
+ sendTo("parcelapp.0", "addDelivery", {
85
+ tracking_number: "1234567890",
86
+ carrier_code: "dhl",
87
+ description: "My package",
88
88
  });
89
89
  ```
90
90
 
91
91
  The delivery is added to your parcel.app account and immediately appears in ioBroker after an automatic poll.
92
92
 
93
93
  **Notes:**
94
+
94
95
  - **POST rate limit: 20 deliveries per day** — failed attempts (e.g. wrong `carrier_code`) also count against this limit.
95
96
  - Fresh deliveries usually have no tracking events for **45–90 minutes** after they are added. That's a parcel.app-side delay, not an adapter issue.
96
97
  - **Deleting packages is only possible in the parcel.app app/web UI** — the API has no delete endpoint. With `autoRemoveDelivered` enabled, the adapter still drops delivered packages from ioBroker states automatically.
@@ -100,22 +101,32 @@ The delivery is added to your parcel.app account and immediately appears in ioBr
100
101
  ## Troubleshooting
101
102
 
102
103
  ### Connection test fails
104
+
103
105
  - Verify your API key at [web.parcelapp.net](https://web.parcelapp.net)
104
106
  - Ensure you have an active Premium subscription
105
107
  - Check if your ioBroker instance has internet access
106
108
 
107
109
  ### No deliveries shown
110
+
108
111
  - The API returns cached data — new deliveries may take a few minutes to appear
109
112
  - Check if you have active deliveries in the parcel.app
110
113
 
111
114
  ### Rate limit
115
+
112
116
  - GET (polling): **20 requests per hour** — the minimum poll interval is 5 minutes to stay within this limit
113
117
  - POST (adding deliveries): **20 requests per day**, failed attempts count too
114
118
 
115
119
  ---
116
120
 
117
121
  ## Changelog
122
+ ### 0.3.0 (2026-04-30)
123
+
124
+ - DRY: dead `STATUS_LABELS_DE` + `STATUS_LABELS_EN` aliases removed from `types.ts`; tests rewritten to use `STATUS_LABELS.de` / `STATUS_LABELS.en` directly.
125
+ - New `format` + `format:check` npm-scripts (run prettier — matches the other krobi adapters).
126
+ - Master-sync against `.consistency-master/`: `.github/dependabot.yml` ignore-block for `actions/checkout` + `actions/setup-node` major bumps, and the `repochecker-version-gate` workflow job moved from the legacy M1000 check to the sources-dist-stable check (now identical to hassemu).
127
+
118
128
  ### 0.2.18 (2026-04-28)
129
+
119
130
  - Audit cleanup against the upstream `ioBroker.example/TypeScript` full standard:
120
131
  - `@types/node` rolled back from `^25.6.0` to `^20.19.24` so type defs match `engines.node: ">=20"` (otherwise Node 21+-only APIs would type-check on Node 20 and crash at runtime)
121
132
  - Dependabot now ignores major bumps for `@types/node`, `typescript`, `eslint` so the runtime/toolchain pinning cannot drift via auto-merge
@@ -124,24 +135,21 @@ The delivery is added to your parcel.app account and immediately appears in ioBr
124
135
  - Orphan `.github/auto-merge.yml` removed (the active workflow is `automerge-dependabot.yml` using `gh pr merge`, the old yml was never read)
125
136
 
126
137
  ### 0.2.17 (2026-04-28)
138
+
127
139
  - Test setup migrated to the upstream `ioBroker.example/TypeScript` standard: tests now live next to source as `src/**/*.test.ts` and run directly via `ts-node/register`, no separate test-build. Removes `tsconfig.test.json` + `build-test/` per latest-repo review feedback.
128
140
 
129
141
  ### 0.2.16 (2026-04-26)
142
+
130
143
  - Min js-controller correction: was incorrectly bumped to `>=7.0.23` in 0.2.15 (Wert kam aus Recherche-Synthese, nicht aus Repochecker-Source). Repochecker-recommended value is `>=6.0.11` — restored.
131
144
 
132
145
  ### 0.2.15 (2026-04-26)
146
+
133
147
  - Process-level `unhandledRejection` / `uncaughtException` handlers added as last-line-of-defence against fire-and-forget rejections.
134
148
  - Stop shipping the `manual-review` release-script plugin — adapter-only consequence.
135
149
  - Bump min js-controller to `>=7.0.23` (matches latest-repo recommendation).
136
150
  - Audit-driven boilerplate sync with the other krobi adapters (`.vscode` json5 schemas, `tsconfig.test` looser test rules).
137
151
  - README footer-link to `CHANGELOG_OLD.md` restored, `CHANGELOG_OLD.md` cleaned up to consistent compact style.
138
152
 
139
- ### 0.2.14 (2026-04-23)
140
- - Separate test-build output (`build-test/`) from production `build/`, no more duplicated `build/src` + `build/test` tree in published packages.
141
- - Declare `deliveries` folder and `summary` channel as instance objects so their parent exists before per-package states appear.
142
- - Localize status labels and delivery estimates to all 11 ioBroker languages via `system.config.language`; the per-instance `Status Language` option is removed.
143
- - Fix `summary.todayCount` for non-DE/EN languages (filter compared estimate strings against `heute`/`today`, so it always returned zero elsewhere).
144
-
145
153
  ## Support
146
154
 
147
155
  - [ioBroker Forum](https://forum.iobroker.net/)
@@ -10,7 +10,11 @@
10
10
  "apiKeyInfo": {
11
11
  "type": "staticText",
12
12
  "text": "apiKeyInfo",
13
- "xs": 12, "sm": 12, "md": 12, "lg": 12, "xl": 12,
13
+ "xs": 12,
14
+ "sm": 12,
15
+ "md": 12,
16
+ "lg": 12,
17
+ "xl": 12,
14
18
  "style": {
15
19
  "fontSize": 14,
16
20
  "color": "#666",
@@ -20,7 +24,11 @@
20
24
  "apiKey": {
21
25
  "type": "password",
22
26
  "label": "label_apiKey",
23
- "xs": 12, "sm": 12, "md": 8, "lg": 8, "xl": 8
27
+ "xs": 12,
28
+ "sm": 12,
29
+ "md": 8,
30
+ "lg": 8,
31
+ "xl": 8
24
32
  },
25
33
  "checkConnection": {
26
34
  "newLine": true,
@@ -32,7 +40,11 @@
32
40
  "okText": "msg_connectionOk",
33
41
  "errorText": "msg_connectionFailed"
34
42
  },
35
- "xs": 12, "sm": 12, "md": 4, "lg": 4, "xl": 4
43
+ "xs": 12,
44
+ "sm": 12,
45
+ "md": 4,
46
+ "lg": 4,
47
+ "xl": 4
36
48
  },
37
49
  "pollingHeader": {
38
50
  "newLine": true,
@@ -47,7 +59,11 @@
47
59
  "min": 5,
48
60
  "max": 60,
49
61
  "default": 10,
50
- "xs": 12, "sm": 12, "md": 6, "lg": 6, "xl": 6
62
+ "xs": 12,
63
+ "sm": 12,
64
+ "md": 6,
65
+ "lg": 6,
66
+ "xl": 6
51
67
  },
52
68
  "deliveryHeader": {
53
69
  "newLine": true,
@@ -60,7 +76,11 @@
60
76
  "label": "label_autoRemoveDelivered",
61
77
  "tooltip": "tooltip_autoRemoveDelivered",
62
78
  "default": true,
63
- "xs": 12, "sm": 12, "md": 12, "lg": 12, "xl": 12
79
+ "xs": 12,
80
+ "sm": 12,
81
+ "md": 12,
82
+ "lg": 12,
83
+ "xl": 12
64
84
  },
65
85
  "_supportHeader": {
66
86
  "newLine": true,
@@ -71,7 +91,11 @@
71
91
  "_aboutInfo": {
72
92
  "type": "staticText",
73
93
  "text": "aboutInfo",
74
- "xs": 12, "sm": 12, "md": 12, "lg": 12, "xl": 12,
94
+ "xs": 12,
95
+ "sm": 12,
96
+ "md": 12,
97
+ "lg": 12,
98
+ "xl": 12,
75
99
  "style": {
76
100
  "fontSize": 14,
77
101
  "marginBottom": 16
@@ -84,7 +108,11 @@
84
108
  "button": true,
85
109
  "variant": "outlined",
86
110
  "color": "primary",
87
- "xs": 12, "sm": 6, "md": 4, "lg": 4, "xl": 4
111
+ "xs": 12,
112
+ "sm": 6,
113
+ "md": 4,
114
+ "lg": 4,
115
+ "xl": 4
88
116
  },
89
117
  "_paypalLink": {
90
118
  "type": "staticLink",
@@ -93,7 +121,11 @@
93
121
  "button": true,
94
122
  "variant": "outlined",
95
123
  "color": "primary",
96
- "xs": 12, "sm": 6, "md": 4, "lg": 4, "xl": 4
124
+ "xs": 12,
125
+ "sm": 6,
126
+ "md": 4,
127
+ "lg": 4,
128
+ "xl": 4
97
129
  }
98
130
  }
99
131
  }
@@ -20,8 +20,6 @@ var types_exports = {};
20
20
  __export(types_exports, {
21
21
  FALLBACK_LANGUAGE: () => FALLBACK_LANGUAGE,
22
22
  STATUS_LABELS: () => STATUS_LABELS,
23
- STATUS_LABELS_DE: () => STATUS_LABELS_DE,
24
- STATUS_LABELS_EN: () => STATUS_LABELS_EN,
25
23
  SUPPORTED_LANGUAGES: () => SUPPORTED_LANGUAGES
26
24
  });
27
25
  module.exports = __toCommonJS(types_exports);
@@ -148,16 +146,12 @@ const STATUS_LABELS = {
148
146
  8: "\u5DF2\u767B\u8BB0"
149
147
  }
150
148
  };
151
- const STATUS_LABELS_DE = STATUS_LABELS.de;
152
- const STATUS_LABELS_EN = STATUS_LABELS.en;
153
149
  const SUPPORTED_LANGUAGES = Object.keys(STATUS_LABELS);
154
150
  const FALLBACK_LANGUAGE = "en";
155
151
  // Annotate the CommonJS export names for ESM import in node:
156
152
  0 && (module.exports = {
157
153
  FALLBACK_LANGUAGE,
158
154
  STATUS_LABELS,
159
- STATUS_LABELS_DE,
160
- STATUS_LABELS_EN,
161
155
  SUPPORTED_LANGUAGES
162
156
  });
163
157
  //# sourceMappingURL=types.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/lib/types.ts"],
4
- "sourcesContent": ["/** API response from parcel.app deliveries endpoint */\nexport interface ParcelApiResponse {\n /** Whether the request was successful */\n success: boolean;\n /** Error message if request failed */\n error_message?: string;\n /** Error code if request failed */\n error_code?: string;\n /** List of deliveries */\n deliveries?: ParcelDelivery[];\n}\n\n/** Single delivery from the parcel.app API */\nexport interface ParcelDelivery {\n /** Carrier identifier */\n carrier_code: string;\n /** User-defined description */\n description: string;\n /** Status code (0-8 as string) */\n status_code: string;\n /** Tracking number */\n tracking_number: string;\n /** Extra info (postal code, email) */\n extra_information?: string;\n /** Expected delivery date */\n date_expected?: string;\n /** Expected delivery date end */\n date_expected_end?: string;\n /** Expected delivery Unix timestamp */\n timestamp_expected?: number;\n /** Expected delivery end Unix timestamp */\n timestamp_expected_end?: number;\n /** Tracking events (newest first) */\n events?: ParcelEvent[];\n}\n\n/** Single tracking event */\nexport interface ParcelEvent {\n /** Event description */\n event: string;\n /** Event date string */\n date: string;\n /** Event location */\n location?: string;\n /** Additional details */\n additional?: string;\n}\n\n/** Request body for adding a delivery */\nexport interface AddDeliveryRequest {\n /** Tracking number to add */\n tracking_number: string;\n /** Carrier code */\n carrier_code: string;\n /** User description */\n description: string;\n /** Tracking language */\n language?: string;\n /** Send push confirmation */\n send_push_confirmation?: boolean;\n}\n\n/** Add delivery API response */\nexport interface AddDeliveryResponse {\n /** Whether the delivery was added */\n success: boolean;\n /** Error message if failed */\n error_message?: string;\n}\n\n/** Carrier names mapping (carrier_code \u2192 display name) */\nexport type CarrierMap = Record<string, string>;\n\n/** Delivery status labels for status codes 0-8, keyed by ioBroker language code */\nexport const STATUS_LABELS: Record<string, Record<number, string>> = {\n de: {\n 0: \"Zugestellt\",\n 1: \"Eingefroren\",\n 2: \"Unterwegs\",\n 3: \"Abholung erwartet\",\n 4: \"In Zustellung\",\n 5: \"Nicht gefunden\",\n 6: \"Zustellversuch gescheitert\",\n 7: \"Ausnahme\",\n 8: \"Registriert\",\n },\n en: {\n 0: \"Delivered\",\n 1: \"Frozen\",\n 2: \"In Transit\",\n 3: \"Awaiting Pickup\",\n 4: \"Out for Delivery\",\n 5: \"Not Found\",\n 6: \"Delivery Attempt Failed\",\n 7: \"Exception\",\n 8: \"Info Received\",\n },\n ru: {\n 0: \"\u0414\u043E\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u043E\",\n 1: \"\u0417\u0430\u043C\u043E\u0440\u043E\u0436\u0435\u043D\u043E\",\n 2: \"\u0412 \u043F\u0443\u0442\u0438\",\n 3: \"\u041E\u0436\u0438\u0434\u0430\u0435\u0442 \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u0438\u044F\",\n 4: \"\u0414\u043E\u0441\u0442\u0430\u0432\u043B\u044F\u0435\u0442\u0441\u044F\",\n 5: \"\u041D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u043E\",\n 6: \"\u041D\u0435\u0443\u0434\u0430\u0447\u043D\u0430\u044F \u0434\u043E\u0441\u0442\u0430\u0432\u043A\u0430\",\n 7: \"\u0418\u0441\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u0435\",\n 8: \"\u0417\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043E\u0432\u0430\u043D\u043E\",\n },\n pt: {\n 0: \"Entregue\",\n 1: \"Congelado\",\n 2: \"Em tr\u00E2nsito\",\n 3: \"Aguardando recolha\",\n 4: \"Em entrega\",\n 5: \"N\u00E3o encontrado\",\n 6: \"Tentativa de entrega falhou\",\n 7: \"Exce\u00E7\u00E3o\",\n 8: \"Registado\",\n },\n nl: {\n 0: \"Bezorgd\",\n 1: \"Bevroren\",\n 2: \"Onderweg\",\n 3: \"Wacht op ophaling\",\n 4: \"Wordt bezorgd\",\n 5: \"Niet gevonden\",\n 6: \"Bezorgpoging mislukt\",\n 7: \"Uitzondering\",\n 8: \"Geregistreerd\",\n },\n fr: {\n 0: \"Livr\u00E9\",\n 1: \"Gel\u00E9\",\n 2: \"En transit\",\n 3: \"En attente de retrait\",\n 4: \"En cours de livraison\",\n 5: \"Introuvable\",\n 6: \"\u00C9chec de la livraison\",\n 7: \"Exception\",\n 8: \"Enregistr\u00E9\",\n },\n it: {\n 0: \"Consegnato\",\n 1: \"Congelato\",\n 2: \"In transito\",\n 3: \"In attesa di ritiro\",\n 4: \"In consegna\",\n 5: \"Non trovato\",\n 6: \"Consegna fallita\",\n 7: \"Eccezione\",\n 8: \"Registrato\",\n },\n es: {\n 0: \"Entregado\",\n 1: \"Congelado\",\n 2: \"En tr\u00E1nsito\",\n 3: \"Esperando recogida\",\n 4: \"En reparto\",\n 5: \"No encontrado\",\n 6: \"Intento de entrega fallido\",\n 7: \"Excepci\u00F3n\",\n 8: \"Registrado\",\n },\n pl: {\n 0: \"Dostarczone\",\n 1: \"Zamro\u017Cone\",\n 2: \"W drodze\",\n 3: \"Oczekuje na odbi\u00F3r\",\n 4: \"W dor\u0119czeniu\",\n 5: \"Nie znaleziono\",\n 6: \"Nieudana pr\u00F3ba dor\u0119czenia\",\n 7: \"Wyj\u0105tek\",\n 8: \"Zarejestrowane\",\n },\n uk: {\n 0: \"\u0414\u043E\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u043E\",\n 1: \"\u0417\u0430\u043C\u043E\u0440\u043E\u0436\u0435\u043D\u043E\",\n 2: \"\u0412 \u0434\u043E\u0440\u043E\u0437\u0456\",\n 3: \"\u041E\u0447\u0456\u043A\u0443\u0454 \u043E\u0442\u0440\u0438\u043C\u0430\u043D\u043D\u044F\",\n 4: \"\u0414\u043E\u0441\u0442\u0430\u0432\u043B\u044F\u0454\u0442\u044C\u0441\u044F\",\n 5: \"\u041D\u0435 \u0437\u043D\u0430\u0439\u0434\u0435\u043D\u043E\",\n 6: \"\u041D\u0435\u0432\u0434\u0430\u043B\u0430 \u0441\u043F\u0440\u043E\u0431\u0430 \u0434\u043E\u0441\u0442\u0430\u0432\u043A\u0438\",\n 7: \"\u0412\u0438\u043D\u044F\u0442\u043E\u043A\",\n 8: \"\u0417\u0430\u0440\u0435\u0454\u0441\u0442\u0440\u043E\u0432\u0430\u043D\u043E\",\n },\n \"zh-cn\": {\n 0: \"\u5DF2\u9001\u8FBE\",\n 1: \"\u5DF2\u51BB\u7ED3\",\n 2: \"\u8FD0\u8F93\u4E2D\",\n 3: \"\u7B49\u5F85\u53D6\u4EF6\",\n 4: \"\u6D3E\u9001\u4E2D\",\n 5: \"\u672A\u627E\u5230\",\n 6: \"\u6D3E\u9001\u5931\u8D25\",\n 7: \"\u5F02\u5E38\",\n 8: \"\u5DF2\u767B\u8BB0\",\n },\n};\n\n/** Backward-compatible aliases (used by tests and legacy imports) */\nexport const STATUS_LABELS_DE = STATUS_LABELS.de;\nexport const STATUS_LABELS_EN = STATUS_LABELS.en;\n\n/** Language codes the adapter generates state labels for */\nexport const SUPPORTED_LANGUAGES = Object.keys(STATUS_LABELS);\n\n/** Fallback language used when system.config.language is outside SUPPORTED_LANGUAGES */\nexport const FALLBACK_LANGUAGE = \"en\";\n\n// Augment the ioBroker global namespace\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace ioBroker {\n interface AdapterConfig {\n /** parcel.app API key */\n apiKey: string;\n /** Polling interval in minutes */\n pollInterval: number;\n /** Automatically remove delivered packages from states */\n autoRemoveDelivered: boolean;\n }\n }\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA0EO,MAAM,gBAAwD;AAAA,EACnE,IAAI;AAAA,IACF,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,EACL;AAAA,EACA,IAAI;AAAA,IACF,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,EACL;AAAA,EACA,IAAI;AAAA,IACF,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,EACL;AAAA,EACA,IAAI;AAAA,IACF,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,EACL;AAAA,EACA,IAAI;AAAA,IACF,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,EACL;AAAA,EACA,IAAI;AAAA,IACF,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,EACL;AAAA,EACA,IAAI;AAAA,IACF,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,EACL;AAAA,EACA,IAAI;AAAA,IACF,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,EACL;AAAA,EACA,IAAI;AAAA,IACF,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,EACL;AAAA,EACA,IAAI;AAAA,IACF,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,EACL;AAAA,EACA,SAAS;AAAA,IACP,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,EACL;AACF;AAGO,MAAM,mBAAmB,cAAc;AACvC,MAAM,mBAAmB,cAAc;AAGvC,MAAM,sBAAsB,OAAO,KAAK,aAAa;AAGrD,MAAM,oBAAoB;",
4
+ "sourcesContent": ["/** API response from parcel.app deliveries endpoint */\nexport interface ParcelApiResponse {\n /** Whether the request was successful */\n success: boolean;\n /** Error message if request failed */\n error_message?: string;\n /** Error code if request failed */\n error_code?: string;\n /** List of deliveries */\n deliveries?: ParcelDelivery[];\n}\n\n/** Single delivery from the parcel.app API */\nexport interface ParcelDelivery {\n /** Carrier identifier */\n carrier_code: string;\n /** User-defined description */\n description: string;\n /** Status code (0-8 as string) */\n status_code: string;\n /** Tracking number */\n tracking_number: string;\n /** Extra info (postal code, email) */\n extra_information?: string;\n /** Expected delivery date */\n date_expected?: string;\n /** Expected delivery date end */\n date_expected_end?: string;\n /** Expected delivery Unix timestamp */\n timestamp_expected?: number;\n /** Expected delivery end Unix timestamp */\n timestamp_expected_end?: number;\n /** Tracking events (newest first) */\n events?: ParcelEvent[];\n}\n\n/** Single tracking event */\nexport interface ParcelEvent {\n /** Event description */\n event: string;\n /** Event date string */\n date: string;\n /** Event location */\n location?: string;\n /** Additional details */\n additional?: string;\n}\n\n/** Request body for adding a delivery */\nexport interface AddDeliveryRequest {\n /** Tracking number to add */\n tracking_number: string;\n /** Carrier code */\n carrier_code: string;\n /** User description */\n description: string;\n /** Tracking language */\n language?: string;\n /** Send push confirmation */\n send_push_confirmation?: boolean;\n}\n\n/** Add delivery API response */\nexport interface AddDeliveryResponse {\n /** Whether the delivery was added */\n success: boolean;\n /** Error message if failed */\n error_message?: string;\n}\n\n/** Carrier names mapping (carrier_code \u2192 display name) */\nexport type CarrierMap = Record<string, string>;\n\n/** Delivery status labels for status codes 0-8, keyed by ioBroker language code */\nexport const STATUS_LABELS: Record<string, Record<number, string>> = {\n de: {\n 0: \"Zugestellt\",\n 1: \"Eingefroren\",\n 2: \"Unterwegs\",\n 3: \"Abholung erwartet\",\n 4: \"In Zustellung\",\n 5: \"Nicht gefunden\",\n 6: \"Zustellversuch gescheitert\",\n 7: \"Ausnahme\",\n 8: \"Registriert\",\n },\n en: {\n 0: \"Delivered\",\n 1: \"Frozen\",\n 2: \"In Transit\",\n 3: \"Awaiting Pickup\",\n 4: \"Out for Delivery\",\n 5: \"Not Found\",\n 6: \"Delivery Attempt Failed\",\n 7: \"Exception\",\n 8: \"Info Received\",\n },\n ru: {\n 0: \"\u0414\u043E\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u043E\",\n 1: \"\u0417\u0430\u043C\u043E\u0440\u043E\u0436\u0435\u043D\u043E\",\n 2: \"\u0412 \u043F\u0443\u0442\u0438\",\n 3: \"\u041E\u0436\u0438\u0434\u0430\u0435\u0442 \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u0438\u044F\",\n 4: \"\u0414\u043E\u0441\u0442\u0430\u0432\u043B\u044F\u0435\u0442\u0441\u044F\",\n 5: \"\u041D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u043E\",\n 6: \"\u041D\u0435\u0443\u0434\u0430\u0447\u043D\u0430\u044F \u0434\u043E\u0441\u0442\u0430\u0432\u043A\u0430\",\n 7: \"\u0418\u0441\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u0435\",\n 8: \"\u0417\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043E\u0432\u0430\u043D\u043E\",\n },\n pt: {\n 0: \"Entregue\",\n 1: \"Congelado\",\n 2: \"Em tr\u00E2nsito\",\n 3: \"Aguardando recolha\",\n 4: \"Em entrega\",\n 5: \"N\u00E3o encontrado\",\n 6: \"Tentativa de entrega falhou\",\n 7: \"Exce\u00E7\u00E3o\",\n 8: \"Registado\",\n },\n nl: {\n 0: \"Bezorgd\",\n 1: \"Bevroren\",\n 2: \"Onderweg\",\n 3: \"Wacht op ophaling\",\n 4: \"Wordt bezorgd\",\n 5: \"Niet gevonden\",\n 6: \"Bezorgpoging mislukt\",\n 7: \"Uitzondering\",\n 8: \"Geregistreerd\",\n },\n fr: {\n 0: \"Livr\u00E9\",\n 1: \"Gel\u00E9\",\n 2: \"En transit\",\n 3: \"En attente de retrait\",\n 4: \"En cours de livraison\",\n 5: \"Introuvable\",\n 6: \"\u00C9chec de la livraison\",\n 7: \"Exception\",\n 8: \"Enregistr\u00E9\",\n },\n it: {\n 0: \"Consegnato\",\n 1: \"Congelato\",\n 2: \"In transito\",\n 3: \"In attesa di ritiro\",\n 4: \"In consegna\",\n 5: \"Non trovato\",\n 6: \"Consegna fallita\",\n 7: \"Eccezione\",\n 8: \"Registrato\",\n },\n es: {\n 0: \"Entregado\",\n 1: \"Congelado\",\n 2: \"En tr\u00E1nsito\",\n 3: \"Esperando recogida\",\n 4: \"En reparto\",\n 5: \"No encontrado\",\n 6: \"Intento de entrega fallido\",\n 7: \"Excepci\u00F3n\",\n 8: \"Registrado\",\n },\n pl: {\n 0: \"Dostarczone\",\n 1: \"Zamro\u017Cone\",\n 2: \"W drodze\",\n 3: \"Oczekuje na odbi\u00F3r\",\n 4: \"W dor\u0119czeniu\",\n 5: \"Nie znaleziono\",\n 6: \"Nieudana pr\u00F3ba dor\u0119czenia\",\n 7: \"Wyj\u0105tek\",\n 8: \"Zarejestrowane\",\n },\n uk: {\n 0: \"\u0414\u043E\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u043E\",\n 1: \"\u0417\u0430\u043C\u043E\u0440\u043E\u0436\u0435\u043D\u043E\",\n 2: \"\u0412 \u0434\u043E\u0440\u043E\u0437\u0456\",\n 3: \"\u041E\u0447\u0456\u043A\u0443\u0454 \u043E\u0442\u0440\u0438\u043C\u0430\u043D\u043D\u044F\",\n 4: \"\u0414\u043E\u0441\u0442\u0430\u0432\u043B\u044F\u0454\u0442\u044C\u0441\u044F\",\n 5: \"\u041D\u0435 \u0437\u043D\u0430\u0439\u0434\u0435\u043D\u043E\",\n 6: \"\u041D\u0435\u0432\u0434\u0430\u043B\u0430 \u0441\u043F\u0440\u043E\u0431\u0430 \u0434\u043E\u0441\u0442\u0430\u0432\u043A\u0438\",\n 7: \"\u0412\u0438\u043D\u044F\u0442\u043E\u043A\",\n 8: \"\u0417\u0430\u0440\u0435\u0454\u0441\u0442\u0440\u043E\u0432\u0430\u043D\u043E\",\n },\n \"zh-cn\": {\n 0: \"\u5DF2\u9001\u8FBE\",\n 1: \"\u5DF2\u51BB\u7ED3\",\n 2: \"\u8FD0\u8F93\u4E2D\",\n 3: \"\u7B49\u5F85\u53D6\u4EF6\",\n 4: \"\u6D3E\u9001\u4E2D\",\n 5: \"\u672A\u627E\u5230\",\n 6: \"\u6D3E\u9001\u5931\u8D25\",\n 7: \"\u5F02\u5E38\",\n 8: \"\u5DF2\u767B\u8BB0\",\n },\n};\n\n/** Language codes the adapter generates state labels for */\nexport const SUPPORTED_LANGUAGES = Object.keys(STATUS_LABELS);\n\n/** Fallback language used when system.config.language is outside SUPPORTED_LANGUAGES */\nexport const FALLBACK_LANGUAGE = \"en\";\n\n// Augment the ioBroker global namespace\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace ioBroker {\n interface AdapterConfig {\n /** parcel.app API key */\n apiKey: string;\n /** Polling interval in minutes */\n pollInterval: number;\n /** Automatically remove delivered packages from states */\n autoRemoveDelivered: boolean;\n }\n }\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA0EO,MAAM,gBAAwD;AAAA,EACnE,IAAI;AAAA,IACF,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,EACL;AAAA,EACA,IAAI;AAAA,IACF,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,EACL;AAAA,EACA,IAAI;AAAA,IACF,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,EACL;AAAA,EACA,IAAI;AAAA,IACF,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,EACL;AAAA,EACA,IAAI;AAAA,IACF,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,EACL;AAAA,EACA,IAAI;AAAA,IACF,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,EACL;AAAA,EACA,IAAI;AAAA,IACF,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,EACL;AAAA,EACA,IAAI;AAAA,IACF,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,EACL;AAAA,EACA,IAAI;AAAA,IACF,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,EACL;AAAA,EACA,IAAI;AAAA,IACF,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,EACL;AAAA,EACA,SAAS;AAAA,IACP,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,EACL;AACF;AAGO,MAAM,sBAAsB,OAAO,KAAK,aAAa;AAGrD,MAAM,oBAAoB;",
6
6
  "names": []
7
7
  }
package/io-package.json CHANGED
@@ -1,8 +1,21 @@
1
1
  {
2
2
  "common": {
3
3
  "name": "parcelapp",
4
- "version": "0.2.18",
4
+ "version": "0.3.0",
5
5
  "news": {
6
+ "0.3.0": {
7
+ "en": "DRY: dead `STATUS_LABELS_DE` + `STATUS_LABELS_EN` aliases removed from `types.ts`; tests rewritten to use `STATUS_LABELS.de` / `STATUS_LABELS.en` directly.\nNew `format` + `format:check` npm-scripts (run prettier — matches the other krobi adapters).\nMaster-sync against `.consistency-master/`: `.github/dependabot.yml` ignore-block for `actions/checkout` + `actions/setup-node` major bumps, and the `repochecker-version-gate` workflow job moved from the legacy M1000 check to the sources-dist-stable check (now identical to hassemu).",
8
+ "de": "DRY: tote `STATUS LABELS DE` + `STATUS LABELS EN` Aliases entfernt von `types.ts`; Tests neu geschrieben, um `STATUS LABELS.de` / `STATUS LABELS.en` direkt zu verwenden.\nNeue `format` + `format:check` npm-scripts (run prettier — entspricht den anderen krobi adapters).\nMaster-Sync gegen `.consistency-master/`: `.github/dependabot.yml` ignorieren-Block für `actions/checkout` + `actions/setup-node` Hauptbumps, und der `repochecker-version-gate' Workflow Job bewegte sich vom Vermächtnis M1000-Check zu der quellen-dist-stable-emu (jetzt identisch zu hass).",
9
+ "ru": "DRY: мертвые псевдонимы «STATUS LABELS DE» + «STATUS LABELS EN» удалены из «types.ts»; тесты переписаны для использования непосредственно «STATUS LABELS.de» / «STATUS LABELS.en».\nНовый «формат» + «формат: проверьте» npm-скрипты (run prettier — совпадает с другими адаптерами krobi).\nМастер-синхронизация против \".consistency-master/\": \".github/dependabot.yml\" блок игнорирования для \"actions/checkout\" + \"actions/setup-node\" основные удары, и работа \"repochecker-версия-gate\" рабочий процесс перешел от унаследованной проверки M1000 к источникам-дистабильная проверка (теперь идентична Hassemu).",
10
+ "pt": "DRY: morto `STATUS LABELS DE` + `STATUS LABELS EN` pseudônimos removidos de `types.ts'; testes reescritos para usar `STATUS LABELS.de` / `STATUS LABELS.en` diretamente.\nNovo `format` + `format:check` npm-scripts (corrida mais bonita — corresponde aos outros adaptadores krobi).\nMaster-sync contra `.conistency-master/`: `.github/dedependebot.yml` ignore-block para `actions/checkout` + `actions/setup-node` major bumps, e o trabalho de fluxo de trabalho 'repochecker-version-gate' mudou-se do check legado M1000 para o check sources-dist-stable (agora idêntico ao hassemu).",
11
+ "nl": "DRY: dode .\nNieuw formaat.\nMaster-sync tegen .",
12
+ "fr": "DRY: mort `STATUS LABELS DE` + `STATUS LABELS EN` alias supprimés de `types.ts`; tests réécrits pour utiliser `STATUS LABELS.de` / `STATUS LABELS.en` directement.\nNouveau `format` + `format:check` npm-scripts (run brettier — correspond aux autres adaptateurs krobi).\nMaster-sync contre `.counistency-master/`: `.github/dependabot.yml` ignore-bloc pour `actions/checkout` + `actions/setup-node` principales bosses, et le travail de workflow `repochecker-version-gate` déplacé de l`héritage M1000 check à la vérification source-dist-stable (maintenant identique à hasemu).",
13
+ "it": "DRY: dead `STATUS LABELS DE` + `STATUS LABELS EN` aliases rimosso da `types.ts`; test riscritti per usare `STATUS LABELS.de` / `STATUS LABELS.en` direttamente.\nNuovo `format` + `format:check` npm-scripts (run prettier — corrisponde agli altri adattatori krobi).\nMaster-sync contro `.consistency-master/`: `.github/dependabot.yml` ignorare-block per `actions/checkout` + `actions/setup-node` urti principali, e il `repochecker-version-gate` lavoro di flusso di lavoro spostato dal controllo M1000 legacy al controllo sorgenti-dist-stable (ora identico per hassemu).",
14
+ "es": "DRY: dead `STATUS LABELS DE` + `STATUS LABELS EN` alias removed from `types.ts`; tests rewritten to use `STATUS LABELS.de` / `STATUS LABELS.en` directly.\nNew `format` + `format:check` npm-scripts (run prettier - coincide con los otros adaptadores de krobi).\nMaster-sync contra `.consistency-master/`: `.github/dependabot.yml` ignore-block for `actions/checkout` + `actions/setup-node` major shocks, and the `repochecker-version-gate` workflow moved from the legacy M1000 check to the sources-dist-stable check (now identical to hassemu).",
15
+ "pl": "DRY: dead 'STATUS _ LABELS _ DE' + 'STATUS _ LABELS _ EN' aliasy usunięte z 'types.ts'; tests rewrited to use 'STATUS _ LABELS.de' / 'STATUS _ LABELS.en' bezpośrednio.\nNowy format 'format' + ': sprawdź' npm- skrypty (uruchom ładniejsze - pasuje do innych adapterów krobi).\nMaster- sync against '.consistency- master /': '.github / dependiabot.yml' ignore- block for 'actions / checkout' + 'actions / setup- node' major guuses, and the 'repochecker- version- gate' job moved from the legage M1000 check to the sources- dist- stable check (now identic to hassemu).",
16
+ "uk": "`СТАТУС LABELS DE` + `STATUS LABELS EN` aliases вилучені з `types.ts`; тести, що повторюють використання `STATUS LABELS.de` / `STATUS LABELS.en` безпосередньо.\nНовий `формат` + `format:check` npm-scripts (run prettier — відповідає іншим адаптерам krobi).\nМайстер-sync проти `.consistency-master/`: `.github/залежніabot.yml` ігнорує-блок для `actions/checkout` + `actions/setup-node` основних bumps, а також робота `repochecker-version-gate, яка була переміщена з спадщини M1000, перевірте джерела-dist-table check (нині ідентично hassemu).",
17
+ "zh-cn": "DRY:已死亡的`STATUS LABELS DE' +`STATUS LABELS EN'别名从`types.ts'中移除;测试重写为直接使用`STATUS LABELS.de ' /`STATUS LABELS.en ' .\n新的`格式 ' +`格式:检查' npm 标记(运行更美——与其他krobi适配器匹配).\n与`.一致性-主人公/ ' 进行主同步:`.github/dependabot.yml ' 忽略`行动/检查 ' +`行动/设置-节点 ' 重大碰头的屏障,`检查员-转换门 ' 工作从遗留的M1000检查转到源-dist-stable检查(现在与散塞穆相同)."
18
+ },
6
19
  "0.2.18": {
7
20
  "en": "Audit cleanup against the upstream `ioBroker.example/TypeScript` full standard:\n`@types/node` rolled back from `^25.6.0` to `^20.19.24` so type defs match `engines.node: \">=20\"` (otherwise Node 21+-only APIs would type-check on Node 20 and crash at runtime)\nDependabot now ignores major bumps for `@types/node`, `typescript`, `eslint` so the runtime/toolchain pinning cannot drift via auto-merge\n`nyc` config + `coverage` script added (matches upstream template)\n`prettier.config.mjs` made explicit with project-style overrides (Spaces 2-wide, double quotes) instead of relying on missing config\nOrphan `.github/auto-merge.yml` removed (the active workflow is `automerge-dependabot.yml` using `gh pr merge`, the old yml was never read)",
8
21
  "de": "Audit-Aufräumung gegen den vorgeschalteten `ioBroker.example/TypeScript` Vollstandard:\n`@types/node` rollte zurück von `^25.6.0` zu `^20.19.24` so type defs match `engines.node: \">=20\" ` (sonst Node 21+-only APIs würden Typ-Check auf Node 20 und Crash bei Laufzeit)\nDependabot ignoriert nun große Beulen für `@types/node`, `typescript`, `eslint`, so dass die Runtime/toolchain Pinning nicht über Auto-Merge driften kann\n`nyc` config + `coverage` skript hinzugefügt (matches vor vorlage)\n`prettier.config.mjs` explizit gemacht mit Projekt-Stil Overrides (Spaces 2-wide, doppelte Zitate) anstatt auf fehlende config verlassen\nOrphan `.github/auto-merge.yml` entfernt (der aktive Workflow ist `automerge-dependabot.yml` mit `gh pr merge`, die alte yml wurde nie gelesen)",
@@ -67,32 +80,6 @@
67
80
  "pl": "Odpowiedź na latest-repo review round 2. Wyjście test-build (build-test/) oddzielone od produkcji build/. Folder deliveries i kanał summary zadeklarowane jako instance objects. Etykiety statusu i szacunki dostawy zlokalizowane we wszystkich 11 językach ioBroker przez system.config.language; opcja Status Language per-instance została usunięta. summary.todayCount naprawione dla języków innych niż DE/EN.",
68
81
  "uk": "Відповідь на latest-repo review round 2. Test-build output (build-test/) відокремлено від production build/. Folder deliveries та channel summary оголошено як instance objects. Status-мітки та оцінки доставки локалізовано в усіх 11 мовах ioBroker через system.config.language; опцію Status Language per-instance видалено. summary.todayCount виправлено для мов крім DE/EN.",
69
82
  "zh-cn": "Latest-repo review round 2 的回应。测试构建输出(build-test/)从生产 build/ 分离。deliveries 文件夹和 summary 通道声明为 instance objects。状态标签和到达时间预估通过 system.config.language 本地化为全部 11 种 ioBroker 语言;移除 per-instance Status Language 选项。修复非 DE/EN 语言下的 summary.todayCount。"
70
- },
71
- "0.2.13": {
72
- "en": "Latest-repo review round 1 compliance: common.messagebox=true added because the admin-UI Check Connection and Add Delivery buttons route through onMessage. Runtime behaviour unchanged.",
73
- "de": "Latest-Repo Review Round 1 Compliance: common.messagebox=true gesetzt, weil die Admin-UI-Buttons Check Connection und Add Delivery über onMessage laufen. Runtime-Verhalten unverändert.",
74
- "ru": "Latest-repo review round 1 compliance: common.messagebox=true додано, оскільки кнопки Check Connection та Add Delivery в admin-UI проходять через onMessage. Runtime-поведінка незмінна.",
75
- "pt": "Compliance do latest-repo review round 1: common.messagebox=true adicionado porque os botões Check Connection e Add Delivery do admin-UI passam pelo onMessage. Comportamento em runtime inalterado.",
76
- "nl": "Latest-repo review round 1 compliance: common.messagebox=true toegevoegd omdat de admin-UI Check Connection en Add Delivery knoppen via onMessage lopen. Runtime-gedrag ongewijzigd.",
77
- "fr": "Latest-repo review round 1 compliance: common.messagebox=true ajouté car les boutons Check Connection et Add Delivery de l'admin-UI passent par onMessage. Comportement runtime inchangé.",
78
- "it": "Latest-repo review round 1 compliance: common.messagebox=true aggiunto perché i pulsanti Check Connection e Add Delivery dell'admin-UI passano da onMessage. Comportamento runtime invariato.",
79
- "es": "Latest-repo review round 1 compliance: common.messagebox=true añadido porque los botones Check Connection y Add Delivery de admin-UI pasan por onMessage. Comportamiento en runtime sin cambios.",
80
- "pl": "Latest-repo review round 1 compliance: common.messagebox=true dodane, ponieważ przyciski Check Connection i Add Delivery admin-UI przechodzą przez onMessage. Zachowanie runtime bez zmian.",
81
- "uk": "Latest-repo review round 1 compliance: common.messagebox=true додано, оскільки кнопки Check Connection та Add Delivery в admin-UI проходять через onMessage. Runtime поведінка незмінна.",
82
- "zh-cn": "Latest-repo review round 1 compliance:因 admin-UI 的 Check Connection 与 Add Delivery 按钮经由 onMessage 路由,故添加 common.messagebox=true。运行时行为不变。"
83
- },
84
- "0.2.12": {
85
- "en": "Harden API-drift guards in ParcelClient and StateManager (non-boolean success, non-array deliveries, non-string error_code/error_message, non-object carrier map, non-string delivery fields). 38 new regression tests (128 total).",
86
- "de": "API-Drift-Guards in ParcelClient und StateManager gehärtet (non-boolean success, non-array deliveries, non-string error_code/error_message, non-object carrier map, non-string delivery fields). 38 neue Regression-Tests (128 total).",
87
- "ru": "API-drift guards в ParcelClient та StateManager посилено (non-boolean success, non-array deliveries, non-string error_code/error_message, non-object carrier map, non-string delivery fields). 38 нових regression-тестів (128 всього).",
88
- "pt": "API-drift guards reforçados em ParcelClient e StateManager (success non-boolean, deliveries non-array, error_code/error_message non-string, carrier map non-object, campos non-string). 38 novos regression-tests (128 no total).",
89
- "nl": "API-drift guards in ParcelClient en StateManager versterkt (non-boolean success, non-array deliveries, non-string error_code/error_message, non-object carrier map, non-string delivery fields). 38 nieuwe regressietests (128 totaal).",
90
- "fr": "API-drift guards renforcés dans ParcelClient et StateManager (success non-boolean, deliveries non-array, error_code/error_message non-string, carrier map non-object, champs non-string). 38 nouveaux regression-tests (128 au total).",
91
- "it": "API-drift guards rafforzati in ParcelClient e StateManager (success non-boolean, deliveries non-array, error_code/error_message non-string, carrier map non-object, campi non-string). 38 nuovi regression-test (128 totali).",
92
- "es": "API-drift guards reforzados en ParcelClient y StateManager (success non-boolean, deliveries non-array, error_code/error_message non-string, carrier map non-object, campos non-string). 38 nuevos tests de regresión (128 en total).",
93
- "pl": "API-drift guards wzmocnione w ParcelClient i StateManager (success non-boolean, deliveries non-array, error_code/error_message non-string, carrier map non-object, pola non-string). 38 nowych testów regresji (128 łącznie).",
94
- "uk": "API-drift guards посилено в ParcelClient і StateManager (non-boolean success, non-array deliveries, non-string error_code/error_message, non-object carrier map, non-string delivery fields). 38 нових regression-тестів (128 загалом).",
95
- "zh-cn": "强化 ParcelClient 和 StateManager 的 API-drift guards(非布尔 success、非数组 deliveries、非字符串 error_code/error_message、非对象 carrier map、非字符串 delivery 字段)。新增 38 个 regression 测试(共 128 个)。"
96
83
  }
97
84
  },
98
85
  "titleLang": {
@@ -157,12 +144,12 @@
157
144
  },
158
145
  "dependencies": [
159
146
  {
160
- "js-controller": ">=6.0.11"
147
+ "js-controller": ">=7.0.7"
161
148
  }
162
149
  ],
163
150
  "globalDependencies": [
164
151
  {
165
- "admin": ">=7.6.20"
152
+ "admin": ">=7.7.22"
166
153
  }
167
154
  ]
168
155
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "iobroker.parcelapp",
3
- "version": "0.2.18",
3
+ "version": "0.3.0",
4
4
  "description": "ioBroker adapter for parcel.app — track packages as ioBroker states",
5
5
  "author": {
6
6
  "name": "krobi",
@@ -69,6 +69,8 @@
69
69
  "translate": "translate-adapter",
70
70
  "lint": "eslint",
71
71
  "lint:fix": "eslint --fix",
72
+ "format": "prettier --write .",
73
+ "format:check": "prettier --check .",
72
74
  "release": "release-script"
73
75
  },
74
76
  "nyc": {