Skip to content

Commit d77a3ab

Browse files
committed
Fixed bug with custom error handler not returning as json content type.
Renamed InvalidSyncIdException to SyncNotFoundException. Updated tests.
1 parent 766f1e8 commit d77a3ab

25 files changed

Lines changed: 1640 additions & 1597 deletions

‎.vscode/launch.json‎

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,15 @@
44
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
55
"version": "0.2.0",
66
"configurations": [{
7+
"name": "Attach",
8+
"port": 9229,
9+
"request": "attach",
10+
"skipFiles": [
11+
"<node_internals>/**"
12+
],
13+
"type": "pwa-node"
14+
},
15+
{
716
"name": "Debug API",
817
"type": "node",
918
"request": "launch",

‎dist/api.js‎

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
"use strict";
2-
Object.defineProperty(exports, "__esModule", { value: true });
3-
const server_1 = require("./server");
4-
// Entry point into server
5-
exports.default = (async () => {
6-
const app = await server_1.createApplication();
7-
await server_1.startService(app);
8-
})();
1+
"use strict";
2+
Object.defineProperty(exports, "__esModule", { value: true });
3+
const server_1 = require("./server");
4+
// Entry point into server
5+
exports.default = (async () => {
6+
const app = await server_1.createApplication();
7+
await server_1.startService(app);
8+
})();

‎dist/common/enums.js‎

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,23 @@
1-
"use strict";
2-
Object.defineProperty(exports, "__esModule", { value: true });
3-
exports.Verb = exports.ServiceStatus = exports.LogLevel = void 0;
4-
var LogLevel;
5-
(function (LogLevel) {
6-
LogLevel[LogLevel["Error"] = 0] = "Error";
7-
LogLevel[LogLevel["Info"] = 1] = "Info";
8-
})(LogLevel = exports.LogLevel || (exports.LogLevel = {}));
9-
var ServiceStatus;
10-
(function (ServiceStatus) {
11-
ServiceStatus[ServiceStatus["online"] = 1] = "online";
12-
ServiceStatus[ServiceStatus["offline"] = 2] = "offline";
13-
ServiceStatus[ServiceStatus["noNewSyncs"] = 3] = "noNewSyncs";
14-
})(ServiceStatus = exports.ServiceStatus || (exports.ServiceStatus = {}));
15-
var Verb;
16-
(function (Verb) {
17-
Verb["delete"] = "delete";
18-
Verb["get"] = "get";
19-
Verb["options"] = "options";
20-
Verb["patch"] = "patch";
21-
Verb["post"] = "post";
22-
Verb["put"] = "put";
23-
})(Verb = exports.Verb || (exports.Verb = {}));
1+
"use strict";
2+
Object.defineProperty(exports, "__esModule", { value: true });
3+
exports.Verb = exports.ServiceStatus = exports.LogLevel = void 0;
4+
var LogLevel;
5+
(function (LogLevel) {
6+
LogLevel[LogLevel["Error"] = 0] = "Error";
7+
LogLevel[LogLevel["Info"] = 1] = "Info";
8+
})(LogLevel = exports.LogLevel || (exports.LogLevel = {}));
9+
var ServiceStatus;
10+
(function (ServiceStatus) {
11+
ServiceStatus[ServiceStatus["online"] = 1] = "online";
12+
ServiceStatus[ServiceStatus["offline"] = 2] = "offline";
13+
ServiceStatus[ServiceStatus["noNewSyncs"] = 3] = "noNewSyncs";
14+
})(ServiceStatus = exports.ServiceStatus || (exports.ServiceStatus = {}));
15+
var Verb;
16+
(function (Verb) {
17+
Verb["delete"] = "delete";
18+
Verb["get"] = "get";
19+
Verb["options"] = "options";
20+
Verb["patch"] = "patch";
21+
Verb["post"] = "post";
22+
Verb["put"] = "put";
23+
})(Verb = exports.Verb || (exports.Verb = {}));

‎dist/common/utils.js‎

Lines changed: 31 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,31 @@
1-
"use strict";
2-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3-
if (k2 === undefined) k2 = k;
4-
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5-
}) : (function(o, m, k, k2) {
6-
if (k2 === undefined) k2 = k;
7-
o[k2] = m[k];
8-
}));
9-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10-
Object.defineProperty(o, "default", { enumerable: true, value: v });
11-
}) : function(o, v) {
12-
o["default"] = v;
13-
});
14-
var __importStar = (this && this.__importStar) || function (mod) {
15-
if (mod && mod.__esModule) return mod;
16-
var result = {};
17-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18-
__setModuleDefault(result, mod);
19-
return result;
20-
};
21-
Object.defineProperty(exports, "__esModule", { value: true });
22-
exports.checkServiceAvailability = void 0;
23-
const Config = __importStar(require("../config"));
24-
const exception_1 = require("../exception");
25-
// Throws an error if the service status is set to offline in config
26-
const checkServiceAvailability = () => {
27-
if (!Config.get().status.online) {
28-
throw new exception_1.ServiceNotAvailableException();
29-
}
30-
};
31-
exports.checkServiceAvailability = checkServiceAvailability;
1+
"use strict";
2+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3+
if (k2 === undefined) k2 = k;
4+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5+
}) : (function(o, m, k, k2) {
6+
if (k2 === undefined) k2 = k;
7+
o[k2] = m[k];
8+
}));
9+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10+
Object.defineProperty(o, "default", { enumerable: true, value: v });
11+
}) : function(o, v) {
12+
o["default"] = v;
13+
});
14+
var __importStar = (this && this.__importStar) || function (mod) {
15+
if (mod && mod.__esModule) return mod;
16+
var result = {};
17+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18+
__setModuleDefault(result, mod);
19+
return result;
20+
};
21+
Object.defineProperty(exports, "__esModule", { value: true });
22+
exports.checkServiceAvailability = void 0;
23+
const Config = __importStar(require("../config"));
24+
const exception_1 = require("../exception");
25+
// Throws an error if the service status is set to offline in config
26+
const checkServiceAvailability = () => {
27+
if (!Config.get().status.online) {
28+
throw new exception_1.ServiceNotAvailableException();
29+
}
30+
};
31+
exports.checkServiceAvailability = checkServiceAvailability;

