mime-xdg 1.0.0 → 1.1.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
@@ -11,18 +11,71 @@ In addition to this, there are top-level types (mime heads) and mime description
11
11
 
12
12
  All mime types and their descriptions are contained in an optimized form. Therefore, the library does not weigh so much.
13
13
 
14
+ Library | Size** | Mimetypes | Extensions
15
+ --- | --- | --- | ---
16
+ `mime-db (mime-types)` | 136.8 KB | 2279 | 1180
17
+ `mime` | 36.6 KB | 956 | 1173
18
+ `mime-xdg*` | 48.8 KB | 1559 | 1619
19
+
20
+
21
+ \* without `mime-xdg/heads` and `mime-xdg/notes`
22
+
23
+ ** minified bundle size (current size, not .gz)
24
+
25
+
14
26
  ## Usage
15
27
  ### mimeType
16
- basic library with all mime types
28
+ Basic library with all mime types
17
29
  ```js
18
- import {
19
- EXTENSIONS, MIME_TYPES,
20
- ext, extname,
21
- mimeType, mimeList
22
- } from 'mime-xdg'
30
+ // FUNCTIONS
31
+ import { ext, extname, mimeType, mimeList } from 'mime-xdg'
32
+
33
+ /**
34
+ * 1. ext
35
+ */
36
+ // returns the extname if it is in the EXTENSIONS or empty string
37
+ ext('src/test.js') // => 'js'
38
+ ext('app\\test.foobar') // => '' - empty string
39
+ ext('test.abw.CRASHED') // => 'abw.CRASHED' - because it exists exactly in this form
40
+ ext('test.abw.crashed') // => ''
41
+
42
+ /**
43
+ * 2. extname
44
+ */
45
+ // works the same way as 'extname' from 'node:path', but
46
+ // returns the extname if it is in the EXTENSIONS or find it herself
47
+ extname('/tm') // => ''
48
+ extname('/.tm/') // => ''
49
+ extname('/.tm/test.foobar') // => '.foobar'
50
+ extname('test.abw.CRASHED') // => '.abw.CRASHED'
51
+ extname('test.abw.crashed') // => '.crashed'
52
+
53
+ /**
54
+ * 3. mimeType
55
+ */
56
+ // returns the mime type or empty string
57
+ mimeType('test.foobar') // => ''
58
+ mimeType('test.js') // => 'text/javascript'
59
+ mimeType('test.JS') // => 'text/javascript'
60
+ // but, in the schema 'shared-mime-info', sometimes the register matters:
61
+ mimeType('test.c') // => text/x-c
62
+ mimeType('test.C') // => text/x-c++src
63
+ // I do not know if this is right or not,
64
+ // but I think the Linux developers know better
65
+
66
+ /**
67
+ * 4. mimeList
68
+ */
69
+ // returns an array of all mime types
70
+ mimeList('test.js') // => ↴
71
+ ["text/javascript", "application/x-javascript", "application/javascript"]
72
+
73
+ mimeList('test.foobar') // => []
23
74
 
24
75
 
25
76
  // OBJECTS
77
+ import { EXTENSIONS, MIME_TYPES } from 'mime-xdg'
78
+ // You can change them yourself, add, delete, or reverse the order mimetypes
26
79
 
27
80
  /**
28
81
  * 1. EXTENSIONS
@@ -30,14 +83,6 @@ import {
30
83
  console.log(EXTENSIONS)
31
84
  // EXTENSIONS equal to:
32
85
  {
33
- "123": [
34
- "application/vnd.lotus-1-2-3",
35
- "application/x-lotus123",
36
- "application/x-123",
37
- "application/lotus123",
38
- "application/wk1",
39
- "zz-application/zz-winassoc-123"
40
- ],
41
86
  "602": [
42
87
  "application/x-t602"
43
88
  ],
@@ -79,64 +124,23 @@ console.log(MIME_TYPES)
79
124
  text: { /* etc... */ },
80
125
  /* etc... */
81
126
  }
82
-
83
- // FUNCTIONS
84
-
85
- /**
86
- * 3. ext
87
- */
88
- // returns the extname if it is in the EXTENSIONS or empty string
89
- ext('test.js') // 'js'
90
- ext('test.foobar') // '' - empty string
91
- ext('test.abw.CRASHED') // 'abw.CRASHED' - because it exists exactly in this form
92
- ext('test.abw.crashed') // '' - empty string
93
-
94
- /**
95
- * 4. extname
96
- */
97
- // works the same way as 'extname' from 'node:path', but
98
- // returns the extname if it is in the EXTENSIONS or find it herself
99
- extname('test.foobar') // '.foobar'
100
- extname('test.abw.CRASHED') // '.abw.CRASHED'
101
- extname('test.abw.crashed') // '.crashed'
102
-
103
- /**
104
- * 5. mimeType
105
- */
106
- // returns the mime type or empty string
107
- mimeType('test.foobar') // '' - empty string
108
- mimeType('test.js') // 'text/javascript'
109
- mimeType('test.JS') // 'text/javascript'
110
- // but, in the schema 'shared-mime-info', sometimes the register matters:
111
- mimeType('test.c') // text/x-c
112
- mimeType('test.C') // text/x-c++src
113
- // I do not know if this is right or not,
114
- // but I think the Linux developers know better
115
-
116
- /**
117
- * 6. mimeList
118
- */
119
- // returns an array of all mime types
120
- mimeList('test.js')
121
- /*
122
- [
123
- "text/javascript",
124
- "application/x-javascript",
125
- "application/javascript"
126
- ]
127
- */
128
- mimeList('test.foobar') // []
129
127
  ```
