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.
- package/lib/application.mjs +3 -3
- package/lib/cli/command-base.mjs +29 -1
- package/lib/controllers/controller-base.mjs +34 -0
- package/lib/index.mjs +9 -0
- package/lib/tasks/task-base.mjs +28 -0
- package/package.json +1 -1
- package/lib/controllers/generate-client-api-interface-spec.mjs +0 -44
- package/lib/logger-spec.mjs +0 -121
- package/lib/utils/crypto-utils-spec.mjs +0 -24
- package/lib/utils/file-utils-spec.mjs +0 -10
- package/lib/utils/mime-utils-spec.mjs +0 -171
package/lib/application.mjs
CHANGED
|
@@ -160,9 +160,9 @@ export class Application {
|
|
|
160
160
|
}
|
|
161
161
|
|
|
162
162
|
bindToProcessSignals() {
|
|
163
|
-
process.on('SIGINT', this.stop
|
|
164
|
-
process.on('SIGTERM', this.stop
|
|
165
|
-
process.on('SIGHUP', this.stop
|
|
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() {
|
package/lib/cli/command-base.mjs
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { spawn }
|
|
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;
|
package/lib/tasks/task-base.mjs
CHANGED
|
@@ -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,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
|
-
});
|
package/lib/logger-spec.mjs
DELETED
|
@@ -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
|
-
});
|