‎dist/config.js‎

Lines changed: 58 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -1,58 +1,58 @@
1-
"use strict";
2-
var __importDefault = (this && this.__importDefault) || function (mod) {
3-
return (mod && mod.__esModule) ? mod : { "default": mod };
4-
};
5-
Object.defineProperty(exports, "__esModule", { value: true });
6-
exports.getUserSettings = exports.getPackageVersion = exports.get = exports.setCachedConfig = exports.getCachedConfig = void 0;
7-
const deepmerge_1 = __importDefault(require("deepmerge"));
8-
const fs_1 = __importDefault(require("fs"));
9-
const path_1 = __importDefault(require("path"));
10-
let cachedConfig;
11-
const getCachedConfig = () => {
12-
return cachedConfig;
13-
};
14-
exports.getCachedConfig = getCachedConfig;
15-
const setCachedConfig = (value) => {
16-
cachedConfig = value;
17-
};
18-
exports.setCachedConfig = setCachedConfig;
19-
// Returns combined default and user-specified config settings
20-
const get = (force) => {
21-
if (exports.getCachedConfig() && !force) {
22-
return exports.getCachedConfig();
23-
}
24-
// Get full path to config folder
25-
const pathToConfig = path_1.default.join(__dirname, '../config');
26-
// Get default settings values
27-
const defaultSettings = getDefaultSettings(pathToConfig);
28-
// Get user settings values if present
29-
const userSettings = exports.getUserSettings(pathToConfig);
30-
// Merge default and user settings
31-
const settings = deepmerge_1.default(defaultSettings, userSettings);
32-
// Get current version number
33-
const version = exports.getPackageVersion();
34-
exports.setCachedConfig(Object.assign(Object.assign({}, settings), { version }));
35-
return exports.getCachedConfig();
36-
};
37-
exports.get = get;
38-
// Returns default config settings
39-
const getDefaultSettings = (pathToConfig) => {
40-
const pathToSettings = path_1.default.join(pathToConfig, 'settings.default.json');
41-
return require(pathToSettings);
42-
};
43-
// Returns version number from package.json
44-
const getPackageVersion = () => {
45-
const packageJson = require('../package.json');
46-
return packageJson.version;
47-
};
48-
exports.getPackageVersion = getPackageVersion;
49-
// Returns user-specified config settings
50-
const getUserSettings = (pathToConfig) => {
51-
const pathToUserSettings = path_1.default.join(pathToConfig, 'settings.json');
52-
let userSettings = {};
53-
if (fs_1.default.existsSync(pathToUserSettings)) {
54-
userSettings = require(pathToUserSettings);
55-
}
56-
return userSettings;
57-
};
58-
exports.getUserSettings = getUserSettings;
1+
"use strict";
2+
var __importDefault = (this && this.__importDefault) || function (mod) {
3+
return (mod && mod.__esModule) ? mod : { "default": mod };
4+
};
5+
Object.defineProperty(exports, "__esModule", { value: true });
6+
exports.getUserSettings = exports.getPackageVersion = exports.get = exports.setCachedConfig = exports.getCachedConfig = void 0;
7+
const deepmerge_1 = __importDefault(require("deepmerge"));
8+
const fs_1 = __importDefault(require("fs"));
9+
const path_1 = __importDefault(require("path"));
10+
let cachedConfig;
11+
const getCachedConfig = () => {
12+
return cachedConfig;
13+
};
14+
exports.getCachedConfig = getCachedConfig;
15+
const setCachedConfig = (value) => {
16+
cachedConfig = value;
17+
};
18+
exports.setCachedConfig = setCachedConfig;
19+
// Returns combined default and user-specified config settings
20+
const get = (force) => {
21+
if (exports.getCachedConfig() && !force) {
22+
return exports.getCachedConfig();
23+
}
24+
// Get full path to config folder
25+
const pathToConfig = path_1.default.join(__dirname, '../config');
26+
// Get default settings values
27+
const defaultSettings = getDefaultSettings(pathToConfig);
28+
// Get user settings values if present
29+
const userSettings = exports.getUserSettings(pathToConfig);
30+
// Merge default and user settings
31+
const settings = deepmerge_1.default(defaultSettings, userSettings);
32+
// Get current version number
33+
const version = exports.getPackageVersion();
34+
exports.setCachedConfig(Object.assign(Object.assign({}, settings), { version }));
35+
return exports.getCachedConfig();
36+
};
37+
exports.get = get;
38+
// Returns default config settings
39+
const getDefaultSettings = (pathToConfig) => {
40+
const pathToSettings = path_1.default.join(pathToConfig, 'settings.default.json');
41+
return require(pathToSettings);
42+
};
43+
// Returns version number from package.json
44+
const getPackageVersion = () => {
45+
const packageJson = require('../package.json');
46+
return packageJson.version;
47+
};
48+
exports.getPackageVersion = getPackageVersion;
49+
// Returns user-specified config settings
50+
const getUserSettings = (pathToConfig) => {
51+
const pathToUserSettings = path_1.default.join(pathToConfig, 'settings.json');
52+
let userSettings = {};
53+
if (fs_1.default.existsSync(pathToUserSettings)) {
54+
userSettings = require(pathToUserSettings);
55+
}
56+
return userSettings;
57+
};
58+
exports.getUserSettings = getUserSettings;

