dce-expresskit 5.0.0 → 5.0.2

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.
@@ -7,6 +7,9 @@
7
7
  * @param opts.host the host of the other server
8
8
  * @param [opts.params={}] query/body parameters to include
9
9
  * @param [opts.responseType=JSON] the response type from the other server
10
+ * @param [opts.dceKitCrossServerCredentials] additional cross-server credentials
11
+ * that aren't in the env var list
12
+ * @returns the body of the response from the other server
10
13
  */
11
14
  declare const visitEndpointOnAnotherServer: (opts: {
12
15
  method: "GET" | "POST" | "DELETE" | "PUT";
@@ -14,5 +17,6 @@ declare const visitEndpointOnAnotherServer: (opts: {
14
17
  host: string;
15
18
  params?: { [key in string]: any; };
16
19
  responseType?: "JSON" | "Text";
20
+ dceKitCrossServerCredentials?: string;
17
21
  }) => Promise<any>;
18
22
  export default visitEndpointOnAnotherServer;
@@ -55,6 +55,9 @@ var sendServerToServerRequest_1 = __importDefault(require("./sendServerToServerR
55
55
  * @param opts.host the host of the other server
56
56
  * @param [opts.params={}] query/body parameters to include
57
57
  * @param [opts.responseType=JSON] the response type from the other server
58
+ * @param [opts.dceKitCrossServerCredentials] additional cross-server credentials
59
+ * that aren't in the env var list
60
+ * @returns the body of the response from the other server
58
61
  */
59
62
  var visitEndpointOnAnotherServer = function (opts) { return __awaiter(void 0, void 0, void 0, function () {
60
63
  var response, body;
@@ -66,6 +69,7 @@ var visitEndpointOnAnotherServer = function (opts) { return __awaiter(void 0, vo
66
69
  method: opts.method,
67
70
  params: opts.params,
68
71
  responseType: opts.responseType,
72
+ dceKitCrossServerCredentials: opts.dceKitCrossServerCredentials,
69
73
  })];
70
74
  case 1:
71
75
  response = _a.sent();
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/helpers/visitEndpointOnAnotherServer/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uBAAuB;AACvB,+CAGuB;AAEvB,sBAAsB;AACtB,0FAAoE;AAEpE,4EAA4E;AAC5E,4EAA4E;AAC5E,4EAA4E;AAE5E;;;;;;;;;GASG;AACH,IAAM,4BAA4B,GAAG,UACnC,IAMC;;;;oBAGgB,qBAAM,IAAA,mCAAyB,EAAC;oBAC/C,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,YAAY,EAAE,IAAI,CAAC,YAAY;iBAChC,CAAC,EAAA;;gBANI,QAAQ,GAAG,SAMf;gBAEF,oBAAoB;gBACpB,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;oBAChC,MAAM,IAAI,6BAAa,CACrB,uGAAuG,EACvG,kCAAkB,CAAC,UAAU,CAC9B,CAAC;gBACJ,CAAC;gBACD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;oBAC3B,eAAe;oBACf,MAAM,IAAI,6BAAa,CACrB,CACE,QAAQ,CAAC,IAAI,CAAC,OAAO;2BAClB,qDAAqD,CACzD,EACD,CACE,QAAQ,CAAC,IAAI,CAAC,IAAI;2BACf,kCAAkB,CAAC,MAAM,CAC7B,CACF,CAAC;gBACJ,CAAC;gBAGO,IAAI,GAAK,QAAQ,CAAC,IAAI,KAAlB,CAAmB;gBAE/B,SAAS;gBACT,sBAAO,IAAI,EAAC;;;KACb,CAAC;AAEF,kBAAe,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/helpers/visitEndpointOnAnotherServer/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uBAAuB;AACvB,+CAGuB;AAEvB,sBAAsB;AACtB,0FAAoE;AAEpE,4EAA4E;AAC5E,4EAA4E;AAC5E,4EAA4E;AAE5E;;;;;;;;;;;;GAYG;AACH,IAAM,4BAA4B,GAAG,UACnC,IAOC;;;;oBAGgB,qBAAM,IAAA,mCAAyB,EAAC;oBAC/C,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,YAAY,EAAE,IAAI,CAAC,YAAY;oBAC/B,4BAA4B,EAAE,IAAI,CAAC,4BAA4B;iBAChE,CAAC,EAAA;;gBAPI,QAAQ,GAAG,SAOf;gBAEF,oBAAoB;gBACpB,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;oBAChC,MAAM,IAAI,6BAAa,CACrB,uGAAuG,EACvG,kCAAkB,CAAC,UAAU,CAC9B,CAAC;gBACJ,CAAC;gBACD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;oBAC3B,eAAe;oBACf,MAAM,IAAI,6BAAa,CACrB,CACE,QAAQ,CAAC,IAAI,CAAC,OAAO;2BAClB,qDAAqD,CACzD,EACD,CACE,QAAQ,CAAC,IAAI,CAAC,IAAI;2BACf,kCAAkB,CAAC,MAAM,CAC7B,CACF,CAAC;gBACJ,CAAC;gBAGO,IAAI,GAAK,QAAQ,CAAC,IAAI,KAAlB,CAAmB;gBAE/B,SAAS;gBACT,sBAAO,IAAI,EAAC;;;KACb,CAAC;AAEF,kBAAe,4BAA4B,CAAC"}
@@ -7,6 +7,8 @@
7
7
  * @param [opts.method=GET] http method to use
8
8
  * @param [opts.params] body/data to include in the request
9
9
  * @param [opts.responseType=JSON] expected response type
10
+ * @param [opts.dceKitCrossServerCredentials] additional cross-server credentials
11
+ * that aren't in the env var list
10
12
  * @returns { body, status, headers } on success
11
13
  */
12
14
  declare const sendServerToServerRequest: (opts: {
@@ -15,6 +17,7 @@ declare const sendServerToServerRequest: (opts: {
15
17
  method?: ("GET" | "POST" | "PUT" | "DELETE");
16
18
  params?: { [k in string]: any; };
17
19
  responseType?: "Text" | "JSON";
20
+ dceKitCrossServerCredentials?: string;
18
21
  }) => Promise<{
19
22
  body: any;
20
23
  status: number;
@@ -55,30 +55,50 @@ var ExpressKitErrorCode_1 = __importDefault(require("../../types/ExpressKitError
55
55
  DCEKIT_CROSS_SERVER_CREDENTIALS format:
56
56
  |host:key:secret||host:key:secret|...
57
57
  */
58
- var credentials = (((_a = process.env.DCEKIT_CROSS_SERVER_CREDENTIALS) !== null && _a !== void 0 ? _a : '')
59
- // Replace multiple | with a single one
60
- .replace(/\|+/g, '|')
61
- // Split by |
62
- .split('|')
63
- // Remove empty strings
64
- .filter(function (str) {
65
- return str.trim().length > 0;
66
- })
67
- // Process each credential
68
- .map(function (str) {
69
- // Split by :
70
- var parts = str.split(':');
71
- // Check for errors
72
- if (parts.length !== 3) {
73
- throw new dce_commonkit_1.ErrorWithCode('Invalid DCEKIT_CROSS_SERVER_CREDENTIALS format. Each credential must be in the format |host:key:secret|', ExpressKitErrorCode_1.default.InvalidCrossServerCredentialsFormat);
74
- }
75
- // Return the credential
76
- return {
77
- host: parts[0].trim(),
78
- key: parts[1].trim(),
79
- secret: parts[2].trim(),
80
- };
81
- }));
58
+ var credentials = [];
59
+ /*------------------------------------------------------------------------*/
60
+ /* ------------------------------- Helpers ------------------------------ */
61
+ /*------------------------------------------------------------------------*/
62
+ /**
63
+ * Parse a credentials string into an array of credentials
64
+ * @author Gabe Abrams
65
+ * @param credentialsStr the credentials string to parse
66
+ * @returns an array of credentials
67
+ */
68
+ var parseCredentials = function (credentialsStr) {
69
+ credentialsStr
70
+ // Replace multiple | with a single one
71
+ .replace(/\|+/g, '|')
72
+ // Split by |
73
+ .split('|')
74
+ // Remove empty strings
75
+ .filter(function (str) {
76
+ return str.trim().length > 0;
77
+ })
78
+ // Process each credential
79
+ .forEach(function (str) {
80
+ // Split by :
81
+ var parts = str.split(':');
82
+ // Check for errors
83
+ if (parts.length !== 3) {
84
+ throw new dce_commonkit_1.ErrorWithCode('Invalid DCEKIT_CROSS_SERVER_CREDENTIALS format. Each credential must be in the format |host:key:secret|', ExpressKitErrorCode_1.default.InvalidCrossServerCredentialsFormat);
85
+ }
86
+ // Add the credential to the array
87
+ // (don't add duplicates)
88
+ var alreadyExists = credentials.find(function (cred) {
89
+ return (cred.host === parts[0].trim());
90
+ });
91
+ if (!alreadyExists) {
92
+ credentials.push({
93
+ host: parts[0].trim(),
94
+ key: parts[1].trim(),
95
+ secret: parts[2].trim(),
96
+ });
97
+ }
98
+ });
99
+ };
100
+ // Auto-parse credentials from env variable
101
+ parseCredentials((_a = process.env.DCEKIT_CROSS_SERVER_CREDENTIALS) !== null && _a !== void 0 ? _a : '');
82
102
  /*------------------------------------------------------------------------*/
83
103
  /* ------------------------------- Helpers ------------------------------ */
84
104
  /*------------------------------------------------------------------------*/
@@ -111,6 +131,8 @@ var getCrossServerCredential = function (host) {
111
131
  * @param [opts.method=GET] http method to use
112
132
  * @param [opts.params] body/data to include in the request
113
133
  * @param [opts.responseType=JSON] expected response type
134
+ * @param [opts.dceKitCrossServerCredentials] additional cross-server credentials
135
+ * that aren't in the env var list
114
136
  * @returns { body, status, headers } on success
115
137
  */
116
138
  var sendServerToServerRequest = function (opts) { return __awaiter(void 0, void 0, void 0, function () {
@@ -119,6 +141,10 @@ var sendServerToServerRequest = function (opts) { return __awaiter(void 0, void
119
141
  return __generator(this, function (_b) {
120
142
  switch (_b.label) {
121
143
  case 0:
144
+ // If additional credentials were provided, parse them and add to the list
145
+ if (opts.dceKitCrossServerCredentials) {
146
+ parseCredentials(opts.dceKitCrossServerCredentials);
147
+ }
122
148
  method = (opts.method || 'GET');
123
149
  if (opts.params) {
124
150
  params = {};
@@ -1 +1 @@
1
- {"version":3,"file":"sendServerToServerRequest.js","sourceRoot":"","sources":["../../../src/helpers/visitEndpointOnAnotherServer/sendServerToServerRequest.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sendServerToServerRequest.js","sourceRoot":"","sources":["../../../src/helpers/visitEndpointOnAnotherServer/sendServerToServerRequest.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dce-expresskit",
3
- "version": "5.0.0",
3
+ "version": "5.0.2",
4
4
  "description": "Shared functions, helpers, and tools for Harvard DCE Express-based servers",
5
5
  "main": "./lib/index.js",
6
6
  "types": "./lib/index.d.ts",
@@ -20,6 +20,9 @@ import sendServerToServerRequest from './sendServerToServerRequest';
20
20
  * @param opts.host the host of the other server
21
21
  * @param [opts.params={}] query/body parameters to include
22
22
  * @param [opts.responseType=JSON] the response type from the other server
23
+ * @param [opts.dceKitCrossServerCredentials] additional cross-server credentials
24
+ * that aren't in the env var list
25
+ * @returns the body of the response from the other server
23
26
  */
24
27
  const visitEndpointOnAnotherServer = async (
25
28
  opts: {
@@ -28,6 +31,7 @@ const visitEndpointOnAnotherServer = async (
28
31
  host: string,
29
32
  params?: { [key in string]: any },
30
33
  responseType?: 'JSON' | 'Text',
34
+ dceKitCrossServerCredentials?: string,
31
35
  },
32
36
  ): Promise<any> => {
33
37
  // Send the request
@@ -37,6 +41,7 @@ const visitEndpointOnAnotherServer = async (
37
41
  method: opts.method,
38
42
  params: opts.params,
39
43
  responseType: opts.responseType,
44
+ dceKitCrossServerCredentials: opts.dceKitCrossServerCredentials,
40
45
  });
41
46
 
42
47
  // Check for failure
@@ -25,37 +25,60 @@ const credentials: {
25
25
  host: string,
26
26
  key: string,
27
27
  secret: string,
28
- }[] = (
29
- (process.env.DCEKIT_CROSS_SERVER_CREDENTIALS ?? '')
30
- // Replace multiple | with a single one
31
- .replace(/\|+/g, '|')
32
- // Split by |
33
- .split('|')
34
- // Remove empty strings
35
- .filter((str) => {
36
- return str.trim().length > 0;
37
- })
38
- // Process each credential
39
- .map((str) => {
40
- // Split by :
41
- const parts = str.split(':');
28
+ }[] = [];
42
29
 
43
- // Check for errors
44
- if (parts.length !== 3) {
45
- throw new ErrorWithCode(
46
- 'Invalid DCEKIT_CROSS_SERVER_CREDENTIALS format. Each credential must be in the format |host:key:secret|',
47
- ExpressKitErrorCode.InvalidCrossServerCredentialsFormat,
48
- );
49
- }
30
+ /*------------------------------------------------------------------------*/
31
+ /* ------------------------------- Helpers ------------------------------ */
32
+ /*------------------------------------------------------------------------*/
33
+
34
+ /**
35
+ * Parse a credentials string into an array of credentials
36
+ * @author Gabe Abrams
37
+ * @param credentialsStr the credentials string to parse
38
+ * @returns an array of credentials
39
+ */
40
+ const parseCredentials = (credentialsStr: string) => {
41
+ credentialsStr
42
+ // Replace multiple | with a single one
43
+ .replace(/\|+/g, '|')
44
+ // Split by |
45
+ .split('|')
46
+ // Remove empty strings
47
+ .filter((str) => {
48
+ return str.trim().length > 0;
49
+ })
50
+ // Process each credential
51
+ .forEach((str) => {
52
+ // Split by :
53
+ const parts = str.split(':');
54
+
55
+ // Check for errors
56
+ if (parts.length !== 3) {
57
+ throw new ErrorWithCode(
58
+ 'Invalid DCEKIT_CROSS_SERVER_CREDENTIALS format. Each credential must be in the format |host:key:secret|',
59
+ ExpressKitErrorCode.InvalidCrossServerCredentialsFormat,
60
+ );
61
+ }
50
62
 
51
- // Return the credential
52
- return {
63
+ // Add the credential to the array
64
+ // (don't add duplicates)
65
+ const alreadyExists = credentials.find((cred) => {
66
+ return (
67
+ cred.host === parts[0].trim()
68
+ );
69
+ });
70
+ if (!alreadyExists) {
71
+ credentials.push({
53
72
  host: parts[0].trim(),
54
73
  key: parts[1].trim(),
55
74
  secret: parts[2].trim(),
56
- };
57
- })
58
- );
75
+ });
76
+ }
77
+ });
78
+ };
79
+
80
+ // Auto-parse credentials from env variable
81
+ parseCredentials(process.env.DCEKIT_CROSS_SERVER_CREDENTIALS ?? '');
59
82
 
60
83
  /*------------------------------------------------------------------------*/
61
84
  /* ------------------------------- Helpers ------------------------------ */
@@ -96,6 +119,8 @@ const getCrossServerCredential = (host: string) => {
96
119
  * @param [opts.method=GET] http method to use
97
120
  * @param [opts.params] body/data to include in the request
98
121
  * @param [opts.responseType=JSON] expected response type
122
+ * @param [opts.dceKitCrossServerCredentials] additional cross-server credentials
123
+ * that aren't in the env var list
99
124
  * @returns { body, status, headers } on success
100
125
  */
101
126
  const sendServerToServerRequest = async (
@@ -105,12 +130,18 @@ const sendServerToServerRequest = async (
105
130
  method?: ('GET' | 'POST' | 'PUT' | 'DELETE'),
106
131
  params?: { [k in string]: any },
107
132
  responseType?: 'Text' | 'JSON',
133
+ dceKitCrossServerCredentials?: string,
108
134
  },
109
135
  ): Promise<{
110
136
  body: any,
111
137
  status: number,
112
138
  headers: { [k in string]: any },
113
139
  }> => {
140
+ // If additional credentials were provided, parse them and add to the list
141
+ if (opts.dceKitCrossServerCredentials) {
142
+ parseCredentials(opts.dceKitCrossServerCredentials);
143
+ }
144
+
114
145
  // Process method
115
146
  const method: ('GET' | 'POST' | 'PUT' | 'DELETE') = (opts.method || 'GET');
116
147