130
128
 
131
129
  ### mimeHead
132
- many mime types have their own main mime type
130
+ Many mime types have their own main mime type
133
131
  ```js
134
- import {
135
- MIME_HEADS,
136
- mimeHead
137
- } from 'mime-xdg/heads'
132
+ // FUNCTION
133
+ import { mimeHead } from 'mime-xdg/heads'
134
+
135
+ /**
136
+ * 2. mimeHead
137
+ */
138
+ // returns main mime type or empty string
139
+ mimeHead('foobar') // => '' - empty string
140
+ mimeHead('text/javascript') // => 'application/ecmascript'
138
141
 
139
142
  // OBJECT
143
+ import { MIME_HEADS } from 'mime-xdg/heads'
140
144
 
141
145
  /**
142
146
  * 1. MIME_HEADS
@@ -150,27 +154,22 @@ console.log(MIME_HEADS)
150
154
  "video/x-theora": "video/ogg",
151
155
  /* etc... */
152
156
  }
153
-
154
- // FUNCTION
155
-
156
- /**
157
- * 2. mimeHead
158
- */
159
- // returns main mime type or empty string
160
- mimeHead('foobar') // '' - empty string
161
- mimeHead('text/javascript') // 'application/ecmascript'
162
157
  ```
163
158
 
164
159
  ### mimeNote
165
160
  some mime types have a short description
166
161
  ```js
167
- import {
168
- MIME_NOTES,
169
- mimeNote
170
- } from 'mime-xdg/notes'
162
+ // FUNCTION
163
+ import { MIME_NOTES, mimeNote } from 'mime-xdg/notes'
164
+ /**
165
+ * 1. mimeNote
166
+ */
167
+ // returns note or empty string
168
+ mimeNote('foobar') // => '' - empty string
169
+ mimeNote('text/javascript') // => 'JavaScript program'
171
170
 
172
171
  // OBJECT
173
-
172
+ import { MIME_NOTES } from 'mime-xdg/notes'
174
173
  /**
175
174
  * 1. MIME_NOTES
176
175
  */
@@ -183,15 +182,6 @@ console.log(MIME_NOTES)
183
182
  "font/woff": "WOFF font",
184
183
  /* etc... */
185
184
  }
186
-
187
- // FUNCTION
188
-
189
- /**
190
- * 2. mimeNote
191
- */
192
- // returns note or empty string
193
- mimeNote('foobar') // '' - empty string
194
- mimeNote('text/javascript') // 'JavaScript program'
195
185
  ```