‎dist/db.js‎

Lines changed: 69 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -1,69 +1,69 @@
1-
"use strict";
2-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3-
if (k2 === undefined) k2 = k;
4-
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5-
}) : (function(o, m, k, k2) {
6-
if (k2 === undefined) k2 = k;
7-
o[k2] = m[k];
8-
}));
9-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10-
Object.defineProperty(o, "default", { enumerable: true, value: v });
11-
}) : function(o, v) {
12-
o["default"] = v;
13-
});
14-
var __importStar = (this && this.__importStar) || function (mod) {
15-
if (mod && mod.__esModule) return mod;
16-
var result = {};
17-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18-
__setModuleDefault(result, mod);
19-
return result;
20-
};
21-
var __importDefault = (this && this.__importDefault) || function (mod) {
22-
return (mod && mod.__esModule) ? mod : { "default": mod };
23-
};
24-
Object.defineProperty(exports, "__esModule", { value: true });
25-
exports.disconnect = exports.connect = void 0;
26-
const mongoose_1 = __importDefault(require("mongoose"));
27-
const enums_1 = require("./common/enums");
28-
const Config = __importStar(require("./config"));
29-
// Initialises the database connection using config settings
30-
const connect = async (log) => {
31-
// Set the db connection options from config settings
32-
const options = {
33-
connectTimeoutMS: Config.get().db.connTimeout,
34-
keepAlive: true,
35-
ssl: Config.get().db.useSRV || Config.get().db.ssl,
36-
useFindAndModify: false,
37-
useNewUrlParser: true,
38-
useUnifiedTopology: true,
39-
};
40-
// Configure db credentials
41-
const username = Config.get().db.username || process.env.XBROWSERSYNC_DB_USER;
42-
const password = Config.get().db.password || process.env.XBROWSERSYNC_DB_PWD;
43-
const creds = username && password ? `${encodeURIComponent(username)}:${encodeURIComponent(password)}@` : '';
44-
// Create mongo connection uri using host and db name defined in config settings
45-
let dbServerUrl = 'mongodb';
46-
if (Config.get().db.useSRV) {
47-
dbServerUrl += `+srv://${creds}${Config.get().db.host}/${Config.get().db.name}`;
48-
}
49-
else {
50-
dbServerUrl += `://${creds}${Config.get().db.host}:${Config.get().db.port}/${Config.get().db.name}`;
51-
}
52-
dbServerUrl += Config.get().db.authSource ? `?authSource=${Config.get().db.authSource}` : '';
53-
// Connect to the database
54-
try {
55-
await mongoose_1.default.connect(dbServerUrl, options);
56-
}
57-
catch (err) {
58-
if ((log !== null && log !== void 0 ? log : undefined) !== undefined) {
59-
log(enums_1.LogLevel.Error, 'Unable to connect to database', null, err);
60-
}
61-
process.exit(1);
62-
}
63-
};
64-
exports.connect = connect;
65-
// Closes the database connection
66-
const disconnect = async () => {
67-
await mongoose_1.default.disconnect();
68-
};
69-
exports.disconnect = disconnect;
1+
"use strict";
2+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3+
if (k2 === undefined) k2 = k;
4+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5+
}) : (function(o, m, k, k2) {
6+
if (k2 === undefined) k2 = k;
7+
o[k2] = m[k];
8+
}));
9+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10+
Object.defineProperty(o, "default", { enumerable: true, value: v });
11+
}) : function(o, v) {
12+
o["default"] = v;
13+
});
14+
var __importStar = (this && this.__importStar) || function (mod) {
15+
if (mod && mod.__esModule) return mod;
16+
var result = {};
17+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18+
__setModuleDefault(result, mod);
19+
return result;
20+
};
21+
var __importDefault = (this && this.__importDefault) || function (mod) {
22+
return (mod && mod.__esModule) ? mod : { "default": mod };
23+
};
24+
Object.defineProperty(exports, "__esModule", { value: true });
25+
exports.disconnect = exports.connect = void 0;
26+
const mongoose_1 = __importDefault(require("mongoose"));
27+
const enums_1 = require("./common/enums");
28+
const Config = __importStar(require("./config"));
29+
// Initialises the database connection using config settings
30+
const connect = async (log) => {
31+
// Set the db connection options from config settings
32+
const options = {
33+
connectTimeoutMS: Config.get().db.connTimeout,
34+
keepAlive: true,
35+
ssl: Config.get().db.useSRV || Config.get().db.ssl,
36+
useFindAndModify: false,
37+
useNewUrlParser: true,
38+
useUnifiedTopology: true,
39+
};
40+
// Configure db credentials
41+
const username = Config.get().db.username || process.env.XBROWSERSYNC_DB_USER;
42+
const password = Config.get().db.password || process.env.XBROWSERSYNC_DB_PWD;
43+
const creds = username && password ? `${encodeURIComponent(username)}:${encodeURIComponent(password)}@` : '';
44+
// Create mongo connection uri using host and db name defined in config settings
45+
let dbServerUrl = 'mongodb';
46+
if (Config.get().db.useSRV) {
47+
dbServerUrl += `+srv://${creds}${Config.get().db.host}/${Config.get().db.name}`;
48+
}
49+
else {
50+
dbServerUrl += `://${creds}${Config.get().db.host}:${Config.get().db.port}/${Config.get().db.name}`;
51+
}
52+
dbServerUrl += Config.get().db.authSource ? `?authSource=${Config.get().db.authSource}` : '';
53+
// Connect to the database
54+
try {
55+
await mongoose_1.default.connect(dbServerUrl, options);
56+
}
57+
catch (err) {
58+
if ((log !== null && log !== void 0 ? log : undefined) !== undefined) {
59+
log(enums_1.LogLevel.Error, 'Unable to connect to database', null, err);
60+
}
61+
process.exit(1);
62+
}
63+
};
64+
exports.connect = connect;
65+
// Closes the database connection
66+
const disconnect = async () => {
67+
await mongoose_1.default.disconnect();
68+
};
69+
exports.disconnect = disconnect;

0 commit comments

Comments
 (0)