mythix 4.0.2 → 4.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.
@@ -160,9 +160,9 @@ export class Application {
160
160
  }
161
161
 
162
162
  bindToProcessSignals() {
163
- process.on('SIGINT', this.stop.bind(this));
164
- process.on('SIGTERM', this.stop.bind(this));
165
- process.on('SIGHUP', this.stop.bind(this));
163
+ process.on('SIGINT', () => this.stop(0));
164
+ process.on('SIGTERM', () => this.stop(0));
165
+ process.on('SIGHUP', () => this.stop(0));
166
166
  }
167
167
 
168
168
  getOptions() {
@@ -1,4 +1,5 @@
1
- import { spawn } from 'child_process';
1
+ import { spawn } from 'child_process';
2
+ import { Utils } from 'mythix-orm';
2
3
 
3
4
  export class CommandBase {
4
5
  static getCommandName() {
@@ -44,6 +45,33 @@ export class CommandBase {
44
45
  return application.getConnection(connection);
45
46
  }
46
47
 
48
+ /// Capture the current AsyncLocalStorage context and return a function
49
+ /// that will execute callbacks within that captured context.
50
+ ///
51
+ /// This is useful for preserving database context across event emitters,
52
+ /// setTimeout, or other callbacks where context might otherwise be lost.
53
+ ///
54
+ /// Return: Function
55
+ /// A function that takes a callback and executes it in the captured context.
56
+ captureContext() {
57
+ return Utils.captureContext();
58
+ }
59
+
60
+ /// Wrap a callback function to preserve the current AsyncLocalStorage context.
61
+ ///
62
+ /// This is a convenience wrapper for use with event handlers and other callbacks
63
+ /// where you want to ensure database context is preserved.
64
+ ///
65
+ /// Arguments:
66
+ /// callback: Function
67
+ /// The callback function to wrap.
68
+ ///
69
+ /// Return: Function
70
+ /// A wrapped version of the callback that will execute in the captured context.
71
+ bindCallback(callback) {
72
+ return Utils.bindCallback(callback);
73
+ }
74
+
47
75
  spawnCommand(command, args, options) {
48
76
  return new Promise((resolve, reject) => {
49
77
  try {
@@ -1,4 +1,5 @@
1
1
  import Nife from 'nife';
2
+ import { Utils } from 'mythix-orm';
2
3
  import * as HTTPErrors from '../http/http-errors.mjs';
3
4
 
4
5
  export class ControllerBase {
@@ -105,6 +106,39 @@ export class ControllerBase {
105
106
  return this.getConnection(connection);
106
107
  }
107
108
 
109
+ /// Capture the current AsyncLocalStorage context and return a function
110
+ /// that will execute callbacks within that captured context.
111
+ ///
112
+ /// This is useful for preserving database context across event emitters,
113
+ /// setTimeout, or other callbacks where context might otherwise be lost.
114
+ ///
115
+ /// Return: Function
116
+ /// A function that takes a callback and executes it in the captured context.
117
+ captureContext() {
118
+ return Utils.captureContext();
119
+ }
120
+
121
+ /// Wrap a callback function to preserve the current AsyncLocalStorage context.
122
+ ///
123
+ /// This is a convenience wrapper for use with event handlers and other callbacks
124
+ /// where you want to ensure database context is preserved.
125
+ ///
126
+ /// Arguments:
127
+ /// callback: Function
128
+ /// The callback function to wrap.
129
+ ///
130
+ /// Return: Function
131
+ /// A wrapped version of the callback that will execute in the captured context.
132
+ ///
133
+ /// Example:
134
+ /// eventEmitter.on('data', this.bindCallback(async (data) => {
135
+ /// // Context preserved - models work here
136
+ /// const user = await this.getModel('User').where.id.EQ(data.userId).first();
137
+ /// }));
138
+ bindCallback(callback) {
139
+ return Utils.bindCallback(callback);
140
+ }
141
+
108
142
  prepareToThrowError(ErrorClass, args) {
109
143
  return new ErrorClass(this.route, ...args);
110
144
  }
package/lib/index.mjs CHANGED
@@ -29,3 +29,12 @@ export * as CLI from './cli/index.mjs';
29
29
  export { CommandBase, Commands } from './cli/index.mjs';
30
30
 
31
31
  export { Types, Utils as MythixORMUtils } from 'mythix-orm';
32
+
33
+ // Re-export key AsyncStore utilities for convenience
34
+ import { Utils as ORMUtils } from 'mythix-orm';
35
+ export const CONNECTION_KEY = ORMUtils.CONNECTION_KEY;
36
+ export const captureContext = ORMUtils.captureContext;
37
+ export const bindCallback = ORMUtils.bindCallback;
38
+ export const hasContext = ORMUtils.hasContext;
39
+ export const hasConnection = ORMUtils.hasConnection;
40
+ export const getContextDebugInfo = ORMUtils.getContextDebugInfo;
@@ -1,4 +1,5 @@
1
1
  import { DateTime } from 'luxon';
2
+ import { Utils } from 'mythix-orm';
2
3
 
3
4
  export class TaskBase {
4
5
  static getWorkerCount() {
@@ -70,4 +71,31 @@ export class TaskBase {
70
71
  let application = this.getApplication();
71
72
  return application.getConnection(connection);
72
73
  }
74
+
75
+ /// Capture the current AsyncLocalStorage context and return a function
76
+ /// that will execute callbacks within that captured context.
77
+ ///
78
+ /// This is useful for preserving database context across event emitters,
79
+ /// setTimeout, or other callbacks where context might otherwise be lost.
80
+ ///
81
+ /// Return: Function
82
+ /// A function that takes a callback and executes it in the captured context.
83
+ captureContext() {
84
+ return Utils.captureContext();
85
+ }
86
+
87
+ /// Wrap a callback function to preserve the current AsyncLocalStorage context.
88
+ ///
89
+ /// This is a convenience wrapper for use with event handlers and other callbacks
90
+ /// where you want to ensure database context is preserved.
91
+ ///
92
+ /// Arguments:
93
+ /// callback: Function
94
+ /// The callback function to wrap.
95
+ ///
96
+ /// Return: Function
97
+ /// A wrapped version of the callback that will execute in the captured context.
98
+ bindCallback(callback) {
99
+ return Utils.bindCallback(callback);
100
+ }
73
101
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mythix",
3
- "version": "4.0.2",
3
+ "version": "4.1.0",
4
4
  "description": "Mythix is a NodeJS web-app framework",
5
5
  "main": "lib/index.mjs",
6
6
  "type": "module",
@@ -1,44 +0,0 @@
1
- import { generateClientAPIInterface } from './generate-client-api-interface.mjs';
2
- import { newTestApplication } from '../../spec/support/application.mjs';
3
- import { matchesSnapshot } from '../../spec/support/snapshots.mjs';
4
-
5
- function getRoutes() {
6
- }
7
-
8
- describe('generateClientAPIInterface', () => {
9
- let app;
10
-
11
- beforeAll(async () => {
12
- try {
13
- app = await newTestApplication();
14
- app.getRoutes = getRoutes.bind(app);
15
- } catch (error) {
16
- console.error('Error in beforeAll: ', error);
17
- }
18
- });
19
-
20
- it('should be able to generate an interface using route definitions', () => {
21
- let result = generateClientAPIInterface(app);
22
- expect(matchesSnapshot(result)).toBe(true);
23
- });
24
-
25
- it('should be able to generate an interface for node', () => {
26
- let result = generateClientAPIInterface(app, { environment: 'node' });
27
- expect(matchesSnapshot(result)).toBe(true);
28
- });
29
-
30
- it('should be able to generate an interface for the browser', () => {
31
- let result = generateClientAPIInterface(app, { environment: 'browser' });
32
- expect(matchesSnapshot(result)).toBe(true);
33
- });
34
-
35
- it('should be able to export a global', () => {
36
- let result = generateClientAPIInterface(app, { globalName: 'API' });
37
- expect(matchesSnapshot(result)).toBe(true);
38
- });
39
-
40
- it('should be able to specify a domain', () => {
41
- let result = generateClientAPIInterface(app, { domain: 'http://localhost:8080' });
42
- expect(matchesSnapshot(result)).toBe(true);
43
- });
44
- });
@@ -1,121 +0,0 @@
1
- /* eslint-disable no-magic-numbers */
2
- /* global jasmine */
3
-
4
- import { Logger } from './logger.mjs';
5
-
6
- describe('Logger', () => {
7
- let fakeConsole;
8
- let consoleOutput;
9
- let logger;
10
-
11
- beforeAll(() => {
12
- jasmine.clock().install();
13
- jasmine.clock().mockDate(new Date(2000, 0, 1, 12, 0, 0, 0));
14
- });
15
-
16
- beforeEach(() => {
17
- const createConsoleMethod = (name) => {
18
- return function(...args) {
19
- if (!consoleOutput[name])
20
- consoleOutput[name] = [];
21
-
22
- consoleOutput[name].push(args);
23
- };
24
- };
25
-
26
- consoleOutput = {};
27
-
28
- fakeConsole = {
29
- debug: createConsoleMethod('debug'),
30
- error: createConsoleMethod('error'),
31
- info: createConsoleMethod('info'),
32
- log: createConsoleMethod('log'),
33
- warn: createConsoleMethod('warn'),
34
- };
35
-
36
- logger = new Logger({ writer: fakeConsole, pid: 777 });
37
- });
38
-
39
- it('works', () => {
40
- logger.error('Testing 123', true, 3.14, 'Hello World!', { test: 'stuff' }, [ 'wow', 1, 2, 3 ]);
41
- expect(consoleOutput.error[0]).toEqual([ 'E, [2000-01-01T19:00:00.000Z #777] -- : Testing 123 true 3.14 Hello World! {"test":"stuff"} ["wow",1,2,3]' ]);
42
-
43
- logger.log('Testing 123', true, 3.14, 'Hello World!', { test: 'stuff' }, [ 'wow', 1, 2, 3 ]);
44
- expect(consoleOutput.log[0]).toEqual([ 'L, [2000-01-01T19:00:00.000Z #777] -- : Testing 123 true 3.14 Hello World! {"test":"stuff"} ["wow",1,2,3]' ]);
45
-
46
- logger.warn('Testing 123', true, 3.14, 'Hello World!', { test: 'stuff' }, [ 'wow', 1, 2, 3 ]);
47
- expect(consoleOutput.warn[0]).toEqual([ 'W, [2000-01-01T19:00:00.000Z #777] -- : Testing 123 true 3.14 Hello World! {"test":"stuff"} ["wow",1,2,3]' ]);
48
-
49
- logger.info('Testing 123', true, 3.14, 'Hello World!', { test: 'stuff' }, [ 'wow', 1, 2, 3 ]);
50
- expect(consoleOutput.info[0]).toEqual([ 'I, [2000-01-01T19:00:00.000Z #777] -- : Testing 123 true 3.14 Hello World! {"test":"stuff"} ["wow",1,2,3]' ]);
51
-
52
- logger.debug('Testing 123', true, 3.14, 'Hello World!', { test: 'stuff' }, [ 'wow', 1, 2, 3 ]);
53
- expect(consoleOutput.debug[0]).toEqual([ 'D, [2000-01-01T19:00:00.000Z #777] -- : Testing 123 true 3.14 Hello World! {"test":"stuff"} ["wow",1,2,3]' ]);
54
- });
55
-
56
- it('can set a log level', () => {
57
- const writeAll = () => {
58
- consoleOutput = {};
59
-
60
- logger.error('test');
61
- logger.log('test');
62
- logger.warn('test');
63
- logger.info('test');
64
- logger.debug('test');
65
- };
66
-
67
- // Level 0 (no messages)
68
- logger.setLevel(0);
69
- writeAll();
70
- expect(consoleOutput.error).toBe(undefined);
71
- expect(consoleOutput.log).toBe(undefined);
72
- expect(consoleOutput.warn).toBe(undefined);
73
- expect(consoleOutput.info).toBe(undefined);
74
- expect(consoleOutput.debug).toBe(undefined);
75
-
76
- // Level 1 (only errors)
77
- logger.setLevel(Logger.LEVEL_ERROR);
78
- writeAll();
79
- expect(consoleOutput.error).toEqual([ [ 'E, [2000-01-01T19:00:00.000Z #777] -- : test' ] ]);
80
- expect(consoleOutput.log).toBe(undefined);
81
- expect(consoleOutput.warn).toBe(undefined);
82
- expect(consoleOutput.info).toBe(undefined);
83
- expect(consoleOutput.debug).toBe(undefined);
84
-
85
- // Level 2 (error, and log)
86
- logger.setLevel(Logger.LEVEL_LOG);
87
- writeAll();
88
- expect(consoleOutput.error).toEqual([ [ 'E, [2000-01-01T19:00:00.000Z #777] -- : test' ] ]);
89
- expect(consoleOutput.log).toEqual([ [ 'L, [2000-01-01T19:00:00.000Z #777] -- : test' ] ]);
90
- expect(consoleOutput.warn).toBe(undefined);
91
- expect(consoleOutput.info).toBe(undefined);
92
- expect(consoleOutput.debug).toBe(undefined);
93
-
94
- // Level 3 (error, log, and warn)
95
- logger.setLevel(Logger.LEVEL_WARN);
96
- writeAll();
97
- expect(consoleOutput.error).toEqual([ [ 'E, [2000-01-01T19:00:00.000Z #777] -- : test' ] ]);
98
- expect(consoleOutput.log).toEqual([ [ 'L, [2000-01-01T19:00:00.000Z #777] -- : test' ] ]);
99
- expect(consoleOutput.warn).toEqual([ [ 'W, [2000-01-01T19:00:00.000Z #777] -- : test' ] ]);
100
- expect(consoleOutput.info).toBe(undefined);
101
- expect(consoleOutput.debug).toBe(undefined);
102
-
103
- // Level 3 (error, log, warn, and info)
104
- logger.setLevel(Logger.LEVEL_INFO);
105
- writeAll();
106
- expect(consoleOutput.error).toEqual([ [ 'E, [2000-01-01T19:00:00.000Z #777] -- : test' ] ]);
107
- expect(consoleOutput.log).toEqual([ [ 'L, [2000-01-01T19:00:00.000Z #777] -- : test' ] ]);
108
- expect(consoleOutput.warn).toEqual([ [ 'W, [2000-01-01T19:00:00.000Z #777] -- : test' ] ]);
109
- expect(consoleOutput.info).toEqual([ [ 'I, [2000-01-01T19:00:00.000Z #777] -- : test' ] ]);
110
- expect(consoleOutput.debug).toBe(undefined);
111
-
112
- // Level 4 (error, log, warn, info, and debug)
113
- logger.setLevel(Logger.LEVEL_DEBUG);
114
- writeAll();
115
- expect(consoleOutput.error).toEqual([ [ 'E, [2000-01-01T19:00:00.000Z #777] -- : test' ] ]);
116
- expect(consoleOutput.log).toEqual([ [ 'L, [2000-01-01T19:00:00.000Z #777] -- : test' ] ]);
117
- expect(consoleOutput.warn).toEqual([ [ 'W, [2000-01-01T19:00:00.000Z #777] -- : test' ] ]);
118
- expect(consoleOutput.info).toEqual([ [ 'I, [2000-01-01T19:00:00.000Z #777] -- : test' ] ]);
119
- expect(consoleOutput.debug).toEqual([ [ 'D, [2000-01-01T19:00:00.000Z #777] -- : test' ] ]);
120
- });
121
- });
@@ -1,24 +0,0 @@
1
- import { CryptoUtils } from './index.mjs';
2
-
3
- describe('crypto-utils', function() {
4
- describe('MD5', function() {
5
- it('should be able to hash input', function() {
6
- expect(CryptoUtils.MD5('test')).toEqual('098f6bcd4621d373cade4e832627b4f6');
7
- expect(CryptoUtils.MD5('')).toEqual('d41d8cd98f00b204e9800998ecf8427e');
8
- });
9
- });
10
-
11
- describe('SHA256', function() {
12
- it('should be able to hash input', function() {
13
- expect(CryptoUtils.SHA256('test')).toEqual('9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08');
14
- expect(CryptoUtils.SHA256('')).toEqual('e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855');
15
- });
16
- });
17
-
18
- describe('SHA512', function() {
19
- it('should be able to hash input', function() {
20
- expect(CryptoUtils.SHA512('test')).toEqual('ee26b0dd4af7e749aa1a8ee3c10ae9923f618980772e473f8819a5d4940e0db27ac185f8a0e1d5f84f88bc887fd67b143732c304cc5fa9ad8e6f57f50028a8ff');
21
- expect(CryptoUtils.SHA512('')).toEqual('cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e');
22
- });
23
- });
24
- });
@@ -1,10 +0,0 @@
1
- import * as FileUtils from './file-utils.mjs';
2
-
3
- describe('file-utils', function() {
4
- describe('fileNameWithoutExtension', function() {
5
- it('should be able to remove the extension from a file name', function() {
6
- expect(FileUtils.fileNameWithoutExtension('test.txt')).toEqual('test');
7
- expect(FileUtils.fileNameWithoutExtension('test.txt.bin')).toEqual('test.txt');
8
- });
9
- });
10
- });
@@ -1,171 +0,0 @@
1
- import * as MimeUtils from './mime-utils.mjs';
2
-
3
- describe('mime-utils', function() {
4
- describe('getFilenameExtension', function() {
5
- it('should be able to get file name extension', function() {
6
- expect(MimeUtils.getFilenameExtension('/test/derp.txt')).toEqual('txt');
7
- expect(MimeUtils.getFilenameExtension('/test/derp.test.txt')).toEqual('txt');
8
- expect(MimeUtils.getFilenameExtension('test.png')).toEqual('png');
9
- expect(MimeUtils.getFilenameExtension('derp.longext')).toEqual('longext');
10
- });
11
- });
12
-
13
- describe('getMimeTypeFromFilename', function() {
14
- it('should be able to get mime type from file name', function() {
15
- expect(MimeUtils.getMimeTypeFromFilename('test.3g2')).toEqual('video/3gpp2');
16
- expect(MimeUtils.getMimeTypeFromFilename('test.3gp')).toEqual('video/3gpp');
17
- expect(MimeUtils.getMimeTypeFromFilename('test.7z')).toEqual('application/x-7z-compressed');
18
- expect(MimeUtils.getMimeTypeFromFilename('test.aac')).toEqual('audio/aac');
19
- expect(MimeUtils.getMimeTypeFromFilename('test.abw')).toEqual('application/x-abiword');
20
- expect(MimeUtils.getMimeTypeFromFilename('test.arc')).toEqual('application/x-freearc');
21
- expect(MimeUtils.getMimeTypeFromFilename('test.avi')).toEqual('video/avi');
22
- expect(MimeUtils.getMimeTypeFromFilename('test.avif')).toEqual('image/avif');
23
- expect(MimeUtils.getMimeTypeFromFilename('test.azw')).toEqual('application/vnd.amazon.ebook');
24
- expect(MimeUtils.getMimeTypeFromFilename('test.bin')).toEqual('application/octet-stream');
25
- expect(MimeUtils.getMimeTypeFromFilename('test.bmp')).toEqual('image/bmp');
26
- expect(MimeUtils.getMimeTypeFromFilename('test.bz')).toEqual('application/x-bzip');
27
- expect(MimeUtils.getMimeTypeFromFilename('test.bz2')).toEqual('application/x-bzip2');
28
- expect(MimeUtils.getMimeTypeFromFilename('test.cda')).toEqual('application/x-cdf');
29
- expect(MimeUtils.getMimeTypeFromFilename('test.csh')).toEqual('application/x-csh');
30
- expect(MimeUtils.getMimeTypeFromFilename('test.css')).toEqual('text/css');
31
- expect(MimeUtils.getMimeTypeFromFilename('test.csv')).toEqual('text/csv');
32
- expect(MimeUtils.getMimeTypeFromFilename('test.doc')).toEqual('application/msword');
33
- expect(MimeUtils.getMimeTypeFromFilename('test.docx')).toEqual('application/vnd.openxmlformats-officedocument.wordprocessingml.document');
34
- expect(MimeUtils.getMimeTypeFromFilename('test.eot')).toEqual('application/vnd.ms-fontobject');
35
- expect(MimeUtils.getMimeTypeFromFilename('test.epub')).toEqual('application/epub+zip');
36
- expect(MimeUtils.getMimeTypeFromFilename('test.gif')).toEqual('image/gif');
37
- expect(MimeUtils.getMimeTypeFromFilename('test.gz')).toEqual('application/gzip');
38
- expect(MimeUtils.getMimeTypeFromFilename('test.htm')).toEqual('text/html');
39
- expect(MimeUtils.getMimeTypeFromFilename('test.html')).toEqual('text/html');
40
- expect(MimeUtils.getMimeTypeFromFilename('test.ico')).toEqual('image/vnd.microsoft.icon');
41
- expect(MimeUtils.getMimeTypeFromFilename('test.ics')).toEqual('text/calendar');
42
- expect(MimeUtils.getMimeTypeFromFilename('test.jar')).toEqual('application/java-archive');
43
- expect(MimeUtils.getMimeTypeFromFilename('test.jpeg')).toEqual('image/jpeg');
44
- expect(MimeUtils.getMimeTypeFromFilename('test.jpg')).toEqual('image/jpeg');
45
- expect(MimeUtils.getMimeTypeFromFilename('test.mjs')).toEqual('text/javascript');
46
- expect(MimeUtils.getMimeTypeFromFilename('test.json')).toEqual('application/json');
47
- expect(MimeUtils.getMimeTypeFromFilename('test.jsonld')).toEqual('application/ld+json');
48
- expect(MimeUtils.getMimeTypeFromFilename('test.mid')).toEqual('audio/midi');
49
- expect(MimeUtils.getMimeTypeFromFilename('test.mjs')).toEqual('text/javascript');
50
- expect(MimeUtils.getMimeTypeFromFilename('test.mp3')).toEqual('audio/mpeg3');
51
- expect(MimeUtils.getMimeTypeFromFilename('test.mp4')).toEqual('video/mp4');
52
- expect(MimeUtils.getMimeTypeFromFilename('test.mpeg')).toEqual('video/mpeg');
53
- expect(MimeUtils.getMimeTypeFromFilename('test.mpkg')).toEqual('application/vnd.apple.installer+xml');
54
- expect(MimeUtils.getMimeTypeFromFilename('test.odp')).toEqual('application/vnd.oasis.opendocument.presentation');
55
- expect(MimeUtils.getMimeTypeFromFilename('test.ods')).toEqual('application/vnd.oasis.opendocument.spreadsheet');
56
- expect(MimeUtils.getMimeTypeFromFilename('test.odt')).toEqual('application/vnd.oasis.opendocument.text');
57
- expect(MimeUtils.getMimeTypeFromFilename('test.oga')).toEqual('audio/ogg');
58
- expect(MimeUtils.getMimeTypeFromFilename('test.ogv')).toEqual('video/ogg');
59
- expect(MimeUtils.getMimeTypeFromFilename('test.ogx')).toEqual('application/ogg');
60
- expect(MimeUtils.getMimeTypeFromFilename('test.opus')).toEqual('audio/opus');
61
- expect(MimeUtils.getMimeTypeFromFilename('test.otf')).toEqual('font/otf');
62
- expect(MimeUtils.getMimeTypeFromFilename('test.pdf')).toEqual('application/pdf');
63
- expect(MimeUtils.getMimeTypeFromFilename('test.php')).toEqual('application/x-httpd-php');
64
- expect(MimeUtils.getMimeTypeFromFilename('test.png')).toEqual('image/png');
65
- expect(MimeUtils.getMimeTypeFromFilename('test.ppt')).toEqual('application/vnd.ms-powerpoint');
66
- expect(MimeUtils.getMimeTypeFromFilename('test.pptx')).toEqual('application/vnd.openxmlformats-officedocument.presentationml.presentation');
67
- expect(MimeUtils.getMimeTypeFromFilename('test.rar')).toEqual('application/vnd.rar');
68
- expect(MimeUtils.getMimeTypeFromFilename('test.rtf')).toEqual('application/rtf');
69
- expect(MimeUtils.getMimeTypeFromFilename('test.sh')).toEqual('application/x-sh');
70
- expect(MimeUtils.getMimeTypeFromFilename('test.svg')).toEqual('image/svg+xml');
71
- expect(MimeUtils.getMimeTypeFromFilename('test.swf')).toEqual('application/x-shockwave-flash');
72
- expect(MimeUtils.getMimeTypeFromFilename('test.tar')).toEqual('application/x-tar');
73
- expect(MimeUtils.getMimeTypeFromFilename('test.tif')).toEqual('image/tiff');
74
- expect(MimeUtils.getMimeTypeFromFilename('test.tiff')).toEqual('image/tiff');
75
- expect(MimeUtils.getMimeTypeFromFilename('test.ts')).toEqual('video/mp2t');
76
- expect(MimeUtils.getMimeTypeFromFilename('test.ttf')).toEqual('font/ttf');
77
- expect(MimeUtils.getMimeTypeFromFilename('test.txt')).toEqual('text/plain');
78
- expect(MimeUtils.getMimeTypeFromFilename('test.vsd')).toEqual('application/vnd.visio');
79
- expect(MimeUtils.getMimeTypeFromFilename('test.wav')).toEqual('audio/wav');
80
- expect(MimeUtils.getMimeTypeFromFilename('test.weba')).toEqual('audio/webm');
81
- expect(MimeUtils.getMimeTypeFromFilename('test.webm')).toEqual('video/webm');
82
- expect(MimeUtils.getMimeTypeFromFilename('test.webp')).toEqual('image/webp');
83
- expect(MimeUtils.getMimeTypeFromFilename('test.woff')).toEqual('font/woff');
84
- expect(MimeUtils.getMimeTypeFromFilename('test.woff2')).toEqual('font/woff2');
85
- expect(MimeUtils.getMimeTypeFromFilename('test.xhtml')).toEqual('application/xhtml+xml');
86
- expect(MimeUtils.getMimeTypeFromFilename('test.xls')).toEqual('application/vnd.ms-excel');
87
- expect(MimeUtils.getMimeTypeFromFilename('test.xlsx')).toEqual('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
88
- expect(MimeUtils.getMimeTypeFromFilename('test.xml')).toEqual('application/xml');
89
- expect(MimeUtils.getMimeTypeFromFilename('test.xul')).toEqual('application/vnd.mozilla.xul+xml');
90
- expect(MimeUtils.getMimeTypeFromFilename('test.zip')).toEqual('application/zip');
91
- });
92
- });
93
-
94
- describe('getFileExtensionFromMimeType', function() {
95
- it('should be able to get file extension from mime type', function() {
96
- expect(MimeUtils.getFileExtensionFromMimeType('video/3gpp2')).toEqual('3g2');
97
- expect(MimeUtils.getFileExtensionFromMimeType('video/3gpp')).toEqual('3gp');
98
- expect(MimeUtils.getFileExtensionFromMimeType('application/x-7z-compressed')).toEqual('7z');
99
- expect(MimeUtils.getFileExtensionFromMimeType('audio/aac')).toEqual('aac');
100
- expect(MimeUtils.getFileExtensionFromMimeType('application/x-abiword')).toEqual('abw');
101
- expect(MimeUtils.getFileExtensionFromMimeType('application/x-freearc')).toEqual('arc');
102
- expect(MimeUtils.getFileExtensionFromMimeType('video/avi')).toEqual('avi');
103
- expect(MimeUtils.getFileExtensionFromMimeType('image/avif')).toEqual('avif');
104
- expect(MimeUtils.getFileExtensionFromMimeType('application/vnd.amazon.ebook')).toEqual('azw');
105
- expect(MimeUtils.getFileExtensionFromMimeType('application/octet-stream')).toEqual('bin');
106
- expect(MimeUtils.getFileExtensionFromMimeType('image/bmp')).toEqual('bmp');
107
- expect(MimeUtils.getFileExtensionFromMimeType('application/x-bzip')).toEqual('bz');
108
- expect(MimeUtils.getFileExtensionFromMimeType('application/x-bzip2')).toEqual('bz2');
109
- expect(MimeUtils.getFileExtensionFromMimeType('application/x-cdf')).toEqual('cda');
110
- expect(MimeUtils.getFileExtensionFromMimeType('application/x-csh')).toEqual('csh');
111
- expect(MimeUtils.getFileExtensionFromMimeType('text/css')).toEqual('css');
112
- expect(MimeUtils.getFileExtensionFromMimeType('text/csv')).toEqual('csv');
113
- expect(MimeUtils.getFileExtensionFromMimeType('application/msword')).toEqual('doc');
114
- expect(MimeUtils.getFileExtensionFromMimeType('application/vnd.openxmlformats-officedocument.wordprocessingml.document')).toEqual('docx');
115
- expect(MimeUtils.getFileExtensionFromMimeType('application/vnd.ms-fontobject')).toEqual('eot');
116
- expect(MimeUtils.getFileExtensionFromMimeType('application/epub+zip')).toEqual('epub');
117
- expect(MimeUtils.getFileExtensionFromMimeType('image/gif')).toEqual('gif');
118
- expect(MimeUtils.getFileExtensionFromMimeType('application/gzip')).toEqual('gz');
119
- expect(MimeUtils.getFileExtensionFromMimeType('text/html')).toEqual('html');
120
- expect(MimeUtils.getFileExtensionFromMimeType('image/vnd.microsoft.icon')).toEqual('ico');
121
- expect(MimeUtils.getFileExtensionFromMimeType('text/calendar')).toEqual('ics');
122
- expect(MimeUtils.getFileExtensionFromMimeType('application/java-archive')).toEqual('jar');
123
- expect(MimeUtils.getFileExtensionFromMimeType('image/jpeg')).toEqual('jpg');
124
- expect(MimeUtils.getFileExtensionFromMimeType('text/javascript')).toEqual('js');
125
- expect(MimeUtils.getFileExtensionFromMimeType('application/json')).toEqual('json');
126
- expect(MimeUtils.getFileExtensionFromMimeType('application/ld+json')).toEqual('jsonld');
127
- expect(MimeUtils.getFileExtensionFromMimeType('audio/midi')).toEqual('mid');
128
- expect(MimeUtils.getFileExtensionFromMimeType('text/javascript')).toEqual('js');
129
- expect(MimeUtils.getFileExtensionFromMimeType('audio/mpeg3')).toEqual('mp3');
130
- expect(MimeUtils.getFileExtensionFromMimeType('video/mp4')).toEqual('mp4');
131
- expect(MimeUtils.getFileExtensionFromMimeType('video/mpeg')).toEqual('mpeg');
132
- expect(MimeUtils.getFileExtensionFromMimeType('application/vnd.apple.installer+xml')).toEqual('mpkg');
133
- expect(MimeUtils.getFileExtensionFromMimeType('application/vnd.oasis.opendocument.presentation')).toEqual('odp');
134
- expect(MimeUtils.getFileExtensionFromMimeType('application/vnd.oasis.opendocument.spreadsheet')).toEqual('ods');
135
- expect(MimeUtils.getFileExtensionFromMimeType('application/vnd.oasis.opendocument.text')).toEqual('odt');
136
- expect(MimeUtils.getFileExtensionFromMimeType('audio/ogg')).toEqual('oga');
137
- expect(MimeUtils.getFileExtensionFromMimeType('video/ogg')).toEqual('ogv');
138
- expect(MimeUtils.getFileExtensionFromMimeType('application/ogg')).toEqual('ogx');
139
- expect(MimeUtils.getFileExtensionFromMimeType('audio/opus')).toEqual('opus');
140
- expect(MimeUtils.getFileExtensionFromMimeType('font/otf')).toEqual('otf');
141
- expect(MimeUtils.getFileExtensionFromMimeType('application/pdf')).toEqual('pdf');
142
- expect(MimeUtils.getFileExtensionFromMimeType('application/x-httpd-php')).toEqual('php');
143
- expect(MimeUtils.getFileExtensionFromMimeType('image/png')).toEqual('png');
144
- expect(MimeUtils.getFileExtensionFromMimeType('application/vnd.ms-powerpoint')).toEqual('ppt');
145
- expect(MimeUtils.getFileExtensionFromMimeType('application/vnd.openxmlformats-officedocument.presentationml.presentation')).toEqual('pptx');
146
- expect(MimeUtils.getFileExtensionFromMimeType('application/vnd.rar')).toEqual('rar');
147
- expect(MimeUtils.getFileExtensionFromMimeType('application/rtf')).toEqual('rtf');
148
- expect(MimeUtils.getFileExtensionFromMimeType('application/x-sh')).toEqual('sh');
149
- expect(MimeUtils.getFileExtensionFromMimeType('image/svg+xml')).toEqual('svg');
150
- expect(MimeUtils.getFileExtensionFromMimeType('application/x-shockwave-flash')).toEqual('swf');
151
- expect(MimeUtils.getFileExtensionFromMimeType('application/x-tar')).toEqual('tar');
152
- expect(MimeUtils.getFileExtensionFromMimeType('image/tiff')).toEqual('tiff');
153
- expect(MimeUtils.getFileExtensionFromMimeType('video/mp2t')).toEqual('ts');
154
- expect(MimeUtils.getFileExtensionFromMimeType('font/ttf')).toEqual('ttf');
155
- expect(MimeUtils.getFileExtensionFromMimeType('text/plain')).toEqual('txt');
156
- expect(MimeUtils.getFileExtensionFromMimeType('application/vnd.visio')).toEqual('vsd');
157
- expect(MimeUtils.getFileExtensionFromMimeType('audio/wav')).toEqual('wav');
158
- expect(MimeUtils.getFileExtensionFromMimeType('audio/webm')).toEqual('weba');
159
- expect(MimeUtils.getFileExtensionFromMimeType('video/webm')).toEqual('webm');
160
- expect(MimeUtils.getFileExtensionFromMimeType('image/webp')).toEqual('webp');
161
- expect(MimeUtils.getFileExtensionFromMimeType('font/woff')).toEqual('woff');
162
- expect(MimeUtils.getFileExtensionFromMimeType('font/woff2')).toEqual('woff2');
163
- expect(MimeUtils.getFileExtensionFromMimeType('application/xhtml+xml')).toEqual('xhtml');
164
- expect(MimeUtils.getFileExtensionFromMimeType('application/vnd.ms-excel')).toEqual('xls');
165
- expect(MimeUtils.getFileExtensionFromMimeType('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet')).toEqual('xlsx');
166
- expect(MimeUtils.getFileExtensionFromMimeType('application/xml')).toEqual('xml');
167
- expect(MimeUtils.getFileExtensionFromMimeType('application/vnd.mozilla.xul+xml')).toEqual('xul');
168
- expect(MimeUtils.getFileExtensionFromMimeType('application/zip')).toEqual('zip');
169
- });
170
- });
171
- });