@dpuse/dpuse-shared 1.0.2 → 1.0.105

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
@@ -79,19 +79,83 @@ try {
79
79
 
80
80
  ### Encoding
81
81
 
82
- Character encoding types with detection and decodability flags, a static catalogue of all supported encodings loaded from JSON, and an action to retrieve them in sorted order. |
82
+ Character encoding types with detection and decodability flags, a catalogue of every supported encoding with the name browsers decode it as, and actions to check an encoding id and list the encodings in sorted order.
83
+
84
+ <!-- ENCODINGS_START -->
85
+
86
+ The table below lists every supported encoding.
87
+
88
+ - **Detectable** — the encoding can be identified from a file's contents.
89
+ - **Decodable** — the browser's built-in `TextDecoder` can decode it. The four that cannot are refused by all the major browsers: `iso-2022-cn` and `iso-2022-kr` are blocked by the WHATWG Encoding Standard for security reasons, and UTF-32 is not part of the standard.
90
+ - **Decoded As** — the encoding browsers actually use, where it differs from the name. The Encoding Standard treats some names as aliases, so for example `latin1` and `ascii` are decoded as `windows-1252`. The practical effects: bytes 0x80–0x9F decode as Windows-1252 characters (such as `€` and curly quotes) rather than control codes, `ascii` never rejects bytes above 0x7F, and a big-endian UTF-16 file read as `utf-16` decodes as little-endian and comes out garbled.
91
+
92
+ The major browsers all follow the Encoding Standard, so these columns hold for each of them. This was confirmed by running `TextDecoder` against every encoding in Chrome 154, Edge 154, Firefox 156 and Safari 26.6 (October 2026), and all four gave identical results. To re-check them on a Mac, run `npm run check:browsers` after a build.
93
+
94
+ | Group | Encoding | Detectable | Decodable | Decoded As |
95
+ | :------------------ | :------------- | :--------: | :-------: | :----------- |
96
+ | — | ascii | ✅ | ✅ | windows-1252 |
97
+ | — | utf-8 | ✅ | ✅ | — |
98
+ | Arabic | iso-8859-6 | ✅ | ✅ | — |
99
+ | Arabic | windows-1256 | ✅ | ✅ | — |
100
+ | Baltic | iso-8859-13 | ❌ | ✅ | — |
101
+ | Baltic | iso-8859-4 | ❌ | ✅ | — |
102
+ | Baltic | windows-1257 | ✅ | ✅ | — |
103
+ | Celtic | iso-8859-14 | ❌ | ✅ | — |
104
+ | Central European | iso-8859-2 | ✅ | ✅ | — |
105
+ | Central European | windows-1250 | ✅ | ✅ | — |
106
+ | Chinese Simplified | gb18030 | ✅ | ✅ | — |
107
+ | Chinese Simplified | gbk | ❌ | ✅ | — |
108
+ | Chinese Simplified | iso-2022-cn | ✅ | ❌ | — |
109
+ | Chinese Traditional | big5 | ✅ | ✅ | — |
110
+ | Cyrillic | ibm866 | ❌ | ✅ | — |
111
+ | Cyrillic | iso-8859-5 | ✅ | ✅ | — |
112
+ | Cyrillic | koi8-r | ✅ | ✅ | — |
113
+ | Cyrillic | koi8-u | ❌ | ✅ | — |
114
+ | Cyrillic | windows-1251 | ✅ | ✅ | — |
115
+ | Cyrillic | x-mac-cyrillic | ❌ | ✅ | — |
116
+ | Greek | iso-8859-7 | ✅ | ✅ | — |
117
+ | Greek | windows-1253 | ✅ | ✅ | — |
118
+ | Hebrew | iso-8859-8 | ✅ | ✅ | — |
119
+ | Hebrew | windows-1255 | ✅ | ✅ | — |
120
+ | Japanese | euc-jp | ✅ | ✅ | — |
121
+ | Japanese | iso-2022-jp | ✅ | ✅ | — |
122
+ | Japanese | shift_jis | ✅ | ✅ | — |
123
+ | Korean | euc-kr | ✅ | ✅ | — |
124
+ | Korean | iso-2022-kr | ✅ | ❌ | — |
125
+ | Nordic | iso-8859-10 | ❌ | ✅ | — |
126
+ | Other | x-user-defined | ❌ | ✅ | — |
127
+ | Romanian | iso-8859-16 | ❌ | ✅ | — |
128
+ | Southern European | iso-8859-3 | ❌ | ✅ | — |
129
+ | Thai | iso-8859-11 | ❌ | ✅ | windows-874 |
130
+ | Thai | tis-620 | ❌ | ✅ | windows-874 |
131
+ | Thai | windows-874 | ✅ | ✅ | — |
132
+ | Turkish | iso-8859-9 | ✅ | ✅ | windows-1254 |
133
+ | Turkish | windows-1254 | ✅ | ✅ | — |
134
+ | Unicode 16 | utf-16 | ❌ | ✅ | utf-16le |
135
+ | Unicode 16 | utf-16be | ✅ | ✅ | — |
136
+ | Unicode 16 | utf-16le | ✅ | ✅ | — |
137
+ | Unicode 32 | utf-32be | ✅ | ❌ | — |
138
+ | Unicode 32 | utf-32le | ✅ | ❌ | — |
139
+ | Vietnamese | windows-1258 | ✅ | ✅ | — |
140
+ | Western | iso-8859-1 | ✅ | ✅ | windows-1252 |
141
+ | Western | iso-8859-15 | ❌ | ✅ | — |
142
+ | Western | latin1 | ❌ | ✅ | windows-1252 |
143
+ | Western | macintosh | ❌ | ✅ | — |
144
+ | Western | windows-1252 | ✅ | ✅ | — |
145
+
146
+ <!-- ENCODINGS_END -->
83
147
 
84
148
  ### Errors
85
149
 
86
- A typed error hierarchy (`DPUseError`, `AppError`, `APIError`, `EngineError`, `ConnectorError`, `FetchError`) with serialisation and deserialisation for transporting errors across API and worker boundaries, plus utilities for normalising unknown throwables, constructing errors from HTTP responses, and suppressing best-effort cleanup errors. |
150
+ A typed error hierarchy (`DPUseError`, `AppError`, `APIError`, `EngineError`, `ConnectorError`, `FetchError`) with serialisation and deserialisation for transporting errors across API and worker boundaries, plus utilities for normalising unknown throwables, constructing errors from HTTP responses, and suppressing best-effort cleanup errors.
87
151
 
88
152
  ### Locale
89
153
 
90
- Locale and flag identifiers, localised label, description and verb types, Valibot schemas for locale fields, supported language constants, and actions for resolving and applying locale-specific values to configuration objects. |
154
+ Locale and flag identifiers, localised label, description and verb types, Valibot schemas for locale fields, supported language constants, and actions for resolving and applying locale-specific values to configuration objects.
91
155
 
92
156
  ### Utilities
93
157
 
94
- OData-to-internal type conversion, file path name and extension extraction, number formatting as decimal, whole number, compact size, storage size and duration, and MIME type lookup by file extension. |
158
+ OData-to-internal type conversion, file path name and extension extraction, number formatting as decimal, whole number, compact size, storage size and duration, and MIME type lookup by file extension.
95
159
 
96
160
  ## API Reference
97
161
 
@@ -125,14 +189,14 @@ _Note: Sonda's Vite reports currently exclude CSS files, since Vite does not gen
125
189
 
126
190
  | Chunk/Module/File | Composition |
127
191
  | :-------------------------------------------------------------------------- | :------------------------------------------ |
128
- | **dist/dpuse-shared.es.js** | 33.1 kB · gzip 8.6 kB · 100.0% of the build |
129
- | &nbsp;&nbsp;&nbsp;&nbsp;src | `█████████████░░░░░░░` 64.3% · 21.3 kB |
130
- | &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;↳ index.ts | `▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░` 53.7% · 17.8 kB |
131
- | &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;↳ connectorConfig.schema.ts | `▒░░░░░░░░░░░░░░░░░░░` 3.6% · 1.2 kB |
132
- | &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;↳ componentConfig.schema.ts | `▒░░░░░░░░░░░░░░░░░░░` 2.8% · 936 B |
133
- | &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;↳ 7 smaller files | `▒░░░░░░░░░░░░░░░░░░░` 4.3% · 1.4 kB |
134
- | &nbsp;&nbsp;&nbsp;&nbsp;valibot → dist/index.mjs | `████░░░░░░░░░░░░░░░░` 21.2% · 7.0 kB |
135
- | &nbsp;&nbsp;&nbsp;&nbsp;(bundler output, whitespace & JSON) | `███░░░░░░░░░░░░░░░░░` 14.5% · 4.8 kB |
192
+ | **dist/dpuse-shared.es.js** | 34.1 kB · gzip 8.7 kB · 100.0% of the build |
193
+ | &nbsp;&nbsp;&nbsp;&nbsp;src | `█████████████░░░░░░░` 65.0% · 22.2 kB |
194
+ | &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;↳ index.ts | `▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░` 54.8% · 18.7 kB |
195
+ | &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;↳ connectorConfig.schema.ts | `▒░░░░░░░░░░░░░░░░░░░` 3.5% · 1.2 kB |
196
+ | &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;↳ componentConfig.schema.ts | `▒░░░░░░░░░░░░░░░░░░░` 2.7% · 936 B |
197
+ | &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;↳ 7 smaller files | `▒░░░░░░░░░░░░░░░░░░░` 4.1% · 1.4 kB |
198
+ | &nbsp;&nbsp;&nbsp;&nbsp;valibot → dist/index.mjs | `████░░░░░░░░░░░░░░░░` 20.6% · 7.0 kB |
199
+ | &nbsp;&nbsp;&nbsp;&nbsp;(bundler output, whitespace & JSON) | `███░░░░░░░░░░░░░░░░░` 14.4% · 4.9 kB |
136
200
 
137
201
  Bars show each row's share of its output file. ↳ rows are part of the row above.
138
202
 
@@ -187,9 +251,6 @@ This section is updated each time `npm run document` is run. Settings come from
187
251
 
188
252
  This project is working towards the [OpenSSF Best Practices](https://www.bestpractices.dev) Passing badge, a self-certification covering security policy, vulnerability reporting, build processes, code quality, and more. Currently the [OpenSSF Scorecard](https://scorecard.dev) provides an independent automated assessment of the project's security practices and is an ongoing area of improvement.
189
253
 
190
- > [!NOTE]
191
- > Apart from the Best Practices badge above, the remaining Scorecard gaps need multi-person review or a pull-request workflow, which this solo-maintained project doesn't use.
192
-
193
254
  ### Reporting Vulnerabilities
194
255
 
195
256
  Please do not open public GitHub issues for security vulnerabilities. Use [GitHub private vulnerability reporting](https://github.com/dpuse/dpuse-shared/security/advisories/new) instead. See [SECURITY.md](./SECURITY.md) for the full disclosure policy, contact details, and expected response times.
@@ -1024,310 +1024,360 @@ var Be = {
1024
1024
  ascii: {
1025
1025
  id: "ascii",
1026
1026
  groupId: null,
1027
- isDetectable: !1,
1028
- isDecodable: !0
1027
+ isDetectable: !0,
1028
+ isDecodable: !0,
1029
+ decoderId: "windows-1252"
1029
1030
  },
1030
1031
  big5: {
1031
1032
  id: "big5",
1032
1033
  groupId: "chineseTraditional",
1033
1034
  isDetectable: !0,
1034
- isDecodable: !0
1035
+ isDecodable: !0,
1036
+ decoderId: null
1035
1037
  },
1036
1038
  "euc-jp": {
1037
1039
  id: "euc-jp",
1038
1040
  groupId: "japanese",
1039
1041
  isDetectable: !0,
1040
- isDecodable: !0
1042
+ isDecodable: !0,
1043
+ decoderId: null
1041
1044
  },
1042
1045
  "euc-kr": {
1043
1046
  id: "euc-kr",
1044
1047
  groupId: "korean",
1045
1048
  isDetectable: !0,
1046
- isDecodable: !0
1049
+ isDecodable: !0,
1050
+ decoderId: null
1047
1051
  },
1048
1052
  gb18030: {
1049
1053
  id: "gb18030",
1050
1054
  groupId: "chineseSimplified",
1051
1055
  isDetectable: !0,
1052
- isDecodable: !0
1056
+ isDecodable: !0,
1057
+ decoderId: null
1053
1058
  },
1054
1059
  gbk: {
1055
1060
  id: "gbk",
1056
1061
  groupId: "chineseSimplified",
1057
1062
  isDetectable: !1,
1058
- isDecodable: !0
1063
+ isDecodable: !0,
1064
+ decoderId: null
1059
1065
  },
1060
1066
  ibm866: {
1061
1067
  id: "ibm866",
1062
1068
  groupId: "cyrillic",
1063
1069
  isDetectable: !1,
1064
- isDecodable: !0
1070
+ isDecodable: !0,
1071
+ decoderId: null
1065
1072
  },
1066
1073
  "iso-2022-cn": {
1067
1074
  id: "iso-2022-cn",
1068
1075
  groupId: "chineseSimplified",
1069
1076
  isDetectable: !0,
1070
- isDecodable: !1
1077
+ isDecodable: !1,
1078
+ decoderId: null
1071
1079
  },
1072
1080
  "iso-2022-jp": {
1073
1081
  id: "iso-2022-jp",
1074
1082
  groupId: "japanese",
1075
1083
  isDetectable: !0,
1076
- isDecodable: !0
1084
+ isDecodable: !0,
1085
+ decoderId: null
1077
1086
  },
1078
1087
  "iso-2022-kr": {
1079
1088
  id: "iso-2022-kr",
1080
1089
  groupId: "korean",
1081
1090
  isDetectable: !0,
1082
- isDecodable: !1
1091
+ isDecodable: !1,
1092
+ decoderId: null
1083
1093
  },
1084
1094
  "iso-8859-1": {
1085
1095
  id: "iso-8859-1",
1086
1096
  groupId: "western",
1087
1097
  isDetectable: !0,
1088
- isDecodable: !0
1098
+ isDecodable: !0,
1099
+ decoderId: "windows-1252"
1089
1100
  },
1090
1101
  "iso-8859-2": {
1091
1102
  id: "iso-8859-2",
1092
1103
  groupId: "centralEuropean",
1093
1104
  isDetectable: !0,
1094
- isDecodable: !0
1105
+ isDecodable: !0,
1106
+ decoderId: null
1095
1107
  },
1096
1108
  "iso-8859-3": {
1097
1109
  id: "iso-8859-3",
1098
1110
  groupId: "southernEuropean",
1099
1111
  isDetectable: !1,
1100
- isDecodable: !0
1112
+ isDecodable: !0,
1113
+ decoderId: null
1101
1114
  },
1102
1115
  "iso-8859-4": {
1103
1116
  id: "iso-8859-4",
1104
1117
  groupId: "baltic",
1105
1118
  isDetectable: !1,
1106
- isDecodable: !0
1119
+ isDecodable: !0,
1120
+ decoderId: null
1107
1121
  },
1108
1122
  "iso-8859-5": {
1109
1123
  id: "iso-8859-5",
1110
1124
  groupId: "cyrillic",
1111
1125
  isDetectable: !0,
1112
- isDecodable: !0
1126
+ isDecodable: !0,
1127
+ decoderId: null
1113
1128
  },
1114
1129
  "iso-8859-6": {
1115
1130
  id: "iso-8859-6",
1116
1131
  groupId: "arabic",
1117
1132
  isDetectable: !0,
1118
- isDecodable: !0
1133
+ isDecodable: !0,
1134
+ decoderId: null
1119
1135
  },
1120
1136
  "iso-8859-7": {
1121
1137
  id: "iso-8859-7",
1122
1138
  groupId: "greek",
1123
1139
  isDetectable: !0,
1124
- isDecodable: !0
1140
+ isDecodable: !0,
1141
+ decoderId: null
1125
1142
  },
1126
1143
  "iso-8859-8": {
1127
1144
  id: "iso-8859-8",
1128
1145
  groupId: "hebrew",
1129
1146
  isDetectable: !0,
1130
- isDecodable: !0
1147
+ isDecodable: !0,
1148
+ decoderId: null
1131
1149
  },
1132
1150
  "iso-8859-9": {
1133
1151
  id: "iso-8859-9",
1134
1152
  groupId: "turkish",
1135
1153
  isDetectable: !0,
1136
- isDecodable: !0
1154
+ isDecodable: !0,
1155
+ decoderId: "windows-1254"
1137
1156
  },
1138
1157
  "iso-8859-10": {
1139
1158
  id: "iso-8859-10",
1140
1159
  groupId: "nordic",
1141
1160
  isDetectable: !1,
1142
- isDecodable: !0
1161
+ isDecodable: !0,
1162
+ decoderId: null
1143
1163
  },
1144
1164
  "iso-8859-11": {
1145
1165
  id: "iso-8859-11",
1146
1166
  groupId: "thai",
1147
1167
  isDetectable: !1,
1148
- isDecodable: !0
1168
+ isDecodable: !0,
1169
+ decoderId: "windows-874"
1149
1170
  },
1150
1171
  "iso-8859-13": {
1151
1172
  id: "iso-8859-13",
1152
1173
  groupId: "baltic",
1153
1174
  isDetectable: !1,
1154
- isDecodable: !0
1175
+ isDecodable: !0,
1176
+ decoderId: null
1155
1177
  },
1156
1178
  "iso-8859-14": {
1157
1179
  id: "iso-8859-14",
1158
1180
  groupId: "celtic",
1159
1181
  isDetectable: !1,
1160
- isDecodable: !0
1182
+ isDecodable: !0,
1183
+ decoderId: null
1161
1184
  },
1162
1185
  "iso-8859-15": {
1163
1186
  id: "iso-8859-15",
1164
1187
  groupId: "western",
1165
1188
  isDetectable: !1,
1166
- isDecodable: !0
1189
+ isDecodable: !0,
1190
+ decoderId: null
1167
1191
  },
1168
1192
  "iso-8859-16": {
1169
1193
  id: "iso-8859-16",
1170
1194
  groupId: "romanian",
1171
1195
  isDetectable: !1,
1172
- isDecodable: !0
1196
+ isDecodable: !0,
1197
+ decoderId: null
1173
1198
  },
1174
1199
  "koi8-r": {
1175
1200
  id: "koi8-r",
1176
1201
  groupId: "cyrillic",
1177
1202
  isDetectable: !0,
1178
- isDecodable: !0
1203
+ isDecodable: !0,
1204
+ decoderId: null
1179
1205
  },
1180
1206
  "koi8-u": {
1181
1207
  id: "koi8-u",
1182
1208
  groupId: "cyrillic",
1183
1209
  isDetectable: !1,
1184
- isDecodable: !0
1210
+ isDecodable: !0,
1211
+ decoderId: null
1185
1212
  },
1186
1213
  latin1: {
1187
1214
  id: "latin1",
1188
1215
  groupId: "western",
1189
1216
  isDetectable: !1,
1190
- isDecodable: !0
1217
+ isDecodable: !0,
1218
+ decoderId: "windows-1252"
1191
1219
  },
1192
1220
  macintosh: {
1193
1221
  id: "macintosh",
1194
1222
  groupId: "western",
1195
1223
  isDetectable: !1,
1196
- isDecodable: !0
1224
+ isDecodable: !0,
1225
+ decoderId: null
1197
1226
  },
1198
1227
  shift_jis: {
1199
1228
  id: "shift_jis",
1200
1229
  groupId: "japanese",
1201
1230
  isDetectable: !0,
1202
- isDecodable: !0
1231
+ isDecodable: !0,
1232
+ decoderId: null
1203
1233
  },
1204
1234
  "tis-620": {
1205
1235
  id: "tis-620",
1206
1236
  groupId: "thai",
1207
1237
  isDetectable: !1,
1208
- isDecodable: !0
1238
+ isDecodable: !0,
1239
+ decoderId: "windows-874"
1209
1240
  },
1210
1241
  "utf-16": {
1211
1242
  id: "utf-16",
1212
1243
  groupId: "unicode16",
1213
1244
  isDetectable: !1,
1214
- isDecodable: !0
1245
+ isDecodable: !0,
1246
+ decoderId: "utf-16le"
1215
1247
  },
1216
1248
  "utf-16be": {
1217
1249
  id: "utf-16be",
1218
1250
  groupId: "unicode16",
1219
1251
  isDetectable: !0,
1220
- isDecodable: !0
1252
+ isDecodable: !0,
1253
+ decoderId: null
1221
1254
  },
1222
1255
  "utf-16le": {
1223
1256
  id: "utf-16le",
1224
1257
  groupId: "unicode16",
1225
1258
  isDetectable: !0,
1226
- isDecodable: !0
1259
+ isDecodable: !0,
1260
+ decoderId: null
1227
1261
  },
1228
1262
  "utf-32be": {
1229
1263
  id: "utf-32be",
1230
1264
  groupId: "unicode32",
1231
1265
  isDetectable: !0,
1232
- isDecodable: !1
1266
+ isDecodable: !1,
1267
+ decoderId: null
1233
1268
  },
1234
1269
  "utf-32le": {
1235
1270
  id: "utf-32le",
1236
1271
  groupId: "unicode32",
1237
1272
  isDetectable: !0,
1238
- isDecodable: !1
1273
+ isDecodable: !1,
1274
+ decoderId: null
1239
1275
  },
1240
1276
  "utf-8": {
1241
1277
  id: "utf-8",
1242
1278
  groupId: null,
1243
1279
  isDetectable: !0,
1244
- isDecodable: !0
1280
+ isDecodable: !0,
1281
+ decoderId: null
1245
1282
  },
1246
1283
  "windows-1250": {
1247
1284
  id: "windows-1250",
1248
1285
  groupId: "centralEuropean",
1249
1286
  isDetectable: !0,
1250
- isDecodable: !0
1287
+ isDecodable: !0,
1288
+ decoderId: null
1251
1289
  },
1252
1290
  "windows-1251": {
1253
1291
  id: "windows-1251",
1254
1292
  groupId: "cyrillic",
1255
1293
  isDetectable: !0,
1256
- isDecodable: !0
1294
+ isDecodable: !0,
1295
+ decoderId: null
1257
1296
  },
1258
1297
  "windows-1252": {
1259
1298
  id: "windows-1252",
1260
1299
  groupId: "western",
1261
1300
  isDetectable: !0,
1262
- isDecodable: !0
1301
+ isDecodable: !0,
1302
+ decoderId: null
1263
1303
  },
1264
1304
  "windows-1253": {
1265
1305
  id: "windows-1253",
1266
1306
  groupId: "greek",
1267
1307
  isDetectable: !0,
1268
- isDecodable: !0
1308
+ isDecodable: !0,
1309
+ decoderId: null
1269
1310
  },
1270
1311
  "windows-1254": {
1271
1312
  id: "windows-1254",
1272
1313
  groupId: "turkish",
1273
1314
  isDetectable: !0,
1274
- isDecodable: !0
1315
+ isDecodable: !0,
1316
+ decoderId: null
1275
1317
  },
1276
1318
  "windows-1255": {
1277
1319
  id: "windows-1255",
1278
1320
  groupId: "hebrew",
1279
1321
  isDetectable: !0,
1280
- isDecodable: !0
1322
+ isDecodable: !0,
1323
+ decoderId: null
1281
1324
  },
1282
1325
  "windows-1256": {
1283
1326
  id: "windows-1256",
1284
1327
  groupId: "arabic",
1285
1328
  isDetectable: !0,
1286
- isDecodable: !0
1329
+ isDecodable: !0,
1330
+ decoderId: null
1287
1331
  },
1288
1332
  "windows-1257": {
1289
1333
  id: "windows-1257",
1290
1334
  groupId: "baltic",
1291
- isDetectable: !1,
1292
- isDecodable: !0
1335
+ isDetectable: !0,
1336
+ isDecodable: !0,
1337
+ decoderId: null
1293
1338
  },
1294
1339
  "windows-1258": {
1295
1340
  id: "windows-1258",
1296
1341
  groupId: "vietnamese",
1297
- isDetectable: !1,
1298
- isDecodable: !0
1342
+ isDetectable: !0,
1343
+ isDecodable: !0,
1344
+ decoderId: null
1299
1345
  },
1300
1346
  "windows-874": {
1301
1347
  id: "windows-874",
1302
1348
  groupId: "thai",
1303
- isDetectable: !1,
1304
- isDecodable: !0
1349
+ isDetectable: !0,
1350
+ isDecodable: !0,
1351
+ decoderId: null
1305
1352
  },
1306
1353
  "x-mac-cyrillic": {
1307
1354
  id: "x-mac-cyrillic",
1308
1355
  groupId: "cyrillic",
1309
1356
  isDetectable: !1,
1310
- isDecodable: !0
1357
+ isDecodable: !0,
1358
+ decoderId: null
1311
1359
  },
1312
1360
  "x-user-defined": {
1313
1361
  id: "x-user-defined",
1314
1362
  groupId: "other",
1315
1363
  isDetectable: !1,
1316
- isDecodable: !0
1364
+ isDecodable: !0,
1365
+ decoderId: null
1317
1366
  }
1318
1367
  }, K = Be, q = Ve;
1319
1368
  function He(e) {
1320
1369
  return Object.hasOwn(q, e);
1321
1370
  }
1322
1371
  function Ue(e = "en") {
1323
- return Array.from(Object.values(q), ({ groupId: t, id: n, isDecodable: r, isDetectable: i }) => {
1324
- let a = t == null ? "" : We(t, e);
1372
+ return Array.from(Object.values(q), ({ decoderId: t, groupId: n, id: r, isDecodable: i, isDetectable: a }) => {
1373
+ let o = n == null ? "" : We(n, e);
1325
1374
  return {
1326
- id: n,
1327
- groupLabel: a,
1328
- label: a ? `${a} (${n})` : n,
1329
- isDetectable: i,
1330
- isDecodable: r
1375
+ id: r,
1376
+ groupLabel: o,
1377
+ label: o ? `${o} (${r})` : r,
1378
+ isDetectable: a,
1379
+ isDecodable: i,
1380
+ decoderId: t
1331
1381
  };
1332
1382
  }).toSorted((t, n) => t.groupLabel.localeCompare(n.groupLabel, e) || t.label.localeCompare(n.label, e));
1333
1383
  }