196
186
 
197
187
  ## License
package/index.js CHANGED
@@ -11,28 +11,32 @@ var e = require("./lib"), r = require("./lib/mimes"), t = (() => {
11
11
  var t = e.createObject();
12
12
  for (var E in r._EXTENSIONS) {
13
13
  t[E] = [];
14
- for (var M = r._EXTENSIONS[E], i = 0, _ = 0; _ < M.length; _++) t[E][i++] = r._MIME_TYPES[M[_]] + "/" + r._MIME_NAMES[M[_++]][M[_]];
14
+ for (var i = r._EXTENSIONS[E], M = 0, a = 0; a < i.length; a++) t[E][M++] = r._MIME_TYPES[i[a]] + "/" + r._MIME_NAMES[i[a++]][i[a]];
15
15
  }
16
16
  return t;
17
17
  })(), E = (() => {
18
18
  for (var t = e.createObject(), E = r._MIME_TYPES.length; E-- > 0; ) {
19
19
  t[r._MIME_TYPES[E]] = e.createObject();
20
- for (var M = r._MIME_NAMES[E].length; M-- > 0; ) t[r._MIME_TYPES[E]][r._MIME_NAMES[E][M]] = !0;
20
+ for (var i = r._MIME_NAMES[E].length; i-- > 0; ) t[r._MIME_TYPES[E]][r._MIME_NAMES[E][i]] = !0;
21
21
  }
22
22
  return t;
23
- })(), M = e => {
24
- for (var r, E = "", M = "", i = "", _ = "", a = (e = e.trim()).length; a-- > 0; ) {
25
- if ("." === (r = e[a])) M in t && (E = M) || i in t && (E = i) || _ in t && (E = _); else if ("/" === r || "\\" === r) break;
26
- M = r + M, i = r.toUpperCase() + i, _ = r.toLowerCase() + _;
23
+ })(), i = e => {
24
+ for (var r, E = "", i = "", M = "", a = "", _ = (e = e.trim()).length; _-- > 0; ) {
25
+ if ("." === (r = e[_])) i in t && (E = i) || M in t && (E = M) || a in t && (E = a); else if ("/" === r || "\\" === r) break;
26
+ i = r + i, M = r.toUpperCase() + M, a = r.toLowerCase() + a;
27
27
  }
28
28
  return E;
29
29
  };
30
30
 
