dce-expresskit 4.0.0-beta.10
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/.eslintrc.js +93 -0
- package/LICENSE +21 -0
- package/README.md +17 -0
- package/genEncodedSecret.ts +107 -0
- package/genSalt.ts +15 -0
- package/lib/constants/LOG_REVIEW_ROUTE_PATH_PREFIX.d.ts +6 -0
- package/lib/constants/LOG_REVIEW_ROUTE_PATH_PREFIX.js +13 -0
- package/lib/constants/LOG_REVIEW_ROUTE_PATH_PREFIX.js.map +1 -0
- package/lib/constants/LOG_REVIEW_STATUS_ROUTE.d.ts +7 -0
- package/lib/constants/LOG_REVIEW_STATUS_ROUTE.js +14 -0
- package/lib/constants/LOG_REVIEW_STATUS_ROUTE.js.map +1 -0
- package/lib/constants/LOG_ROUTE_PATH.d.ts +6 -0
- package/lib/constants/LOG_ROUTE_PATH.js +13 -0
- package/lib/constants/LOG_ROUTE_PATH.js.map +1 -0
- package/lib/constants/ROUTE_PATH_PREFIX.d.ts +6 -0
- package/lib/constants/ROUTE_PATH_PREFIX.js +9 -0
- package/lib/constants/ROUTE_PATH_PREFIX.js.map +1 -0
- package/lib/errors/ErrorWithCode.d.ts +9 -0
- package/lib/errors/ErrorWithCode.js +33 -0
- package/lib/errors/ErrorWithCode.js.map +1 -0
- package/lib/helpers/addDBEditorEndpoints/generateEndpointPath.d.ts +9 -0
- package/lib/helpers/addDBEditorEndpoints/generateEndpointPath.js +17 -0
- package/lib/helpers/addDBEditorEndpoints/generateEndpointPath.js.map +1 -0
- package/lib/helpers/addDBEditorEndpoints/index.d.ts +41 -0
- package/lib/helpers/addDBEditorEndpoints/index.js +134 -0
- package/lib/helpers/addDBEditorEndpoints/index.js.map +1 -0
- package/lib/helpers/dataSigner.d.ts +40 -0
- package/lib/helpers/dataSigner.js +236 -0
- package/lib/helpers/dataSigner.js.map +1 -0
- package/lib/helpers/genRouteHandler.d.ts +75 -0
- package/lib/helpers/genRouteHandler.js +661 -0
- package/lib/helpers/genRouteHandler.js.map +1 -0
- package/lib/helpers/handleError.d.ts +18 -0
- package/lib/helpers/handleError.js +51 -0
- package/lib/helpers/handleError.js.map +1 -0
- package/lib/helpers/handleSuccess.d.ts +8 -0
- package/lib/helpers/handleSuccess.js +20 -0
- package/lib/helpers/handleSuccess.js.map +1 -0
- package/lib/helpers/initCrossServerCredentialCollection.d.ts +11 -0
- package/lib/helpers/initCrossServerCredentialCollection.js +15 -0
- package/lib/helpers/initCrossServerCredentialCollection.js.map +1 -0
- package/lib/helpers/initLogCollection.d.ts +11 -0
- package/lib/helpers/initLogCollection.js +26 -0
- package/lib/helpers/initLogCollection.js.map +1 -0
- package/lib/helpers/initServer.d.ts +45 -0
- package/lib/helpers/initServer.js +293 -0
- package/lib/helpers/initServer.js.map +1 -0
- package/lib/helpers/parseUserAgent.d.ts +17 -0
- package/lib/helpers/parseUserAgent.js +108 -0
- package/lib/helpers/parseUserAgent.js.map +1 -0
- package/lib/helpers/visitEndpointOnAnotherServer/index.d.ts +18 -0
- package/lib/helpers/visitEndpointOnAnotherServer/index.js +156 -0
- package/lib/helpers/visitEndpointOnAnotherServer/index.js.map +1 -0
- package/lib/helpers/visitEndpointOnAnotherServer/sendServerToServerRequest.d.ts +23 -0
- package/lib/helpers/visitEndpointOnAnotherServer/sendServerToServerRequest.js +168 -0
- package/lib/helpers/visitEndpointOnAnotherServer/sendServerToServerRequest.js.map +1 -0
- package/lib/html/genErrorPage.d.ts +19 -0
- package/lib/html/genErrorPage.js +27 -0
- package/lib/html/genErrorPage.js.map +1 -0
- package/lib/html/genInfoPage.d.ts +13 -0
- package/lib/html/genInfoPage.js +16 -0
- package/lib/html/genInfoPage.js.map +1 -0
- package/lib/index.d.ts +11 -0
- package/lib/index.js +68 -0
- package/lib/index.js.map +1 -0
- package/lib/types/CrossServerCredential.d.ts +11 -0
- package/lib/types/CrossServerCredential.js +3 -0
- package/lib/types/CrossServerCredential.js.map +1 -0
- package/lib/types/ExpressKitErrorCode.d.ts +31 -0
- package/lib/types/ExpressKitErrorCode.js +38 -0
- package/lib/types/ExpressKitErrorCode.js.map +1 -0
- package/package.json +53 -0
- package/src/constants/LOG_REVIEW_ROUTE_PATH_PREFIX.ts +9 -0
- package/src/constants/LOG_REVIEW_STATUS_ROUTE.ts +10 -0
- package/src/constants/LOG_ROUTE_PATH.ts +9 -0
- package/src/constants/ROUTE_PATH_PREFIX.ts +7 -0
- package/src/errors/ErrorWithCode.tsx +15 -0
- package/src/helpers/addDBEditorEndpoints/generateEndpointPath.ts +16 -0
- package/src/helpers/addDBEditorEndpoints/index.ts +130 -0
- package/src/helpers/dataSigner.ts +306 -0
- package/src/helpers/genRouteHandler.ts +914 -0
- package/src/helpers/handleError.ts +66 -0
- package/src/helpers/handleSuccess.ts +18 -0
- package/src/helpers/initCrossServerCredentialCollection.ts +19 -0
- package/src/helpers/initLogCollection.ts +31 -0
- package/src/helpers/initServer.ts +284 -0
- package/src/helpers/parseUserAgent.ts +108 -0
- package/src/helpers/visitEndpointOnAnotherServer/index.ts +157 -0
- package/src/helpers/visitEndpointOnAnotherServer/sendServerToServerRequest.ts +164 -0
- package/src/html/genErrorPage.ts +144 -0
- package/src/html/genInfoPage.ts +101 -0
- package/src/index.ts +125 -0
- package/src/types/CrossServerCredential.ts +16 -0
- package/src/types/ExpressKitErrorCode.ts +37 -0
- package/tsconfig.json +19 -0
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
/**
|
|
4
|
+
* Perform a rudimentary parsing of the user's browser agent string
|
|
5
|
+
* @author Gabe Abrams
|
|
6
|
+
* @param userAgent the user's browser agent
|
|
7
|
+
* @returns user info
|
|
8
|
+
*/
|
|
9
|
+
var parseUserAgent = function (userAgent) {
|
|
10
|
+
/* ------------- Browser ------------ */
|
|
11
|
+
var browser = {
|
|
12
|
+
name: 'Unknown',
|
|
13
|
+
version: 'Unknown',
|
|
14
|
+
};
|
|
15
|
+
// Parse user agent
|
|
16
|
+
var verOffset;
|
|
17
|
+
var nameOffset;
|
|
18
|
+
if ((verOffset = userAgent.indexOf('Opera')) !== -1) {
|
|
19
|
+
// In Opera, the true version is after 'Opera' or after 'Version'
|
|
20
|
+
browser = {
|
|
21
|
+
name: 'Opera',
|
|
22
|
+
version: userAgent.substring(verOffset + 6),
|
|
23
|
+
};
|
|
24
|
+
if ((verOffset = userAgent.indexOf('Version')) !== -1) {
|
|
25
|
+
browser.version = userAgent.substring(verOffset + 8);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
else if ((verOffset = userAgent.indexOf('MSIE')) !== -1) {
|
|
29
|
+
// In MSIE, the true version is after 'MSIE' in userAgent
|
|
30
|
+
browser = {
|
|
31
|
+
name: 'Internet Explorer',
|
|
32
|
+
version: userAgent.substring(verOffset + 5),
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
else if ((verOffset = userAgent.indexOf('Chrome')) !== -1) {
|
|
36
|
+
// In Chrome, the true version is after 'Chrome'
|
|
37
|
+
browser = {
|
|
38
|
+
name: 'Chrome',
|
|
39
|
+
version: userAgent.substring(verOffset + 7),
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
else if ((verOffset = userAgent.indexOf('Safari')) !== -1) {
|
|
43
|
+
// In Safari, the true version is after 'Safari' or after 'Version'
|
|
44
|
+
browser = {
|
|
45
|
+
name: 'Safari',
|
|
46
|
+
version: userAgent.substring(verOffset + 7),
|
|
47
|
+
};
|
|
48
|
+
if ((verOffset = userAgent.indexOf('Version')) !== -1) {
|
|
49
|
+
browser.version = userAgent.substring(verOffset + 8);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
else if ((verOffset = userAgent.indexOf('Firefox')) != -1) {
|
|
53
|
+
// In Firefox, the true version is after 'Firefox'
|
|
54
|
+
browser = {
|
|
55
|
+
name: 'Firefox',
|
|
56
|
+
version: userAgent.substring(verOffset + 8),
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
else if ((nameOffset = userAgent.lastIndexOf(' ') + 1)
|
|
60
|
+
< (verOffset = userAgent.lastIndexOf('/'))) {
|
|
61
|
+
browser = {
|
|
62
|
+
name: userAgent.substring(nameOffset, verOffset),
|
|
63
|
+
version: userAgent.substring(verOffset + 1),
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
// Postprocess version
|
|
67
|
+
// trim the fullVersion string at semicolon/space if present
|
|
68
|
+
var ix;
|
|
69
|
+
if ((ix = browser.version.indexOf(';')) !== -1) {
|
|
70
|
+
browser.version = browser.version.substring(0, ix);
|
|
71
|
+
}
|
|
72
|
+
if ((ix = browser.version.indexOf(' ')) !== -1) {
|
|
73
|
+
browser.version = browser.version.substring(0, ix);
|
|
74
|
+
}
|
|
75
|
+
/* ------------- Device ------------- */
|
|
76
|
+
// Detect os
|
|
77
|
+
var os = 'Unknown';
|
|
78
|
+
if (userAgent.includes('Linux')) {
|
|
79
|
+
os = 'Linux';
|
|
80
|
+
}
|
|
81
|
+
else if (userAgent.includes('like Mac')) {
|
|
82
|
+
os = 'iOS';
|
|
83
|
+
}
|
|
84
|
+
else if (userAgent.includes('Mac')) {
|
|
85
|
+
os = 'Mac';
|
|
86
|
+
}
|
|
87
|
+
else if (userAgent.includes('Android')) {
|
|
88
|
+
os = 'Android';
|
|
89
|
+
}
|
|
90
|
+
else if (userAgent.includes('Win')) {
|
|
91
|
+
os = 'Win';
|
|
92
|
+
}
|
|
93
|
+
// Check if mobile
|
|
94
|
+
var isMobile = !!userAgent.match(/(iPhone|iPod|iPad|Android|BlackBerry)/);
|
|
95
|
+
// Device
|
|
96
|
+
var device = {
|
|
97
|
+
isMobile: isMobile,
|
|
98
|
+
os: os,
|
|
99
|
+
};
|
|
100
|
+
/* ------------- Finish ------------- */
|
|
101
|
+
// Return info
|
|
102
|
+
return {
|
|
103
|
+
browser: browser,
|
|
104
|
+
device: device,
|
|
105
|
+
};
|
|
106
|
+
};
|
|
107
|
+
exports.default = parseUserAgent;
|
|
108
|
+
//# sourceMappingURL=parseUserAgent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseUserAgent.js","sourceRoot":"","sources":["../../src/helpers/parseUserAgent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Visit an endpoint on another server
|
|
3
|
+
* @author Gabe Abrams
|
|
4
|
+
* @param opts object containing all arguments
|
|
5
|
+
* @param opts.method the method of the endpoint
|
|
6
|
+
* @param opts.path the path of the other server's endpoint
|
|
7
|
+
* @param opts.host the host of the other server
|
|
8
|
+
* @param [opts.params={}] query/body parameters to include
|
|
9
|
+
* @param [opts.responseType=JSON] the response type from the other server
|
|
10
|
+
*/
|
|
11
|
+
declare const visitEndpointOnAnotherServer: (opts: {
|
|
12
|
+
method: "GET" | "POST" | "DELETE" | "PUT";
|
|
13
|
+
path: string;
|
|
14
|
+
host: string;
|
|
15
|
+
params?: { [key in string]: any; };
|
|
16
|
+
responseType?: "JSON" | "Text";
|
|
17
|
+
}) => Promise<any>;
|
|
18
|
+
export default visitEndpointOnAnotherServer;
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
13
|
+
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
+
function step(op) {
|
|
16
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
18
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
+
switch (op[0]) {
|
|
21
|
+
case 0: case 1: t = op; break;
|
|
22
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
+
default:
|
|
26
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
+
if (t[2]) _.ops.pop();
|
|
31
|
+
_.trys.pop(); continue;
|
|
32
|
+
}
|
|
33
|
+
op = body.call(thisArg, _);
|
|
34
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
39
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
40
|
+
};
|
|
41
|
+
var _a;
|
|
42
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
43
|
+
// Import dce-reactkit
|
|
44
|
+
var dce_reactkit_1 = require("dce-reactkit");
|
|
45
|
+
// Import data signer
|
|
46
|
+
var dataSigner_1 = require("../dataSigner");
|
|
47
|
+
// Import shared types
|
|
48
|
+
var ExpressKitErrorCode_1 = __importDefault(require("../../types/ExpressKitErrorCode"));
|
|
49
|
+
var sendServerToServerRequest_1 = __importDefault(require("./sendServerToServerRequest"));
|
|
50
|
+
/*------------------------------------------------------------------------*/
|
|
51
|
+
/* ----------------------------- Credentials ---------------------------- */
|
|
52
|
+
/*------------------------------------------------------------------------*/
|
|
53
|
+
/*
|
|
54
|
+
DCEKIT_CROSS_SERVER_CREDENTIALS format:
|
|
55
|
+
|host:key:secret||host:key:secret|...
|
|
56
|
+
*/
|
|
57
|
+
var credentials = (((_a = process.env.DCEKIT_CROSS_SERVER_CREDENTIALS) !== null && _a !== void 0 ? _a : '')
|
|
58
|
+
// Replace multiple | with a single one
|
|
59
|
+
.replace(/\|+/g, '|')
|
|
60
|
+
// Split by |
|
|
61
|
+
.split('|')
|
|
62
|
+
// Remove empty strings
|
|
63
|
+
.filter(function (str) {
|
|
64
|
+
return str.trim().length > 0;
|
|
65
|
+
})
|
|
66
|
+
// Process each credential
|
|
67
|
+
.map(function (str) {
|
|
68
|
+
// Split by :
|
|
69
|
+
var parts = str.split(':');
|
|
70
|
+
// Check for errors
|
|
71
|
+
if (parts.length !== 3) {
|
|
72
|
+
throw new dce_reactkit_1.ErrorWithCode('Invalid DCEKIT_CROSS_SERVER_CREDENTIALS format. Each credential must be in the format |host:key:secret|', ExpressKitErrorCode_1.default.InvalidCrossServerCredentialsFormat);
|
|
73
|
+
}
|
|
74
|
+
// Return the credential
|
|
75
|
+
return {
|
|
76
|
+
host: parts[0].trim(),
|
|
77
|
+
key: parts[1].trim(),
|
|
78
|
+
secret: parts[2].trim(),
|
|
79
|
+
};
|
|
80
|
+
}));
|
|
81
|
+
/*------------------------------------------------------------------------*/
|
|
82
|
+
/* ------------------------------- Helpers ------------------------------ */
|
|
83
|
+
/*------------------------------------------------------------------------*/
|
|
84
|
+
/**
|
|
85
|
+
* Get the credential to use for the request to another server
|
|
86
|
+
* @author Gabe Abrams
|
|
87
|
+
* @param host the host of the other server
|
|
88
|
+
* @return the credential to use
|
|
89
|
+
*/
|
|
90
|
+
var getCrossServerCredential = function (host) {
|
|
91
|
+
// Find the credential
|
|
92
|
+
var credential = credentials.find(function (cred) {
|
|
93
|
+
return cred.host.toLowerCase() === host.toLowerCase();
|
|
94
|
+
});
|
|
95
|
+
if (!credential) {
|
|
96
|
+
throw new dce_reactkit_1.ErrorWithCode('Cannot send cross-server signed request there was no credential that matched the host that the request is being sent to.', ExpressKitErrorCode_1.default.CrossServerNoCredentialsToSignWith);
|
|
97
|
+
}
|
|
98
|
+
// Return credential
|
|
99
|
+
return credential;
|
|
100
|
+
};
|
|
101
|
+
/*------------------------------------------------------------------------*/
|
|
102
|
+
/* -------------------------------- Main -------------------------------- */
|
|
103
|
+
/*------------------------------------------------------------------------*/
|
|
104
|
+
/**
|
|
105
|
+
* Visit an endpoint on another server
|
|
106
|
+
* @author Gabe Abrams
|
|
107
|
+
* @param opts object containing all arguments
|
|
108
|
+
* @param opts.method the method of the endpoint
|
|
109
|
+
* @param opts.path the path of the other server's endpoint
|
|
110
|
+
* @param opts.host the host of the other server
|
|
111
|
+
* @param [opts.params={}] query/body parameters to include
|
|
112
|
+
* @param [opts.responseType=JSON] the response type from the other server
|
|
113
|
+
*/
|
|
114
|
+
var visitEndpointOnAnotherServer = function (opts) { return __awaiter(void 0, void 0, void 0, function () {
|
|
115
|
+
var credential, augmentedParams, response, body;
|
|
116
|
+
var _a;
|
|
117
|
+
return __generator(this, function (_b) {
|
|
118
|
+
switch (_b.label) {
|
|
119
|
+
case 0:
|
|
120
|
+
credential = getCrossServerCredential(opts.host);
|
|
121
|
+
return [4 /*yield*/, (0, dataSigner_1.signRequest)({
|
|
122
|
+
method: opts.method,
|
|
123
|
+
path: opts.path,
|
|
124
|
+
params: (_a = opts.params) !== null && _a !== void 0 ? _a : {},
|
|
125
|
+
key: credential.key,
|
|
126
|
+
secret: credential.secret,
|
|
127
|
+
})];
|
|
128
|
+
case 1:
|
|
129
|
+
augmentedParams = _b.sent();
|
|
130
|
+
return [4 /*yield*/, (0, sendServerToServerRequest_1.default)({
|
|
131
|
+
path: opts.path,
|
|
132
|
+
host: opts.host,
|
|
133
|
+
method: opts.method,
|
|
134
|
+
params: augmentedParams,
|
|
135
|
+
responseType: opts.responseType,
|
|
136
|
+
})];
|
|
137
|
+
case 2:
|
|
138
|
+
response = _b.sent();
|
|
139
|
+
// Check for failure
|
|
140
|
+
if (!response || !response.body) {
|
|
141
|
+
throw new dce_reactkit_1.ErrorWithCode('We didn\'t get a response from the other server. Please check the network between the two connection.', dce_reactkit_1.ReactKitErrorCode.NoResponse);
|
|
142
|
+
}
|
|
143
|
+
if (!response.body.success) {
|
|
144
|
+
// Other errors
|
|
145
|
+
throw new dce_reactkit_1.ErrorWithCode((response.body.message
|
|
146
|
+
|| 'An unknown error occurred. Please contact an admin.'), (response.body.code
|
|
147
|
+
|| dce_reactkit_1.ReactKitErrorCode.NoCode));
|
|
148
|
+
}
|
|
149
|
+
body = response.body.body;
|
|
150
|
+
// Return
|
|
151
|
+
return [2 /*return*/, body];
|
|
152
|
+
}
|
|
153
|
+
});
|
|
154
|
+
}); };
|
|
155
|
+
exports.default = visitEndpointOnAnotherServer;
|
|
156
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/helpers/visitEndpointOnAnotherServer/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sends and retries an http request
|
|
3
|
+
* @author Gabriel Abrams
|
|
4
|
+
* @param opts object containing all arguments
|
|
5
|
+
* @param opts.path path to send request to
|
|
6
|
+
* @param [opts.host] host to send request to
|
|
7
|
+
* @param [opts.method=GET] http method to use
|
|
8
|
+
* @param [opts.params] body/data to include in the request
|
|
9
|
+
* @param [opts.responseType=JSON] expected response type
|
|
10
|
+
* @returns { body, status, headers } on success
|
|
11
|
+
*/
|
|
12
|
+
declare const sendServerToServerRequest: (opts: {
|
|
13
|
+
path: string;
|
|
14
|
+
host?: string;
|
|
15
|
+
method?: ("GET" | "POST" | "PUT" | "DELETE");
|
|
16
|
+
params?: { [k in string]: any; };
|
|
17
|
+
responseType?: "Text" | "JSON";
|
|
18
|
+
}) => Promise<{
|
|
19
|
+
body: any;
|
|
20
|
+
status: number;
|
|
21
|
+
headers: { [k in string]: any; };
|
|
22
|
+
}>;
|
|
23
|
+
export default sendServerToServerRequest;
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
13
|
+
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
+
function step(op) {
|
|
16
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
18
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
+
switch (op[0]) {
|
|
21
|
+
case 0: case 1: t = op; break;
|
|
22
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
+
default:
|
|
26
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
+
if (t[2]) _.ops.pop();
|
|
31
|
+
_.trys.pop(); continue;
|
|
32
|
+
}
|
|
33
|
+
op = body.call(thisArg, _);
|
|
34
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
39
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
40
|
+
};
|
|
41
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
+
// Import libs
|
|
43
|
+
var qs_1 = __importDefault(require("qs"));
|
|
44
|
+
// Import dce-reactkit
|
|
45
|
+
var dce_reactkit_1 = require("dce-reactkit");
|
|
46
|
+
// Import shared types
|
|
47
|
+
var ExpressKitErrorCode_1 = __importDefault(require("../../types/ExpressKitErrorCode"));
|
|
48
|
+
/**
|
|
49
|
+
* Sends and retries an http request
|
|
50
|
+
* @author Gabriel Abrams
|
|
51
|
+
* @param opts object containing all arguments
|
|
52
|
+
* @param opts.path path to send request to
|
|
53
|
+
* @param [opts.host] host to send request to
|
|
54
|
+
* @param [opts.method=GET] http method to use
|
|
55
|
+
* @param [opts.params] body/data to include in the request
|
|
56
|
+
* @param [opts.responseType=JSON] expected response type
|
|
57
|
+
* @returns { body, status, headers } on success
|
|
58
|
+
*/
|
|
59
|
+
var sendServerToServerRequest = function (opts) { return __awaiter(void 0, void 0, void 0, function () {
|
|
60
|
+
var method, params, stringifiedParams, query, url, headers, data, encodedData, response, responseHeaders_1, responseBody, err_1, err_2;
|
|
61
|
+
var _a;
|
|
62
|
+
return __generator(this, function (_b) {
|
|
63
|
+
switch (_b.label) {
|
|
64
|
+
case 0:
|
|
65
|
+
method = (opts.method || 'GET');
|
|
66
|
+
if (opts.params) {
|
|
67
|
+
params = {};
|
|
68
|
+
Object.entries(opts.params).forEach(function (_a) {
|
|
69
|
+
var key = _a[0], val = _a[1];
|
|
70
|
+
if (typeof val === 'object' && !Array.isArray(val)) {
|
|
71
|
+
params[key] = JSON.stringify(val);
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
params[key] = val;
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
stringifiedParams = qs_1.default.stringify(params || {}, {
|
|
79
|
+
encodeValuesOnly: true,
|
|
80
|
+
arrayFormat: 'brackets',
|
|
81
|
+
});
|
|
82
|
+
query = (method === 'GET' ? "?".concat(stringifiedParams) : '');
|
|
83
|
+
if (!opts.host) {
|
|
84
|
+
// No host included at all. Just send to a path
|
|
85
|
+
url = "".concat(opts.path).concat(query);
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
url = "https://".concat(opts.host).concat(opts.path).concat(query);
|
|
89
|
+
}
|
|
90
|
+
headers = {};
|
|
91
|
+
data = null;
|
|
92
|
+
if (!headers['Content-Type']) {
|
|
93
|
+
// Form encoded
|
|
94
|
+
headers['Content-Type'] = 'application/x-www-form-urlencoded';
|
|
95
|
+
// Add data if applicable
|
|
96
|
+
data = (method !== 'GET' ? stringifiedParams : null);
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
// JSON encode
|
|
100
|
+
data = params;
|
|
101
|
+
}
|
|
102
|
+
if (data) {
|
|
103
|
+
if (headers['Content-Type'] === 'application/x-www-form-urlencoded') {
|
|
104
|
+
encodedData = new URLSearchParams(params);
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
encodedData = JSON.stringify(data);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
_b.label = 1;
|
|
111
|
+
case 1:
|
|
112
|
+
_b.trys.push([1, 10, , 11]);
|
|
113
|
+
return [4 /*yield*/, fetch(url, {
|
|
114
|
+
method: method,
|
|
115
|
+
mode: 'cors',
|
|
116
|
+
headers: headers !== null && headers !== void 0 ? headers : {},
|
|
117
|
+
body: ((method !== 'GET' && encodedData)
|
|
118
|
+
? encodedData
|
|
119
|
+
: undefined),
|
|
120
|
+
redirect: 'follow',
|
|
121
|
+
})];
|
|
122
|
+
case 2:
|
|
123
|
+
response = _b.sent();
|
|
124
|
+
responseHeaders_1 = {};
|
|
125
|
+
response.headers.forEach(function (value, key) {
|
|
126
|
+
responseHeaders_1[key] = value;
|
|
127
|
+
});
|
|
128
|
+
_b.label = 3;
|
|
129
|
+
case 3:
|
|
130
|
+
_b.trys.push([3, 8, , 9]);
|
|
131
|
+
responseBody = void 0;
|
|
132
|
+
if (!(opts.responseType
|
|
133
|
+
&& opts.responseType === 'Text')) return [3 /*break*/, 5];
|
|
134
|
+
return [4 /*yield*/, response.text()];
|
|
135
|
+
case 4:
|
|
136
|
+
// Response type is text
|
|
137
|
+
responseBody = _b.sent();
|
|
138
|
+
return [3 /*break*/, 7];
|
|
139
|
+
case 5: return [4 /*yield*/, response.json()];
|
|
140
|
+
case 6:
|
|
141
|
+
// Response type is JSON
|
|
142
|
+
responseBody = _b.sent();
|
|
143
|
+
_b.label = 7;
|
|
144
|
+
case 7:
|
|
145
|
+
// Return response
|
|
146
|
+
return [2 /*return*/, {
|
|
147
|
+
body: responseBody,
|
|
148
|
+
status: response.status,
|
|
149
|
+
headers: responseHeaders_1,
|
|
150
|
+
}];
|
|
151
|
+
case 8:
|
|
152
|
+
err_1 = _b.sent();
|
|
153
|
+
throw new dce_reactkit_1.ErrorWithCode("Failed to parse response as ".concat(opts.responseType, ": ").concat(err_1 === null || err_1 === void 0 ? void 0 : err_1.message), ExpressKitErrorCode_1.default.ResponseParseError);
|
|
154
|
+
case 9: return [3 /*break*/, 11];
|
|
155
|
+
case 10:
|
|
156
|
+
err_2 = _b.sent();
|
|
157
|
+
// Self-signed certificate error:
|
|
158
|
+
if ((_a = err_2 === null || err_2 === void 0 ? void 0 : err_2.message) === null || _a === void 0 ? void 0 : _a.includes('self signed certificate')) {
|
|
159
|
+
throw new dce_reactkit_1.ErrorWithCode('We refused to send a request because the receiver has self-signed certificates.', ExpressKitErrorCode_1.default.SelfSigned);
|
|
160
|
+
}
|
|
161
|
+
// No tries left
|
|
162
|
+
throw new dce_reactkit_1.ErrorWithCode("We encountered an error when trying to send a network request. If this issue persists, contact an admin. Error: ".concat(err_2 === null || err_2 === void 0 ? void 0 : err_2.message), ExpressKitErrorCode_1.default.NotConnected);
|
|
163
|
+
case 11: return [2 /*return*/];
|
|
164
|
+
}
|
|
165
|
+
});
|
|
166
|
+
}); };
|
|
167
|
+
exports.default = sendServerToServerRequest;
|
|
168
|
+
//# sourceMappingURL=sendServerToServerRequest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sendServerToServerRequest.js","sourceRoot":"","sources":["../../../src/helpers/visitEndpointOnAnotherServer/sendServerToServerRequest.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,cAAc;AACd,0CAAoB;AAEpB,sBAAsB;AACtB,6CAEsB;AAEtB,sBAAsB;AACtB,wFAAkE;AAElE;;;;;;;;;;GAUG;AACH,IAAM,yBAAyB,GAAG,UAChC,IAMC;;;;;;gBAOK,MAAM,GAAwC,CAAC,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC;gBAM3E,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;oBAChB,MAAM,GAAG,EAAE,CAAC;oBACZ,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,UAAC,EAAU;4BAAT,GAAG,QAAA,EAAE,GAAG,QAAA;wBAC5C,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;4BAClD,MAAc,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;wBAC7C,CAAC;6BAAM,CAAC;4BACL,MAAc,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;wBAC7B,CAAC;oBACH,CAAC,CAAC,CAAC;gBACL,CAAC;gBAGK,iBAAiB,GAAG,YAAE,CAAC,SAAS,CAAC,MAAM,IAAI,EAAE,EAAE;oBACnD,gBAAgB,EAAE,IAAI;oBACtB,WAAW,EAAE,UAAU;iBACxB,CAAC,CAAC;gBAGG,KAAK,GAAG,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,WAAI,iBAAiB,CAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAEhE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;oBACf,+CAA+C;oBAC/C,GAAG,GAAG,UAAG,IAAI,CAAC,IAAI,SAAG,KAAK,CAAE,CAAC;gBAC/B,CAAC;qBAAM,CAAC;oBACN,GAAG,GAAG,kBAAW,IAAI,CAAC,IAAI,SAAG,IAAI,CAAC,IAAI,SAAG,KAAK,CAAE,CAAC;gBACnD,CAAC;gBAGK,OAAO,GAET,EAAE,CAAC;gBACH,IAAI,GAAqD,IAAI,CAAC;gBAClE,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;oBAC7B,eAAe;oBACf,OAAO,CAAC,cAAc,CAAC,GAAG,mCAAmC,CAAC;oBAC9D,yBAAyB;oBACzB,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBACvD,CAAC;qBAAM,CAAC;oBACN,cAAc;oBACd,IAAI,GAAG,MAAM,CAAC;gBAChB,CAAC;gBAID,IAAI,IAAI,EAAE,CAAC;oBACT,IAAI,OAAO,CAAC,cAAc,CAAC,KAAK,mCAAmC,EAAE,CAAC;wBACpE,WAAW,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC;oBAC5C,CAAC;yBAAM,CAAC;wBACN,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;oBACrC,CAAC;gBACH,CAAC;;;;gBAIkB,qBAAM,KAAK,CAC1B,GAAG,EACH;wBACE,MAAM,QAAA;wBACN,IAAI,EAAE,MAAM;wBACZ,OAAO,EAAE,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE;wBACtB,IAAI,EAAE,CACJ,CAAC,MAAM,KAAK,KAAK,IAAI,WAAW,CAAC;4BAC/B,CAAC,CAAC,WAAW;4BACb,CAAC,CAAC,SAAS,CACd;wBACD,QAAQ,EAAE,QAAQ;qBACnB,CACF,EAAA;;gBAbK,QAAQ,GAAG,SAahB;gBAGK,oBAEF,EAAE,CAAC;gBACP,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,UAAC,KAAK,EAAE,GAAG;oBAClC,iBAAe,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;gBAC/B,CAAC,CAAC,CAAC;;;;gBAKG,YAAY,SAAK,CAAC;qBAEpB,CAAA,IAAI,CAAC,YAAY;uBACd,IAAI,CAAC,YAAY,KAAK,MAAM,CAAA,EAD/B,wBAC+B;gBAGhB,qBAAM,QAAQ,CAAC,IAAI,EAAE,EAAA;;gBADpC,wBAAwB;gBACxB,YAAY,GAAG,SAAqB,CAAC;;oBAGtB,qBAAM,QAAQ,CAAC,IAAI,EAAE,EAAA;;gBADpC,wBAAwB;gBACxB,YAAY,GAAG,SAAqB,CAAC;;;YAGvC,kBAAkB;YAClB,sBAAO;oBACL,IAAI,EAAE,YAAY;oBAClB,MAAM,EAAE,QAAQ,CAAC,MAAM;oBACvB,OAAO,EAAE,iBAAe;iBACzB,EAAC;;;gBAEF,MAAM,IAAI,4BAAa,CACrB,sCAA+B,IAAI,CAAC,YAAY,eAAM,KAAW,aAAX,KAAG,uBAAH,KAAG,CAAU,OAAO,CAAE,EAC5E,6BAAmB,CAAC,kBAAkB,CACvC,CAAC;;;;gBAGJ,iCAAiC;gBACjC,IAAI,MAAC,KAAW,aAAX,KAAG,uBAAH,KAAG,CAAU,OAAO,0CAAE,QAAQ,CAAC,yBAAyB,CAAC,EAAE,CAAC;oBAC/D,MAAM,IAAI,4BAAa,CACrB,iFAAiF,EACjF,6BAAmB,CAAC,UAAU,CAC/B,CAAC;gBACJ,CAAC;gBAED,gBAAgB;gBAChB,MAAM,IAAI,4BAAa,CACrB,0HAAoH,KAAW,aAAX,KAAG,uBAAH,KAAG,CAAU,OAAO,CAAE,EAC1I,6BAAmB,CAAC,YAAY,CACjC,CAAC;;;;KAEL,CAAC;AAEF,kBAAe,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generate a static error page
|
|
3
|
+
* @author Gabe Abrams
|
|
4
|
+
* @param opts object containing all arguments
|
|
5
|
+
* @param [opts.title=An Error Occurred] title of the error box
|
|
6
|
+
* @param [opts.description=An unknown server error occurred. Please contact support.]
|
|
7
|
+
* a human-readable description of the error
|
|
8
|
+
* @param [opts.code=ReactKitErrorCode.NoCode] error code to show
|
|
9
|
+
* @param [opts.pageTitle=opts.title] title of the page/tab if it differs from
|
|
10
|
+
* the title of the error
|
|
11
|
+
* @returns html of the page
|
|
12
|
+
*/
|
|
13
|
+
declare const genErrorPage: (opts?: {
|
|
14
|
+
title?: string;
|
|
15
|
+
description?: string;
|
|
16
|
+
code?: string;
|
|
17
|
+
pageTitle?: string;
|
|
18
|
+
}) => string;
|
|
19
|
+
export default genErrorPage;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
// Import dce-reactkit
|
|
4
|
+
var dce_reactkit_1 = require("dce-reactkit");
|
|
5
|
+
/**
|
|
6
|
+
* Generate a static error page
|
|
7
|
+
* @author Gabe Abrams
|
|
8
|
+
* @param opts object containing all arguments
|
|
9
|
+
* @param [opts.title=An Error Occurred] title of the error box
|
|
10
|
+
* @param [opts.description=An unknown server error occurred. Please contact support.]
|
|
11
|
+
* a human-readable description of the error
|
|
12
|
+
* @param [opts.code=ReactKitErrorCode.NoCode] error code to show
|
|
13
|
+
* @param [opts.pageTitle=opts.title] title of the page/tab if it differs from
|
|
14
|
+
* the title of the error
|
|
15
|
+
* @returns html of the page
|
|
16
|
+
*/
|
|
17
|
+
var genErrorPage = function (opts) {
|
|
18
|
+
var _a, _b, _c, _d;
|
|
19
|
+
if (opts === void 0) { opts = {}; }
|
|
20
|
+
var title = ((_a = opts.title) !== null && _a !== void 0 ? _a : 'An Error Occurred');
|
|
21
|
+
var pageTitle = ((_b = opts.pageTitle) !== null && _b !== void 0 ? _b : title);
|
|
22
|
+
var description = ((_c = opts.description) !== null && _c !== void 0 ? _c : 'An unknown server error occurred. Please contact support.');
|
|
23
|
+
var code = ((_d = opts.code) !== null && _d !== void 0 ? _d : dce_reactkit_1.ReactKitErrorCode.NoCode);
|
|
24
|
+
return "\n<head>\n <!-- Metadata -->\n <meta\n name=\"viewport\"\n content=\"width=device-width, height=device-height, initial-scale=1.0, minimum-scale=1.0\"\n >\n\n <!-- Title -->\n <title>".concat(pageTitle, "</title>\n\n <!-- Bootstrap -->\n <link\n rel=\"stylesheet\"\n href=\"https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.2.1/css/bootstrap.min.css\"\n integrity=\"sha512-siwe/oXMhSjGCwLn+scraPOWrJxHlUgMBMZXdPe2Tnk3I0x3ESCoLz7WZ5NTH6SZrywMY+PB1cjyqJ5jAluCOg==\"\n crossorigin=\"anonymous\"\n referrerpolicy=\"no-referrer\"\n />\n <script\n src=\"https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.2.1/js/bootstrap.min.js\"\n integrity=\"sha512-vyRAVI0IEm6LI/fVSv/Wq/d0KUfrg3hJq2Qz5FlfER69sf3ZHlOrsLriNm49FxnpUGmhx+TaJKwJ+ByTLKT+Yg==\"\n crossorigin=\"anonymous\"\n referrerpolicy=\"no-referrer\"\n ></script>\n\n <!-- FontAwesome -->\n <link\n rel=\"stylesheet\"\n href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.2.0/css/all.min.css\"\n integrity=\"sha512-xh6O/CkQoPOWDdYTDqeRdPCVd1SpvCA9XXcUnZS2FmJNp1coAFzvtCN9BmamE+4aHK8yyUHUSCcJHgXloTyT2A==\"\n crossorigin=\"anonymous\"\n referrerpolicy=\"no-referrer\"\n />\n\n <!-- Style -->\n <style>\n .DCEReactKit-pop-in {\n animation-name: DCEReactKit-pop-in;\n animation-duration: 0.5s;\n animation-iteration-count: 1;\n animation-timing-function: ease-out;\n animation-fill-mode: both;\n\n transform-origin: center;\n }\n\n @keyframes DCEReactKit-pop-in {\n 0% {\n opacity: 0;\n transform: scale(0.9);\n }\n 100% {\n opacity: 1;\n transform: scale(1);\n }\n }\n\n .DCEReactKit-slide-in {\n animation-name: DCEReactKit-slide-in;\n animation-duration: 1s;\n animation-iteration-count: 1;\n animation-timing-function: ease-out;\n animation-fill-mode: both;\n animation-delay: 0.2s;\n }\n\n @keyframes DCEReactKit-slide-in {\n 0% {\n opacity: 0;\n transform: translate(0, 0.3em);\n }\n 100% {\n opacity: 1;\n transform: translate(0, 0);\n }\n }\n </style>\n</head>\n\n<!-- Body -->\n<body class=\"bg-dark text-center pt-3 ps-3 pe-3\">\n <!-- Alert -->\n <div\n class=\"DCEReactKit-pop-in alert alert-warning d-inline-block\"\n style=\"width: 50em; max-width: 100%\"\n >\n <!-- Title -->\n <h2>\n <i class=\"me-1 fa-solid fa-triangle-exclamation\"></i>\n ").concat(title, "\n </h2>\n <!-- Description -->\n <div>\n ").concat(description, "\n </div>\n </div>\n\n <!-- Error Code -->\n <div class=\"DCEReactKit-slide-in text-light\">\n <strong>\n Error Code:\n </strong>\n ").concat(code, "\n </div>\n</body>\n ");
|
|
25
|
+
};
|
|
26
|
+
exports.default = genErrorPage;
|
|
27
|
+
//# sourceMappingURL=genErrorPage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"genErrorPage.js","sourceRoot":"","sources":["../../src/html/genErrorPage.ts"],"names":[],"mappings":";;AAAA,sBAAsB;AACtB,6CAAiD;AAKjD;;;;;;;;;;;GAWG;AACH,IAAM,YAAY,GAAG,UACnB,IAKM;;IALN,qBAAA,EAAA,SAKM;IAEN,IAAM,KAAK,GAAG,CAAC,MAAA,IAAI,CAAC,KAAK,mCAAI,mBAAmB,CAAC,CAAC;IAClD,IAAM,SAAS,GAAG,CAAC,MAAA,IAAI,CAAC,SAAS,mCAAI,KAAK,CAAC,CAAC;IAC5C,IAAM,WAAW,GAAG,CAClB,MAAA,IAAI,CAAC,WAAW,mCACb,2DAA2D,CAC/D,CAAC;IACF,IAAM,IAAI,GAAG,CAAC,MAAA,IAAI,CAAC,IAAI,mCAAI,gCAAiB,CAAC,MAAM,CAAC,CAAC;IAErD,OAAO,2MASE,SAAS,uuEAiFZ,KAAK,qEAIL,WAAW,qKASb,IAAI,4BAGP,CAAC;AACJ,CAAC,CAAC;AAEF,kBAAe,YAAY,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generate a static info page
|
|
3
|
+
* @author Gabe Abrams
|
|
4
|
+
* @param opts object containing all arguments
|
|
5
|
+
* @param opts.title title of the info box
|
|
6
|
+
* @param opts.body a human-readable text body for the info alert
|
|
7
|
+
* @returns the HTML for the info page
|
|
8
|
+
*/
|
|
9
|
+
declare const genInfoPage: (opts: {
|
|
10
|
+
title: string;
|
|
11
|
+
body: string;
|
|
12
|
+
}) => string;
|
|
13
|
+
export default genInfoPage;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
/**
|
|
4
|
+
* Generate a static info page
|
|
5
|
+
* @author Gabe Abrams
|
|
6
|
+
* @param opts object containing all arguments
|
|
7
|
+
* @param opts.title title of the info box
|
|
8
|
+
* @param opts.body a human-readable text body for the info alert
|
|
9
|
+
* @returns the HTML for the info page
|
|
10
|
+
*/
|
|
11
|
+
var genInfoPage = function (opts) {
|
|
12
|
+
var title = opts.title, body = opts.body;
|
|
13
|
+
return "\n<head>\n <!-- Metadata -->\n <meta\n name=\"viewport\"\n content=\"width=device-width, height=device-height, initial-scale=1.0, minimum-scale=1.0\"\n >\n\n <!-- Title -->\n <title>".concat(title, "</title>\n\n <!-- Bootstrap -->\n <link\n rel=\"stylesheet\"\n href=\"https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.2.1/css/bootstrap.min.css\"\n integrity=\"sha512-siwe/oXMhSjGCwLn+scraPOWrJxHlUgMBMZXdPe2Tnk3I0x3ESCoLz7WZ5NTH6SZrywMY+PB1cjyqJ5jAluCOg==\"\n crossorigin=\"anonymous\"\n referrerpolicy=\"no-referrer\"\n />\n <script\n src=\"https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.2.1/js/bootstrap.min.js\"\n integrity=\"sha512-vyRAVI0IEm6LI/fVSv/Wq/d0KUfrg3hJq2Qz5FlfER69sf3ZHlOrsLriNm49FxnpUGmhx+TaJKwJ+ByTLKT+Yg==\"\n crossorigin=\"anonymous\"\n referrerpolicy=\"no-referrer\"\n ></script>\n\n <!-- FontAwesome -->\n <link\n rel=\"stylesheet\"\n href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.2.0/css/all.min.css\"\n integrity=\"sha512-xh6O/CkQoPOWDdYTDqeRdPCVd1SpvCA9XXcUnZS2FmJNp1coAFzvtCN9BmamE+4aHK8yyUHUSCcJHgXloTyT2A==\"\n crossorigin=\"anonymous\"\n referrerpolicy=\"no-referrer\"\n />\n\n <!-- Style -->\n <style>\n .DCEReactKit-pop-in {\n animation-name: DCEReactKit-pop-in;\n animation-duration: 0.5s;\n animation-iteration-count: 1;\n animation-timing-function: ease-out;\n animation-fill-mode: both;\n\n transform-origin: center;\n }\n\n @keyframes DCEReactKit-pop-in {\n 0% {\n opacity: 0;\n transform: scale(0.9);\n }\n 100% {\n opacity: 1;\n transform: scale(1);\n }\n }\n </style>\n</head>\n\n<!-- Body -->\n<body class=\"bg-dark text-center pt-3 ps-3 pe-3\">\n <!-- Alert -->\n <div\n class=\"DCEReactKit-pop-in alert alert-info d-inline-block\"\n style=\"width: 50em; max-width: 100%\"\n >\n <!-- Title -->\n <h2>\n <i class=\"me-1 fa-solid fa-circle-info\"></i>\n ").concat(title, "\n </h2>\n <!-- Body -->\n <div>\n ").concat(body, "\n </div>\n </div>\n</body>\n ");
|
|
14
|
+
};
|
|
15
|
+
exports.default = genInfoPage;
|
|
16
|
+
//# sourceMappingURL=genInfoPage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"genInfoPage.js","sourceRoot":"","sources":["../../src/html/genInfoPage.ts"],"names":[],"mappings":";;AAAA;;;;;;;GAOG;AACH,IAAM,WAAW,GAAG,UAClB,IAGC;IAGC,IAAA,KAAK,GAEH,IAAI,MAFD,EACL,IAAI,GACF,IAAI,KADF,CACG;IAET,OAAO,2MASE,KAAK,owDA6DR,KAAK,8DAIL,IAAI,wCAIT,CAAC;AACJ,CAAC,CAAC;AAEF,kBAAe,WAAW,CAAC"}
|
package/lib/index.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { abbreviate, avg, ceilToNumDecimals, floorToNumDecimals, forceNumIntoBounds, padDecimalZeros, padZerosLeft, roundToNumDecimals, sum, waitMs, getOrdinal, getTimeInfoInET, startMinWait, getHumanReadableDate, getPartOfDay, stringsToHumanReadableList, onlyKeepLetters, parallelLimit, getMonthName, genCSV, extractProp, compareArraysByProp, getLocalTimeInfo, genCommaList, prefixWithAOrAn, everyAsync, filterAsync, forEachAsync, mapAsync, someAsync, capitalize, shuffleArray, DayOfWeek, Log, LogType, LogSource, LogAction, LogBuiltInMetadata, LogMetadataType, LogFunction, MINUTE_IN_MS, HOUR_IN_MS, DAY_IN_MS, ErrorWithCode, ParamType } from 'dce-reactkit';
|
|
2
|
+
import initCrossServerCredentialCollection from './helpers/initCrossServerCredentialCollection';
|
|
3
|
+
import initLogCollection from './helpers/initLogCollection';
|
|
4
|
+
import initServer from './helpers/initServer';
|
|
5
|
+
import genRouteHandler from './helpers/genRouteHandler';
|
|
6
|
+
import handleError from './helpers/handleError';
|
|
7
|
+
import handleSuccess from './helpers/handleSuccess';
|
|
8
|
+
import addDBEditorEndpoints from './helpers/addDBEditorEndpoints';
|
|
9
|
+
import visitEndpointOnAnotherServer from './helpers/visitEndpointOnAnotherServer';
|
|
10
|
+
import CrossServerCredential from './types/CrossServerCredential';
|
|
11
|
+
export { ErrorWithCode, MINUTE_IN_MS, HOUR_IN_MS, DAY_IN_MS, abbreviate, avg, ceilToNumDecimals, floorToNumDecimals, forceNumIntoBounds, padDecimalZeros, padZerosLeft, roundToNumDecimals, sum, waitMs, getOrdinal, getTimeInfoInET, startMinWait, getHumanReadableDate, getPartOfDay, stringsToHumanReadableList, onlyKeepLetters, parallelLimit, getMonthName, genCSV, extractProp, compareArraysByProp, genCommaList, getLocalTimeInfo, prefixWithAOrAn, everyAsync, filterAsync, forEachAsync, mapAsync, someAsync, capitalize, shuffleArray, initServer, genRouteHandler, handleError, handleSuccess, initLogCollection, initCrossServerCredentialCollection, addDBEditorEndpoints, visitEndpointOnAnotherServer, DayOfWeek, Log, LogType, LogSource, LogAction, LogBuiltInMetadata, LogMetadataType, LogFunction, CrossServerCredential, ParamType, };
|