@app-connect/core 0.0.3 → 1.6.4
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/.env.test +5 -5
- package/README.md +434 -425
- package/adapter/mock.js +76 -76
- package/adapter/registry.js +247 -247
- package/handlers/admin.js +62 -60
- package/handlers/auth.js +205 -156
- package/handlers/contact.js +274 -274
- package/handlers/disposition.js +193 -193
- package/handlers/log.js +612 -586
- package/handlers/user.js +101 -101
- package/index.js +1302 -1202
- package/jest.config.js +56 -56
- package/lib/analytics.js +52 -52
- package/lib/callLogComposer.js +550 -451
- package/lib/constants.js +9 -0
- package/lib/encode.js +30 -30
- package/lib/generalErrorMessage.js +41 -41
- package/lib/jwt.js +16 -16
- package/lib/oauth.js +79 -29
- package/lib/util.js +43 -40
- package/models/adminConfigModel.js +17 -17
- package/models/cacheModel.js +23 -23
- package/models/callLogModel.js +27 -27
- package/models/dynamo/lockSchema.js +24 -24
- package/models/dynamo/noteCacheSchema.js +30 -0
- package/models/messageLogModel.js +25 -25
- package/models/sequelize.js +16 -16
- package/models/userModel.js +38 -38
- package/package.json +67 -64
- package/releaseNotes.json +701 -577
- package/test/adapter/registry.test.js +270 -270
- package/test/handlers/auth.test.js +230 -230
- package/test/lib/jwt.test.js +161 -161
- package/test/setup.js +176 -176
package/jest.config.js
CHANGED
|
@@ -1,57 +1,57 @@
|
|
|
1
|
-
const path = require('path');
|
|
2
|
-
|
|
3
|
-
module.exports = {
|
|
4
|
-
// Test environment
|
|
5
|
-
testEnvironment: 'node',
|
|
6
|
-
|
|
7
|
-
// Test file patterns
|
|
8
|
-
testMatch: [
|
|
9
|
-
'<rootDir>/test/**/*.test.js',
|
|
10
|
-
'<rootDir>/**/*.test.js'
|
|
11
|
-
],
|
|
12
|
-
|
|
13
|
-
// Setup files
|
|
14
|
-
setupFilesAfterEnv: [
|
|
15
|
-
'<rootDir>/test/setup.js'
|
|
16
|
-
],
|
|
17
|
-
|
|
18
|
-
// Coverage configuration
|
|
19
|
-
collectCoverage: true,
|
|
20
|
-
coverageDirectory: '<rootDir>/coverage',
|
|
21
|
-
coverageReporters: ['text', 'lcov', 'html'],
|
|
22
|
-
coveragePathIgnorePatterns: [
|
|
23
|
-
'/node_modules/',
|
|
24
|
-
'/test/',
|
|
25
|
-
'/coverage/',
|
|
26
|
-
'jest.config.js',
|
|
27
|
-
'setup.js'
|
|
28
|
-
],
|
|
29
|
-
|
|
30
|
-
// Module resolution
|
|
31
|
-
moduleDirectories: ['node_modules', '<rootDir>'],
|
|
32
|
-
moduleNameMapper: {
|
|
33
|
-
'^@app-connect/core/(.*)$': '<rootDir>/$1'
|
|
34
|
-
},
|
|
35
|
-
|
|
36
|
-
// Test timeout
|
|
37
|
-
testTimeout: 30000,
|
|
38
|
-
|
|
39
|
-
// Reporters
|
|
40
|
-
reporters: ['default'],
|
|
41
|
-
|
|
42
|
-
// Ignore patterns
|
|
43
|
-
modulePathIgnorePatterns: [
|
|
44
|
-
'<rootDir>/node_modules/',
|
|
45
|
-
'<rootDir>/coverage/',
|
|
46
|
-
'<rootDir>/test-results/'
|
|
47
|
-
],
|
|
48
|
-
|
|
49
|
-
// Clear mocks between tests
|
|
50
|
-
clearMocks: true,
|
|
51
|
-
|
|
52
|
-
// Restore mocks between tests
|
|
53
|
-
restoreMocks: true,
|
|
54
|
-
|
|
55
|
-
// Verbose output
|
|
56
|
-
verbose: true
|
|
1
|
+
const path = require('path');
|
|
2
|
+
|
|
3
|
+
module.exports = {
|
|
4
|
+
// Test environment
|
|
5
|
+
testEnvironment: 'node',
|
|
6
|
+
|
|
7
|
+
// Test file patterns
|
|
8
|
+
testMatch: [
|
|
9
|
+
'<rootDir>/test/**/*.test.js',
|
|
10
|
+
'<rootDir>/**/*.test.js'
|
|
11
|
+
],
|
|
12
|
+
|
|
13
|
+
// Setup files
|
|
14
|
+
setupFilesAfterEnv: [
|
|
15
|
+
'<rootDir>/test/setup.js'
|
|
16
|
+
],
|
|
17
|
+
|
|
18
|
+
// Coverage configuration
|
|
19
|
+
collectCoverage: true,
|
|
20
|
+
coverageDirectory: '<rootDir>/coverage',
|
|
21
|
+
coverageReporters: ['text', 'lcov', 'html'],
|
|
22
|
+
coveragePathIgnorePatterns: [
|
|
23
|
+
'/node_modules/',
|
|
24
|
+
'/test/',
|
|
25
|
+
'/coverage/',
|
|
26
|
+
'jest.config.js',
|
|
27
|
+
'setup.js'
|
|
28
|
+
],
|
|
29
|
+
|
|
30
|
+
// Module resolution
|
|
31
|
+
moduleDirectories: ['node_modules', '<rootDir>'],
|
|
32
|
+
moduleNameMapper: {
|
|
33
|
+
'^@app-connect/core/(.*)$': '<rootDir>/$1'
|
|
34
|
+
},
|
|
35
|
+
|
|
36
|
+
// Test timeout
|
|
37
|
+
testTimeout: 30000,
|
|
38
|
+
|
|
39
|
+
// Reporters
|
|
40
|
+
reporters: ['default'],
|
|
41
|
+
|
|
42
|
+
// Ignore patterns
|
|
43
|
+
modulePathIgnorePatterns: [
|
|
44
|
+
'<rootDir>/node_modules/',
|
|
45
|
+
'<rootDir>/coverage/',
|
|
46
|
+
'<rootDir>/test-results/'
|
|
47
|
+
],
|
|
48
|
+
|
|
49
|
+
// Clear mocks between tests
|
|
50
|
+
clearMocks: true,
|
|
51
|
+
|
|
52
|
+
// Restore mocks between tests
|
|
53
|
+
restoreMocks: true,
|
|
54
|
+
|
|
55
|
+
// Verbose output
|
|
56
|
+
verbose: true
|
|
57
57
|
};
|
package/lib/analytics.js
CHANGED
|
@@ -1,53 +1,53 @@
|
|
|
1
|
-
const Mixpanel = require('mixpanel');
|
|
2
|
-
const parser = require('ua-parser-js');
|
|
3
|
-
let packageJson = null;
|
|
4
|
-
try {
|
|
5
|
-
packageJson = require('../package.json');
|
|
6
|
-
}
|
|
7
|
-
catch (e) {
|
|
8
|
-
packageJson = require('../../package.json');
|
|
9
|
-
}
|
|
10
|
-
const appName = 'App Connect';
|
|
11
|
-
const defaultEventAddedVia = 'server';
|
|
12
|
-
const version = packageJson.version;
|
|
13
|
-
let mixpanel = null;
|
|
14
|
-
|
|
15
|
-
exports.init = function init() {
|
|
16
|
-
if (!process.env.MIXPANEL_TOKEN) {
|
|
17
|
-
return;
|
|
18
|
-
}
|
|
19
|
-
mixpanel = Mixpanel.init(process.env.MIXPANEL_TOKEN);
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
exports.track = function track({ eventName, interfaceName, adapterName, accountId, extensionId, success, requestDuration, userAgent, ip, author, eventAddedVia, extras = null }) {
|
|
23
|
-
if (!mixpanel || !extensionId) {
|
|
24
|
-
return;
|
|
25
|
-
}
|
|
26
|
-
const inUseEventAddedVia = eventAddedVia || defaultEventAddedVia;
|
|
27
|
-
mixpanel.people.set_once(extensionId, {
|
|
28
|
-
version,
|
|
29
|
-
appName,
|
|
30
|
-
crmPlatform: adapterName
|
|
31
|
-
});
|
|
32
|
-
const ua = parser(userAgent);
|
|
33
|
-
mixpanel.track(eventName, {
|
|
34
|
-
distinct_id: extensionId,
|
|
35
|
-
interfaceName,
|
|
36
|
-
adapterName,
|
|
37
|
-
rcAccountId: accountId,
|
|
38
|
-
extensionId,
|
|
39
|
-
success,
|
|
40
|
-
requestDuration,
|
|
41
|
-
collectedFrom: 'server',
|
|
42
|
-
version,
|
|
43
|
-
appName,
|
|
44
|
-
eventAddedVia: inUseEventAddedVia,
|
|
45
|
-
$browser: ua.browser.name,
|
|
46
|
-
$os: ua.os.name,
|
|
47
|
-
$device: ua.device.type,
|
|
48
|
-
ip,
|
|
49
|
-
author,
|
|
50
|
-
...extras
|
|
51
|
-
});
|
|
52
|
-
console.log(`Event: ${eventName}`);
|
|
1
|
+
const Mixpanel = require('mixpanel');
|
|
2
|
+
const parser = require('ua-parser-js');
|
|
3
|
+
let packageJson = null;
|
|
4
|
+
try {
|
|
5
|
+
packageJson = require('../package.json');
|
|
6
|
+
}
|
|
7
|
+
catch (e) {
|
|
8
|
+
packageJson = require('../../package.json');
|
|
9
|
+
}
|
|
10
|
+
const appName = 'App Connect';
|
|
11
|
+
const defaultEventAddedVia = 'server';
|
|
12
|
+
const version = packageJson.version;
|
|
13
|
+
let mixpanel = null;
|
|
14
|
+
|
|
15
|
+
exports.init = function init() {
|
|
16
|
+
if (!process.env.MIXPANEL_TOKEN) {
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
mixpanel = Mixpanel.init(process.env.MIXPANEL_TOKEN);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
exports.track = function track({ eventName, interfaceName, adapterName, accountId, extensionId, success, requestDuration, userAgent, ip, author, eventAddedVia, extras = null }) {
|
|
23
|
+
if (!mixpanel || !extensionId) {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
const inUseEventAddedVia = eventAddedVia || defaultEventAddedVia;
|
|
27
|
+
mixpanel.people.set_once(extensionId, {
|
|
28
|
+
version,
|
|
29
|
+
appName,
|
|
30
|
+
crmPlatform: adapterName
|
|
31
|
+
});
|
|
32
|
+
const ua = parser(userAgent);
|
|
33
|
+
mixpanel.track(eventName, {
|
|
34
|
+
distinct_id: extensionId,
|
|
35
|
+
interfaceName,
|
|
36
|
+
adapterName,
|
|
37
|
+
rcAccountId: accountId,
|
|
38
|
+
extensionId,
|
|
39
|
+
success,
|
|
40
|
+
requestDuration,
|
|
41
|
+
collectedFrom: 'server',
|
|
42
|
+
version,
|
|
43
|
+
appName,
|
|
44
|
+
eventAddedVia: inUseEventAddedVia,
|
|
45
|
+
$browser: ua.browser.name,
|
|
46
|
+
$os: ua.os.name,
|
|
47
|
+
$device: ua.device.type,
|
|
48
|
+
ip,
|
|
49
|
+
author,
|
|
50
|
+
...extras
|
|
51
|
+
});
|
|
52
|
+
console.log(`Event: ${eventName}`);
|
|
53
53
|
}
|