@@ -1024,6 +1024,355 @@ Otherwise, returns `false`.
1024
1024
See [ ` assert.deepStrictEqual() ` ] [ ] for more information about deep strict
1025
1025
equality.
1026
1026
1027
+ ## Class: ` util.MIMEType `
1028
+
1029
+ <!-- YAML
1030
+ added: REPLACEME
1031
+ -->
1032
+
1033
+ > Stability: 1 - Experimental
1034
+
1035
+ An implementation of [ the MIMEType class] ( https://bmeck.github.io/node-proposal-mime-api/ ) .
1036
+
1037
+ In accordance with browser conventions, all properties of ` MIMEType ` objects
1038
+ are implemented as getters and setters on the class prototype, rather than as
1039
+ data properties on the object itself.
1040
+
1041
+ A MIME string is a structured string containing multiple meaningful
1042
+ components. When parsed, a ` MIMEType ` object is returned containing
1043
+ properties for each of these components.
1044
+
1045
+ ### Constructor: ` new MIMEType(input) `
1046
+
1047
+ * ` input ` {string} The input MIME to parse
1048
+
1049
+ Creates a new ` MIMEType ` object by parsing the ` input ` .
1050
+
1051
+ ``` mjs
1052
+ import { MIMEType } from ' node:util' ;
1053
+
1054
+ const myMIME = new MIMEType (' text/plain' );
1055
+ ```
1056
+
1057
+ ``` cjs
1058
+ const { MIMEType } = require (' node:util' );
1059
+
1060
+ const myMIME = new MIMEType (' text/plain' );
1061
+ ```
1062
+
1063
+ A ` TypeError ` will be thrown if the ` input ` is not a valid MIME. Note
1064
+ that an effort will be made to coerce the given values into strings. For
1065
+ instance:
1066
+
1067
+ ``` mjs
1068
+ import { MIMEType } from ' node:util' ;
1069
+ const myMIME = new MIMEType ({ toString : () => ' text/plain' });
1070
+ console .log (String (myMIME));
1071
+ // Prints: text/plain
1072
+ ```
1073
+
1074
+ ``` cjs
1075
+ const { MIMEType } = require (' node:util' );
1076
+ const myMIME = new MIMEType ({ toString : () => ' text/plain' });
1077
+ console .log (String (myMIME));
1078
+ // Prints: text/plain
1079
+ ```
1080
+
1081
+ #### ` mime.type `
1082
+
1083
+ * {string}
1084
+
1085
+ Gets and sets the type portion of the MIME.
1086
+
1087
+ ``` mjs
1088
+ import { MIMEType } from ' node:util' ;
1089
+
1090
+ const myMIME = new MIMEType (' text/javascript' );
1091
+ console .log (myMIME .type );
1092
+ // Prints: text
1093
+ myMIME .type = ' application' ;
1094
+ console .log (myMIME .type );
1095
+ // Prints: application
1096
+ console .log (String (myMIME));
1097
+ // Prints: application/javascript
1098
+ ```
1099
+
1100
+ ``` cjs
1101
+ const { MIMEType } = require (' node:util' );
1102
+
1103
+ const myMIME = new MIMEType (' text/javascript' );
1104
+ console .log (myMIME .type );
1105
+ // Prints: text
1106
+ myMIME .type = ' application' ;
1107
+ console .log (myMIME .type );
1108
+ // Prints: application
1109
+ console .log (String (myMIME));
1110
+ // Prints: application/javascript/javascript
1111
+ ```
1112
+
1113
+ #### ` mime.subtype `
1114
+
1115
+ * {string}
1116
+
1117
+ Gets and sets the subtype portion of the MIME.
1118
+
1119
+ ``` mjs
1120
+ import { MIMEType } from ' node:util' ;
1121
+
1122
+ const myMIME = new MIMEType (' text/ecmascript' );
1123
+ console .log (myMIME .subtype );
1124
+ // Prints: ecmascript
1125
+ myMIME .subtype = ' javascript' ;
1126
+ console .log (myMIME .subtype );
1127
+ // Prints: javascript
1128
+ console .log (String (myMIME));
1129
+ // Prints: text/javascript
1130
+ ```
1131
+
1132
+ ``` cjs
1133
+ const { MIMEType } = require (' node:util' );
1134
+
1135
+ const myMIME = new MIMEType (' text/ecmascript' );
1136
+ console .log (myMIME .subtype );
1137
+ // Prints: ecmascript
1138
+ myMIME .subtype = ' javascript' ;
1139
+ console .log (myMIME .subtype );
1140
+ // Prints: javascript
1141
+ console .log (String (myMIME));
1142
+ // Prints: text/javascript
1143
+ ```
1144
+
1145
+ #### ` mime.essence `
1146
+
1147
+ * {string}
1148
+
1149
+ Gets the essence of the MIME. This property is read only.
1150
+ Use ` mime.type ` or ` mime.subtype ` to alter the MIME.
1151
+
1152
+ ``` mjs
1153
+ import { MIMEType } from ' node:util' ;
1154
+
1155
+ const myMIME = new MIMEType (' text/javascript;key=value' );
1156
+ console .log (myMIME .essence );
1157
+ // Prints: text/javascript
1158
+ myMIME .type = ' application' ;
1159
+ console .log (myMIME .essence );
1160
+ // Prints: application/javascript
1161
+ console .log (String (myMIME));
1162
+ // Prints: application/javascript;key=value
1163
+ ```
1164
+
1165
+ ``` cjs
1166
+ const { MIMEType } = require (' node:util' );
1167
+
1168
+ const myMIME = new MIMEType (' text/javascript;key=value' );
1169
+ console .log (myMIME .essence );
1170
+ // Prints: text/javascript
1171
+ myMIME .type = ' application' ;
1172
+ console .log (myMIME .essence );
1173
+ // Prints: application/javascript
1174
+ console .log (String (myMIME));
1175
+ // Prints: application/javascript;key=value
1176
+ ```
1177
+
1178
+ #### ` mime.params `
1179
+
1180
+ * {MIMEParams}
1181
+
1182
+ Gets the [ ` MIMEParams ` ] [ ] object representing the
1183
+ parameters of the MIME. This property is read-only. See
1184
+ [ ` MIMEParams ` ] [ ] documentation for details.
1185
+
1186
+ #### ` mime.toString() `
1187
+
1188
+ * Returns: {string}
1189
+
1190
+ The ` toString() ` method on the ` MIMEType ` object returns the serialized MIME.
1191
+
1192
+ Because of the need for standard compliance, this method does not allow users
1193
+ to customize the serialization process of the MIME.
1194
+
1195
+ #### ` mime.toJSON() `
1196
+
1197
+ * Returns: {string}
1198
+
1199
+ Alias for [ ` mime.toString() ` ] [ ] .
1200
+
1201
+ This method is automatically called when an ` MIMEType ` object is serialized
1202
+ with [ ` JSON.stringify() ` ] [ ] .
1203
+
1204
+ ``` mjs
1205
+ import { MIMEType } from ' node:util' ;
1206
+
1207
+ const myMIMES = [
1208
+ new MIMEType (' image/png' ),
1209
+ new MIMEType (' image/gif' ),
1210
+ ];
1211
+ console .log (JSON .stringify (myMIMES));
1212
+ // Prints: ["image/png", "image/gif"]
1213
+ ```
1214
+
1215
+ ``` cjs
1216
+ const { MIMEType } = require (' node:util' );
1217
+
1218
+ const myMIMES = [
1219
+ new MIMEType (' image/png' ),
1220
+ new MIMEType (' image/gif' ),
1221
+ ];
1222
+ console .log (JSON .stringify (myMIMES));
1223
+ // Prints: ["image/png", "image/gif"]
1224
+ ```
1225
+
1226
+ ### Class: ` util.MIMEParams `
1227
+
1228
+ <!-- YAML
1229
+ added: REPLACEME
1230
+ -->
1231
+
1232
+ The ` MIMEParams ` API provides read and write access to the parameters of a
1233
+ ` MIMEType ` .
1234
+
1235
+ #### Constructor: ` new MIMEParams() `
1236
+
1237
+ Creates a new ` MIMEParams ` object by with empty parameters
1238
+
1239
+ ``` mjs
1240
+ import { MIMEParams } from ' node:util' ;
1241
+
1242
+ const myParams = new MIMEParams ();
1243
+ ```
1244
+
1245
+ ``` cjs
1246
+ const { MIMEParams } = require (' node:util' );
1247
+
1248
+ const myParams = new MIMEParams ();
1249
+ ```
1250
+
1251
+ #### ` mimeParams.delete(name) `
1252
+
1253
+ * ` name ` {string}
1254
+
1255
+ Remove all name-value pairs whose name is ` name ` .
1256
+
1257
+ #### ` mimeParams.entries() `
1258
+
1259
+ * Returns: {Iterator}
1260
+
1261
+ Returns an iterator over each of the name-value pairs in the parameters.
1262
+ Each item of the iterator is a JavaScript ` Array ` . The first item of the array
1263
+ is the ` name ` , the second item of the array is the ` value ` .
1264
+
1265
+ #### ` mimeParams.get(name) `
1266
+
1267
+ * ` name ` {string}
1268
+ * Returns: {string} or ` null ` if there is no name-value pair with the given
1269
+ ` name ` .
1270
+
1271
+ Returns the value of the first name-value pair whose name is ` name ` . If there
1272
+ are no such pairs, ` null ` is returned.
1273
+
1274
+ #### ` mimeParams.has(name) `
1275
+
1276
+ * ` name ` {string}
1277
+ * Returns: {boolean}
1278
+
1279
+ Returns ` true ` if there is at least one name-value pair whose name is ` name ` .
1280
+
1281
+ #### ` mimeParams.keys() `
1282
+
1283
+ * Returns: {Iterator}
1284
+
1285
+ Returns an iterator over the names of each name-value pair.
1286
+
1287
+ ``` mjs
1288
+ import { MIMEType } from ' node:util' ;
1289
+
1290
+ const { params } = new MIMEType (' text/plain;foo=0;bar=1' );
1291
+ for (const name of params .keys ()) {
1292
+ console .log (name);
1293
+ }
1294
+ // Prints:
1295
+ // foo
1296
+ // bar
1297
+ ```
1298
+
1299
+ ``` cjs
1300
+ const { MIMEType } = require (' node:util' );
1301
+
1302
+ const { params } = new MIMEType (' text/plain;foo=0;bar=1' );
1303
+ for (const name of params .keys ()) {
1304
+ console .log (name);
1305
+ }
1306
+ // Prints:
1307
+ // foo
1308
+ // bar
1309
+ ```
1310
+
1311
+ #### ` mimeParams.set(name, value) `
1312
+
1313
+ * ` name ` {string}
1314
+ * ` value ` {string}
1315
+
1316
+ Sets the value in the ` MIMEParams ` object associated with ` name ` to
1317
+ ` value ` . If there are any pre-existing name-value pairs whose names are ` name ` ,
1318
+ set the first such pair's value to ` value ` .
1319
+
1320
+ ``` mjs
1321
+ import { MIMEType } from ' node:util' ;
1322
+
1323
+ const { params } = new MIMEType (' text/plain;foo=0;bar=1' );
1324
+ params .set (' foo' , ' def' );
1325
+ params .set (' baz' , ' xyz' );
1326
+ console .log (params .toString ());
1327
+ // Prints: foo=def&bar=1&baz=xyz
1328
+ ```
1329
+
1330
+ ``` cjs
1331
+ const { MIMEType } = require (' node:util' );
1332
+
1333
+ const { params } = new MIMEType (' text/plain;foo=0;bar=1' );
1334
+ params .set (' foo' , ' def' );
1335
+ params .set (' baz' , ' xyz' );
1336
+ console .log (params .toString ());
1337
+ // Prints: foo=def&bar=1&baz=xyz
1338
+ ```
1339
+
1340
+ #### ` mimeParams.values() `
1341
+
1342
+ * Returns: {Iterator}
1343
+
1344
+ Returns an iterator over the values of each name-value pair.
1345
+
1346
+ #### ` mimeParams[@@iterator]() `
1347
+
1348
+ * Returns: {Iterator}
1349
+
1350
+ Alias for [ ` mimeParams.entries() ` ] [ ] .
1351
+
1352
+ ``` mjs
1353
+ import { MIMEType } from ' node:util' ;
1354
+
1355
+ const { params } = new MIMEType (' text/plain;foo=bar;xyz=baz' );
1356
+ for (const [name , value ] of params) {
1357
+ console .log (name, value);
1358
+ }
1359
+ // Prints:
1360
+ // foo bar
1361
+ // xyz baz
1362
+ ```
1363
+
1364
+ ``` cjs
1365
+ const { MIMEType } = require (' node:util' );
1366
+
1367
+ const { params } = new MIMEType (' text/plain;foo=bar;xyz=baz' );
1368
+ for (const [name , value ] of params) {
1369
+ console .log (name, value);
1370
+ }
1371
+ // Prints:
1372
+ // foo bar
1373
+ // xyz baz
1374
+ ```
1375
+
1027
1376
## ` util.parseArgs([config]) `
1028
1377
1029
1378
<!-- YAML
@@ -2903,6 +3252,8 @@ util.log('Timestamped message.');
2903
3252
[` Int16Array ` ]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Int16Array
2904
3253
[` Int32Array ` ]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Int32Array
2905
3254
[` Int8Array ` ]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Int8Array
3255
+ [` JSON .stringify ()` ]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify
3256
+ [` MIMEparams` ]: #class-utilmimeparams
2906
3257
[` Map ` ]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map
2907
3258
[` Object .assign ()` ]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign
2908
3259
[` Object .freeze ()` ]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze
@@ -2920,6 +3271,8 @@ util.log('Timestamped message.');
2920
3271
[` WebAssembly .Module ` ]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Module
2921
3272
[` assert .deepStrictEqual ()` ]: assert.md#assertdeepstrictequalactual-expected-message
2922
3273
[` console .error ()` ]: console.md#consoleerrordata-args
3274
+ [` mime .toString ()` ]: #mimetostring
3275
+ [` mimeParams .entries ()` ]: #mimeparamsentries
2923
3276
[` napi_create_external ()` ]: n-api.md#napi_create_external
2924
3277
[` target` and ` handler` ]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy#Terminology
2925
3278
[` tty .hasColors ()` ]: tty.md#writestreamhascolorscount-env
0 commit comments