31
- exports.EXTENSIONS = t, exports.MIME_TYPES = E, exports.ext = M, exports.extname = e => {
32
- var r = M(e);
33
- if (!r) {
34
- var t = e.lastIndexOf(".");
35
- t > -1 && (r = e.slice(t + 1));
31
+ exports.EXTENSIONS = t, exports.MIME_TYPES = E, exports.ext = i, exports.extname = e => {
32
+ var r = i(e);
33
+ if (!r) for (var t, E = "", M = (e = e.trim()).length; M-- > 0; ) {
34
+ if ("." === (t = e[M])) {
35
+ r = E;
36
+ break;
37
+ }
38
+ if ("/" === t || "\\" === t) break;
39
+ E = t + E;
36
40
  }
37
41
  return r ? "." + r : "";
38
- }, exports.mimeList = e => (e = M(e)) ? t[e].slice(0) : [], exports.mimeType = e => (e = M(e)) ? t[e][0] : e;
42
+ }, exports.mimeList = e => (e = i(e)) ? t[e].slice(0) : [], exports.mimeType = e => (e = i(e)) ? t[e][0] : e;
package/index.mjs CHANGED
@@ -9,30 +9,34 @@ import { _EXTENSIONS as e, _MIME_TYPES as i, _MIME_NAMES as t } from "./lib/mime
9
9
 
10
10
  var a = (() => {
11
11
  var a = r();
12
- for (var n in e) {
13
- a[n] = [];
14
- for (var o = e[n], f = 0, l = 0; l < o.length; l++) a[n][f++] = i[o[l]] + "/" + t[o[l++]][o[l]];
12
+ for (var o in e) {
13
+ a[o] = [];
14
+ for (var f = e[o], n = 0, l = 0; l < f.length; l++) a[o][n++] = i[f[l]] + "/" + t[f[l++]][f[l]];
15
15
  }
16
16
  return a;
17
- })(), n = (() => {
17
+ })(), o = (() => {
18
18
  for (var e = r(), a = i.length; a-- > 0; ) {
19
19
  e[i[a]] = r();
20
- for (var n = t[a].length; n-- > 0; ) e[i[a]][t[a][n]] = !0;
20
+ for (var o = t[a].length; o-- > 0; ) e[i[a]][t[a][o]] = !0;
21
21
  }
22
22
  return e;
23
- })(), o = r => {
24
- for (var e, i = "", t = "", n = "", o = "", f = (r = r.trim()).length; f-- > 0; ) {
25
- if ("." === (e = r[f])) t in a && (i = t) || n in a && (i = n) || o in a && (i = o); else if ("/" === e || "\\" === e) break;
26
- t = e + t, n = e.toUpperCase() + n, o = e.toLowerCase() + o;
23
+ })(), f = r => {
24
+ for (var e, i = "", t = "", o = "", f = "", n = (r = r.trim()).length; n-- > 0; ) {
25
+ if ("." === (e = r[n])) t in a && (i = t) || o in a && (i = o) || f in a && (i = f); else if ("/" === e || "\\" === e) break;
26
+ t = e + t, o = e.toUpperCase() + o, f = e.toLowerCase() + f;
27
27
  }
28
28
  return i;
29
- }, f = r => {
30
- var e = o(r);
31
- if (!e) {
32
- var i = r.lastIndexOf(".");
33
- i > -1 && (e = r.slice(i + 1));
29
+ }, n = r => {
30
+ var e = f(r);
31
+ if (!e) for (var i, t = "", a = (r = r.trim()).length; a-- > 0; ) {
32
+ if ("." === (i = r[a])) {
33
+ e = t;
34
+ break;
35
+ }
36
+ if ("/" === i || "\\" === i) break;
37
+ t = i + t;
34
38
  }
35
39
  return e ? "." + e : "";
36
- }, l = r => (r = o(r)) ? a[r][0] : r, v = r => (r = o(r)) ? a[r].slice(0) : [];
40
+ }, l = r => (r = f(r)) ? a[r][0] : r, v = r => (r = f(r)) ? a[r].slice(0) : [];
37
41
 
38
- export { a as EXTENSIONS, n as MIME_TYPES, o as ext, f as extname, v as mimeList, l as mimeType };
42
+ export { a as EXTENSIONS, o as MIME_TYPES, f as ext, n as extname, v as mimeList, l as mimeType };
@@ -371,7 +371,7 @@ exports._HEADS_DATA = [ {
371
371
  68: [ 3, 67 ],
372
372
  69: [ 3, 1 ],
373
373
  71: [ 3, 65 ],
374
- 72: [ 3, 174 ],
374
+ 72: [ 3, 175 ],
375
375
  73: [ 0, 706 ],
376
376
  74: [ 0, 706 ],
377
377
  75: [ 3, 1 ],
@@ -399,13 +399,13 @@ exports._HEADS_DATA = [ {
399
399
  98: [ 3, 1 ],
400
400
  99: [ 3, 1 ],
401
401
  100: [ 3, 1 ],
402
- 101: [ 0, 706 ],
403
- 102: [ 3, 1 ],
402
+ 101: [ 3, 1 ],
403
+ 102: [ 0, 706 ],
404
404
  103: [ 3, 1 ],
405
405
  104: [ 3, 1 ],
406
- 105: [ 3, 104 ],
407
- 106: [ 3, 104 ],
408
- 107: [ 3, 1 ],
406
+ 105: [ 3, 1 ],
407
+ 106: [ 3, 105 ],
408
+ 107: [ 3, 105 ],
409
409
  108: [ 3, 1 ],
410
410
  109: [ 3, 1 ],
411
411
  110: [ 3, 1 ],
@@ -414,13 +414,13 @@ exports._HEADS_DATA = [ {
414
414
  113: [ 3, 1 ],
415
415
  114: [ 3, 1 ],
416
416
  115: [ 3, 1 ],
417
- 116: [ 3, 65 ],
417
+ 116: [ 3, 1 ],
418
418
  117: [ 3, 65 ],
419
419
  118: [ 3, 65 ],
420
- 119: [ 3, 1 ],
420
+ 119: [ 3, 65 ],
421
421
  120: [ 3, 1 ],
422
- 121: [ 3, 65 ],
423
- 122: [ 3, 1 ],
422
+ 121: [ 3, 1 ],
423
+ 122: [ 3, 65 ],
424
424
  123: [ 3, 1 ],
425
425
  124: [ 3, 1 ],
426
426
  125: [ 3, 1 ],
@@ -440,22 +440,22 @@ exports._HEADS_DATA = [ {
440
440
  139: [ 3, 1 ],
441
441
  140: [ 3, 1 ],
442
442
  141: [ 3, 1 ],
443
- 142: [ 3, 65 ],
444
- 143: [ 3, 1 ],
445
- 144: [ 3, 65 ],
446
- 145: [ 3, 1 ],
443
+ 142: [ 3, 1 ],
444
+ 143: [ 3, 65 ],
445
+ 144: [ 3, 1 ],
446
+ 145: [ 3, 65 ],
447
447
  146: [ 3, 1 ],
448
- 147: [ 3, 144 ],
449
- 148: [ 3, 42 ],
450
- 149: [ 3, 1 ],
451
- 150: [ 3, 65 ],
452
- 151: [ 3, 1 ],
448
+ 147: [ 3, 1 ],
449
+ 148: [ 3, 145 ],
450
+ 149: [ 3, 42 ],
451
+ 150: [ 3, 1 ],
452
+ 151: [ 3, 65 ],
453
453
  152: [ 3, 1 ],
454
454
  153: [ 3, 1 ],
455
455
  154: [ 3, 1 ],
456
- 155: [ 3, 154 ],
457
- 156: [ 3, 154 ],
458
- 157: [ 3, 1 ],
456
+ 155: [ 3, 1 ],
457
+ 156: [ 3, 155 ],
458
+ 157: [ 3, 155 ],
459
459
  158: [ 3, 1 ],
460
460
  159: [ 3, 1 ],
461
461
  160: [ 3, 1 ],
@@ -463,14 +463,15 @@ exports._HEADS_DATA = [ {
463
463
  162: [ 3, 1 ],
464
464
  163: [ 3, 1 ],
465
465
  164: [ 3, 1 ],
466
- 165: [ 0, 706 ],
466
+ 165: [ 3, 1 ],
467
467
  166: [ 0, 706 ],
468
- 167: [ 3, 1 ],
468
+ 167: [ 0, 706 ],
469
469
  168: [ 3, 1 ],
470
470
  169: [ 3, 1 ],
471
- 170: [ 0, 706 ],
472
- 171: [ 3, 1 ],
473
- 173: [ 3, 1 ]
471
+ 170: [ 3, 1 ],
472
+ 171: [ 0, 706 ],
473
+ 172: [ 3, 1 ],
474
+ 174: [ 3, 1 ]
474
475
  }, {
475
476
  1: [ 0, 105 ],
476
477
  8: [ 4, 32 ],
@@ -367,7 +367,7 @@ var e = [ {
367
367
  68: [ 3, 67 ],
368
368
  69: [ 3, 1 ],
369
369
  71: [ 3, 65 ],
370
- 72: [ 3, 174 ],
370
+ 72: [ 3, 175 ],
371
371
  73: [ 0, 706 ],
372
372
  74: [ 0, 706 ],
373
373
  75: [ 3, 1 ],
@@ -395,13 +395,13 @@ var e = [ {
395
395
  98: [ 3, 1 ],
396
396
  99: [ 3, 1 ],
397
397
  100: [ 3, 1 ],
398
- 101: [ 0, 706 ],
399
- 102: [ 3, 1 ],
398
+ 101: [ 3, 1 ],
399
+ 102: [ 0, 706 ],
400
400
  103: [ 3, 1 ],
401
401
  104: [ 3, 1 ],
402
- 105: [ 3, 104 ],
403
- 106: [ 3, 104 ],
404
- 107: [ 3, 1 ],
402
+ 105: [ 3, 1 ],
403
+ 106: [ 3, 105 ],
404
+ 107: [ 3, 105 ],
405
405
  108: [ 3, 1 ],
406
406
  109: [ 3, 1 ],
407
407
  110: [ 3, 1 ],
@@ -410,13 +410,13 @@ var e = [ {
410
410
  113: [ 3, 1 ],
411
411
  114: [ 3, 1 ],
412
412
  115: [ 3, 1 ],
413
- 116: [ 3, 65 ],
413
+ 116: [ 3, 1 ],
414
414
  117: [ 3, 65 ],
415
415
  118: [ 3, 65 ],
416
- 119: [ 3, 1 ],
416
+ 119: [ 3, 65 ],
417
417
  120: [ 3, 1 ],
418
- 121: [ 3, 65 ],
419
- 122: [ 3, 1 ],
418
+ 121: [ 3, 1 ],
419
+ 122: [ 3, 65 ],
420
420
  123: [ 3, 1 ],
421
421
  124: [ 3, 1 ],
422
422
  125: [ 3, 1 ],
@@ -436,22 +436,22 @@ var e = [ {
436
436
  139: [ 3, 1 ],
437
437
  140: [ 3, 1 ],
438
438
  141: [ 3, 1 ],
439
- 142: [ 3, 65 ],
440
- 143: [ 3, 1 ],
441
- 144: [ 3, 65 ],
442
- 145: [ 3, 1 ],
439
+ 142: [ 3, 1 ],
440
+ 143: [ 3, 65 ],
441
+ 144: [ 3, 1 ],
442
+ 145: [ 3, 65 ],
443
443
  146: [ 3, 1 ],
444
- 147: [ 3, 144 ],
445
- 148: [ 3, 42 ],
446
- 149: [ 3, 1 ],
447
- 150: [ 3, 65 ],
448
- 151: [ 3, 1 ],
444
+ 147: [ 3, 1 ],
445
+ 148: [ 3, 145 ],
446
+ 149: [ 3, 42 ],
447
+ 150: [ 3, 1 ],
448
+ 151: [ 3, 65 ],
449
449
  152: [ 3, 1 ],
450
450
  153: [ 3, 1 ],
451
451
  154: [ 3, 1 ],
452
- 155: [ 3, 154 ],
453
- 156: [ 3, 154 ],
454
- 157: [ 3, 1 ],
452
+ 155: [ 3, 1 ],
453
+ 156: [ 3, 155 ],
454
+ 157: [ 3, 155 ],
455
455
  158: [ 3, 1 ],
456
456
  159: [ 3, 1 ],
457
457
  160: [ 3, 1 ],
@@ -459,14 +459,15 @@ var e = [ {
459
459
  162: [ 3, 1 ],
460
460
  163: [ 3, 1 ],
461
461
  164: [ 3, 1 ],
462
- 165: [ 0, 706 ],
462
+ 165: [ 3, 1 ],
463
463
  166: [ 0, 706 ],
464
- 167: [ 3, 1 ],
464
+ 167: [ 0, 706 ],
465
465
  168: [ 3, 1 ],
466
466
  169: [ 3, 1 ],
467
- 170: [ 0, 706 ],
468
- 171: [ 3, 1 ],
469
- 173: [ 3, 1 ]
467
+ 170: [ 3, 1 ],
468
+ 171: [ 0, 706 ],
469
+ 172: [ 3, 1 ],
470
+ 174: [ 3, 1 ]
470
471
  }, {
471
472
  1: [ 0, 105 ],
472
473
  8: [ 4, 32 ],